@@ -42,11 +42,8 @@ pub(crate) fn convert_while_to_loop(acc: &mut Assists, ctx: &AssistContext) -> O
42
42
let while_expr = while_kw. parent ( ) . and_then ( ast:: WhileExpr :: cast) ?;
43
43
let while_body = while_expr. loop_body ( ) ?;
44
44
let while_cond = while_expr. condition ( ) ?;
45
+ let while_cond_expr = while_cond. expr ( ) ?;
45
46
46
- let if_cond = match while_cond. pat ( ) {
47
- Some ( _) => while_expr. condition ( ) ?,
48
- None => make:: condition ( invert_boolean_expression ( while_cond. expr ( ) ?) , None ) ,
49
- } ;
50
47
let target = while_expr. syntax ( ) . text_range ( ) ;
51
48
acc. add (
52
49
AssistId ( "convert_while_to_loop" , AssistKind :: RefactorRewrite ) ,
@@ -60,11 +57,12 @@ pub(crate) fn convert_while_to_loop(acc: &mut Assists, ctx: &AssistContext) -> O
60
57
. indent ( while_indent_level) ;
61
58
let block_expr = match while_cond. pat ( ) {
62
59
Some ( _) => {
63
- let if_expr = make:: expr_if ( if_cond , while_body, Some ( break_block. into ( ) ) ) ;
60
+ let if_expr = make:: expr_if ( while_cond , while_body, Some ( break_block. into ( ) ) ) ;
64
61
let stmts = once ( make:: expr_stmt ( if_expr) . into ( ) ) ;
65
62
make:: block_expr ( stmts, None )
66
63
}
67
64
None => {
65
+ let if_cond = make:: condition ( invert_boolean_expression ( while_cond_expr) , None ) ;
68
66
let if_expr = make:: expr_if ( if_cond, break_block, None ) ;
69
67
let stmts =
70
68
once ( make:: expr_stmt ( if_expr) . into ( ) ) . chain ( while_body. statements ( ) ) ;
0 commit comments