From a896d91ff681f6113db00dacb660c2088c0bbbbe Mon Sep 17 00:00:00 2001 From: Marcus Klaas Date: Mon, 31 Aug 2015 19:15:40 +0200 Subject: [PATCH] Fix offset for unary operations Fixes https://github.com/nrc/rustfmt/issues/227. --- src/expr.rs | 7 +++---- tests/source/expr.rs | 6 ++++++ tests/target/expr.rs | 7 +++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/expr.rs b/src/expr.rs index 332d1f5a2f3..2bcb1d6d727 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -1134,11 +1134,10 @@ fn rewrite_unary_op(context: &RewriteContext, ast::UnOp::UnNot => "!", ast::UnOp::UnNeg => "-", }; + let operator_len = operator_str.len(); - let subexpr = - try_opt!(expr.rewrite(context, try_opt!(width.checked_sub(operator_str.len())), offset)); - - Some(format!("{}{}", operator_str, subexpr)) + expr.rewrite(context, try_opt!(width.checked_sub(operator_len)), offset + operator_len) + .map(|r| format!("{}{}", operator_str, r)) } fn rewrite_assignment(context: &RewriteContext, diff --git a/tests/source/expr.rs b/tests/source/expr.rs index 85ee7727451..d5e98f959d1 100644 --- a/tests/source/expr.rs +++ b/tests/source/expr.rs @@ -105,3 +105,9 @@ fn qux() { // A block with a comment. } } + +fn issue227() { + { + let handler = box DocumentProgressHandler::new(addr, DocumentProgressTask::DOMContentLoaded); + } +} diff --git a/tests/target/expr.rs b/tests/target/expr.rs index 45c654b738f..afc152ac828 100644 --- a/tests/target/expr.rs +++ b/tests/target/expr.rs @@ -139,3 +139,10 @@ fn qux() { // A block with a comment. } } + +fn issue227() { + { + let handler = box DocumentProgressHandler::new(addr, + DocumentProgressTask::DOMContentLoaded); + } +}