diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2015-09-05 18:26:28 +1200 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2015-09-07 07:31:02 +1200 |
| commit | e0c197cab4fb8ffeb87ca56be850894be2ec7e25 (patch) | |
| tree | 4912f179f316440fbf35e0408927cc5b2e6a03e0 | |
| parent | 6c5d3500bb805b37865fe961a7054f8435d176fc (diff) | |
Single line unsafe blocks
| -rw-r--r-- | src/expr.rs | 15 | ||||
| -rw-r--r-- | tests/source/expr.rs | 8 | ||||
| -rw-r--r-- | tests/target/expr.rs | 6 |
3 files changed, 28 insertions, 1 deletions
diff --git a/src/expr.rs b/src/expr.rs index aac13f552d0..3a8b9c9ab4b 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -262,13 +262,26 @@ impl Rewrite for ast::Block { // Extract comment between unsafe and block start. let trimmed = &snippet[6..open_pos].trim(); - if !trimmed.is_empty() { + let prefix = if !trimmed.is_empty() { // 9 = "unsafe {".len(), 7 = "unsafe ".len() let budget = try_opt!(width.checked_sub(9)); format!("unsafe {} ", rewrite_comment(trimmed, true, budget, offset + 7)) } else { "unsafe ".to_owned() + }; + + if is_simple_block(self, context.codemap) && prefix.len() < width { + let body = + self.expr.as_ref().unwrap().rewrite(context, width - prefix.len(), offset); + if let Some(ref expr_str) = body { + let result = format!("{}{{ {} }}", prefix, expr_str); + if result.len() <= width && !result.contains('\n') { + return Some(result); + } + } } + + prefix } ast::BlockCheckMode::PopUnsafeBlock(..) | ast::BlockCheckMode::DefaultBlock => { diff --git a/tests/source/expr.rs b/tests/source/expr.rs index 0bb46086ca8..bf9a8359aad 100644 --- a/tests/source/expr.rs +++ b/tests/source/expr.rs @@ -93,6 +93,14 @@ fn baz() { unsafe { // Regular unsafe block } + + unsafe { + foo() + } + + unsafe { + foo(); + } } // Test some empty blocks. diff --git a/tests/target/expr.rs b/tests/target/expr.rs index e2ed9c598ce..9bfe51e0b26 100644 --- a/tests/target/expr.rs +++ b/tests/target/expr.rs @@ -130,6 +130,12 @@ fn baz() { unsafe { // Regular unsafe block } + + unsafe { foo() } + + unsafe { + foo(); + } } // Test some empty blocks. |
