aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_fmt/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_fmt/src/lib.rs')
-rw-r--r--crates/ra_fmt/src/lib.rs24
1 files changed, 11 insertions, 13 deletions
diff --git a/crates/ra_fmt/src/lib.rs b/crates/ra_fmt/src/lib.rs
index 0b4ba1bbe..f910ded9d 100644
--- a/crates/ra_fmt/src/lib.rs
+++ b/crates/ra_fmt/src/lib.rs
@@ -42,7 +42,6 @@ pub fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr {
42} 42}
43 43
44pub fn extract_trivial_expression(block: &ast::BlockExpr) -> Option<ast::Expr> { 44pub fn extract_trivial_expression(block: &ast::BlockExpr) -> Option<ast::Expr> {
45 let block = block.block()?;
46 let has_anything_else = |thing: &SyntaxNode| -> bool { 45 let has_anything_else = |thing: &SyntaxNode| -> bool {
47 let mut non_trivial_children = 46 let mut non_trivial_children =
48 block.syntax().children_with_tokens().filter(|it| match it.kind() { 47 block.syntax().children_with_tokens().filter(|it| match it.kind() {
@@ -57,18 +56,17 @@ pub fn extract_trivial_expression(block: &ast::BlockExpr) -> Option<ast::Expr> {
57 return None; 56 return None;
58 } 57 }
59 return Some(expr); 58 return Some(expr);
60 } else { 59 }
61 // Unwrap `{ continue; }` 60 // Unwrap `{ continue; }`
62 let (stmt,) = block.statements().next_tuple()?; 61 let (stmt,) = block.statements().next_tuple()?;
63 if let ast::Stmt::ExprStmt(expr_stmt) = stmt { 62 if let ast::Stmt::ExprStmt(expr_stmt) = stmt {
64 if has_anything_else(expr_stmt.syntax()) { 63 if has_anything_else(expr_stmt.syntax()) {
65 return None; 64 return None;
66 } 65 }
67 let expr = expr_stmt.expr()?; 66 let expr = expr_stmt.expr()?;
68 match expr.syntax().kind() { 67 match expr.syntax().kind() {
69 CONTINUE_EXPR | BREAK_EXPR | RETURN_EXPR => return Some(expr), 68 CONTINUE_EXPR | BREAK_EXPR | RETURN_EXPR => return Some(expr),
70 _ => (), 69 _ => (),
71 }
72 } 70 }
73 } 71 }
74 None 72 None