@@ -407,7 +407,21 @@ impl Trait {
407407 pub fn auto_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ auto] ) }
408408 pub fn trait_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ trait ] ) }
409409 pub fn assoc_item_list ( & self ) -> Option < AssocItemList > { support:: child ( & self . syntax ) }
410+ }
411+
412+ #[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
413+ pub struct TraitAlias {
414+ pub ( crate ) syntax : SyntaxNode ,
415+ }
416+ impl ast:: HasAttrs for TraitAlias { }
417+ impl ast:: HasName for TraitAlias { }
418+ impl ast:: HasVisibility for TraitAlias { }
419+ impl ast:: HasGenericParams for TraitAlias { }
420+ impl ast:: HasDocComments for TraitAlias { }
421+ impl TraitAlias {
422+ pub fn trait_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ trait ] ) }
410423 pub fn eq_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ =] ) }
424+ pub fn type_bound_list ( & self ) -> Option < TypeBoundList > { support:: child ( & self . syntax ) }
411425 pub fn semicolon_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ ; ] ) }
412426}
413427
@@ -1573,6 +1587,7 @@ pub enum Item {
15731587 Static ( Static ) ,
15741588 Struct ( Struct ) ,
15751589 Trait ( Trait ) ,
1590+ TraitAlias ( TraitAlias ) ,
15761591 TypeAlias ( TypeAlias ) ,
15771592 Union ( Union ) ,
15781593 Use ( Use ) ,
@@ -2058,6 +2073,17 @@ impl AstNode for Trait {
20582073 }
20592074 fn syntax ( & self ) -> & SyntaxNode { & self . syntax }
20602075}
2076+ impl AstNode for TraitAlias {
2077+ fn can_cast ( kind : SyntaxKind ) -> bool { kind == TRAIT_ALIAS }
2078+ fn cast ( syntax : SyntaxNode ) -> Option < Self > {
2079+ if Self :: can_cast ( syntax. kind ( ) ) {
2080+ Some ( Self { syntax } )
2081+ } else {
2082+ None
2083+ }
2084+ }
2085+ fn syntax ( & self ) -> & SyntaxNode { & self . syntax }
2086+ }
20612087impl AstNode for TypeAlias {
20622088 fn can_cast ( kind : SyntaxKind ) -> bool { kind == TYPE_ALIAS }
20632089 fn cast ( syntax : SyntaxNode ) -> Option < Self > {
@@ -3570,6 +3596,9 @@ impl From<Struct> for Item {
35703596impl From < Trait > for Item {
35713597 fn from ( node : Trait ) -> Item { Item :: Trait ( node) }
35723598}
3599+ impl From < TraitAlias > for Item {
3600+ fn from ( node : TraitAlias ) -> Item { Item :: TraitAlias ( node) }
3601+ }
35733602impl From < TypeAlias > for Item {
35743603 fn from ( node : TypeAlias ) -> Item { Item :: TypeAlias ( node) }
35753604}
@@ -3596,6 +3625,7 @@ impl AstNode for Item {
35963625 | STATIC
35973626 | STRUCT
35983627 | TRAIT
3628+ | TRAIT_ALIAS
35993629 | TYPE_ALIAS
36003630 | UNION
36013631 | USE
@@ -3616,6 +3646,7 @@ impl AstNode for Item {
36163646 STATIC => Item :: Static ( Static { syntax } ) ,
36173647 STRUCT => Item :: Struct ( Struct { syntax } ) ,
36183648 TRAIT => Item :: Trait ( Trait { syntax } ) ,
3649+ TRAIT_ALIAS => Item :: TraitAlias ( TraitAlias { syntax } ) ,
36193650 TYPE_ALIAS => Item :: TypeAlias ( TypeAlias { syntax } ) ,
36203651 UNION => Item :: Union ( Union { syntax } ) ,
36213652 USE => Item :: Use ( Use { syntax } ) ,
@@ -3638,6 +3669,7 @@ impl AstNode for Item {
36383669 Item :: Static ( it) => & it. syntax ,
36393670 Item :: Struct ( it) => & it. syntax ,
36403671 Item :: Trait ( it) => & it. syntax ,
3672+ Item :: TraitAlias ( it) => & it. syntax ,
36413673 Item :: TypeAlias ( it) => & it. syntax ,
36423674 Item :: Union ( it) => & it. syntax ,
36433675 Item :: Use ( it) => & it. syntax ,
@@ -3950,6 +3982,7 @@ impl AstNode for AnyHasAttrs {
39503982 | STATIC
39513983 | STRUCT
39523984 | TRAIT
3985+ | TRAIT_ALIAS
39533986 | TYPE_ALIAS
39543987 | UNION
39553988 | USE
@@ -4035,6 +4068,7 @@ impl AstNode for AnyHasDocComments {
40354068 | STATIC
40364069 | STRUCT
40374070 | TRAIT
4071+ | TRAIT_ALIAS
40384072 | TYPE_ALIAS
40394073 | UNION
40404074 | USE
@@ -4056,7 +4090,7 @@ impl AnyHasGenericParams {
40564090}
40574091impl AstNode for AnyHasGenericParams {
40584092 fn can_cast ( kind : SyntaxKind ) -> bool {
4059- matches ! ( kind, ENUM | FN | IMPL | STRUCT | TRAIT | TYPE_ALIAS | UNION )
4093+ matches ! ( kind, ENUM | FN | IMPL | STRUCT | TRAIT | TRAIT_ALIAS | TYPE_ALIAS | UNION )
40604094 }
40614095 fn cast ( syntax : SyntaxNode ) -> Option < Self > {
40624096 Self :: can_cast ( syntax. kind ( ) ) . then_some ( AnyHasGenericParams { syntax } )
@@ -4108,6 +4142,7 @@ impl AstNode for AnyHasName {
41084142 | STATIC
41094143 | STRUCT
41104144 | TRAIT
4145+ | TRAIT_ALIAS
41114146 | TYPE_ALIAS
41124147 | UNION
41134148 | RENAME
@@ -4163,6 +4198,7 @@ impl AstNode for AnyHasVisibility {
41634198 | STATIC
41644199 | STRUCT
41654200 | TRAIT
4201+ | TRAIT_ALIAS
41664202 | TYPE_ALIAS
41674203 | UNION
41684204 | USE
@@ -4391,6 +4427,11 @@ impl std::fmt::Display for Trait {
43914427 std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
43924428 }
43934429}
4430+ impl std:: fmt:: Display for TraitAlias {
4431+ fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
4432+ std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
4433+ }
4434+ }
43944435impl std:: fmt:: Display for TypeAlias {
43954436 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
43964437 std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
0 commit comments