about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/ui/generic-associated-types/issue-74816.rs23
-rw-r--r--src/test/ui/generic-associated-types/issue-74816.stderr31
2 files changed, 54 insertions, 0 deletions
diff --git a/src/test/ui/generic-associated-types/issue-74816.rs b/src/test/ui/generic-associated-types/issue-74816.rs
new file mode 100644
index 00000000000..754397229a6
--- /dev/null
+++ b/src/test/ui/generic-associated-types/issue-74816.rs
@@ -0,0 +1,23 @@
+#![feature(associated_type_defaults)]
+#![feature(generic_associated_types)]
+#![allow(incomplete_features)]
+
+trait Trait1 {
+    fn foo();
+}
+
+trait Trait2 {
+    type Associated: Trait1 = Self;
+    //~^ ERROR: the trait bound `Self: Trait1` is not satisfied
+    //~| the size for values of type `Self` cannot be known
+}
+
+impl Trait2 for () {}
+
+fn call_foo<T: Trait2>() {
+    T::Associated::foo()
+}
+
+fn main() {
+    call_foo::<()>()
+}
diff --git a/src/test/ui/generic-associated-types/issue-74816.stderr b/src/test/ui/generic-associated-types/issue-74816.stderr
new file mode 100644
index 00000000000..64bc94d601b
--- /dev/null
+++ b/src/test/ui/generic-associated-types/issue-74816.stderr
@@ -0,0 +1,31 @@
+error[E0277]: the trait bound `Self: Trait1` is not satisfied
+  --> $DIR/issue-74816.rs:10:5
+   |
+LL |     type Associated: Trait1 = Self;
+   |     ^^^^^^^^^^^^^^^^^------^^^^^^^^
+   |     |                |
+   |     |                required by this bound in `Trait2::Associated`
+   |     the trait `Trait1` is not implemented for `Self`
+   |
+help: consider further restricting `Self`
+   |
+LL | trait Trait2: Trait1 {
+   |             ^^^^^^^^
+
+error[E0277]: the size for values of type `Self` cannot be known at compilation time
+  --> $DIR/issue-74816.rs:10:5
+   |
+LL |     type Associated: Trait1 = Self;
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |     |
+   |     doesn't have a size known at compile-time
+   |     required by this bound in `Trait2::Associated`
+   |
+help: consider further restricting `Self`
+   |
+LL | trait Trait2: Sized {
+   |             ^^^^^^^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.