add known-bug test for unsound issue 57893

This commit is contained in:
whtahy 2023-04-18 21:30:21 -04:00
parent 2fb20985a0
commit 232d685e61

View File

@ -0,0 +1,25 @@
// check-pass
// known-bug: #57893
// Should fail. Because we see an impl that uses a certain associated type, we
// type-check assuming that impl is used. However, this conflicts with the
// "implicit impl" that we get for trait objects, violating coherence.
trait Object<U> {
type Output;
}
impl<T: ?Sized, U> Object<U> for T {
type Output = U;
}
fn foo<T: ?Sized, U>(x: <T as Object<U>>::Output) -> U {
x
}
#[allow(dead_code)]
fn transmute<T, U>(x: T) -> U {
foo::<dyn Object<U, Output = T>, U>(x)
}
fn main() {}