about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Cameron <nrc@ncameron.org>2016-05-27 20:33:19 +1200
committerMarcus Klaas de Vries <mail@marcusklaas.nl>2016-05-27 10:33:19 +0200
commitd6bcfceb7e122ab86009ea36ff01388e613ca353 (patch)
treed07a24b1dc2d449351e5ab8a6e17c156e9623a49
parent775de8a62b3c19521543cb6b9130979eb6747c75 (diff)
Don't put a newline before `?` when it is the second sub-expression in a chain (#1012)
Fixes #1003
-rw-r--r--src/chains.rs4
-rw-r--r--tests/source/chains.rs8
-rw-r--r--tests/target/chains.rs10
3 files changed, 21 insertions, 1 deletions
diff --git a/src/chains.rs b/src/chains.rs
index 3f306abfdca..faf368d41c1 100644
--- a/src/chains.rs
+++ b/src/chains.rs
@@ -179,7 +179,9 @@ pub fn rewrite_chain(expr: &ast::Expr,
         format!("\n{}", indent.to_string(context.config))
     };
 
-    let first_connector = if extend {
+    let first_connector = if extend || subexpr_list.len() == 0 {
+        ""
+    } else if let ast::ExprKind::Try(_) = subexpr_list[0].node {
         ""
     } else {
         &*connector
diff --git a/tests/source/chains.rs b/tests/source/chains.rs
index 48de948865b..66c982082e7 100644
--- a/tests/source/chains.rs
+++ b/tests/source/chains.rs
@@ -124,4 +124,12 @@ fn try_shorthand() {
     let y = a.very .loooooooooooooooooooooooooooooooooooooong()  .chain()
              .inside()          .weeeeeeeeeeeeeee()? .test()  .0
         .x;
+
+                parameterized(f,
+                              substs,
+                              def_id,
+                              Ns::Value,
+                              &[],
+                              |tcx| tcx.lookup_item_type(def_id).generics)?;
+    fooooooooooooooooooooooooooo()?.bar()?.baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz()?;
 }
diff --git a/tests/target/chains.rs b/tests/target/chains.rs
index 7d25046279f..3004946fb56 100644
--- a/tests/target/chains.rs
+++ b/tests/target/chains.rs
@@ -151,4 +151,14 @@ fn try_shorthand() {
         .test()
         .0
         .x;
+
+    parameterized(f,
+                  substs,
+                  def_id,
+                  Ns::Value,
+                  &[],
+                  |tcx| tcx.lookup_item_type(def_id).generics)?;
+    fooooooooooooooooooooooooooo()?
+        .bar()?
+        .baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz()?;
 }