diff options
| author | Yerkebulan Tulibergenov <yerkebulan@gmail.com> | 2021-06-15 21:32:13 -0700 |
|---|---|---|
| committer | Yerkebulan Tulibergenov <yerkebulan@gmail.com> | 2021-06-15 21:32:13 -0700 |
| commit | 782824c48f79d5fbe6732484e4b5cc4ab9892e41 (patch) | |
| tree | fb6ec3a02171803cc97fe197b5e38e44a26563b5 | |
| parent | 0a8629bff642c3c3b84bb644c0099194f063b627 (diff) | |
| download | rust-782824c48f79d5fbe6732484e4b5cc4ab9892e41.tar.gz rust-782824c48f79d5fbe6732484e4b5cc4ab9892e41.zip | |
add regression test for issue #78632
| -rw-r--r-- | src/test/ui/traits/issue-78632.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/test/ui/traits/issue-78632.rs b/src/test/ui/traits/issue-78632.rs new file mode 100644 index 00000000000..c72a2aef490 --- /dev/null +++ b/src/test/ui/traits/issue-78632.rs @@ -0,0 +1,59 @@ +// check-pass +// +// Regression test for issue #78632 + +#![crate_type = "lib"] + +pub trait Corge<T> { + type Fred; +} + +impl Corge<u8> for () { + type Fred = u32; +} + +pub trait Waldo { + type Quax; +} + +impl Waldo for u32 { + type Quax = u8; +} + +pub trait Grault +where + (): Corge<Self::Thud>, +{ + type Thud; + fn bar(_: <() as Corge<Self::Thud>>::Fred) {} +} + +impl<T> Grault for T +where + T: Waldo, + (): Corge<T::Quax>, + <() as Corge<T::Quax>>::Fred: Waldo, +{ + type Thud = u8; +} + +pub trait Plugh<I> { + fn baz(); +} + +#[derive(Copy, Clone, Debug)] +pub struct Qiz<T> { + foo: T, +} + +impl<T> Plugh<<() as Corge<T::Thud>>::Fred> for Qiz<T> +where + T: Grault, + (): Corge<T::Thud>, +{ + fn baz() {} +} + +pub fn test() { + <Qiz<u32> as Plugh<u32>>::baz(); +} |
