@@ -1063,6 +1063,17 @@ impl YieldExpr {
1063
1063
pub fn expr ( & self ) -> Option < Expr > { support:: child ( & self . syntax ) }
1064
1064
}
1065
1065
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
+
1066
1077
#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
1067
1078
pub struct LetExpr {
1068
1079
pub ( crate ) syntax : SyntaxNode ,
@@ -1541,6 +1552,7 @@ pub enum Expr {
1541
1552
TupleExpr ( TupleExpr ) ,
1542
1553
WhileExpr ( WhileExpr ) ,
1543
1554
YieldExpr ( YieldExpr ) ,
1555
+ YeetExpr ( YeetExpr ) ,
1544
1556
LetExpr ( LetExpr ) ,
1545
1557
UnderscoreExpr ( UnderscoreExpr ) ,
1546
1558
}
@@ -2694,6 +2706,17 @@ impl AstNode for YieldExpr {
2694
2706
}
2695
2707
fn syntax ( & self ) -> & SyntaxNode { & self . syntax }
2696
2708
}
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
+ }
2697
2720
impl AstNode for LetExpr {
2698
2721
fn can_cast ( kind : SyntaxKind ) -> bool { kind == LET_EXPR }
2699
2722
fn cast ( syntax : SyntaxNode ) -> Option < Self > {
@@ -3382,6 +3405,9 @@ impl From<WhileExpr> for Expr {
3382
3405
impl From < YieldExpr > for Expr {
3383
3406
fn from ( node : YieldExpr ) -> Expr { Expr :: YieldExpr ( node) }
3384
3407
}
3408
+ impl From < YeetExpr > for Expr {
3409
+ fn from ( node : YeetExpr ) -> Expr { Expr :: YeetExpr ( node) }
3410
+ }
3385
3411
impl From < LetExpr > for Expr {
3386
3412
fn from ( node : LetExpr ) -> Expr { Expr :: LetExpr ( node) }
3387
3413
}
@@ -3422,6 +3448,7 @@ impl AstNode for Expr {
3422
3448
| TUPLE_EXPR
3423
3449
| WHILE_EXPR
3424
3450
| YIELD_EXPR
3451
+ | YEET_EXPR
3425
3452
| LET_EXPR
3426
3453
| UNDERSCORE_EXPR
3427
3454
)
@@ -3458,6 +3485,7 @@ impl AstNode for Expr {
3458
3485
TUPLE_EXPR => Expr :: TupleExpr ( TupleExpr { syntax } ) ,
3459
3486
WHILE_EXPR => Expr :: WhileExpr ( WhileExpr { syntax } ) ,
3460
3487
YIELD_EXPR => Expr :: YieldExpr ( YieldExpr { syntax } ) ,
3488
+ YEET_EXPR => Expr :: YeetExpr ( YeetExpr { syntax } ) ,
3461
3489
LET_EXPR => Expr :: LetExpr ( LetExpr { syntax } ) ,
3462
3490
UNDERSCORE_EXPR => Expr :: UnderscoreExpr ( UnderscoreExpr { syntax } ) ,
3463
3491
_ => return None ,
@@ -3496,6 +3524,7 @@ impl AstNode for Expr {
3496
3524
Expr :: TupleExpr ( it) => & it. syntax ,
3497
3525
Expr :: WhileExpr ( it) => & it. syntax ,
3498
3526
Expr :: YieldExpr ( it) => & it. syntax ,
3527
+ Expr :: YeetExpr ( it) => & it. syntax ,
3499
3528
Expr :: LetExpr ( it) => & it. syntax ,
3500
3529
Expr :: UnderscoreExpr ( it) => & it. syntax ,
3501
3530
}
@@ -3963,6 +3992,7 @@ impl AstNode for AnyHasAttrs {
3963
3992
| TUPLE_EXPR
3964
3993
| WHILE_EXPR
3965
3994
| YIELD_EXPR
3995
+ | YEET_EXPR
3966
3996
| LET_EXPR
3967
3997
| UNDERSCORE_EXPR
3968
3998
| STMT_LIST
@@ -4655,6 +4685,11 @@ impl std::fmt::Display for YieldExpr {
4655
4685
std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
4656
4686
}
4657
4687
}
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
+ }
4658
4693
impl std:: fmt:: Display for LetExpr {
4659
4694
fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
4660
4695
std:: fmt:: Display :: fmt ( self . syntax ( ) , f)
0 commit comments