diff options
Diffstat (limited to 'tests/ui/underscore-lifetime/dyn-trait-underscore.rs')
-rw-r--r-- | tests/ui/underscore-lifetime/dyn-trait-underscore.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/ui/underscore-lifetime/dyn-trait-underscore.rs b/tests/ui/underscore-lifetime/dyn-trait-underscore.rs new file mode 100644 index 000000000..fa6e65c7d --- /dev/null +++ b/tests/ui/underscore-lifetime/dyn-trait-underscore.rs @@ -0,0 +1,20 @@ +// Check that the `'_` in `dyn Trait + '_` acts like ordinary elision, +// and not like an object lifetime default. +// +// cc #48468 + +fn a<T>(items: &[T]) -> Box<dyn Iterator<Item=&T>> { + // ^^^^^^^^^^^^^^^^^^^^^ bound *here* defaults to `'static` + Box::new(items.iter()) + //~^ ERROR lifetime may not live long enough +} + +fn b<T>(items: &[T]) -> Box<dyn Iterator<Item=&T> + '_> { + Box::new(items.iter()) // OK, equivalent to c +} + +fn c<'a, T>(items: &'a [T]) -> Box<dyn Iterator<Item=&'a T> + 'a> { + Box::new(items.iter()) // OK, equivalent to b +} + +fn main() { } |