@@ -3590,8 +3590,9 @@ impl Item {
3590
3590
ItemKind :: Const ( i) => Some ( & i. generics ) ,
3591
3591
ItemKind :: Fn ( i) => Some ( & i. generics ) ,
3592
3592
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, _)
3595
3596
| ItemKind :: Struct ( _, generics, _)
3596
3597
| ItemKind :: Union ( _, generics, _) => Some ( & generics) ,
3597
3598
ItemKind :: Trait ( i) => Some ( & i. generics ) ,
@@ -3698,6 +3699,14 @@ impl Default for FnHeader {
3698
3699
}
3699
3700
}
3700
3701
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
+
3701
3710
#[ derive( Clone , Encodable , Decodable , Debug , Walkable ) ]
3702
3711
pub struct Trait {
3703
3712
pub constness : Const ,
@@ -3889,7 +3898,7 @@ pub enum ItemKind {
3889
3898
/// Trait alias.
3890
3899
///
3891
3900
/// E.g., `trait Foo = Bar + Quux;`.
3892
- TraitAlias ( Ident , Generics , GenericBounds ) ,
3901
+ TraitAlias ( Box < TraitAlias > ) ,
3893
3902
/// An implementation.
3894
3903
///
3895
3904
/// E.g., `impl<A> Foo<A> { .. }` or `impl<A> Trait for Foo<A> { .. }`.
@@ -3922,7 +3931,7 @@ impl ItemKind {
3922
3931
| ItemKind :: Struct ( ident, ..)
3923
3932
| ItemKind :: Union ( ident, ..)
3924
3933
| ItemKind :: Trait ( box Trait { ident, .. } )
3925
- | ItemKind :: TraitAlias ( ident, ..)
3934
+ | ItemKind :: TraitAlias ( box TraitAlias { ident, .. } )
3926
3935
| ItemKind :: MacroDef ( ident, _)
3927
3936
| ItemKind :: Delegation ( box Delegation { ident, .. } ) => Some ( ident) ,
3928
3937
@@ -3979,7 +3988,7 @@ impl ItemKind {
3979
3988
| Self :: Struct ( _, generics, _)
3980
3989
| Self :: Union ( _, generics, _)
3981
3990
| Self :: Trait ( box Trait { generics, .. } )
3982
- | Self :: TraitAlias ( _ , generics, _ )
3991
+ | Self :: TraitAlias ( box TraitAlias { generics, .. } )
3983
3992
| Self :: Impl ( box Impl { generics, .. } ) => Some ( generics) ,
3984
3993
_ => None ,
3985
3994
}
@@ -4141,8 +4150,8 @@ mod size_asserts {
4141
4150
static_assert_size ! ( GenericBound , 88 ) ;
4142
4151
static_assert_size ! ( Generics , 40 ) ;
4143
4152
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 ) ;
4146
4155
static_assert_size ! ( LitKind , 24 ) ;
4147
4156
static_assert_size ! ( Local , 96 ) ;
4148
4157
static_assert_size ! ( MetaItemLit , 40 ) ;
0 commit comments