@@ -3273,9 +3273,6 @@ pub struct Item<K = ItemKind> {
32733273    pub  id :  NodeId , 
32743274    pub  span :  Span , 
32753275    pub  vis :  Visibility , 
3276-     /// The name of the item. 
3277-      /// It might be a dummy name in case of anonymous items. 
3278-      pub  ident :  Ident , 
32793276
32803277    pub  kind :  K , 
32813278
@@ -3297,23 +3294,23 @@ impl Item {
32973294
32983295    pub  fn  opt_generics ( & self )  -> Option < & Generics >  { 
32993296        match  & self . kind  { 
3300-             ItemKind :: ExternCrate ( _ ) 
3297+             ItemKind :: ExternCrate ( .. ) 
33013298            | ItemKind :: Use ( _) 
3302-             | ItemKind :: Mod ( _ ,  _ ) 
3299+             | ItemKind :: Mod ( .. ) 
33033300            | ItemKind :: ForeignMod ( _) 
33043301            | ItemKind :: GlobalAsm ( _) 
33053302            | ItemKind :: MacCall ( _) 
33063303            | ItemKind :: Delegation ( _) 
33073304            | ItemKind :: DelegationMac ( _) 
3308-             | ItemKind :: MacroDef ( _ )  => None , 
3305+             | ItemKind :: MacroDef ( .. )  => None , 
33093306            ItemKind :: Static ( _)  => None , 
33103307            ItemKind :: Const ( i)  => Some ( & i. generics ) , 
33113308            ItemKind :: Fn ( i)  => Some ( & i. generics ) , 
33123309            ItemKind :: TyAlias ( i)  => Some ( & i. generics ) , 
3313-             ItemKind :: TraitAlias ( generics,  _) 
3314-             | ItemKind :: Enum ( _,  generics) 
3315-             | ItemKind :: Struct ( _,  generics) 
3316-             | ItemKind :: Union ( _,  generics)  => Some ( & generics) , 
3310+             ItemKind :: TraitAlias ( _ ,   generics,  _) 
3311+             | ItemKind :: Enum ( _,  _ ,   generics) 
3312+             | ItemKind :: Struct ( _,  _ ,   generics) 
3313+             | ItemKind :: Union ( _,  _ ,   generics)  => Some ( & generics) , 
33173314            ItemKind :: Trait ( i)  => Some ( & i. generics ) , 
33183315            ItemKind :: Impl ( i)  => Some ( & i. generics ) , 
33193316        } 
@@ -3390,6 +3387,7 @@ impl Default for FnHeader {
33903387pub  struct  Trait  { 
33913388    pub  safety :  Safety , 
33923389    pub  is_auto :  IsAuto , 
3390+     pub  ident :  Ident , 
33933391    pub  generics :  Generics , 
33943392    pub  bounds :  GenericBounds , 
33953393    pub  items :  ThinVec < P < AssocItem > > , 
@@ -3435,6 +3433,7 @@ pub struct TyAliasWhereClauses {
34353433#[ derive( Clone ,  Encodable ,  Decodable ,  Debug ) ]  
34363434pub  struct  TyAlias  { 
34373435    pub  defaultness :  Defaultness , 
3436+     pub  ident :  Ident , 
34383437    pub  generics :  Generics , 
34393438    pub  where_clauses :  TyAliasWhereClauses , 
34403439    pub  bounds :  GenericBounds , 
@@ -3463,6 +3462,7 @@ pub struct FnContract {
34633462#[ derive( Clone ,  Encodable ,  Decodable ,  Debug ) ]  
34643463pub  struct  Fn  { 
34653464    pub  defaultness :  Defaultness , 
3465+     pub  ident :  Ident , 
34663466    pub  generics :  Generics , 
34673467    pub  sig :  FnSig , 
34683468    pub  contract :  Option < P < FnContract > > , 
@@ -3476,6 +3476,7 @@ pub struct Delegation {
34763476     pub  id :  NodeId , 
34773477    pub  qself :  Option < P < QSelf > > , 
34783478    pub  path :  Path , 
3479+     pub  ident :  Ident , 
34793480    pub  rename :  Option < Ident > , 
34803481    pub  body :  Option < P < Block > > , 
34813482    /// The item was expanded from a glob delegation item. 
@@ -3493,6 +3494,7 @@ pub struct DelegationMac {
34933494
34943495#[ derive( Clone ,  Encodable ,  Decodable ,  Debug ) ]  
34953496pub  struct  StaticItem  { 
3497+     pub  ident :  Ident , 
34963498    pub  ty :  P < Ty > , 
34973499    pub  safety :  Safety , 
34983500    pub  mutability :  Mutability , 
@@ -3502,6 +3504,7 @@ pub struct StaticItem {
35023504#[ derive( Clone ,  Encodable ,  Decodable ,  Debug ) ]  
35033505pub  struct  ConstItem  { 
35043506    pub  defaultness :  Defaultness , 
3507+     pub  ident :  Ident , 
35053508    pub  generics :  Generics , 
35063509    pub  ty :  P < Ty > , 
35073510    pub  expr :  Option < P < Expr > > , 
@@ -3513,7 +3516,7 @@ pub enum ItemKind {
35133516    /// An `extern crate` item, with the optional *original* crate name if the crate was renamed. 
35143517     /// 
35153518     /// E.g., `extern crate foo` or `extern crate foo_bar as foo`. 
3516-      ExternCrate ( Option < Symbol > ) , 
3519+      ExternCrate ( Option < Symbol > ,   Ident ) , 
35173520    /// A use declaration item (`use`). 
35183521     /// 
35193522     /// E.g., `use foo;`, `use foo::bar;` or `use foo::bar as FooBar;`. 
@@ -3535,7 +3538,7 @@ pub enum ItemKind {
35353538     /// E.g., `mod foo;` or `mod foo { .. }`. 
35363539     /// `unsafe` keyword on modules is accepted syntactically for macro DSLs, but not 
35373540     /// semantically by Rust. 
3538-      Mod ( Safety ,  ModKind ) , 
3541+      Mod ( Safety ,  Ident ,   ModKind ) , 
35393542    /// An external module (`extern`). 
35403543     /// 
35413544     /// E.g., `extern {}` or `extern "C" {}`. 
@@ -3549,23 +3552,23 @@ pub enum ItemKind {
35493552    /// An enum definition (`enum`). 
35503553     /// 
35513554     /// E.g., `enum Foo<A, B> { C<A>, D<B> }`. 
3552-      Enum ( EnumDef ,  Generics ) , 
3555+      Enum ( Ident ,   EnumDef ,  Generics ) , 
35533556    /// A struct definition (`struct`). 
35543557     /// 
35553558     /// E.g., `struct Foo<A> { x: A }`. 
3556-      Struct ( VariantData ,  Generics ) , 
3559+      Struct ( Ident ,   VariantData ,  Generics ) , 
35573560    /// A union definition (`union`). 
35583561     /// 
35593562     /// E.g., `union Foo<A, B> { x: A, y: B }`. 
3560-      Union ( VariantData ,  Generics ) , 
3563+      Union ( Ident ,   VariantData ,  Generics ) , 
35613564    /// A trait declaration (`trait`). 
35623565     /// 
35633566     /// E.g., `trait Foo { .. }`, `trait Foo<T> { .. }` or `auto trait Foo {}`. 
35643567     Trait ( Box < Trait > ) , 
35653568    /// Trait alias. 
35663569     /// 
35673570     /// E.g., `trait Foo = Bar + Quux;`. 
3568-      TraitAlias ( Generics ,  GenericBounds ) , 
3571+      TraitAlias ( Ident ,   Generics ,  GenericBounds ) , 
35693572    /// An implementation. 
35703573     /// 
35713574     /// E.g., `impl<A> Foo<A> { .. }` or `impl<A> Trait for Foo<A> { .. }`. 
@@ -3576,7 +3579,7 @@ pub enum ItemKind {
35763579     MacCall ( P < MacCall > ) , 
35773580
35783581    /// A macro definition. 
3579-      MacroDef ( MacroDef ) , 
3582+      MacroDef ( Ident ,   MacroDef ) , 
35803583
35813584    /// A single delegation item (`reuse`). 
35823585     /// 
@@ -3588,6 +3591,31 @@ pub enum ItemKind {
35883591} 
35893592
35903593impl  ItemKind  { 
3594+     pub  fn  ident ( & self )  -> Option < Ident >  { 
3595+         match  * self  { 
3596+             ItemKind :: ExternCrate ( _,  ident) 
3597+             | ItemKind :: Static ( box StaticItem  {  ident,  .. } ) 
3598+             | ItemKind :: Const ( box ConstItem  {  ident,  .. } ) 
3599+             | ItemKind :: Fn ( box  Fn  {  ident,  .. } ) 
3600+             | ItemKind :: Mod ( _,  ident,  _) 
3601+             | ItemKind :: TyAlias ( box TyAlias  {  ident,  .. } ) 
3602+             | ItemKind :: Enum ( ident,  ..) 
3603+             | ItemKind :: Struct ( ident,  ..) 
3604+             | ItemKind :: Union ( ident,  ..) 
3605+             | ItemKind :: Trait ( box Trait  {  ident,  .. } ) 
3606+             | ItemKind :: TraitAlias ( ident,  ..) 
3607+             | ItemKind :: MacroDef ( ident,  _) 
3608+             | ItemKind :: Delegation ( box Delegation  {  ident,  .. } )  => Some ( ident) , 
3609+ 
3610+             ItemKind :: Use ( _) 
3611+             | ItemKind :: ForeignMod ( _) 
3612+             | ItemKind :: GlobalAsm ( _) 
3613+             | ItemKind :: Impl ( _) 
3614+             | ItemKind :: MacCall ( _) 
3615+             | ItemKind :: DelegationMac ( _)  => None , 
3616+         } 
3617+     } 
3618+ 
35913619    /// "a" or "an" 
35923620     pub  fn  article ( & self )  -> & ' static  str  { 
35933621        use  ItemKind :: * ; 
@@ -3628,11 +3656,11 @@ impl ItemKind {
36283656            Self :: Fn ( box  Fn  {  generics,  .. } ) 
36293657            | Self :: TyAlias ( box TyAlias  {  generics,  .. } ) 
36303658            | Self :: Const ( box ConstItem  {  generics,  .. } ) 
3631-             | Self :: Enum ( _,  generics) 
3632-             | Self :: Struct ( _,  generics) 
3633-             | Self :: Union ( _,  generics) 
3659+             | Self :: Enum ( _,  _ ,   generics) 
3660+             | Self :: Struct ( _,  _ ,   generics) 
3661+             | Self :: Union ( _,  _ ,   generics) 
36343662            | Self :: Trait ( box Trait  {  generics,  .. } ) 
3635-             | Self :: TraitAlias ( generics,  _) 
3663+             | Self :: TraitAlias ( _ ,   generics,  _) 
36363664            | Self :: Impl ( box Impl  {  generics,  .. } )  => Some ( generics) , 
36373665            _ => None , 
36383666        } 
@@ -3668,6 +3696,17 @@ pub enum AssocItemKind {
36683696} 
36693697
36703698impl  AssocItemKind  { 
3699+     pub  fn  ident ( & self )  -> Option < Ident >  { 
3700+         match  * self  { 
3701+             AssocItemKind :: Const ( box ConstItem  {  ident,  .. } ) 
3702+             | AssocItemKind :: Fn ( box  Fn  {  ident,  .. } ) 
3703+             | AssocItemKind :: Type ( box TyAlias  {  ident,  .. } ) 
3704+             | AssocItemKind :: Delegation ( box Delegation  {  ident,  .. } )  => Some ( ident) , 
3705+ 
3706+             AssocItemKind :: MacCall ( _)  | AssocItemKind :: DelegationMac ( _)  => None , 
3707+         } 
3708+     } 
3709+ 
36713710    pub  fn  defaultness ( & self )  -> Defaultness  { 
36723711        match  * self  { 
36733712            Self :: Const ( box ConstItem  {  defaultness,  .. } ) 
@@ -3714,14 +3753,26 @@ impl TryFrom<ItemKind> for AssocItemKind {
37143753pub  enum  ForeignItemKind  { 
37153754    /// A foreign static item (`static FOO: u8`). 
37163755     Static ( Box < StaticItem > ) , 
3717-     /// An  foreign function. 
3756+     /// A  foreign function. 
37183757     Fn ( Box < Fn > ) , 
3719-     /// An  foreign type. 
3758+     /// A  foreign type. 
37203759     TyAlias ( Box < TyAlias > ) , 
37213760    /// A macro expanding to foreign items. 
37223761     MacCall ( P < MacCall > ) , 
37233762} 
37243763
3764+ impl  ForeignItemKind  { 
3765+     pub  fn  ident ( & self )  -> Option < Ident >  { 
3766+         match  * self  { 
3767+             ForeignItemKind :: Static ( box StaticItem  {  ident,  .. } ) 
3768+             | ForeignItemKind :: Fn ( box  Fn  {  ident,  .. } ) 
3769+             | ForeignItemKind :: TyAlias ( box TyAlias  {  ident,  .. } )  => Some ( ident) , 
3770+ 
3771+             ForeignItemKind :: MacCall ( _)  => None , 
3772+         } 
3773+     } 
3774+ } 
3775+ 
37253776impl  From < ForeignItemKind >  for  ItemKind  { 
37263777    fn  from ( foreign_item_kind :  ForeignItemKind )  -> ItemKind  { 
37273778        match  foreign_item_kind { 
@@ -3758,21 +3809,21 @@ mod size_asserts {
37583809
37593810    use  super :: * ; 
37603811    // tidy-alphabetical-start 
3761-     static_assert_size ! ( AssocItem ,  88 ) ; 
3812+     static_assert_size ! ( AssocItem ,  80 ) ; 
37623813    static_assert_size ! ( AssocItemKind ,  16 ) ; 
37633814    static_assert_size ! ( Attribute ,  32 ) ; 
37643815    static_assert_size ! ( Block ,  32 ) ; 
37653816    static_assert_size ! ( Expr ,  72 ) ; 
37663817    static_assert_size ! ( ExprKind ,  40 ) ; 
3767-     static_assert_size ! ( Fn ,  176 ) ; 
3768-     static_assert_size ! ( ForeignItem ,  88 ) ; 
3818+     static_assert_size ! ( Fn ,  184 ) ; 
3819+     static_assert_size ! ( ForeignItem ,  80 ) ; 
37693820    static_assert_size ! ( ForeignItemKind ,  16 ) ; 
37703821    static_assert_size ! ( GenericArg ,  24 ) ; 
37713822    static_assert_size ! ( GenericBound ,  88 ) ; 
37723823    static_assert_size ! ( Generics ,  40 ) ; 
37733824    static_assert_size ! ( Impl ,  136 ) ; 
3774-     static_assert_size ! ( Item ,  136 ) ; 
3775-     static_assert_size ! ( ItemKind ,  64 ) ; 
3825+     static_assert_size ! ( Item ,  144 ) ; 
3826+     static_assert_size ! ( ItemKind ,  80 ) ; 
37763827    static_assert_size ! ( LitKind ,  24 ) ; 
37773828    static_assert_size ! ( Local ,  80 ) ; 
37783829    static_assert_size ! ( MetaItemLit ,  40 ) ; 
0 commit comments