about summary refs log tree commit diff
path: root/tests/ui/parser
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-11-14 00:13:30 +0000
committerMichael Goulet <michael@errs.io>2023-11-14 00:15:10 +0000
commita8a2ee4e8f5e3c20c826d2cce6d500fb9bedfdd0 (patch)
treedfcc57fff15d17050f1c1bcd5514e1be025b0aa3 /tests/ui/parser
parent85b84504669c6c779fab7b96fbe5b26635067cd1 (diff)
downloadrust-a8a2ee4e8f5e3c20c826d2cce6d500fb9bedfdd0.tar.gz
rust-a8a2ee4e8f5e3c20c826d2cce6d500fb9bedfdd0.zip
Recover `dyn` and `impl` after `for<...>`
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
+