@@ -670,9 +670,6 @@ pub struct ModuleItems {
670670/// [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/hir.html
671671#[ derive( Debug ) ]
672672pub struct Crate < ' hir > {
673- // Attributes from non-exported macros, kept only for collecting the library feature list.
674- pub non_exported_macro_attrs : & ' hir [ Attribute ] ,
675-
676673 pub owners : IndexVec < LocalDefId , Option < OwnerNode < ' hir > > > ,
677674 pub bodies : BTreeMap < BodyId , Body < ' hir > > ,
678675 pub trait_impls : BTreeMap < DefId , Vec < LocalDefId > > ,
@@ -743,7 +740,7 @@ impl Crate<'_> {
743740 OwnerNode :: ForeignItem ( item) => visitor. visit_foreign_item ( item) ,
744741 OwnerNode :: ImplItem ( item) => visitor. visit_impl_item ( item) ,
745742 OwnerNode :: TraitItem ( item) => visitor. visit_trait_item ( item) ,
746- OwnerNode :: MacroDef ( _ ) | OwnerNode :: Crate ( _) => { }
743+ OwnerNode :: Crate ( _) => { }
747744 }
748745 }
749746 }
@@ -758,7 +755,7 @@ impl Crate<'_> {
758755 Some ( OwnerNode :: ForeignItem ( item) ) => visitor. visit_foreign_item ( item) ,
759756 Some ( OwnerNode :: ImplItem ( item) ) => visitor. visit_impl_item ( item) ,
760757 Some ( OwnerNode :: TraitItem ( item) ) => visitor. visit_trait_item ( item) ,
761- Some ( OwnerNode :: MacroDef ( _ ) ) | Some ( OwnerNode :: Crate ( _) ) | None => { }
758+ Some ( OwnerNode :: Crate ( _) ) | None => { }
762759 } )
763760 }
764761
@@ -768,32 +765,6 @@ impl Crate<'_> {
768765 _ => None ,
769766 } )
770767 }
771-
772- pub fn exported_macros < ' hir > ( & ' hir self ) -> impl Iterator < Item = & ' hir MacroDef < ' hir > > + ' hir {
773- self . owners . iter ( ) . filter_map ( |owner| match owner {
774- Some ( OwnerNode :: MacroDef ( macro_def) ) => Some ( * macro_def) ,
775- _ => None ,
776- } )
777- }
778- }
779-
780- /// A macro definition, in this crate or imported from another.
781- ///
782- /// Not parsed directly, but created on macro import or `macro_rules!` expansion.
783- #[ derive( Debug ) ]
784- pub struct MacroDef < ' hir > {
785- pub ident : Ident ,
786- pub vis : Visibility < ' hir > ,
787- pub def_id : LocalDefId ,
788- pub span : Span ,
789- pub ast : ast:: MacroDef ,
790- }
791-
792- impl MacroDef < ' _ > {
793- #[ inline]
794- pub fn hir_id ( & self ) -> HirId {
795- HirId :: make_owner ( self . def_id )
796- }
797768}
798769
799770/// A block of statements `{ .. }`, which may have a label (in this case the
@@ -2601,7 +2572,7 @@ pub struct PolyTraitRef<'hir> {
26012572
26022573pub type Visibility < ' hir > = Spanned < VisibilityKind < ' hir > > ;
26032574
2604- #[ derive( Debug ) ]
2575+ #[ derive( Copy , Clone , Debug ) ]
26052576pub enum VisibilityKind < ' hir > {
26062577 Public ,
26072578 Crate ( CrateSugar ) ,
@@ -2794,6 +2765,8 @@ pub enum ItemKind<'hir> {
27942765 Mod ( Mod < ' hir > ) ,
27952766 /// An external module, e.g. `extern { .. }`.
27962767 ForeignMod { abi : Abi , items : & ' hir [ ForeignItemRef < ' hir > ] } ,
2768+ /// A MBE macro (`macro_rules!` or `macro`).
2769+ Macro ( ast:: MacroDef ) ,
27972770 /// Module-level inline assembly (from `global_asm!`).
27982771 GlobalAsm ( & ' hir InlineAsm < ' hir > ) ,
27992772 /// A type alias, e.g., `type Foo = Bar<u8>`.
@@ -2857,6 +2830,7 @@ impl ItemKind<'_> {
28572830 ItemKind :: Fn ( ..) => "function" ,
28582831 ItemKind :: Mod ( ..) => "module" ,
28592832 ItemKind :: ForeignMod { .. } => "extern block" ,
2833+ ItemKind :: Macro ( ..) => "macro" ,
28602834 ItemKind :: GlobalAsm ( ..) => "global asm item" ,
28612835 ItemKind :: TyAlias ( ..) => "type alias" ,
28622836 ItemKind :: OpaqueTy ( ..) => "opaque type" ,
@@ -2995,7 +2969,6 @@ pub enum OwnerNode<'hir> {
29952969 ForeignItem ( & ' hir ForeignItem < ' hir > ) ,
29962970 TraitItem ( & ' hir TraitItem < ' hir > ) ,
29972971 ImplItem ( & ' hir ImplItem < ' hir > ) ,
2998- MacroDef ( & ' hir MacroDef < ' hir > ) ,
29992972 Crate ( & ' hir Mod < ' hir > ) ,
30002973}
30012974
@@ -3005,8 +2978,7 @@ impl<'hir> OwnerNode<'hir> {
30052978 OwnerNode :: Item ( Item { ident, .. } )
30062979 | OwnerNode :: ForeignItem ( ForeignItem { ident, .. } )
30072980 | OwnerNode :: ImplItem ( ImplItem { ident, .. } )
3008- | OwnerNode :: TraitItem ( TraitItem { ident, .. } )
3009- | OwnerNode :: MacroDef ( MacroDef { ident, .. } ) => Some ( * ident) ,
2981+ | OwnerNode :: TraitItem ( TraitItem { ident, .. } ) => Some ( * ident) ,
30102982 OwnerNode :: Crate ( ..) => None ,
30112983 }
30122984 }
@@ -3017,7 +2989,6 @@ impl<'hir> OwnerNode<'hir> {
30172989 | OwnerNode :: ForeignItem ( ForeignItem { span, .. } )
30182990 | OwnerNode :: ImplItem ( ImplItem { span, .. } )
30192991 | OwnerNode :: TraitItem ( TraitItem { span, .. } )
3020- | OwnerNode :: MacroDef ( MacroDef { span, .. } )
30212992 | OwnerNode :: Crate ( Mod { inner : span, .. } ) => * span,
30222993 }
30232994 }
@@ -3061,8 +3032,7 @@ impl<'hir> OwnerNode<'hir> {
30613032 OwnerNode :: Item ( Item { def_id, .. } )
30623033 | OwnerNode :: TraitItem ( TraitItem { def_id, .. } )
30633034 | OwnerNode :: ImplItem ( ImplItem { def_id, .. } )
3064- | OwnerNode :: ForeignItem ( ForeignItem { def_id, .. } )
3065- | OwnerNode :: MacroDef ( MacroDef { def_id, .. } ) => * def_id,
3035+ | OwnerNode :: ForeignItem ( ForeignItem { def_id, .. } ) => * def_id,
30663036 OwnerNode :: Crate ( ..) => crate :: CRATE_HIR_ID . owner ,
30673037 }
30683038 }
@@ -3094,13 +3064,6 @@ impl<'hir> OwnerNode<'hir> {
30943064 _ => panic ! ( ) ,
30953065 }
30963066 }
3097-
3098- pub fn expect_macro_def ( self ) -> & ' hir MacroDef < ' hir > {
3099- match self {
3100- OwnerNode :: MacroDef ( n) => n,
3101- _ => panic ! ( ) ,
3102- }
3103- }
31043067}
31053068
31063069impl < ' hir > Into < OwnerNode < ' hir > > for & ' hir Item < ' hir > {
@@ -3127,20 +3090,13 @@ impl<'hir> Into<OwnerNode<'hir>> for &'hir TraitItem<'hir> {
31273090 }
31283091}
31293092
3130- impl < ' hir > Into < OwnerNode < ' hir > > for & ' hir MacroDef < ' hir > {
3131- fn into ( self ) -> OwnerNode < ' hir > {
3132- OwnerNode :: MacroDef ( self )
3133- }
3134- }
3135-
31363093impl < ' hir > Into < Node < ' hir > > for OwnerNode < ' hir > {
31373094 fn into ( self ) -> Node < ' hir > {
31383095 match self {
31393096 OwnerNode :: Item ( n) => Node :: Item ( n) ,
31403097 OwnerNode :: ForeignItem ( n) => Node :: ForeignItem ( n) ,
31413098 OwnerNode :: ImplItem ( n) => Node :: ImplItem ( n) ,
31423099 OwnerNode :: TraitItem ( n) => Node :: TraitItem ( n) ,
3143- OwnerNode :: MacroDef ( n) => Node :: MacroDef ( n) ,
31443100 OwnerNode :: Crate ( n) => Node :: Crate ( n) ,
31453101 }
31463102 }
@@ -3166,7 +3122,6 @@ pub enum Node<'hir> {
31663122 Arm ( & ' hir Arm < ' hir > ) ,
31673123 Block ( & ' hir Block < ' hir > ) ,
31683124 Local ( & ' hir Local < ' hir > ) ,
3169- MacroDef ( & ' hir MacroDef < ' hir > ) ,
31703125
31713126 /// `Ctor` refers to the constructor of an enum variant or struct. Only tuple or unit variants
31723127 /// with synthesized constructors.
@@ -3189,7 +3144,6 @@ impl<'hir> Node<'hir> {
31893144 | Node :: ForeignItem ( ForeignItem { ident, .. } )
31903145 | Node :: Field ( FieldDef { ident, .. } )
31913146 | Node :: Variant ( Variant { ident, .. } )
3192- | Node :: MacroDef ( MacroDef { ident, .. } )
31933147 | Node :: Item ( Item { ident, .. } ) => Some ( * ident) ,
31943148 _ => None ,
31953149 }
@@ -3233,8 +3187,7 @@ impl<'hir> Node<'hir> {
32333187 Node :: Item ( Item { def_id, .. } )
32343188 | Node :: TraitItem ( TraitItem { def_id, .. } )
32353189 | Node :: ImplItem ( ImplItem { def_id, .. } )
3236- | Node :: ForeignItem ( ForeignItem { def_id, .. } )
3237- | Node :: MacroDef ( MacroDef { def_id, .. } ) => Some ( HirId :: make_owner ( * def_id) ) ,
3190+ | Node :: ForeignItem ( ForeignItem { def_id, .. } ) => Some ( HirId :: make_owner ( * def_id) ) ,
32383191 Node :: Field ( FieldDef { hir_id, .. } )
32393192 | Node :: AnonConst ( AnonConst { hir_id, .. } )
32403193 | Node :: Expr ( Expr { hir_id, .. } )
@@ -3294,7 +3247,6 @@ impl<'hir> Node<'hir> {
32943247 Node :: ForeignItem ( i) => Some ( OwnerNode :: ForeignItem ( i) ) ,
32953248 Node :: TraitItem ( i) => Some ( OwnerNode :: TraitItem ( i) ) ,
32963249 Node :: ImplItem ( i) => Some ( OwnerNode :: ImplItem ( i) ) ,
3297- Node :: MacroDef ( i) => Some ( OwnerNode :: MacroDef ( i) ) ,
32983250 Node :: Crate ( i) => Some ( OwnerNode :: Crate ( i) ) ,
32993251 _ => None ,
33003252 }
0 commit comments