@@ -26,6 +26,7 @@ use crate::rewrite::{Rewrite, RewriteContext};
26
26
use crate :: shape:: { Indent , Shape } ;
27
27
use crate :: source_map:: { LineRangeUtils , SpanUtils } ;
28
28
use crate :: spanned:: Spanned ;
29
+ use crate :: stmt;
29
30
use crate :: string:: { rewrite_string, StringFormat } ;
30
31
use crate :: types:: { rewrite_path, PathContext } ;
31
32
use crate :: utils:: {
@@ -515,9 +516,9 @@ fn rewrite_single_line_block(
515
516
label : Option < ast:: Label > ,
516
517
shape : Shape ,
517
518
) -> Option < String > {
518
- if is_simple_block ( context, block, attrs) {
519
+ if let Some ( block_expr ) = stmt :: Stmt :: from_simple_block ( context, block, attrs) {
519
520
let expr_shape = shape. offset_left ( last_line_width ( prefix) ) ?;
520
- let expr_str = block . stmts [ 0 ] . rewrite ( context, expr_shape) ?;
521
+ let expr_str = block_expr . rewrite ( context, expr_shape) ?;
521
522
let label_str = rewrite_label ( label) ;
522
523
let result = format ! ( "{}{}{{ {} }}" , prefix, label_str, expr_str) ;
523
524
if result. len ( ) <= shape. width && !result. contains ( '\n' ) {
@@ -799,19 +800,19 @@ impl<'a> ControlFlow<'a> {
799
800
let fixed_cost = self . keyword . len ( ) + " { } else { }" . len ( ) ;
800
801
801
802
if let ast:: ExprKind :: Block ( ref else_node, _) = else_block. kind {
802
- if !is_simple_block ( context, self . block , None )
803
- || !is_simple_block ( context, else_node, None )
804
- || pat_expr_str. contains ( '\n' )
805
- {
806
- return None ;
807
- }
803
+ let ( if_expr, else_expr) = match (
804
+ stmt:: Stmt :: from_simple_block ( context, self . block , None ) ,
805
+ stmt:: Stmt :: from_simple_block ( context, else_node, None ) ,
806
+ pat_expr_str. contains ( '\n' ) ,
807
+ ) {
808
+ ( Some ( if_expr) , Some ( else_expr) , false ) => ( if_expr, else_expr) ,
809
+ _ => return None ,
810
+ } ;
808
811
809
812
let new_width = width. checked_sub ( pat_expr_str. len ( ) + fixed_cost) ?;
810
- let expr = & self . block . stmts [ 0 ] ;
811
- let if_str = expr. rewrite ( context, Shape :: legacy ( new_width, Indent :: empty ( ) ) ) ?;
813
+ let if_str = if_expr. rewrite ( context, Shape :: legacy ( new_width, Indent :: empty ( ) ) ) ?;
812
814
813
815
let new_width = new_width. checked_sub ( if_str. len ( ) ) ?;
814
- let else_expr = & else_node. stmts [ 0 ] ;
815
816
let else_str = else_expr. rewrite ( context, Shape :: legacy ( new_width, Indent :: empty ( ) ) ) ?;
816
817
817
818
if if_str. contains ( '\n' ) || else_str. contains ( '\n' ) {
0 commit comments