diff --git a/src/matches.rs b/src/matches.rs
index 42f46608b52..65bf7f579d4 100644
--- a/src/matches.rs
+++ b/src/matches.rs
@@ -133,13 +133,14 @@ pub fn rewrite_match(
             Some(context.snippet(span).to_owned())
         }
     } else {
+        let span_after_cond = mk_sp(cond.span.hi(), span.hi());
         Some(format!(
             "match {}{}{{\n{}{}{}\n{}}}",
             cond_str,
             block_sep,
             inner_attrs_str,
             nested_indent_str,
-            rewrite_match_arms(context, arms, shape, span, open_brace_pos)?,
+            rewrite_match_arms(context, arms, shape, span_after_cond, open_brace_pos)?,
             shape.indent.to_string(context.config),
         ))
     }
diff --git a/tests/target/issue-2554.rs b/tests/target/issue-2554.rs
new file mode 100644
index 00000000000..d5f0563a6f1
--- /dev/null
+++ b/tests/target/issue-2554.rs
@@ -0,0 +1,13 @@
+// #2554
+// Do not add the beginning vert to the first match arm's pattern.
+
+fn main() {
+    match foo(|_| {
+        bar(|_| {
+            //
+        })
+    }) {
+        Ok(()) => (),
+        Err(_) => (),
+    }
+}