| //@ compile-flags: -Znext-solver | |
| //@ known-bug: #92505 | |
| // When checking that the impl method where-bounds are implied by the trait, | |
| // we prove `<() as A<T>>::Assoc: A<T>` in the environment `<() as A<T>>::Assoc: A<T>`. | |
| // | |
| // Normalizing `<() as A<T>>::Assoc` is ambiguous in that environment. The | |
| // where-bound `<() as A<T>>::Assoc: A<T>` may apply, resulting in overflow. | |
| trait A<T> { | |
| type Assoc; | |
| fn f() | |
| where | |
| Self::Assoc: A<T>, | |
| { | |
| } | |
| } | |
| impl<T> A<T> for () { | |
| type Assoc = (); | |
| fn f() | |
| where | |
| Self::Assoc: A<T>, | |
| { | |
| <() as A<T>>::f(); | |
| } | |
| } | |
| fn main() {} |