@@ -26,7 +26,7 @@ pub fn structured_cfg(
26
26
// If the very last statement in the vector is a `return`, we can either cut it out or replace
27
27
// it with the returned value.
28
28
if cut_out_trailing_ret {
29
- if let Some ( Stmt :: Expr ( ret) | Stmt :: Semi ( ret , _) ) = stmts. last ( ) {
29
+ if let Some ( Stmt :: Expr ( ret, _) ) = stmts. last ( ) {
30
30
if let Expr :: Return ( ExprReturn { expr : None , .. } ) = ret {
31
31
stmts. pop ( ) ;
32
32
}
@@ -530,7 +530,7 @@ impl StructureState {
530
530
}
531
531
( false , false ) => {
532
532
fn is_expr ( kind : & Stmt ) -> bool {
533
- matches ! ( kind, Stmt :: Expr ( Expr :: If ( ..) | Expr :: Block ( ..) ) )
533
+ matches ! ( kind, Stmt :: Expr ( Expr :: If ( ..) | Expr :: Block ( ..) , _semi ) )
534
534
}
535
535
536
536
// Do the else statements contain a single If, IfLet or
@@ -542,7 +542,7 @@ impl StructureState {
542
542
let stmt_expr = els_stmts. swap_remove ( 0 ) ;
543
543
let stmt_expr_span = stmt_expr. span ( ) ;
544
544
let mut els_expr = match stmt_expr {
545
- Stmt :: Expr ( e) => e,
545
+ Stmt :: Expr ( e, _semi ) => e,
546
546
_ => panic ! ( "is_els_expr out of sync" ) ,
547
547
} ;
548
548
els_expr. set_span ( stmt_expr_span) ;
@@ -572,12 +572,12 @@ impl StructureState {
572
572
. map ( |( lbl, stmts) | -> Arm {
573
573
let ( stmts, stmts_span) = self . to_stmt ( stmts, comment_store) ;
574
574
575
- let lbl_expr = if self . debug_labels {
576
- lbl. to_string_expr ( )
575
+ let lbl_lit = if self . debug_labels {
576
+ lbl. to_string_lit ( )
577
577
} else {
578
- lbl. to_num_expr ( )
578
+ lbl. to_int_lit ( )
579
579
} ;
580
- let pat = mk ( ) . lit_pat ( lbl_expr ) ;
580
+ let pat = mk ( ) . lit_pat ( lbl_lit ) ;
581
581
let body = mk ( ) . block_expr ( mk ( ) . span ( stmts_span) . block ( stmts) ) ;
582
582
mk ( ) . arm ( pat, None , body)
583
583
} )
@@ -605,7 +605,7 @@ impl StructureState {
605
605
let ( body, body_span) = self . to_stmt ( * body, comment_store) ;
606
606
607
607
// TODO: this is ugly but it needn't be. We are just pattern matching on particular ASTs.
608
- if let Some ( stmt @ & Stmt :: Expr ( ref expr) ) = body. first ( ) {
608
+ if let Some ( stmt @ & Stmt :: Expr ( ref expr, _semi ) ) = body. first ( ) {
609
609
let stmt_span = stmt. span ( ) ;
610
610
let span = if !stmt_span. is_dummy ( ) {
611
611
stmt_span
@@ -619,7 +619,7 @@ impl StructureState {
619
619
..
620
620
} ) = expr
621
621
{
622
- if let [ Stmt :: Semi (
622
+ if let [ Stmt :: Expr (
623
623
syn:: Expr :: Break ( ExprBreak {
624
624
label : None ,
625
625
expr : None ,
0 commit comments