about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_parse/src/parser/diagnostics.rs2
-rw-r--r--tests/ui/parser/anon-enums.rs2
-rw-r--r--tests/ui/parser/anon-enums.stderr21
-rw-r--r--tests/ui/parser/issues/issue-87086-colon-path-sep.rs1
-rw-r--r--tests/ui/parser/issues/issue-87086-colon-path-sep.stderr11
5 files changed, 8 insertions, 29 deletions
diff --git a/compiler/rustc_parse/src/parser/diagnostics.rs b/compiler/rustc_parse/src/parser/diagnostics.rs
index 07bd76dc39b..eda7046c748 100644
--- a/compiler/rustc_parse/src/parser/diagnostics.rs
+++ b/compiler/rustc_parse/src/parser/diagnostics.rs
@@ -2500,6 +2500,8 @@ impl<'a> Parser<'a> {
                     Ok(ty) => {
                         err.span_label(ty.span, "specifying the type of a pattern isn't supported");
                         self.restore_snapshot(snapshot_type);
+                        let new_span = first_pat.span.to(ty.span);
+                        first_pat = self.mk_pat(new_span, PatKind::Wild);
                     }
                 }
                 err.emit();
diff --git a/tests/ui/parser/anon-enums.rs b/tests/ui/parser/anon-enums.rs
index a8b5e8359d9..56b8a3d43be 100644
--- a/tests/ui/parser/anon-enums.rs
+++ b/tests/ui/parser/anon-enums.rs
@@ -3,7 +3,6 @@ fn foo(x: bool | i32) -> i32 | f64 {
 //~| ERROR anonymous enums are not supported
     match x {
         x: i32 => x, //~ ERROR expected
-        //~^ ERROR failed to resolve
         true => 42.,
         false => 0.333,
     }
@@ -14,6 +13,5 @@ fn main() {
         42: i32 => (), //~ ERROR expected
         _: f64 => (), //~ ERROR expected
         x: i32 => (), //~ ERROR expected
-        //~^ ERROR failed to resolve
     }
 }
diff --git a/tests/ui/parser/anon-enums.stderr b/tests/ui/parser/anon-enums.stderr
index 4febf2df0dc..84158225660 100644
--- a/tests/ui/parser/anon-enums.stderr
+++ b/tests/ui/parser/anon-enums.stderr
@@ -36,7 +36,7 @@ LL |         x::i32 => x,
    |          ~~
 
 error: expected one of `...`, `..=`, `..`, or `|`, found `:`
-  --> $DIR/anon-enums.rs:14:11
+  --> $DIR/anon-enums.rs:13:11
    |
 LL |         42: i32 => (),
    |           ^ --- specifying the type of a pattern isn't supported
@@ -44,7 +44,7 @@ LL |         42: i32 => (),
    |           expected one of `...`, `..=`, `..`, or `|`
 
 error: expected `|`, found `:`
-  --> $DIR/anon-enums.rs:15:10
+  --> $DIR/anon-enums.rs:14:10
    |
 LL |         _: f64 => (),
    |          ^ --- specifying the type of a pattern isn't supported
@@ -52,7 +52,7 @@ LL |         _: f64 => (),
    |          expected `|`
 
 error: expected one of `@` or `|`, found `:`
-  --> $DIR/anon-enums.rs:16:10
+  --> $DIR/anon-enums.rs:15:10
    |
 LL |         x: i32 => (),
    |          ^ --- specifying the type of a pattern isn't supported
@@ -64,18 +64,5 @@ help: maybe write a path separator here
 LL |         x::i32 => (),
    |          ~~
 
-error[E0433]: failed to resolve: use of undeclared crate or module `x`
-  --> $DIR/anon-enums.rs:5:9
-   |
-LL |         x: i32 => x,
-   |         ^ use of undeclared crate or module `x`
-
-error[E0433]: failed to resolve: use of undeclared crate or module `x`
-  --> $DIR/anon-enums.rs:16:9
-   |
-LL |         x: i32 => (),
-   |         ^ use of undeclared crate or module `x`
-
-error: aborting due to 8 previous errors
+error: aborting due to 6 previous errors
 
-For more information about this error, try `rustc --explain E0433`.
diff --git a/tests/ui/parser/issues/issue-87086-colon-path-sep.rs b/tests/ui/parser/issues/issue-87086-colon-path-sep.rs
index 0b7b67496d6..e1ea38f2795 100644
--- a/tests/ui/parser/issues/issue-87086-colon-path-sep.rs
+++ b/tests/ui/parser/issues/issue-87086-colon-path-sep.rs
@@ -68,7 +68,6 @@ fn main() {
         Foo:Bar::Baz => {}
         //~^ ERROR: expected one of
         //~| HELP: maybe write a path separator here
-        //~| ERROR: failed to resolve: `Bar` is a variant, not a module
     }
     match myfoo {
         Foo::Bar => {}
diff --git a/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr b/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr
index ed05bfe8b0a..63b072ac4cd 100644
--- a/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr
+++ b/tests/ui/parser/issues/issue-87086-colon-path-sep.stderr
@@ -103,7 +103,7 @@ LL |         Foo::Bar::Baz => {}
    |            ~~
 
 error: expected one of `@` or `|`, found `:`
-  --> $DIR/issue-87086-colon-path-sep.rs:75:12
+  --> $DIR/issue-87086-colon-path-sep.rs:74:12
    |
 LL |         Foo:Bar => {}
    |            ^--- specifying the type of a pattern isn't supported
@@ -115,12 +115,5 @@ help: maybe write a path separator here
 LL |         Foo::Bar => {}
    |            ~~
 
-error[E0433]: failed to resolve: `Bar` is a variant, not a module
-  --> $DIR/issue-87086-colon-path-sep.rs:68:13
-   |
-LL |         Foo:Bar::Baz => {}
-   |             ^^^ `Bar` is a variant, not a module
-
-error: aborting due to 10 previous errors
+error: aborting due to 9 previous errors
 
-For more information about this error, try `rustc --explain E0433`.