diff --git a/compiler/rustc_parse/src/parser/pat.rs b/compiler/rustc_parse/src/parser/pat.rs index b03b5459981..3b5a297103c 100644 --- a/compiler/rustc_parse/src/parser/pat.rs +++ b/compiler/rustc_parse/src/parser/pat.rs @@ -817,7 +817,7 @@ impl<'a> Parser<'a> { // Ensure the user doesn't receive unhelpful unexpected token errors self.bump(); if self.is_pat_range_end_start(0) { - let _ = self.parse_pat_range_end(); + let _ = self.parse_pat_range_end().map_err(|mut e| e.cancel()); } self.error_inclusive_range_with_extra_equals(span_with_eq); diff --git a/src/test/ui/parser/issue-90993.rs b/src/test/ui/parser/issue-90993.rs new file mode 100644 index 00000000000..40e6fc74876 --- /dev/null +++ b/src/test/ui/parser/issue-90993.rs @@ -0,0 +1,6 @@ +fn main() { + ...=. + //~^ ERROR: unexpected token: `...` + //~| ERROR: unexpected `=` after inclusive range + //~| ERROR: expected one of `-`, `;`, `}`, or path, found `.` +} diff --git a/src/test/ui/parser/issue-90993.stderr b/src/test/ui/parser/issue-90993.stderr new file mode 100644 index 00000000000..ab6bce410e6 --- /dev/null +++ b/src/test/ui/parser/issue-90993.stderr @@ -0,0 +1,31 @@ +error: unexpected token: `...` + --> $DIR/issue-90993.rs:2:5 + | +LL | ...=. + | ^^^ + | +help: use `..` for an exclusive range + | +LL | ..=. + | ~~ +help: or `..=` for an inclusive range + | +LL | ..==. + | ~~~ + +error: unexpected `=` after inclusive range + --> $DIR/issue-90993.rs:2:5 + | +LL | ...=. + | ^^^^ help: use `..=` instead + | + = note: inclusive ranges end with a single equals sign (`..=`) + +error: expected one of `-`, `;`, `}`, or path, found `.` + --> $DIR/issue-90993.rs:2:9 + | +LL | ...=. + | ^ expected one of `-`, `;`, `}`, or path + +error: aborting due to 3 previous errors +