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()?; }