diff options
Diffstat (limited to 'src/test/ui/specialization/issue-44861.rs')
-rw-r--r-- | src/test/ui/specialization/issue-44861.rs | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/src/test/ui/specialization/issue-44861.rs b/src/test/ui/specialization/issue-44861.rs deleted file mode 100644 index 79d9b9490..000000000 --- a/src/test/ui/specialization/issue-44861.rs +++ /dev/null @@ -1,40 +0,0 @@ -#![crate_type = "lib"] -#![feature(specialization)] -#![feature(unsize, coerce_unsized)] -#![allow(incomplete_features)] - -use std::ops::CoerceUnsized; - -pub struct SmartassPtr<A: Smartass+?Sized>(A::Data); - -pub trait Smartass { - type Data; - type Data2: CoerceUnsized<*const [u8]>; -} - -pub trait MaybeObjectSafe {} - -impl MaybeObjectSafe for () {} - -impl<T> Smartass for T { - type Data = <Self as Smartass>::Data2; - default type Data2 = (); - //~^ ERROR: the trait bound `(): CoerceUnsized<*const [u8]>` is not satisfied -} - -impl Smartass for () { - type Data2 = *const [u8; 1]; -} - -impl Smartass for dyn MaybeObjectSafe { - type Data = *const [u8]; - type Data2 = *const [u8; 0]; -} - -impl<U: Smartass+?Sized, T: Smartass+?Sized> CoerceUnsized<SmartassPtr<T>> for SmartassPtr<U> - where <U as Smartass>::Data: std::ops::CoerceUnsized<<T as Smartass>::Data> -{} - -pub fn conv(s: SmartassPtr<()>) -> SmartassPtr<dyn MaybeObjectSafe> { - s -} |