blob: 2b04619e23b513bbda5a400ac90fc13be32413c1 [file] [log] [blame]
//@ compile-flags: --crate-type=lib
//@ check-pass
pub trait Widget<E> {
fn boxed<'w>(self) -> Box<dyn WidgetDyn<E> + 'w>
where
Self: Sized + 'w;
}
pub trait WidgetDyn<E> {}
impl<T, E> WidgetDyn<E> for T where T: Widget<E> {}
impl<E> Widget<E> for dyn WidgetDyn<E> + '_ {
fn boxed<'w>(self) -> Box<dyn WidgetDyn<E> + 'w>
where
Self: Sized + 'w,
{
// Even though this is illegal to const evaluate, this should never
// trigger an ICE because it can never be called from actual code
// (due to the trivially false where-clause predicate).
Box::new(self)
}
}