about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-10-01 14:10:44 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2020-10-01 14:10:44 +0900
commitd4fdf6e7542941ab8d5b0d43f9c5bc0b278f638d (patch)
treeed0c262c1b9503248207f65273271fe0fbe905a1
parent50ffd6b7cbdf6baedbd3a22f4ea79ebdf7c48af9 (diff)
downloadrust-d4fdf6e7542941ab8d5b0d43f9c5bc0b278f638d.tar.gz
rust-d4fdf6e7542941ab8d5b0d43f9c5bc0b278f638d.zip
Add a regression test for issue-74244
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-74244.rs20
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-74244.stderr9
2 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/type-alias-impl-trait/issue-74244.rs b/src/test/ui/type-alias-impl-trait/issue-74244.rs
new file mode 100644
index 00000000000..bb4104b3d25
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-74244.rs
@@ -0,0 +1,20 @@
+#![feature(type_alias_impl_trait)]
+
+trait Allocator {
+    type Buffer;
+}
+
+struct DefaultAllocator;
+
+impl<T> Allocator for DefaultAllocator {
+    //~^ ERROR: the type parameter `T` is not constrained
+    type Buffer = ();
+}
+
+type A = impl Fn(<DefaultAllocator as Allocator>::Buffer);
+
+fn foo() -> A {
+    |_| ()
+}
+
+fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-74244.stderr b/src/test/ui/type-alias-impl-trait/issue-74244.stderr
new file mode 100644
index 00000000000..ff6bacd277e
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-74244.stderr
@@ -0,0 +1,9 @@
+error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predicates
+  --> $DIR/issue-74244.rs:9:6
+   |
+LL | impl<T> Allocator for DefaultAllocator {
+   |      ^ unconstrained type parameter
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0207`.