about summary refs log tree commit diff
diff options
context:
space:
mode:
authorclubby789 <jamie@hill-daniel.co.uk>2024-10-07 11:36:47 +0000
committerclubby789 <jamie@hill-daniel.co.uk>2024-10-07 16:30:48 +0000
commitfa4f18be5553bd23856abf717ad86acf0412a2ef (patch)
tree5b2e766ec7209110f3945cef77fc56296f84498a
parentb27c22d6b0a230fc122d541356580f0fb2be2366 (diff)
downloadrust-fa4f18be5553bd23856abf717ad86acf0412a2ef.tar.gz
rust-fa4f18be5553bd23856abf717ad86acf0412a2ef.zip
Add test for issue 30472
-rw-r--r--tests/ui/traits/assoc-type-hrtb-normalization-30472.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/traits/assoc-type-hrtb-normalization-30472.rs b/tests/ui/traits/assoc-type-hrtb-normalization-30472.rs
new file mode 100644
index 00000000000..4ce3b9b3b77
--- /dev/null
+++ b/tests/ui/traits/assoc-type-hrtb-normalization-30472.rs
@@ -0,0 +1,32 @@
+//@ check-pass
+//! Tests that associated type projections normalize properly in the presence of HRTBs.
+//! Original issue: <https://github.com/rust-lang/rust/issues/30472>
+
+
+pub trait MyFrom<T> {}
+impl<T> MyFrom<T> for T {}
+
+pub trait MyInto<T> {}
+impl<T, U> MyInto<U> for T where U: MyFrom<T> {}
+
+
+pub trait A<'self_> {
+    type T;
+}
+pub trait B: for<'self_> A<'self_> {
+    // Originally caused the `type U = usize` example below to fail with a type mismatch error
+    type U: for<'self_> MyFrom<<Self as A<'self_>>::T>;
+}
+
+
+pub struct M;
+impl<'self_> A<'self_> for M {
+    type T = usize;
+}
+
+impl B for M {
+    type U = usize;
+}
+
+
+fn main() {}