@@ -572,12 +572,13 @@ pub struct Generics<'hir> {
572
572
}
573
573
574
574
impl < ' hir > Generics < ' hir > {
575
- pub const fn empty ( ) -> Generics < ' hir > {
576
- Generics {
575
+ pub const fn empty ( ) -> & ' hir Generics < ' hir > {
576
+ const NOPE : Generics < ' _ > = Generics {
577
577
params : & [ ] ,
578
578
where_clause : WhereClause { predicates : & [ ] , span : DUMMY_SP } ,
579
579
span : DUMMY_SP ,
580
- }
580
+ } ;
581
+ & NOPE
581
582
}
582
583
583
584
pub fn get_named ( & self , name : Symbol ) -> Option < & GenericParam < ' _ > > {
@@ -2075,7 +2076,7 @@ impl TraitItemId {
2075
2076
pub struct TraitItem < ' hir > {
2076
2077
pub ident : Ident ,
2077
2078
pub def_id : LocalDefId ,
2078
- pub generics : Generics < ' hir > ,
2079
+ pub generics : & ' hir Generics < ' hir > ,
2079
2080
pub kind : TraitItemKind < ' hir > ,
2080
2081
pub span : Span ,
2081
2082
}
@@ -2135,7 +2136,7 @@ impl ImplItemId {
2135
2136
pub struct ImplItem < ' hir > {
2136
2137
pub ident : Ident ,
2137
2138
pub def_id : LocalDefId ,
2138
- pub generics : Generics < ' hir > ,
2139
+ pub generics : & ' hir Generics < ' hir > ,
2139
2140
pub kind : ImplItemKind < ' hir > ,
2140
2141
pub span : Span ,
2141
2142
pub vis_span : Span ,
@@ -2340,7 +2341,7 @@ pub struct BareFnTy<'hir> {
2340
2341
2341
2342
#[ derive( Debug , HashStable_Generic ) ]
2342
2343
pub struct OpaqueTy < ' hir > {
2343
- pub generics : Generics < ' hir > ,
2344
+ pub generics : & ' hir Generics < ' hir > ,
2344
2345
pub bounds : GenericBounds < ' hir > ,
2345
2346
pub origin : OpaqueTyOrigin ,
2346
2347
}
@@ -2814,7 +2815,7 @@ pub enum ItemKind<'hir> {
2814
2815
/// A `const` item.
2815
2816
Const ( & ' hir Ty < ' hir > , BodyId ) ,
2816
2817
/// A function declaration.
2817
- Fn ( FnSig < ' hir > , Generics < ' hir > , BodyId ) ,
2818
+ Fn ( FnSig < ' hir > , & ' hir Generics < ' hir > , BodyId ) ,
2818
2819
/// A MBE macro definition (`macro_rules!` or `macro`).
2819
2820
Macro ( ast:: MacroDef , MacroKind ) ,
2820
2821
/// A module.
@@ -2824,22 +2825,22 @@ pub enum ItemKind<'hir> {
2824
2825
/// Module-level inline assembly (from `global_asm!`).
2825
2826
GlobalAsm ( & ' hir InlineAsm < ' hir > ) ,
2826
2827
/// A type alias, e.g., `type Foo = Bar<u8>`.
2827
- TyAlias ( & ' hir Ty < ' hir > , Generics < ' hir > ) ,
2828
+ TyAlias ( & ' hir Ty < ' hir > , & ' hir Generics < ' hir > ) ,
2828
2829
/// An opaque `impl Trait` type alias, e.g., `type Foo = impl Bar;`.
2829
2830
OpaqueTy ( OpaqueTy < ' hir > ) ,
2830
2831
/// An enum definition, e.g., `enum Foo<A, B> {C<A>, D<B>}`.
2831
- Enum ( EnumDef < ' hir > , Generics < ' hir > ) ,
2832
+ Enum ( EnumDef < ' hir > , & ' hir Generics < ' hir > ) ,
2832
2833
/// A struct definition, e.g., `struct Foo<A> {x: A}`.
2833
- Struct ( VariantData < ' hir > , Generics < ' hir > ) ,
2834
+ Struct ( VariantData < ' hir > , & ' hir Generics < ' hir > ) ,
2834
2835
/// A union definition, e.g., `union Foo<A, B> {x: A, y: B}`.
2835
- Union ( VariantData < ' hir > , Generics < ' hir > ) ,
2836
+ Union ( VariantData < ' hir > , & ' hir Generics < ' hir > ) ,
2836
2837
/// A trait definition.
2837
- Trait ( IsAuto , Unsafety , Generics < ' hir > , GenericBounds < ' hir > , & ' hir [ TraitItemRef ] ) ,
2838
+ Trait ( IsAuto , Unsafety , & ' hir Generics < ' hir > , GenericBounds < ' hir > , & ' hir [ TraitItemRef ] ) ,
2838
2839
/// A trait alias.
2839
- TraitAlias ( Generics < ' hir > , GenericBounds < ' hir > ) ,
2840
+ TraitAlias ( & ' hir Generics < ' hir > , GenericBounds < ' hir > ) ,
2840
2841
2841
2842
/// An implementation, e.g., `impl<A> Trait for Foo { .. }`.
2842
- Impl ( Impl < ' hir > ) ,
2843
+ Impl ( & ' hir Impl < ' hir > ) ,
2843
2844
}
2844
2845
2845
2846
#[ derive( Debug , HashStable_Generic ) ]
@@ -2851,7 +2852,7 @@ pub struct Impl<'hir> {
2851
2852
// decoding as `Span`s cannot be decoded when a `Session` is not available.
2852
2853
pub defaultness_span : Option < Span > ,
2853
2854
pub constness : Constness ,
2854
- pub generics : Generics < ' hir > ,
2855
+ pub generics : & ' hir Generics < ' hir > ,
2855
2856
2856
2857
/// The trait being implemented, if any.
2857
2858
pub of_trait : Option < TraitRef < ' hir > > ,
@@ -2993,7 +2994,7 @@ impl ForeignItem<'_> {
2993
2994
#[ derive( Debug , HashStable_Generic ) ]
2994
2995
pub enum ForeignItemKind < ' hir > {
2995
2996
/// A foreign function.
2996
- Fn ( & ' hir FnDecl < ' hir > , & ' hir [ Ident ] , Generics < ' hir > ) ,
2997
+ Fn ( & ' hir FnDecl < ' hir > , & ' hir [ Ident ] , & ' hir Generics < ' hir > ) ,
2997
2998
/// A foreign static item (`static ext: u8`).
2998
2999
Static ( & ' hir Ty < ' hir > , Mutability ) ,
2999
3000
/// A foreign type.
@@ -3326,9 +3327,11 @@ mod size_asserts {
3326
3327
rustc_data_structures:: static_assert_size!( super :: QPath <' static >, 24 ) ;
3327
3328
rustc_data_structures:: static_assert_size!( super :: Ty <' static >, 72 ) ;
3328
3329
rustc_data_structures:: static_assert_size!( super :: GenericBound <' _>, 48 ) ;
3330
+ rustc_data_structures:: static_assert_size!( super :: Generics <' static >, 48 ) ;
3331
+ rustc_data_structures:: static_assert_size!( super :: Impl <' static >, 80 ) ;
3329
3332
3330
- rustc_data_structures:: static_assert_size!( super :: Item <' static >, 160 ) ;
3331
- rustc_data_structures:: static_assert_size!( super :: TraitItem <' static >, 128 ) ;
3332
- rustc_data_structures:: static_assert_size!( super :: ImplItem <' static >, 120 ) ;
3333
- rustc_data_structures:: static_assert_size!( super :: ForeignItem <' static >, 112 ) ;
3333
+ rustc_data_structures:: static_assert_size!( super :: Item <' static >, 80 ) ;
3334
+ rustc_data_structures:: static_assert_size!( super :: TraitItem <' static >, 88 ) ;
3335
+ rustc_data_structures:: static_assert_size!( super :: ImplItem <' static >, 80 ) ;
3336
+ rustc_data_structures:: static_assert_size!( super :: ForeignItem <' static >, 72 ) ;
3334
3337
}
0 commit comments