From d6bcfceb7e122ab86009ea36ff01388e613ca353 Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Fri, 27 May 2016 20:33:19 +1200 Subject: [PATCH] Don't put a newline before `?` when it is the second sub-expression in a chain (#1012) Fixes #1003 --- src/chains.rs | 4 +++- tests/source/chains.rs | 8 ++++++++ tests/target/chains.rs | 10 ++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/chains.rs b/src/chains.rs index 3f306abfdcab..faf368d41c19 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 48de948865bc..66c982082e7b 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 7d25046279f6..3004946fb565 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()?; }