about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-10-14 17:25:50 +0200
committerMazdak Farrokhzad <twingoow@gmail.com>2019-10-14 17:25:50 +0200
commit72ad8f716bc2591fba72d7107a9938952214f485 (patch)
treeb13459bb42dda447f6227810057e6041979365f9 /src/libsyntax
parenta77a8aaa2e55c0591ee766f3ff2142a67439d243 (diff)
downloadrust-72ad8f716bc2591fba72d7107a9938952214f485.tar.gz
rust-72ad8f716bc2591fba72d7107a9938952214f485.zip
syntax: use `PatKind::Wild` as our `::Err` equivalent.
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/parse/parser/pat.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/libsyntax/parse/parser/pat.rs b/src/libsyntax/parse/parser/pat.rs
index c0e577bd58b..55c534e56ce 100644
--- a/src/libsyntax/parse/parser/pat.rs
+++ b/src/libsyntax/parse/parser/pat.rs
@@ -421,18 +421,18 @@ impl<'a> Parser<'a> {
                 .span_label(rhs.span, "binding on the right, should be to the left")
                 .span_suggestion(sp, "switch the order", pprust::pat_to_string(&rhs), applicability)
                 .emit();
-
-            rhs.span = sp;
-            return Ok(rhs);
+        } else {
+            // The special case above doesn't apply so we may have e.g. `A(x) @ B(y)`.
+            rhs.kind = PatKind::Wild;
+            self.struct_span_err(sp, "left-hand side of `@` must be a binding pattern")
+                .span_label(lhs.span, "interpreted as a pattern, not a binding")
+                .span_label(rhs.span, "also a pattern")
+                .note("bindings are `x`, `mut x`, `ref x`, and `ref mut x`")
+                .emit();
         }
 
-        // The special case above doesn't apply so we may have e.g. `A(x) @ B(y)`.
-        let mut err = self.struct_span_err(sp, "left-hand side of `@` must be a binding pattern");
-        err.span_label(lhs.span, "interpreted as a pattern, not a binding")
-            .span_label(rhs.span, "also a pattern")
-            .note("bindings are `x`, `mut x`, `ref x`, and `ref mut x`");
-        // FIXME(Centril): Introduce `PatKind::Err` and use that instead.
-        Err(err)
+        rhs.span = sp;
+        Ok(rhs)
     }
 
     /// Ban a range pattern if it has an ambiguous interpretation.