about summary refs log tree commit diff
path: root/src/expr.rs
diff options
context:
space:
mode:
authorNick Cameron <nrc@ncameron.org>2017-05-16 09:55:07 +1200
committerGitHub <noreply@github.com>2017-05-16 09:55:07 +1200
commit09e5051deed87b4c2eee5be6f5868e14380fe996 (patch)
tree6f3fd0a8e7ffcf0fd796035fd3dca365444cf9d2 /src/expr.rs
parentd1682b347333996d078de9e93281814cddf98751 (diff)
parent762db5138e3c859f3dd736a46798615c561831a1 (diff)
Merge pull request #1556 from topecongiro/issue-1555
Only add offset for unary op
Diffstat (limited to 'src/expr.rs')
-rw-r--r--src/expr.rs52
1 files changed, 16 insertions, 36 deletions
diff --git a/src/expr.rs b/src/expr.rs
index 585073c8f0c..7fb71c2e8b4 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -156,11 +156,7 @@ fn format_expr(expr: &ast::Expr,
             };
 
             if let Some(ref expr) = *opt_expr {
-                rewrite_unary_prefix(context,
-                                     &format!("break{} ", id_str),
-                                     &**expr,
-                                     shape,
-                                     expr.span)
+                rewrite_unary_prefix(context, &format!("break{} ", id_str), &**expr, shape)
             } else {
                 wrap_str(format!("break{}", id_str), context.config.max_width, shape)
             }
@@ -180,11 +176,9 @@ fn format_expr(expr: &ast::Expr,
         }
         ast::ExprKind::Ret(None) => wrap_str("return".to_owned(), context.config.max_width, shape),
         ast::ExprKind::Ret(Some(ref expr)) => {
-            rewrite_unary_prefix(context, "return ", &**expr, shape, expr.span)
-        }
-        ast::ExprKind::Box(ref expr) => {
-            rewrite_unary_prefix(context, "box ", &**expr, shape, expr.span)
+            rewrite_unary_prefix(context, "return ", &**expr, shape)
         }
+        ast::ExprKind::Box(ref expr) => rewrite_unary_prefix(context, "box ", &**expr, shape),
         ast::ExprKind::AddrOf(mutability, ref expr) => {
             rewrite_expr_addrof(context, mutability, expr, shape)
         }
@@ -226,7 +220,7 @@ fn format_expr(expr: &ast::Expr,
                     } else {
                         delim.into()
                     };
-                    rewrite_unary_prefix(context, &sp_delim, &**rhs, shape, expr.span)
+                    rewrite_unary_prefix(context, &sp_delim, &**rhs, shape)
                 }
                 (Some(ref lhs), None) => {
                     let sp_delim = if context.config.spaces_around_ranges {
@@ -1967,14 +1961,14 @@ pub fn rewrite_tuple<'a, I>(context: &RewriteContext,
         // 3 = "(" + ",)"
         let nested_shape = try_opt!(shape.sub_width(3)).visual_indent(1);
         return items
-                   .next()
-                   .unwrap()
-                   .rewrite(context, nested_shape)
-                   .map(|s| if context.config.spaces_within_parens {
-                            format!("( {}, )", s)
-                        } else {
-                            format!("({},)", s)
-                        });
+            .next()
+            .unwrap()
+            .rewrite(context, nested_shape)
+            .map(|s| if context.config.spaces_within_parens {
+                     format!("( {}, )", s)
+                 } else {
+                     format!("({},)", s)
+                 });
     }
 
     let list_lo = context.codemap.span_after(span, "(");
@@ -1999,24 +1993,10 @@ pub fn rewrite_tuple<'a, I>(context: &RewriteContext,
 pub fn rewrite_unary_prefix<R: Rewrite>(context: &RewriteContext,
                                         prefix: &str,
                                         rewrite: &R,
-                                        mut shape: Shape,
-                                        span: Span)
+                                        shape: Shape)
                                         -> Option<String> {
-    // Heuristic: if unary is `&` and `rewrite` contains `{`,
-    // it is likely that block indent is preferred to visual indent.
-    if prefix == "&" {
-        let snippet = String::from(context.snippet(span).trim_left_matches('&'));
-        let first_line = try_opt!(snippet.lines().nth(0));
-        if first_line.contains("{") {
-            shape = try_opt!(shape.sub_width(prefix.len())).block_indent(0);
-        } else {
-            shape = try_opt!(shape.shrink_left(prefix.len())).visual_indent(0);
-        }
-    } else {
-        shape = try_opt!(shape.shrink_left(prefix.len())).visual_indent(0);
-    }
     rewrite
-        .rewrite(context, shape)
+        .rewrite(context, try_opt!(shape.offset_left(prefix.len())))
         .map(|r| format!("{}{}", prefix, r))
 }
 
@@ -2046,7 +2026,7 @@ fn rewrite_unary_op(context: &RewriteContext,
         ast::UnOp::Not => "!",
         ast::UnOp::Neg => "-",
     };
-    rewrite_unary_prefix(context, operator_str, expr, shape, expr.span)
+    rewrite_unary_prefix(context, operator_str, expr, shape)
 }
 
 fn rewrite_assignment(context: &RewriteContext,
@@ -2143,5 +2123,5 @@ fn rewrite_expr_addrof(context: &RewriteContext,
         ast::Mutability::Immutable => "&",
         ast::Mutability::Mutable => "&mut ",
     };
-    rewrite_unary_prefix(context, operator_str, expr, shape, expr.span)
+    rewrite_unary_prefix(context, operator_str, expr, shape)
 }