summaryrefslogtreecommitdiffstats
path: root/src/test/ui/associated-type-bounds/inside-adt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/associated-type-bounds/inside-adt.rs')
-rw-r--r--src/test/ui/associated-type-bounds/inside-adt.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/test/ui/associated-type-bounds/inside-adt.rs b/src/test/ui/associated-type-bounds/inside-adt.rs
new file mode 100644
index 000000000..f26037f07
--- /dev/null
+++ b/src/test/ui/associated-type-bounds/inside-adt.rs
@@ -0,0 +1,30 @@
+#![feature(associated_type_bounds)]
+
+use std::mem::ManuallyDrop;
+
+struct S1 { f: dyn Iterator<Item: Copy> }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+struct S2 { f: Box<dyn Iterator<Item: Copy>> }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+struct S3 { f: dyn Iterator<Item: 'static> }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+
+enum E1 { V(dyn Iterator<Item: Copy>) }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+//~| ERROR the size for values of type `(dyn Iterator<Item = impl Copy> + 'static)`
+enum E2 { V(Box<dyn Iterator<Item: Copy>>) }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+enum E3 { V(dyn Iterator<Item: 'static>) }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+//~| ERROR the size for values of type `(dyn Iterator<Item = impl Sized> + 'static)`
+
+union U1 { f: ManuallyDrop<dyn Iterator<Item: Copy>> }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+//~| ERROR the size for values of type `(dyn Iterator<Item = impl Copy> + 'static)`
+union U2 { f: ManuallyDrop<Box<dyn Iterator<Item: Copy>>> }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+union U3 { f: ManuallyDrop<dyn Iterator<Item: 'static>> }
+//~^ ERROR associated type bounds are not allowed within structs, enums, or unions
+//~| ERROR the size for values of type `(dyn Iterator<Item = impl Sized> + 'static)`
+
+fn main() {}