about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-01-22 10:12:05 +0000
committerbors <bors@rust-lang.org>2021-01-22 10:12:05 +0000
commitbbc01bb624a960533e049fdb98d0489ff2a8de06 (patch)
tree7c3071c605946aadde8c72cabb20c45d67cc51f8 /src/test
parent25f39fe80293f77bd86f64a1261a3e2c0ca23847 (diff)
parentf32a6acdab446d7fd018bb2a975769ae995aa4c7 (diff)
downloadrust-bbc01bb624a960533e049fdb98d0489ff2a8de06.tar.gz
rust-bbc01bb624a960533e049fdb98d0489ff2a8de06.zip
Auto merge of #80558 - lcnr:gat-variance, r=matthewjasper
require gat substs to be invariant

fixes #69184, fixes #80766

r? `@matthewjasper` probably
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() {}