]> git.lizzy.rs Git - rust.git/commitdiff
Verify whether adding block is safe in rewrite_closure_with_block()
authorSeiichi Uchida <seuchida@gmail.com>
Sun, 10 Dec 2017 12:27:28 +0000 (21:27 +0900)
committerSeiichi Uchida <seuchida@gmail.com>
Sun, 10 Dec 2017 12:27:28 +0000 (21:27 +0900)
Also ensure that the expression is nested to avoid false-positive.

src/closures.rs

index 73ef2064295357d761b28fc6a4a5febe5441018a..3a80c7adc931b67d0fefc3595cb8575b8e09cfcb 100644 (file)
@@ -118,6 +118,12 @@ fn rewrite_closure_with_block(
     context: &RewriteContext,
     shape: Shape,
 ) -> Option<String> {
+    let left_most = left_most_sub_expr(body);
+    let veto_block = left_most != body && !classify::expr_requires_semi_to_be_stmt(left_most);
+    if veto_block {
+        return None;
+    }
+
     let block = ast::Block {
         stmts: vec![
             ast::Stmt {
@@ -142,9 +148,6 @@ fn rewrite_closure_expr(
     shape: Shape,
 ) -> Option<String> {
     let mut rewrite = expr.rewrite(context, shape);
-    if classify::expr_requires_semi_to_be_stmt(left_most_sub_expr(expr)) {
-        rewrite = and_one_line(rewrite);
-    }
     rewrite = rewrite.and_then(|rw| {
         if context.config.force_multiline_blocks() && rw.contains('\n') {
             None