about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorBastian Kauschke <bastian_kauschke@hotmail.de>2020-12-31 15:35:21 +0100
committerBastian Kauschke <bastian_kauschke@hotmail.de>2021-01-21 17:35:44 +0100
commitf32a6acdab446d7fd018bb2a975769ae995aa4c7 (patch)
treed30acc8e09bf1282a77844a5dfb99a9247182831 /src/test
parent339e19697a39a78f4d669c217b7d21109215de41 (diff)
downloadrust-f32a6acdab446d7fd018bb2a975769ae995aa4c7.tar.gz
rust-f32a6acdab446d7fd018bb2a975769ae995aa4c7.zip
require gat substs to be invariant
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/generic-associated-types/variance_constraints.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/test/ui/generic-associated-types/variance_constraints.rs b/src/test/ui/generic-associated-types/variance_constraints.rs
new file mode 100644
index 00000000000..36db80706b4
--- /dev/null
+++ b/src/test/ui/generic-associated-types/variance_constraints.rs
@@ -0,0 +1,24 @@
+// check-pass
+// issue #69184
+#![feature(generic_associated_types)]
+#![allow(incomplete_features)]
+
+trait A {
+    type B<'a>;
+
+    fn make_b<'a>(&'a self) -> Self::B<'a>;
+}
+
+struct S {}
+impl A for S {
+    type B<'a> = &'a S;
+    fn make_b<'a>(&'a self) -> &'a Self {
+        self
+    }
+}
+
+enum E<'a> {
+    S(<S as A>::B<'a>),
+}
+
+fn main() {}