@@ -2263,21 +2263,21 @@ pub struct GlobalAsm {
22632263}
22642264
22652265#[ derive( RustcEncodable , RustcDecodable , Debug , HashStable ) ]
2266- pub struct EnumDef {
2267- pub variants : HirVec < Variant > ,
2266+ pub struct EnumDef < ' hir > {
2267+ pub variants : & ' hir [ Variant < ' hir > ] ,
22682268}
22692269
22702270#[ derive( RustcEncodable , RustcDecodable , Debug , HashStable ) ]
2271- pub struct Variant {
2271+ pub struct Variant < ' hir > {
22722272 /// Name of the variant.
22732273 #[ stable_hasher( project( name) ) ]
22742274 pub ident : Ident ,
22752275 /// Attributes of the variant.
2276- pub attrs : HirVec < Attribute > ,
2276+ pub attrs : & ' hir [ Attribute ] ,
22772277 /// Id of the variant (not the constructor, see `VariantData::ctor_hir_id()`).
22782278 pub id : HirId ,
22792279 /// Fields and constructor id of the variant.
2280- pub data : VariantData ,
2280+ pub data : VariantData < ' hir > ,
22812281 /// Explicit discriminant (e.g., `Foo = 1`).
22822282 pub disr_expr : Option < AnonConst > ,
22832283 /// Span
@@ -2397,24 +2397,24 @@ impl StructField {
23972397
23982398/// Fields and constructor IDs of enum variants and structs.
23992399#[ derive( RustcEncodable , RustcDecodable , Debug , HashStable ) ]
2400- pub enum VariantData {
2400+ pub enum VariantData < ' hir > {
24012401 /// A struct variant.
24022402 ///
24032403 /// E.g., `Bar { .. }` as in `enum Foo { Bar { .. } }`.
2404- Struct ( HirVec < StructField > , /* recovered */ bool ) ,
2404+ Struct ( & ' hir [ StructField ] , /* recovered */ bool ) ,
24052405 /// A tuple variant.
24062406 ///
24072407 /// E.g., `Bar(..)` as in `enum Foo { Bar(..) }`.
2408- Tuple ( HirVec < StructField > , HirId ) ,
2408+ Tuple ( & ' hir [ StructField ] , HirId ) ,
24092409 /// A unit variant.
24102410 ///
24112411 /// E.g., `Bar = ..` as in `enum Foo { Bar = .. }`.
24122412 Unit ( HirId ) ,
24132413}
24142414
2415- impl VariantData {
2415+ impl VariantData < ' hir > {
24162416 /// Return the fields of this variant.
2417- pub fn fields ( & self ) -> & [ StructField ] {
2417+ pub fn fields ( & self ) -> & ' hir [ StructField ] {
24182418 match * self {
24192419 VariantData :: Struct ( ref fields, ..) | VariantData :: Tuple ( ref fields, ..) => fields,
24202420 _ => & [ ] ,
@@ -2499,11 +2499,11 @@ pub enum ItemKind<'hir> {
24992499 /// An opaque `impl Trait` type alias, e.g., `type Foo = impl Bar;`.
25002500 OpaqueTy ( OpaqueTy ) ,
25012501 /// An enum definition, e.g., `enum Foo<A, B> {C<A>, D<B>}`.
2502- Enum ( EnumDef , Generics ) ,
2502+ Enum ( EnumDef < ' hir > , Generics ) ,
25032503 /// A struct definition, e.g., `struct Foo<A> {x: A}`.
2504- Struct ( VariantData , Generics ) ,
2504+ Struct ( VariantData < ' hir > , Generics ) ,
25052505 /// A union definition, e.g., `union Foo<A, B> {x: A, y: B}`.
2506- Union ( VariantData , Generics ) ,
2506+ Union ( VariantData < ' hir > , Generics ) ,
25072507 /// A trait definition.
25082508 Trait ( IsAuto , Unsafety , Generics , GenericBounds , & ' hir [ TraitItemRef ] ) ,
25092509 /// A trait alias.
@@ -2791,7 +2791,7 @@ pub enum Node<'hir> {
27912791 ForeignItem ( & ' hir ForeignItem < ' hir > ) ,
27922792 TraitItem ( & ' hir TraitItem < ' hir > ) ,
27932793 ImplItem ( & ' hir ImplItem < ' hir > ) ,
2794- Variant ( & ' hir Variant ) ,
2794+ Variant ( & ' hir Variant < ' hir > ) ,
27952795 Field ( & ' hir StructField ) ,
27962796 AnonConst ( & ' hir AnonConst ) ,
27972797 Expr ( & ' hir Expr ) ,
@@ -2808,7 +2808,7 @@ pub enum Node<'hir> {
28082808
28092809 /// `Ctor` refers to the constructor of an enum variant or struct. Only tuple or unit variants
28102810 /// with synthesized constructors.
2811- Ctor ( & ' hir VariantData ) ,
2811+ Ctor ( & ' hir VariantData < ' hir > ) ,
28122812
28132813 Lifetime ( & ' hir Lifetime ) ,
28142814 GenericParam ( & ' hir GenericParam ) ,
0 commit comments