diff --git a/src/expr.rs b/src/expr.rs index e38476df6fd..b98756612d2 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -157,9 +157,22 @@ impl Rewrite for ast::Expr { width, offset)) } + ast::Expr_::ExprRet(None) => { + wrap_str("return".to_owned(), context.config.max_width, width, offset) + } + ast::Expr_::ExprRet(Some(ref expr)) => { + rewrite_unary_prefix(context, "return ", &expr, width, offset) + } // We do not format these expressions yet, but they should still // satisfy our width restrictions. - _ => wrap_str(context.snippet(self.span), context.config.max_width, width, offset), + ast::Expr_::ExprBox(..) | + ast::Expr_::ExprCast(..) | + ast::Expr_::ExprIndex(..) | + ast::Expr_::ExprAddrOf(..) | + ast::Expr_::ExprInlineAsm(..) | + ast::Expr_::ExprRepeat(..) => { + wrap_str(context.snippet(self.span), context.config.max_width, width, offset) + } } } } @@ -1318,6 +1331,16 @@ fn rewrite_binary_op(context: &RewriteContext, rhs_result)) } +fn rewrite_unary_prefix(context: &RewriteContext, + prefix: &str, + expr: &ast::Expr, + width: usize, + offset: Indent) + -> Option { + expr.rewrite(context, try_opt!(width.checked_sub(prefix.len())), offset + prefix.len()) + .map(|r| format!("{}{}", prefix, r)) +} + fn rewrite_unary_op(context: &RewriteContext, op: &ast::UnOp, expr: &ast::Expr, @@ -1331,10 +1354,7 @@ fn rewrite_unary_op(context: &RewriteContext, ast::UnOp::UnNot => "!", ast::UnOp::UnNeg => "-", }; - let operator_len = operator_str.len(); - - expr.rewrite(context, try_opt!(width.checked_sub(operator_len)), offset + operator_len) - .map(|r| format!("{}{}", operator_str, r)) + rewrite_unary_prefix(context, operator_str, expr, width, offset) } fn rewrite_assignment(context: &RewriteContext, diff --git a/src/issues.rs b/src/issues.rs index 6b35add20bf..1c4cf562f05 100644 --- a/src/issues.rs +++ b/src/issues.rs @@ -144,9 +144,9 @@ impl BadIssueSeeker { true } else { false - } + }, }, - part: NumberPart::OpenParen + part: NumberPart::OpenParen, }; } fixme_idx = 0; @@ -162,9 +162,9 @@ impl BadIssueSeeker { true } else { false - } + }, }, - part: NumberPart::OpenParen + part: NumberPart::OpenParen, }; } todo_idx = 0; diff --git a/tests/source/expr.rs b/tests/source/expr.rs index 61acdafd7b0..5cfd661d080 100644 --- a/tests/source/expr.rs +++ b/tests/source/expr.rs @@ -292,3 +292,9 @@ fn arrays() { [ 1 + 3, 4 , 5, 6, 7, 7, fncall::>(3-1)] } + +fn returns() { + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && return; + + return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; +} diff --git a/tests/target/expr.rs b/tests/target/expr.rs index ec00c8a0285..dc9ab9d71ef 100644 --- a/tests/target/expr.rs +++ b/tests/target/expr.rs @@ -298,3 +298,11 @@ fn arrays() { [1 + 3, 4, 5, 6, 7, 7, fncall::>(3 - 1)] } + +fn returns() { + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && + return; + + return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; +}