Skip to content

Commit 72ad8f7

Browse files
committed
syntax: use PatKind::Wild as our ::Err equivalent.
1 parent a77a8aa commit 72ad8f7

File tree

1 file changed

+10
-10
lines changed
  • src/libsyntax/parse/parser

1 file changed

+10
-10
lines changed

src/libsyntax/parse/parser/pat.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -421,18 +421,18 @@ impl<'a> Parser<'a> {
421421
.span_label(rhs.span, "binding on the right, should be to the left")
422422
.span_suggestion(sp, "switch the order", pprust::pat_to_string(&rhs), applicability)
423423
.emit();
424-
425-
rhs.span = sp;
426-
return Ok(rhs);
424+
} else {
425+
// The special case above doesn't apply so we may have e.g. `A(x) @ B(y)`.
426+
rhs.kind = PatKind::Wild;
427+
self.struct_span_err(sp, "left-hand side of `@` must be a binding pattern")
428+
.span_label(lhs.span, "interpreted as a pattern, not a binding")
429+
.span_label(rhs.span, "also a pattern")
430+
.note("bindings are `x`, `mut x`, `ref x`, and `ref mut x`")
431+
.emit();
427432
}
428433

429-
// The special case above doesn't apply so we may have e.g. `A(x) @ B(y)`.
430-
let mut err = self.struct_span_err(sp, "left-hand side of `@` must be a binding pattern");
431-
err.span_label(lhs.span, "interpreted as a pattern, not a binding")
432-
.span_label(rhs.span, "also a pattern")
433-
.note("bindings are `x`, `mut x`, `ref x`, and `ref mut x`");
434-
// FIXME(Centril): Introduce `PatKind::Err` and use that instead.
435-
Err(err)
434+
rhs.span = sp;
435+
Ok(rhs)
436436
}
437437

438438
/// Ban a range pattern if it has an ambiguous interpretation.

0 commit comments

Comments
 (0)