@@ -3538,8 +3538,9 @@ impl Item {
3538
3538
ItemKind :: Const ( i) => Some ( & i. generics ) ,
3539
3539
ItemKind :: Fn ( i) => Some ( & i. generics ) ,
3540
3540
ItemKind :: TyAlias ( i) => Some ( & i. generics ) ,
3541
- ItemKind :: TraitAlias ( _, generics, _)
3542
- | ItemKind :: Enum ( _, generics, _)
3541
+ ItemKind :: TraitAlias ( i) => Some ( & i. generics ) ,
3542
+
3543
+ ItemKind :: Enum ( _, generics, _)
3543
3544
| ItemKind :: Struct ( _, generics, _)
3544
3545
| ItemKind :: Union ( _, generics, _) => Some ( & generics) ,
3545
3546
ItemKind :: Trait ( i) => Some ( & i. generics ) ,
@@ -3621,6 +3622,14 @@ impl Default for FnHeader {
3621
3622
}
3622
3623
}
3623
3624
3625
+ #[ derive( Clone , Encodable , Decodable , Debug , Walkable ) ]
3626
+ pub struct TraitAlias {
3627
+ pub ident : Ident ,
3628
+ pub generics : Generics ,
3629
+ #[ visitable( extra = BoundKind :: Bound ) ]
3630
+ pub bounds : GenericBounds ,
3631
+ }
3632
+
3624
3633
#[ derive( Clone , Encodable , Decodable , Debug , Walkable ) ]
3625
3634
pub struct Trait {
3626
3635
pub constness : Const ,
@@ -3816,7 +3825,7 @@ pub enum ItemKind {
3816
3825
/// Trait alias.
3817
3826
///
3818
3827
/// E.g., `trait Foo = Bar + Quux;`.
3819
- TraitAlias ( Ident , Generics , GenericBounds ) ,
3828
+ TraitAlias ( Box < TraitAlias > ) ,
3820
3829
/// An implementation.
3821
3830
///
3822
3831
/// E.g., `impl<A> Foo<A> { .. }` or `impl<A> Trait for Foo<A> { .. }`.
@@ -3849,7 +3858,7 @@ impl ItemKind {
3849
3858
| ItemKind :: Struct ( ident, ..)
3850
3859
| ItemKind :: Union ( ident, ..)
3851
3860
| ItemKind :: Trait ( box Trait { ident, .. } )
3852
- | ItemKind :: TraitAlias ( ident, ..)
3861
+ | ItemKind :: TraitAlias ( box TraitAlias { ident, .. } )
3853
3862
| ItemKind :: MacroDef ( ident, _)
3854
3863
| ItemKind :: Delegation ( box Delegation { ident, .. } ) => Some ( ident) ,
3855
3864
@@ -3906,7 +3915,7 @@ impl ItemKind {
3906
3915
| Self :: Struct ( _, generics, _)
3907
3916
| Self :: Union ( _, generics, _)
3908
3917
| Self :: Trait ( box Trait { generics, .. } )
3909
- | Self :: TraitAlias ( _ , generics, _ )
3918
+ | Self :: TraitAlias ( box TraitAlias { generics, .. } )
3910
3919
| Self :: Impl ( Impl { generics, .. } ) => Some ( generics) ,
3911
3920
_ => None ,
3912
3921
}
@@ -4068,8 +4077,8 @@ mod size_asserts {
4068
4077
static_assert_size ! ( GenericBound , 88 ) ;
4069
4078
static_assert_size ! ( Generics , 40 ) ;
4070
4079
static_assert_size ! ( Impl , 64 ) ;
4071
- static_assert_size ! ( Item , 144 ) ;
4072
- static_assert_size ! ( ItemKind , 80 ) ;
4080
+ static_assert_size ! ( Item , 136 ) ;
4081
+ static_assert_size ! ( ItemKind , 72 ) ;
4073
4082
static_assert_size ! ( LitKind , 24 ) ;
4074
4083
static_assert_size ! ( Local , 96 ) ;
4075
4084
static_assert_size ! ( MetaItemLit , 40 ) ;
0 commit comments