@@ -2446,6 +2446,17 @@ pub enum UseBoundGenericArg {
24462446 NameRef ( NameRef ) ,
24472447}
24482448
2449+ #[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
2450+ pub enum VariantDef {
2451+ Struct ( Struct ) ,
2452+ Union ( Union ) ,
2453+ Variant ( Variant ) ,
2454+ }
2455+ impl ast:: HasAttrs for VariantDef { }
2456+ impl ast:: HasDocComments for VariantDef { }
2457+ impl ast:: HasName for VariantDef { }
2458+ impl ast:: HasVisibility for VariantDef { }
2459+
24492460#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
24502461pub struct AnyHasArgList {
24512462 pub ( crate ) syntax : SyntaxNode ,
@@ -6738,6 +6749,40 @@ impl AstNode for UseBoundGenericArg {
67386749 }
67396750 }
67406751}
6752+ impl From < Struct > for VariantDef {
6753+ #[ inline]
6754+ fn from ( node : Struct ) -> VariantDef { VariantDef :: Struct ( node) }
6755+ }
6756+ impl From < Union > for VariantDef {
6757+ #[ inline]
6758+ fn from ( node : Union ) -> VariantDef { VariantDef :: Union ( node) }
6759+ }
6760+ impl From < Variant > for VariantDef {
6761+ #[ inline]
6762+ fn from ( node : Variant ) -> VariantDef { VariantDef :: Variant ( node) }
6763+ }
6764+ impl AstNode for VariantDef {
6765+ #[ inline]
6766+ fn can_cast ( kind : SyntaxKind ) -> bool { matches ! ( kind, STRUCT | UNION | VARIANT ) }
6767+ #[ inline]
6768+ fn cast ( syntax : SyntaxNode ) -> Option < Self > {
6769+ let res = match syntax. kind ( ) {
6770+ STRUCT => VariantDef :: Struct ( Struct { syntax } ) ,
6771+ UNION => VariantDef :: Union ( Union { syntax } ) ,
6772+ VARIANT => VariantDef :: Variant ( Variant { syntax } ) ,
6773+ _ => return None ,
6774+ } ;
6775+ Some ( res)
6776+ }
6777+ #[ inline]
6778+ fn syntax ( & self ) -> & SyntaxNode {
6779+ match self {
6780+ VariantDef :: Struct ( it) => & it. syntax ,
6781+ VariantDef :: Union ( it) => & it. syntax ,
6782+ VariantDef :: Variant ( it) => & it. syntax ,
6783+ }
6784+ }
6785+ }
67416786impl AnyHasArgList {
67426787 #[ inline]
67436788 pub fn new < T : ast:: HasArgList > ( node : T ) -> AnyHasArgList {
@@ -7753,6 +7798,11 @@ impl std::fmt::Display for UseBoundGenericArg {
77537798 std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
77547799 }
77557800}
7801+ impl std:: fmt:: Display for VariantDef {
7802+ fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
7803+ std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
7804+ }
7805+ }
77567806impl std:: fmt:: Display for Abi {
77577807 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
77587808 std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
0 commit comments