@@ -670,9 +670,6 @@ pub struct ModuleItems {
670
670
/// [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/hir.html
671
671
#[ derive( Debug ) ]
672
672
pub 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
-
676
673
pub owners : IndexVec < LocalDefId , Option < OwnerNode < ' hir > > > ,
677
674
pub bodies : BTreeMap < BodyId , Body < ' hir > > ,
678
675
pub trait_impls : BTreeMap < DefId , Vec < LocalDefId > > ,
@@ -743,7 +740,7 @@ impl Crate<'_> {
743
740
OwnerNode :: ForeignItem ( item) => visitor. visit_foreign_item ( item) ,
744
741
OwnerNode :: ImplItem ( item) => visitor. visit_impl_item ( item) ,
745
742
OwnerNode :: TraitItem ( item) => visitor. visit_trait_item ( item) ,
746
- OwnerNode :: MacroDef ( _ ) | OwnerNode :: Crate ( _) => { }
743
+ OwnerNode :: Crate ( _) => { }
747
744
}
748
745
}
749
746
}
@@ -758,7 +755,7 @@ impl Crate<'_> {
758
755
Some ( OwnerNode :: ForeignItem ( item) ) => visitor. visit_foreign_item ( item) ,
759
756
Some ( OwnerNode :: ImplItem ( item) ) => visitor. visit_impl_item ( item) ,
760
757
Some ( OwnerNode :: TraitItem ( item) ) => visitor. visit_trait_item ( item) ,
761
- Some ( OwnerNode :: MacroDef ( _ ) ) | Some ( OwnerNode :: Crate ( _) ) | None => { }
758
+ Some ( OwnerNode :: Crate ( _) ) | None => { }
762
759
} )
763
760
}
764
761
@@ -768,32 +765,6 @@ impl Crate<'_> {
768
765
_ => None ,
769
766
} )
770
767
}
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
- }
797
768
}
798
769
799
770
/// A block of statements `{ .. }`, which may have a label (in this case the
@@ -2601,7 +2572,7 @@ pub struct PolyTraitRef<'hir> {
2601
2572
2602
2573
pub type Visibility < ' hir > = Spanned < VisibilityKind < ' hir > > ;
2603
2574
2604
- #[ derive( Debug ) ]
2575
+ #[ derive( Copy , Clone , Debug ) ]
2605
2576
pub enum VisibilityKind < ' hir > {
2606
2577
Public ,
2607
2578
Crate ( CrateSugar ) ,
@@ -2794,6 +2765,8 @@ pub enum ItemKind<'hir> {
2794
2765
Mod ( Mod < ' hir > ) ,
2795
2766
/// An external module, e.g. `extern { .. }`.
2796
2767
ForeignMod { abi : Abi , items : & ' hir [ ForeignItemRef < ' hir > ] } ,
2768
+ /// A MBE macro (`macro_rules!` or `macro`).
2769
+ Macro ( ast:: MacroDef ) ,
2797
2770
/// Module-level inline assembly (from `global_asm!`).
2798
2771
GlobalAsm ( & ' hir InlineAsm < ' hir > ) ,
2799
2772
/// A type alias, e.g., `type Foo = Bar<u8>`.
@@ -2857,6 +2830,7 @@ impl ItemKind<'_> {
2857
2830
ItemKind :: Fn ( ..) => "function" ,
2858
2831
ItemKind :: Mod ( ..) => "module" ,
2859
2832
ItemKind :: ForeignMod { .. } => "extern block" ,
2833
+ ItemKind :: Macro ( ..) => "macro" ,
2860
2834
ItemKind :: GlobalAsm ( ..) => "global asm item" ,
2861
2835
ItemKind :: TyAlias ( ..) => "type alias" ,
2862
2836
ItemKind :: OpaqueTy ( ..) => "opaque type" ,
@@ -2995,7 +2969,6 @@ pub enum OwnerNode<'hir> {
2995
2969
ForeignItem ( & ' hir ForeignItem < ' hir > ) ,
2996
2970
TraitItem ( & ' hir TraitItem < ' hir > ) ,
2997
2971
ImplItem ( & ' hir ImplItem < ' hir > ) ,
2998
- MacroDef ( & ' hir MacroDef < ' hir > ) ,
2999
2972
Crate ( & ' hir Mod < ' hir > ) ,
3000
2973
}
3001
2974
@@ -3005,8 +2978,7 @@ impl<'hir> OwnerNode<'hir> {
3005
2978
OwnerNode :: Item ( Item { ident, .. } )
3006
2979
| OwnerNode :: ForeignItem ( ForeignItem { ident, .. } )
3007
2980
| OwnerNode :: ImplItem ( ImplItem { ident, .. } )
3008
- | OwnerNode :: TraitItem ( TraitItem { ident, .. } )
3009
- | OwnerNode :: MacroDef ( MacroDef { ident, .. } ) => Some ( * ident) ,
2981
+ | OwnerNode :: TraitItem ( TraitItem { ident, .. } ) => Some ( * ident) ,
3010
2982
OwnerNode :: Crate ( ..) => None ,
3011
2983
}
3012
2984
}
@@ -3017,7 +2989,6 @@ impl<'hir> OwnerNode<'hir> {
3017
2989
| OwnerNode :: ForeignItem ( ForeignItem { span, .. } )
3018
2990
| OwnerNode :: ImplItem ( ImplItem { span, .. } )
3019
2991
| OwnerNode :: TraitItem ( TraitItem { span, .. } )
3020
- | OwnerNode :: MacroDef ( MacroDef { span, .. } )
3021
2992
| OwnerNode :: Crate ( Mod { inner : span, .. } ) => * span,
3022
2993
}
3023
2994
}
@@ -3061,8 +3032,7 @@ impl<'hir> OwnerNode<'hir> {
3061
3032
OwnerNode :: Item ( Item { def_id, .. } )
3062
3033
| OwnerNode :: TraitItem ( TraitItem { def_id, .. } )
3063
3034
| 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,
3066
3036
OwnerNode :: Crate ( ..) => crate :: CRATE_HIR_ID . owner ,
3067
3037
}
3068
3038
}
@@ -3094,13 +3064,6 @@ impl<'hir> OwnerNode<'hir> {
3094
3064
_ => panic ! ( ) ,
3095
3065
}
3096
3066
}
3097
-
3098
- pub fn expect_macro_def ( self ) -> & ' hir MacroDef < ' hir > {
3099
- match self {
3100
- OwnerNode :: MacroDef ( n) => n,
3101
- _ => panic ! ( ) ,
3102
- }
3103
- }
3104
3067
}
3105
3068
3106
3069
impl < ' hir > Into < OwnerNode < ' hir > > for & ' hir Item < ' hir > {
@@ -3127,20 +3090,13 @@ impl<'hir> Into<OwnerNode<'hir>> for &'hir TraitItem<'hir> {
3127
3090
}
3128
3091
}
3129
3092
3130
- impl < ' hir > Into < OwnerNode < ' hir > > for & ' hir MacroDef < ' hir > {
3131
- fn into ( self ) -> OwnerNode < ' hir > {
3132
- OwnerNode :: MacroDef ( self )
3133
- }
3134
- }
3135
-
3136
3093
impl < ' hir > Into < Node < ' hir > > for OwnerNode < ' hir > {
3137
3094
fn into ( self ) -> Node < ' hir > {
3138
3095
match self {
3139
3096
OwnerNode :: Item ( n) => Node :: Item ( n) ,
3140
3097
OwnerNode :: ForeignItem ( n) => Node :: ForeignItem ( n) ,
3141
3098
OwnerNode :: ImplItem ( n) => Node :: ImplItem ( n) ,
3142
3099
OwnerNode :: TraitItem ( n) => Node :: TraitItem ( n) ,
3143
- OwnerNode :: MacroDef ( n) => Node :: MacroDef ( n) ,
3144
3100
OwnerNode :: Crate ( n) => Node :: Crate ( n) ,
3145
3101
}
3146
3102
}
@@ -3166,7 +3122,6 @@ pub enum Node<'hir> {
3166
3122
Arm ( & ' hir Arm < ' hir > ) ,
3167
3123
Block ( & ' hir Block < ' hir > ) ,
3168
3124
Local ( & ' hir Local < ' hir > ) ,
3169
- MacroDef ( & ' hir MacroDef < ' hir > ) ,
3170
3125
3171
3126
/// `Ctor` refers to the constructor of an enum variant or struct. Only tuple or unit variants
3172
3127
/// with synthesized constructors.
@@ -3189,7 +3144,6 @@ impl<'hir> Node<'hir> {
3189
3144
| Node :: ForeignItem ( ForeignItem { ident, .. } )
3190
3145
| Node :: Field ( FieldDef { ident, .. } )
3191
3146
| Node :: Variant ( Variant { ident, .. } )
3192
- | Node :: MacroDef ( MacroDef { ident, .. } )
3193
3147
| Node :: Item ( Item { ident, .. } ) => Some ( * ident) ,
3194
3148
_ => None ,
3195
3149
}
@@ -3233,8 +3187,7 @@ impl<'hir> Node<'hir> {
3233
3187
Node :: Item ( Item { def_id, .. } )
3234
3188
| Node :: TraitItem ( TraitItem { def_id, .. } )
3235
3189
| 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) ) ,
3238
3191
Node :: Field ( FieldDef { hir_id, .. } )
3239
3192
| Node :: AnonConst ( AnonConst { hir_id, .. } )
3240
3193
| Node :: Expr ( Expr { hir_id, .. } )
@@ -3294,7 +3247,6 @@ impl<'hir> Node<'hir> {
3294
3247
Node :: ForeignItem ( i) => Some ( OwnerNode :: ForeignItem ( i) ) ,
3295
3248
Node :: TraitItem ( i) => Some ( OwnerNode :: TraitItem ( i) ) ,
3296
3249
Node :: ImplItem ( i) => Some ( OwnerNode :: ImplItem ( i) ) ,
3297
- Node :: MacroDef ( i) => Some ( OwnerNode :: MacroDef ( i) ) ,
3298
3250
Node :: Crate ( i) => Some ( OwnerNode :: Crate ( i) ) ,
3299
3251
_ => None ,
3300
3252
}
0 commit comments