about summary refs log tree commit diff
path: root/tests/ui/parser
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-11-19 19:14:33 -0800
committerGitHub <noreply@github.com>2023-11-19 19:14:33 -0800
commita7f805d2777724f3cea465c19c658b68c63a3465 (patch)
tree0acca07826b9f93b6e429e22959a3501744389f6 /tests/ui/parser
parent94d9b7e7084a9909c53c2b241ffcec3ae729a452 (diff)
parenta8a2ee4e8f5e3c20c826d2cce6d500fb9bedfdd0 (diff)
downloadrust-a7f805d2777724f3cea465c19c658b68c63a3465.tar.gz
rust-a7f805d2777724f3cea465c19c658b68c63a3465.zip
Rollup merge of #117891 - compiler-errors:recover-for-dyn, r=davidtwco
Recover `dyn` and `impl` after `for<...>`

Recover `dyn` and `impl` after `for<...>` in types. Reuses the logic for parsing bare trait objects, so it doesn't fix cases like `for<'a> dyn Trait + dyn Trait` or anything, but that seems somewhat of a different issue.

Parsing recovery logic is a bit involved, but I couldn't find a way to simplify it.

Fixes #117882
Diffstat (limited to 'tests/ui/parser')
-rw-r--r--tests/ui/parser/recover-hrtb-before-dyn-impl-kw.rs9
-rw-r--r--tests/ui/parser/recover-hrtb-before-dyn-impl-kw.stderr26
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/ui/parser/recover-hrtb-before-dyn-impl-kw.rs b/tests/ui/parser/recover-hrtb-before-dyn-impl-kw.rs
new file mode 100644
index 00000000000..fe363a6887f
--- /dev/null
+++ b/tests/ui/parser/recover-hrtb-before-dyn-impl-kw.rs
@@ -0,0 +1,9 @@
+trait Trait {}
+
+fn test(_: &for<'a> dyn Trait) {}
+//~^ ERROR `for<...>` expected after `dyn`, not before
+
+fn test2(_: for<'a> impl Trait) {}
+//~^ ERROR `for<...>` expected after `impl`, not before
+
+fn main() {}
diff --git a/tests/ui/parser/recover-hrtb-before-dyn-impl-kw.stderr b/tests/ui/parser/recover-hrtb-before-dyn-impl-kw.stderr
new file mode 100644
index 00000000000..6fc1259b910
--- /dev/null
+++ b/tests/ui/parser/recover-hrtb-before-dyn-impl-kw.stderr
@@ -0,0 +1,26 @@
+error: `for<...>` expected after `dyn`, not before
+  --> $DIR/recover-hrtb-before-dyn-impl-kw.rs:3:21
+   |
+LL | fn test(_: &for<'a> dyn Trait) {}
+   |                     ^^^
+   |
+help: move `dyn` before the `for<...>`
+   |
+LL - fn test(_: &for<'a> dyn Trait) {}
+LL + fn test(_: &dyn for<'a> Trait) {}
+   |
+
+error: `for<...>` expected after `impl`, not before
+  --> $DIR/recover-hrtb-before-dyn-impl-kw.rs:6:21
+   |
+LL | fn test2(_: for<'a> impl Trait) {}
+   |                     ^^^^
+   |
+help: move `impl` before the `for<...>`
+   |
+LL - fn test2(_: for<'a> impl Trait) {}
+LL + fn test2(_: impl for<'a> Trait) {}
+   |
+
+error: aborting due to 2 previous errors
+