about summary refs log tree commit diff
path: root/tests/ui/trait-bounds
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-10-31 00:09:34 +0000
committerMichael Goulet <michael@errs.io>2024-10-31 00:09:52 +0000
commit06a49b609f763cacf76a4fcdd3ae8f142e0b8b2d (patch)
treeb071a8e4acf4043424afc3e0e20d589d46191473 /tests/ui/trait-bounds
parente356279bdfe6840236877b298f0c577e0f9221ff (diff)
downloadrust-06a49b609f763cacf76a4fcdd3ae8f142e0b8b2d.tar.gz
rust-06a49b609f763cacf76a4fcdd3ae8f142e0b8b2d.zip
Validate associated type bounds on ?
Diffstat (limited to 'tests/ui/trait-bounds')
-rw-r--r--tests/ui/trait-bounds/maybe-bound-with-assoc.rs12
-rw-r--r--tests/ui/trait-bounds/maybe-bound-with-assoc.stderr21
2 files changed, 33 insertions, 0 deletions
diff --git a/tests/ui/trait-bounds/maybe-bound-with-assoc.rs b/tests/ui/trait-bounds/maybe-bound-with-assoc.rs
new file mode 100644
index 00000000000..b6b2551e463
--- /dev/null
+++ b/tests/ui/trait-bounds/maybe-bound-with-assoc.rs
@@ -0,0 +1,12 @@
+trait HasAssoc {
+    type Assoc;
+}
+fn hasassoc<T: ?HasAssoc<Assoc = ()>>() {}
+//~^ WARN relaxing a default bound
+
+trait NoAssoc {}
+fn noassoc<T: ?NoAssoc<Missing = ()>>() {}
+//~^ WARN relaxing a default bound
+//~| ERROR associated type `Missing` not found for `NoAssoc`
+
+fn main() {}
diff --git a/tests/ui/trait-bounds/maybe-bound-with-assoc.stderr b/tests/ui/trait-bounds/maybe-bound-with-assoc.stderr
new file mode 100644
index 00000000000..91d78e59cd5
--- /dev/null
+++ b/tests/ui/trait-bounds/maybe-bound-with-assoc.stderr
@@ -0,0 +1,21 @@
+warning: relaxing a default bound only does something for `?Sized`; all other traits are not bound by default
+  --> $DIR/maybe-bound-with-assoc.rs:4:16
+   |
+LL | fn hasassoc<T: ?HasAssoc<Assoc = ()>>() {}
+   |                ^^^^^^^^^^^^^^^^^^^^^
+
+warning: relaxing a default bound only does something for `?Sized`; all other traits are not bound by default
+  --> $DIR/maybe-bound-with-assoc.rs:8:15
+   |
+LL | fn noassoc<T: ?NoAssoc<Missing = ()>>() {}
+   |               ^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0220]: associated type `Missing` not found for `NoAssoc`
+  --> $DIR/maybe-bound-with-assoc.rs:8:24
+   |
+LL | fn noassoc<T: ?NoAssoc<Missing = ()>>() {}
+   |                        ^^^^^^^ associated type `Missing` not found
+
+error: aborting due to 1 previous error; 2 warnings emitted
+
+For more information about this error, try `rustc --explain E0220`.