31 lines
657 B
Rust
31 lines
657 B
Rust
//@ compile-flags: -Znext-solver
|
|
//~^ ERROR cannot normalize `<T as Default>::Id: '_`
|
|
#![feature(specialization)]
|
|
//~^ WARN the feature `specialization` is incomplete
|
|
|
|
trait Default {
|
|
type Id;
|
|
|
|
fn intu(&self) -> &Self::Id;
|
|
}
|
|
|
|
impl<T> Default for T {
|
|
default type Id = T;
|
|
// This will be fixed by #111994
|
|
fn intu(&self) -> &Self::Id {
|
|
//~^ ERROR type annotations needed
|
|
self //~ ERROR cannot satisfy
|
|
}
|
|
}
|
|
|
|
fn transmute<T: Default<Id = U>, U: Copy>(t: T) -> U {
|
|
*t.intu()
|
|
}
|
|
|
|
use std::num::NonZero;
|
|
|
|
fn main() {
|
|
let s = transmute::<u8, Option<NonZero<u8>>>(0); //~ ERROR cannot satisfy
|
|
assert_eq!(s, None);
|
|
}
|