// Test that `impl Alpha<dyn Object>` resets the object-lifetime | |
// default to `'static`. | |
// | |
//@ check-pass | |
trait Alpha<Item: ?Sized> { | |
fn item(&self) -> Box<Item> { | |
panic!() | |
} | |
} | |
trait Object {} | |
impl<T> Alpha<dyn Object> for T {} | |
fn alpha(x: &str, y: &str) -> impl Alpha<dyn Object> { () } | |
fn is_static<T>(_: T) where T: 'static { } | |
fn bar(x: &str) -> &impl Alpha<dyn Object> { &() } | |
fn main() { | |
let s = format!("foo"); | |
let r = bar(&s); | |
is_static(r.item()); | |
} |