mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 08:44:35 +00:00
add known-bug test for unsound issue 57893
This commit is contained in:
parent
2fb20985a0
commit
232d685e61
25
tests/ui/coherence/indirect-impl-for-trait-obj-coherence.rs
Normal file
25
tests/ui/coherence/indirect-impl-for-trait-obj-coherence.rs
Normal 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() {}
|
Loading…
Reference in New Issue
Block a user