diff options
author | Niko Matsakis <niko@alum.mit.edu> | 2017-11-22 13:45:42 -0500 |
---|---|---|
committer | Niko Matsakis <niko@alum.mit.edu> | 2017-11-22 13:45:42 -0500 |
commit | 79bf7db3191717df4738321a596ba21345b6cc3b (patch) | |
tree | 005e1f48db74658d14bd205b71c067b1fbcc3b7e | |
parent | d3e0c33dbeaaa10f17e867ac62bb268167fda942 (diff) | |
download | rust-79bf7db3191717df4738321a596ba21345b6cc3b.tar.gz |
add some tests for the interaction with existential impl trait
-rw-r--r-- | src/test/run-pass/in-band-lifetimes.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/test/run-pass/in-band-lifetimes.rs b/src/test/run-pass/in-band-lifetimes.rs index d7a837f23b1..95cc3c3759e 100644 --- a/src/test/run-pass/in-band-lifetimes.rs +++ b/src/test/run-pass/in-band-lifetimes.rs @@ -9,7 +9,7 @@ // except according to those terms. #![allow(warnings)] -#![feature(in_band_lifetimes, universal_impl_trait)] +#![feature(in_band_lifetimes, universal_impl_trait, conservative_impl_trait)] fn foo(x: &'x u8) -> &'x u8 { x } fn foo2(x: &'a u8, y: &u8) -> &'a u8 { x } @@ -81,4 +81,24 @@ fn in_generics_in_band<T: MyTrait<'a>>(x: &T) {} fn where_clause_in_band<T>(x: &T) where T: MyTrait<'a> {} fn impl_trait_in_band(x: &impl MyTrait<'a>) {} +// Tests around using in-band lifetimes within existential traits. + +trait FunkyTrait<'a> { } +impl<'a, T> FunkyTrait<'a> for T { } +fn existential_impl_trait_in_band_outlives(x: &'a u32) -> impl ::std::fmt::Debug + 'a { + x +} +fn existential_impl_trait_in_band_param(x: &'a u32) -> impl FunkyTrait<'a> { + x +} +fn existential_impl_trait_in_band_param_static(x: &'a u32) -> impl FunkyTrait<'static> + 'a { + x +} +fn existential_impl_trait_in_band_param_outlives(x: &'a u32) -> impl FunkyTrait<'a> + 'a { + x +} +fn existential_impl_trait_in_band_higher_ranked(x: &'a u32) -> impl for<'b> FunkyTrait<'b> + 'a { + x +} + fn main() {} |