From 5871967312dffd7df20c692ffe233719ac41b10c Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Sun, 10 Dec 2017 21:27:28 +0900 Subject: [PATCH] Verify whether adding block is safe in rewrite_closure_with_block() Also ensure that the expression is nested to avoid false-positive. --- src/closures.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/closures.rs b/src/closures.rs index 73ef20642953..3a80c7adc931 100644 --- a/src/closures.rs +++ b/src/closures.rs @@ -118,6 +118,12 @@ fn rewrite_closure_with_block( context: &RewriteContext, shape: Shape, ) -> Option { + 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 { 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