//@ check-pass | |
// We previously incorrectly deduplicated the list of projection bounds | |
// of trait objects, causing us to incorrectly reject this code, cc #136458. | |
trait Sup<T> { | |
type Assoc; | |
} | |
impl<T> Sup<T> for () { | |
type Assoc = T; | |
} | |
trait Trait<A, B>: Sup<A, Assoc = A> + Sup<B, Assoc = B> {} | |
impl<T, U> Trait<T, U> for () {} | |
fn main() { | |
let x: &dyn Trait<(), _> = &(); | |
let y: &dyn Trait<_, ()> = x; | |
} |