about summary refs log tree commit diff
path: root/src/test/ui/generator/auto-trait-regions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/generator/auto-trait-regions.rs')
-rw-r--r--src/test/ui/generator/auto-trait-regions.rs53
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 ea4b0d554cd..00000000000
--- 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
-}