diff options
Diffstat (limited to 'src/test/ui/generator/auto-trait-regions.rs')
-rw-r--r-- | src/test/ui/generator/auto-trait-regions.rs | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/src/test/ui/generator/auto-trait-regions.rs b/src/test/ui/generator/auto-trait-regions.rs deleted file mode 100644 index ea4b0d554..000000000 --- a/src/test/ui/generator/auto-trait-regions.rs +++ /dev/null @@ -1,53 +0,0 @@ -#![feature(generators)] -#![feature(auto_traits)] -#![feature(negative_impls)] - -auto trait Foo {} - -struct No; - -impl !Foo for No {} - -struct A<'a, 'b>(&'a mut bool, &'b mut bool, No); - -impl<'a, 'b: 'a> Foo for A<'a, 'b> {} - -struct OnlyFooIfStaticRef(No); -impl Foo for &'static OnlyFooIfStaticRef {} - -struct OnlyFooIfRef(No); -impl<'a> Foo for &'a OnlyFooIfRef {} - -fn assert_foo<T: Foo>(f: T) {} - -fn main() { - // Make sure 'static is erased for generator interiors so we can't match it in trait selection - let x: &'static _ = &OnlyFooIfStaticRef(No); - let gen = || { - let x = x; - yield; - assert_foo(x); - }; - assert_foo(gen); - //~^ ERROR implementation of `Foo` is not general enough - - // Allow impls which matches any lifetime - let x = &OnlyFooIfRef(No); - let gen = || { - let x = x; - yield; - assert_foo(x); - }; - assert_foo(gen); // ok - - // Disallow impls which relates lifetimes in the generator interior - let gen = || { - let a = A(&mut true, &mut true, No); - //~^ temporary value dropped while borrowed - //~| temporary value dropped while borrowed - yield; - assert_foo(a); - }; - assert_foo(gen); - //~^ ERROR not general enough -} |