about summary refs log tree commit diff
path: root/tests/ui/dropck/dropck-only-error-gat.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/dropck/dropck-only-error-gat.rs')
-rw-r--r--tests/ui/dropck/dropck-only-error-gat.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/ui/dropck/dropck-only-error-gat.rs b/tests/ui/dropck/dropck-only-error-gat.rs
new file mode 100644
index 00000000000..dadcf76a43f
--- /dev/null
+++ b/tests/ui/dropck/dropck-only-error-gat.rs
@@ -0,0 +1,43 @@
+// Test that we don't ICE for a typeck error that only shows up in dropck
+// Version that uses a generic associated type
+// Regression test for #91985
+
+pub trait Trait1 {
+    type Associated: Ord;
+}
+
+pub trait Trait2 {
+    type Associated: Clone;
+}
+
+pub trait GatTrait {
+    type Gat<T: Clone>;
+}
+
+pub struct GatStruct;
+
+impl GatTrait for GatStruct {
+    type Gat<T: Clone> = Box<T>;
+}
+
+pub struct OuterStruct<T1: Trait1, T2: Trait2> {
+    inner: InnerStruct<T2, GatStruct>,
+    t1: T1,
+}
+
+pub struct InnerStruct<T: Trait2, G: GatTrait> {
+    pub gat: G::Gat<T::Associated>,
+}
+
+impl<T1, T2> OuterStruct<T1, T2>
+where
+    T1: Trait1,
+    T2: Trait2<Associated = T1::Associated>,
+{
+    pub fn new() -> Self {
+        //~^ ERROR the trait bound `<T1 as Trait1>::Associated: Clone` is not satisfied
+        todo!()
+    }
+}
+
+pub fn main() {}