diff options
| author | clubby789 <jamie@hill-daniel.co.uk> | 2024-10-07 11:36:47 +0000 |
|---|---|---|
| committer | clubby789 <jamie@hill-daniel.co.uk> | 2024-10-07 16:30:48 +0000 |
| commit | fa4f18be5553bd23856abf717ad86acf0412a2ef (patch) | |
| tree | 5b2e766ec7209110f3945cef77fc56296f84498a | |
| parent | b27c22d6b0a230fc122d541356580f0fb2be2366 (diff) | |
| download | rust-fa4f18be5553bd23856abf717ad86acf0412a2ef.tar.gz rust-fa4f18be5553bd23856abf717ad86acf0412a2ef.zip | |
Add test for issue 30472
| -rw-r--r-- | tests/ui/traits/assoc-type-hrtb-normalization-30472.rs | 32 |
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() {} |
