| //@ 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); |
| } |