@@ -1063,6 +1063,17 @@ impl YieldExpr {
10631063 pub fn expr ( & self ) -> Option < Expr > { support:: child ( & self . syntax ) }
10641064}
10651065
1066+ #[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
1067+ pub struct YeetExpr {
1068+ pub ( crate ) syntax : SyntaxNode ,
1069+ }
1070+ impl ast:: HasAttrs for YeetExpr { }
1071+ impl YeetExpr {
1072+ pub fn do_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ do] ) }
1073+ pub fn yeet_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ yeet] ) }
1074+ pub fn expr ( & self ) -> Option < Expr > { support:: child ( & self . syntax ) }
1075+ }
1076+
10661077#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
10671078pub struct LetExpr {
10681079 pub ( crate ) syntax : SyntaxNode ,
@@ -1541,6 +1552,7 @@ pub enum Expr {
15411552 TupleExpr ( TupleExpr ) ,
15421553 WhileExpr ( WhileExpr ) ,
15431554 YieldExpr ( YieldExpr ) ,
1555+ YeetExpr ( YeetExpr ) ,
15441556 LetExpr ( LetExpr ) ,
15451557 UnderscoreExpr ( UnderscoreExpr ) ,
15461558}
@@ -2694,6 +2706,17 @@ impl AstNode for YieldExpr {
26942706 }
26952707 fn syntax ( & self ) -> & SyntaxNode { & self . syntax }
26962708}
2709+ impl AstNode for YeetExpr {
2710+ fn can_cast ( kind : SyntaxKind ) -> bool { kind == YEET_EXPR }
2711+ fn cast ( syntax : SyntaxNode ) -> Option < Self > {
2712+ if Self :: can_cast ( syntax. kind ( ) ) {
2713+ Some ( Self { syntax } )
2714+ } else {
2715+ None
2716+ }
2717+ }
2718+ fn syntax ( & self ) -> & SyntaxNode { & self . syntax }
2719+ }
26972720impl AstNode for LetExpr {
26982721 fn can_cast ( kind : SyntaxKind ) -> bool { kind == LET_EXPR }
26992722 fn cast ( syntax : SyntaxNode ) -> Option < Self > {
@@ -3382,6 +3405,9 @@ impl From<WhileExpr> for Expr {
33823405impl From < YieldExpr > for Expr {
33833406 fn from ( node : YieldExpr ) -> Expr { Expr :: YieldExpr ( node) }
33843407}
3408+ impl From < YeetExpr > for Expr {
3409+ fn from ( node : YeetExpr ) -> Expr { Expr :: YeetExpr ( node) }
3410+ }
33853411impl From < LetExpr > for Expr {
33863412 fn from ( node : LetExpr ) -> Expr { Expr :: LetExpr ( node) }
33873413}
@@ -3422,6 +3448,7 @@ impl AstNode for Expr {
34223448 | TUPLE_EXPR
34233449 | WHILE_EXPR
34243450 | YIELD_EXPR
3451+ | YEET_EXPR
34253452 | LET_EXPR
34263453 | UNDERSCORE_EXPR
34273454 )
@@ -3458,6 +3485,7 @@ impl AstNode for Expr {
34583485 TUPLE_EXPR => Expr :: TupleExpr ( TupleExpr { syntax } ) ,
34593486 WHILE_EXPR => Expr :: WhileExpr ( WhileExpr { syntax } ) ,
34603487 YIELD_EXPR => Expr :: YieldExpr ( YieldExpr { syntax } ) ,
3488+ YEET_EXPR => Expr :: YeetExpr ( YeetExpr { syntax } ) ,
34613489 LET_EXPR => Expr :: LetExpr ( LetExpr { syntax } ) ,
34623490 UNDERSCORE_EXPR => Expr :: UnderscoreExpr ( UnderscoreExpr { syntax } ) ,
34633491 _ => return None ,
@@ -3496,6 +3524,7 @@ impl AstNode for Expr {
34963524 Expr :: TupleExpr ( it) => & it. syntax ,
34973525 Expr :: WhileExpr ( it) => & it. syntax ,
34983526 Expr :: YieldExpr ( it) => & it. syntax ,
3527+ Expr :: YeetExpr ( it) => & it. syntax ,
34993528 Expr :: LetExpr ( it) => & it. syntax ,
35003529 Expr :: UnderscoreExpr ( it) => & it. syntax ,
35013530 }
@@ -3963,6 +3992,7 @@ impl AstNode for AnyHasAttrs {
39633992 | TUPLE_EXPR
39643993 | WHILE_EXPR
39653994 | YIELD_EXPR
3995+ | YEET_EXPR
39663996 | LET_EXPR
39673997 | UNDERSCORE_EXPR
39683998 | STMT_LIST
@@ -4655,6 +4685,11 @@ impl std::fmt::Display for YieldExpr {
46554685 std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
46564686 }
46574687}
4688+ impl std:: fmt:: Display for YeetExpr {
4689+ fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
4690+ std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
4691+ }
4692+ }
46584693impl std:: fmt:: Display for LetExpr {
46594694 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
46604695 std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
0 commit comments