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+
17use std:: fmt:: Debug ;
28
39use super :: Bridge ;
@@ -7,35 +13,35 @@ pub trait SmirError {
713 fn from_internal < T : Debug > ( err : T ) -> Self ;
814}
915
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 {
1121 ( $name: ident) => {
1222 pub trait $name<B : Bridge > {
1323 fn new( did: B :: DefId ) -> Self ;
1424 }
1525 } ;
1626}
1727
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