1
+ //! Defines a set of traits that is used for abstracting
2
+ //! stable_mir's components that are needed in rustc_smir.
3
+ //!
4
+ //! These traits are really useful when programming
5
+ //! in stable_mir-agnostic settings.
6
+
1
7
use std:: fmt:: Debug ;
2
8
3
9
use super :: Bridge ;
@@ -7,35 +13,35 @@ pub trait SmirError {
7
13
fn from_internal < T : Debug > ( err : T ) -> Self ;
8
14
}
9
15
10
- macro_rules! make_def_trait {
16
+ pub trait Prov < B : Bridge > {
17
+ fn new ( aid : B :: AllocId ) -> Self ;
18
+ }
19
+
20
+ macro_rules! make_bridge_trait {
11
21
( $name: ident) => {
12
22
pub trait $name<B : Bridge > {
13
23
fn new( did: B :: DefId ) -> Self ;
14
24
}
15
25
} ;
16
26
}
17
27
18
- make_def_trait ! ( CrateItem ) ;
19
- make_def_trait ! ( AdtDef ) ;
20
- make_def_trait ! ( ForeignModuleDef ) ;
21
- make_def_trait ! ( ForeignDef ) ;
22
- make_def_trait ! ( FnDef ) ;
23
- make_def_trait ! ( ClosureDef ) ;
24
- make_def_trait ! ( CoroutineDef ) ;
25
- make_def_trait ! ( CoroutineClosureDef ) ;
26
- make_def_trait ! ( AliasDef ) ;
27
- make_def_trait ! ( ParamDef ) ;
28
- make_def_trait ! ( BrNamedDef ) ;
29
- make_def_trait ! ( TraitDef ) ;
30
- make_def_trait ! ( GenericDef ) ;
31
- make_def_trait ! ( ConstDef ) ;
32
- make_def_trait ! ( ImplDef ) ;
33
- make_def_trait ! ( RegionDef ) ;
34
- make_def_trait ! ( CoroutineWitnessDef ) ;
35
- make_def_trait ! ( AssocDef ) ;
36
- make_def_trait ! ( OpaqueDef ) ;
37
- make_def_trait ! ( StaticDef ) ;
38
-
39
- pub trait Prov < B : Bridge > {
40
- fn new ( aid : B :: AllocId ) -> Self ;
41
- }
28
+ make_bridge_trait ! ( CrateItem ) ;
29
+ make_bridge_trait ! ( AdtDef ) ;
30
+ make_bridge_trait ! ( ForeignModuleDef ) ;
31
+ make_bridge_trait ! ( ForeignDef ) ;
32
+ make_bridge_trait ! ( FnDef ) ;
33
+ make_bridge_trait ! ( ClosureDef ) ;
34
+ make_bridge_trait ! ( CoroutineDef ) ;
35
+ make_bridge_trait ! ( CoroutineClosureDef ) ;
36
+ make_bridge_trait ! ( AliasDef ) ;
37
+ make_bridge_trait ! ( ParamDef ) ;
38
+ make_bridge_trait ! ( BrNamedDef ) ;
39
+ make_bridge_trait ! ( TraitDef ) ;
40
+ make_bridge_trait ! ( GenericDef ) ;
41
+ make_bridge_trait ! ( ConstDef ) ;
42
+ make_bridge_trait ! ( ImplDef ) ;
43
+ make_bridge_trait ! ( RegionDef ) ;
44
+ make_bridge_trait ! ( CoroutineWitnessDef ) ;
45
+ make_bridge_trait ! ( AssocDef ) ;
46
+ make_bridge_trait ! ( OpaqueDef ) ;
47
+ make_bridge_trait ! ( StaticDef ) ;
0 commit comments