about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-07-06 20:11:39 -0700
committerGitHub <noreply@github.com>2023-07-06 20:11:39 -0700
commit1cb31e71d626ee82ebe1a0d0c97dae79649871d3 (patch)
tree212435275c7c457c6823007c1cdbff3cf7009927
parentde49a9f2f51757dced984a1b7f45e38d59985b5e (diff)
parent86728e74e043aca318643d0d1bae724f3078bc33 (diff)
downloadrust-1cb31e71d626ee82ebe1a0d0c97dae79649871d3.tar.gz
rust-1cb31e71d626ee82ebe1a0d0c97dae79649871d3.zip
Rollup merge of #113164 - JohnTitor:issue-109054, r=compiler-errors
Add a regression test for #109054

Closes #109054
r? ``@compiler-errors``
-rw-r--r--tests/ui/type-alias-impl-trait/issue-109054.rs22
-rw-r--r--tests/ui/type-alias-impl-trait/issue-109054.stderr12
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/ui/type-alias-impl-trait/issue-109054.rs b/tests/ui/type-alias-impl-trait/issue-109054.rs
new file mode 100644
index 00000000000..1fbec47b14b
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/issue-109054.rs
@@ -0,0 +1,22 @@
+// edition:2021
+
+#![feature(type_alias_impl_trait)]
+
+struct CallMe;
+
+type ReturnType<'a> = impl std::future::Future<Output = u32> + 'a;
+type FnType = impl Fn(&u32) -> ReturnType;
+
+impl std::ops::Deref for CallMe {
+    type Target = FnType;
+
+    fn deref(&self) -> &Self::Target {
+        fn inner(val: &u32) -> ReturnType {
+            async move { *val * 2 }
+        }
+
+        &inner //~ ERROR: expected generic lifetime parameter, found `'_`
+    }
+}
+
+fn main() {}
diff --git a/tests/ui/type-alias-impl-trait/issue-109054.stderr b/tests/ui/type-alias-impl-trait/issue-109054.stderr
new file mode 100644
index 00000000000..a611b9fe448
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/issue-109054.stderr
@@ -0,0 +1,12 @@
+error[E0792]: expected generic lifetime parameter, found `'_`
+  --> $DIR/issue-109054.rs:18:9
+   |
+LL | type ReturnType<'a> = impl std::future::Future<Output = u32> + 'a;
+   |                 -- this generic parameter must be used with a generic lifetime parameter
+...
+LL |         &inner
+   |         ^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0792`.