about summary refs log tree commit diff
path: root/src/expr.rs
diff options
context:
space:
mode:
authorMarcus Klaas <mail@marcusklaas.nl>2015-10-24 12:19:58 +0200
committerMarcus Klaas <mail@marcusklaas.nl>2015-10-24 13:13:15 +0200
commitd122ad5adc2164e34e59a7e9e7e8da2dfba7ffb5 (patch)
tree47c808713a466de490677005fa422f27a0260164 /src/expr.rs
parent58ff0d8730806332e05b34189d91c8504f71eccc (diff)
Address some issues with multiline patterns in let statements
Diffstat (limited to 'src/expr.rs')
-rw-r--r--src/expr.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/expr.rs b/src/expr.rs
index 20a637bffca..16c46f6bef1 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1398,7 +1398,10 @@ pub fn rewrite_tuple<'a, R>(context: &RewriteContext,
                              |item| item.span().lo,
                              |item| item.span().hi,
                              |item| {
-                                 let inner_width = context.config.max_width - indent.width() - 1;
+                                 let inner_width = try_opt!(context.config
+                                                                   .max_width
+                                                                   .checked_sub(indent.width() +
+                                                                                1));
                                  item.rewrite(context, inner_width, indent)
                              },
                              span.lo + BytePos(1), // Remove parens
@@ -1522,10 +1525,15 @@ pub fn rewrite_assign_rhs<S: Into<String>>(context: &RewriteContext,
                                            offset: Indent)
                                            -> Option<String> {
     let mut result = lhs.into();
-
+    let last_line_width = last_line_width(&result) -
+                          if result.contains('\n') {
+        offset.width()
+    } else {
+        0
+    };
     // 1 = space between operator and rhs.
-    let max_width = try_opt!(width.checked_sub(result.len() + 1));
-    let rhs = ex.rewrite(&context, max_width, offset + result.len() + 1);
+    let max_width = try_opt!(width.checked_sub(last_line_width + 1));
+    let rhs = ex.rewrite(&context, max_width, offset + last_line_width + 1);
 
     match rhs {
         Some(new_str) => {