@@ -3590,8 +3590,9 @@ impl Item {
35903590 ItemKind :: Const ( i) => Some ( & i. generics ) ,
35913591 ItemKind :: Fn ( i) => Some ( & i. generics ) ,
35923592 ItemKind :: TyAlias ( i) => Some ( & i. generics ) ,
3593- ItemKind :: TraitAlias ( _, generics, _)
3594- | ItemKind :: Enum ( _, generics, _)
3593+ ItemKind :: TraitAlias ( i) => Some ( & i. generics ) ,
3594+
3595+ ItemKind :: Enum ( _, generics, _)
35953596 | ItemKind :: Struct ( _, generics, _)
35963597 | ItemKind :: Union ( _, generics, _) => Some ( & generics) ,
35973598 ItemKind :: Trait ( i) => Some ( & i. generics ) ,
@@ -3698,6 +3699,14 @@ impl Default for FnHeader {
36983699 }
36993700}
37003701
3702+ #[ derive( Clone , Encodable , Decodable , Debug , Walkable ) ]
3703+ pub struct TraitAlias {
3704+ pub ident : Ident ,
3705+ pub generics : Generics ,
3706+ #[ visitable( extra = BoundKind :: Bound ) ]
3707+ pub bounds : GenericBounds ,
3708+ }
3709+
37013710#[ derive( Clone , Encodable , Decodable , Debug , Walkable ) ]
37023711pub struct Trait {
37033712 pub constness : Const ,
@@ -3889,7 +3898,7 @@ pub enum ItemKind {
38893898 /// Trait alias.
38903899 ///
38913900 /// E.g., `trait Foo = Bar + Quux;`.
3892- TraitAlias ( Ident , Generics , GenericBounds ) ,
3901+ TraitAlias ( Box < TraitAlias > ) ,
38933902 /// An implementation.
38943903 ///
38953904 /// E.g., `impl<A> Foo<A> { .. }` or `impl<A> Trait for Foo<A> { .. }`.
@@ -3922,7 +3931,7 @@ impl ItemKind {
39223931 | ItemKind :: Struct ( ident, ..)
39233932 | ItemKind :: Union ( ident, ..)
39243933 | ItemKind :: Trait ( box Trait { ident, .. } )
3925- | ItemKind :: TraitAlias ( ident, ..)
3934+ | ItemKind :: TraitAlias ( box TraitAlias { ident, .. } )
39263935 | ItemKind :: MacroDef ( ident, _)
39273936 | ItemKind :: Delegation ( box Delegation { ident, .. } ) => Some ( ident) ,
39283937
@@ -3979,7 +3988,7 @@ impl ItemKind {
39793988 | Self :: Struct ( _, generics, _)
39803989 | Self :: Union ( _, generics, _)
39813990 | Self :: Trait ( box Trait { generics, .. } )
3982- | Self :: TraitAlias ( _ , generics, _ )
3991+ | Self :: TraitAlias ( box TraitAlias { generics, .. } )
39833992 | Self :: Impl ( box Impl { generics, .. } ) => Some ( generics) ,
39843993 _ => None ,
39853994 }
@@ -4141,8 +4150,8 @@ mod size_asserts {
41414150 static_assert_size ! ( GenericBound , 88 ) ;
41424151 static_assert_size ! ( Generics , 40 ) ;
41434152 static_assert_size ! ( Impl , 136 ) ;
4144- static_assert_size ! ( Item , 144 ) ;
4145- static_assert_size ! ( ItemKind , 80 ) ;
4153+ static_assert_size ! ( Item , 136 ) ;
4154+ static_assert_size ! ( ItemKind , 72 ) ;
41464155 static_assert_size ! ( LitKind , 24 ) ;
41474156 static_assert_size ! ( Local , 96 ) ;
41484157 static_assert_size ! ( MetaItemLit , 40 ) ;
0 commit comments