From 150765d755fdfcab5d6f2949be7ad9df37e36e86 Mon Sep 17 00:00:00 2001 From: csmoe <35686186+csmoe@users.noreply.github.com> Date: Mon, 21 May 2018 12:18:06 +0800 Subject: [PATCH] format label break --- src/expr.rs | 7 ++++--- tests/source/label_break.rs | 16 ++++++++++++++++ tests/target/label_break.rs | 16 ++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 tests/source/label_break.rs create mode 100644 tests/target/label_break.rs diff --git a/src/expr.rs b/src/expr.rs index 8961cec4240..f1cfe8b4c4c 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -118,8 +118,7 @@ pub fn format_expr( | ast::ExprKind::While(..) | ast::ExprKind::WhileLet(..) => to_control_flow(expr, expr_type) .and_then(|control_flow| control_flow.rewrite(context, shape)), - // FIXME(topecongiro): Handle label on a block (#2722). - ast::ExprKind::Block(ref block, _) => { + ast::ExprKind::Block(ref block, opt_label) => { match expr_type { ExprType::Statement => { if is_unsafe_block(block) { @@ -131,9 +130,11 @@ pub fn format_expr( rw } else { let prefix = block_prefix(context, block, shape)?; + let label_string = rewrite_label(opt_label); + rewrite_block_with_visitor( context, - &prefix, + &format!("{}{}", &prefix, &label_string), block, Some(&expr.attrs), shape, diff --git a/tests/source/label_break.rs b/tests/source/label_break.rs new file mode 100644 index 00000000000..d1e34bce4d4 --- /dev/null +++ b/tests/source/label_break.rs @@ -0,0 +1,16 @@ +// format with label break value. +fn main() { + +'empty_block: {} + +let result = 'block: { + if foo() { + // comment + break 'block 1; + } + if bar() { /* comment */ + break 'block 2; + } + 3 +}; +} \ No newline at end of file diff --git a/tests/target/label_break.rs b/tests/target/label_break.rs new file mode 100644 index 00000000000..2e05159de39 --- /dev/null +++ b/tests/target/label_break.rs @@ -0,0 +1,16 @@ +// format with label break value. +fn main() { + {} + + let result = { + if foo() { + // comment + break 'block 1; + } + if bar() { + /* comment */ + break 'block 2; + } + 3 + }; +}