about summary refs log tree commit diff
path: root/src/test/ui/generator
diff options
context:
space:
mode:
authorAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-05 09:13:28 +0100
committerAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-11 09:32:08 +0000
commitcf2dff2b1e3fa55fa5415d524200070d0d7aacfe (patch)
tree40a88d9a46aaf3e8870676eb2538378b75a263eb /src/test/ui/generator
parentca855e6e42787ecd062d81d53336fe6788ef51a9 (diff)
Move /src/test to /tests
Diffstat (limited to 'src/test/ui/generator')
-rw-r--r--src/test/ui/generator/addassign-yield.rs35
-rw-r--r--src/test/ui/generator/async-generator-issue-67158.rs6
-rw-r--r--src/test/ui/generator/async-generator-issue-67158.stderr9
-rw-r--r--src/test/ui/generator/auto-trait-regions.rs53
-rw-r--r--src/test/ui/generator/auto-trait-regions.stderr47
-rw-r--r--src/test/ui/generator/auxiliary/metadata-sufficient-for-layout.rs11
-rw-r--r--src/test/ui/generator/auxiliary/xcrate-reachable.rs14
-rw-r--r--src/test/ui/generator/auxiliary/xcrate.rs18
-rw-r--r--src/test/ui/generator/borrow-in-tail-expr.rs11
-rw-r--r--src/test/ui/generator/borrowing.rs20
-rw-r--r--src/test/ui/generator/borrowing.stderr31
-rw-r--r--src/test/ui/generator/clone-impl-async.rs70
-rw-r--r--src/test/ui/generator/clone-impl-async.stderr171
-rw-r--r--src/test/ui/generator/clone-impl-static.rs17
-rw-r--r--src/test/ui/generator/clone-impl-static.stderr31
-rw-r--r--src/test/ui/generator/clone-impl.rs73
-rw-r--r--src/test/ui/generator/clone-impl.stderr142
-rw-r--r--src/test/ui/generator/conditional-drop.rs61
-rw-r--r--src/test/ui/generator/control-flow.rs53
-rw-r--r--src/test/ui/generator/derived-drop-parent-expr.rs17
-rw-r--r--src/test/ui/generator/discriminant.rs137
-rw-r--r--src/test/ui/generator/drop-and-replace.rs45
-rw-r--r--src/test/ui/generator/drop-control-flow.rs139
-rw-r--r--src/test/ui/generator/drop-env.rs66
-rw-r--r--src/test/ui/generator/drop-track-addassign-yield.rs41
-rw-r--r--src/test/ui/generator/drop-tracking-parent-expression.rs69
-rw-r--r--src/test/ui/generator/drop-tracking-parent-expression.stderr128
-rw-r--r--src/test/ui/generator/drop-tracking-yielding-in-match-guards.rs12
-rw-r--r--src/test/ui/generator/drop-yield-twice.rs15
-rw-r--r--src/test/ui/generator/drop-yield-twice.stderr31
-rw-r--r--src/test/ui/generator/dropck-resume.rs33
-rw-r--r--src/test/ui/generator/dropck-resume.stderr15
-rw-r--r--src/test/ui/generator/dropck.rs20
-rw-r--r--src/test/ui/generator/dropck.stderr34
-rw-r--r--src/test/ui/generator/generator-region-requirements.migrate.stderr12
-rw-r--r--src/test/ui/generator/generator-region-requirements.rs19
-rw-r--r--src/test/ui/generator/generator-region-requirements.stderr11
-rw-r--r--src/test/ui/generator/generator-resume-after-panic.rs25
-rw-r--r--src/test/ui/generator/generator-with-nll.rs12
-rw-r--r--src/test/ui/generator/generator-with-nll.stderr12
-rw-r--r--src/test/ui/generator/generator-yielding-or-returning-itself.rs35
-rw-r--r--src/test/ui/generator/generator-yielding-or-returning-itself.stderr53
-rw-r--r--src/test/ui/generator/issue-102645.rs23
-rw-r--r--src/test/ui/generator/issue-102645.stderr16
-rw-r--r--src/test/ui/generator/issue-44197.rs36
-rw-r--r--src/test/ui/generator/issue-45729-unsafe-in-generator.mir.stderr11
-rw-r--r--src/test/ui/generator/issue-45729-unsafe-in-generator.rs12
-rw-r--r--src/test/ui/generator/issue-45729-unsafe-in-generator.thir.stderr11
-rw-r--r--src/test/ui/generator/issue-48048.rs13
-rw-r--r--src/test/ui/generator/issue-48048.stderr11
-rw-r--r--src/test/ui/generator/issue-52304.rs11
-rw-r--r--src/test/ui/generator/issue-52398.rs28
-rw-r--r--src/test/ui/generator/issue-52398.stderr24
-rw-r--r--src/test/ui/generator/issue-53548-1.rs20
-rw-r--r--src/test/ui/generator/issue-53548.rs38
-rw-r--r--src/test/ui/generator/issue-57017.rs55
-rw-r--r--src/test/ui/generator/issue-57084.rs28
-rw-r--r--src/test/ui/generator/issue-57084.stderr16
-rw-r--r--src/test/ui/generator/issue-57478.rs17
-rw-r--r--src/test/ui/generator/issue-58888.rs28
-rw-r--r--src/test/ui/generator/issue-61442-stmt-expr-with-drop.rs32
-rw-r--r--src/test/ui/generator/issue-62506-two_awaits.rs17
-rw-r--r--src/test/ui/generator/issue-64620-yield-array-element.rs9
-rw-r--r--src/test/ui/generator/issue-64620-yield-array-element.stderr9
-rw-r--r--src/test/ui/generator/issue-68112.rs71
-rw-r--r--src/test/ui/generator/issue-68112.stderr64
-rw-r--r--src/test/ui/generator/issue-69017.rs18
-rw-r--r--src/test/ui/generator/issue-69039.rs34
-rw-r--r--src/test/ui/generator/issue-87142.rs32
-rw-r--r--src/test/ui/generator/issue-88653.rs22
-rw-r--r--src/test/ui/generator/issue-88653.stderr15
-rw-r--r--src/test/ui/generator/issue-91477.rs7
-rw-r--r--src/test/ui/generator/issue-91477.stderr9
-rw-r--r--src/test/ui/generator/issue-93161.rs94
-rw-r--r--src/test/ui/generator/iterator-count.rs44
-rw-r--r--src/test/ui/generator/layout-error.rs28
-rw-r--r--src/test/ui/generator/layout-error.stderr9
-rw-r--r--src/test/ui/generator/live-upvar-across-yield.rs14
-rw-r--r--src/test/ui/generator/match-bindings.rs23
-rw-r--r--src/test/ui/generator/match-bindings.stderr17
-rw-r--r--src/test/ui/generator/metadata-sufficient-for-layout.rs25
-rw-r--r--src/test/ui/generator/metadata-sufficient-for-layout.stderr8
-rw-r--r--src/test/ui/generator/nested_generators.rs21
-rw-r--r--src/test/ui/generator/niche-in-generator.rs19
-rw-r--r--src/test/ui/generator/non-static-is-unpin.rs18
-rw-r--r--src/test/ui/generator/not-send-sync.rs21
-rw-r--r--src/test/ui/generator/not-send-sync.stderr56
-rw-r--r--src/test/ui/generator/overlap-locals.rs29
-rw-r--r--src/test/ui/generator/panic-drops-resume.rs36
-rw-r--r--src/test/ui/generator/panic-drops.rs57
-rw-r--r--src/test/ui/generator/panic-safe.rs30
-rw-r--r--src/test/ui/generator/partial-drop.rs42
-rw-r--r--src/test/ui/generator/partial-drop.stderr92
-rw-r--r--src/test/ui/generator/partial-initialization-across-yield.rs43
-rw-r--r--src/test/ui/generator/partial-initialization-across-yield.stderr33
-rw-r--r--src/test/ui/generator/pattern-borrow.rs17
-rw-r--r--src/test/ui/generator/pattern-borrow.stderr11
-rw-r--r--src/test/ui/generator/pin-box-generator.rs13
-rw-r--r--src/test/ui/generator/print/generator-print-verbose-1.rs60
-rw-r--r--src/test/ui/generator/print/generator-print-verbose-1.stderr62
-rw-r--r--src/test/ui/generator/print/generator-print-verbose-2.rs24
-rw-r--r--src/test/ui/generator/print/generator-print-verbose-2.stderr56
-rw-r--r--src/test/ui/generator/print/generator-print-verbose-3.rs12
-rw-r--r--src/test/ui/generator/print/generator-print-verbose-3.stderr19
-rw-r--r--src/test/ui/generator/reborrow-mut-upvar.rs16
-rw-r--r--src/test/ui/generator/reborrow-mut-upvar.stderr17
-rw-r--r--src/test/ui/generator/ref-escapes-but-not-over-yield.rs16
-rw-r--r--src/test/ui/generator/ref-escapes-but-not-over-yield.stderr15
-rw-r--r--src/test/ui/generator/ref-upvar-not-send.rs31
-rw-r--r--src/test/ui/generator/ref-upvar-not-send.stderr50
-rw-r--r--src/test/ui/generator/reinit-in-match-guard.rs25
-rw-r--r--src/test/ui/generator/resume-after-return.rs28
-rw-r--r--src/test/ui/generator/resume-arg-late-bound.rs17
-rw-r--r--src/test/ui/generator/resume-arg-late-bound.stderr17
-rw-r--r--src/test/ui/generator/resume-arg-size.rs28
-rw-r--r--src/test/ui/generator/resume-live-across-yield.rs45
-rw-r--r--src/test/ui/generator/retain-resume-ref.rs25
-rw-r--r--src/test/ui/generator/retain-resume-ref.stderr13
-rw-r--r--src/test/ui/generator/size-moved-locals.rs78
-rw-r--r--src/test/ui/generator/sized-yield.rs14
-rw-r--r--src/test/ui/generator/sized-yield.stderr26
-rw-r--r--src/test/ui/generator/smoke-resume-args.rs100
-rw-r--r--src/test/ui/generator/smoke.rs177
-rw-r--r--src/test/ui/generator/static-generators.rs20
-rw-r--r--src/test/ui/generator/static-mut-reference-across-yield.rs32
-rw-r--r--src/test/ui/generator/static-not-unpin.rs15
-rw-r--r--src/test/ui/generator/static-not-unpin.stderr18
-rw-r--r--src/test/ui/generator/static-reference-across-yield.rs16
-rw-r--r--src/test/ui/generator/too-live-local-in-immovable-gen.rs21
-rw-r--r--src/test/ui/generator/too-live-local-in-immovable-gen.stderr17
-rw-r--r--src/test/ui/generator/too-many-parameters.rs8
-rw-r--r--src/test/ui/generator/too-many-parameters.stderr9
-rw-r--r--src/test/ui/generator/type-mismatch-error.rs22
-rw-r--r--src/test/ui/generator/type-mismatch-error.stderr19
-rw-r--r--src/test/ui/generator/type-mismatch-signature-deduction.rs18
-rw-r--r--src/test/ui/generator/type-mismatch-signature-deduction.stderr33
-rw-r--r--src/test/ui/generator/unresolved-ct-var-drop-tracking.rs15
-rw-r--r--src/test/ui/generator/unresolved-ct-var-drop-tracking.stderr78
-rw-r--r--src/test/ui/generator/unresolved-ct-var.rs14
-rw-r--r--src/test/ui/generator/unresolved-ct-var.stderr78
-rw-r--r--src/test/ui/generator/xcrate-reachable.rs14
-rw-r--r--src/test/ui/generator/xcrate.rs30
-rw-r--r--src/test/ui/generator/yield-in-args-rev.rs19
-rw-r--r--src/test/ui/generator/yield-in-args-rev.stderr14
-rw-r--r--src/test/ui/generator/yield-in-args.rs10
-rw-r--r--src/test/ui/generator/yield-in-args.stderr9
-rw-r--r--src/test/ui/generator/yield-in-box.rs24
-rw-r--r--src/test/ui/generator/yield-in-box.stderr17
-rw-r--r--src/test/ui/generator/yield-in-const.rs6
-rw-r--r--src/test/ui/generator/yield-in-const.stderr9
-rw-r--r--src/test/ui/generator/yield-in-function.rs4
-rw-r--r--src/test/ui/generator/yield-in-function.stderr9
-rw-r--r--src/test/ui/generator/yield-in-initializer.rs17
-rw-r--r--src/test/ui/generator/yield-in-initializer.stderr17
-rw-r--r--src/test/ui/generator/yield-in-static.rs6
-rw-r--r--src/test/ui/generator/yield-in-static.stderr9
-rw-r--r--src/test/ui/generator/yield-outside-generator-issue-78653.rs7
-rw-r--r--src/test/ui/generator/yield-outside-generator-issue-78653.stderr20
-rw-r--r--src/test/ui/generator/yield-subtype.rs17
-rw-r--r--src/test/ui/generator/yield-subtype.stderr14
-rw-r--r--src/test/ui/generator/yield-while-iterating.rs75
-rw-r--r--src/test/ui/generator/yield-while-iterating.stderr25
-rw-r--r--src/test/ui/generator/yield-while-local-borrowed.rs49
-rw-r--r--src/test/ui/generator/yield-while-local-borrowed.stderr21
-rw-r--r--src/test/ui/generator/yield-while-ref-reborrowed.rs40
-rw-r--r--src/test/ui/generator/yield-while-ref-reborrowed.stderr18
-rw-r--r--src/test/ui/generator/yielding-in-match-guards.rs53
167 files changed, 0 insertions, 5348 deletions
diff --git a/src/test/ui/generator/addassign-yield.rs b/src/test/ui/generator/addassign-yield.rs
deleted file mode 100644
index 66f22bf31fc..00000000000
--- a/src/test/ui/generator/addassign-yield.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// run-pass
-// Regression test for broken MIR error (#61442)
-// Due to the two possible evaluation orders for
-// a '+=' expression (depending on whether or not the 'AddAssign' trait
-// is being used), we were failing to account for all types that might
-// possibly be live across a yield point.
-
-#![feature(generators)]
-
-fn foo() {
-    let _x = static || {
-        let mut s = String::new();
-        s += { yield; "" };
-    };
-
-    let _y = static || {
-        let x = &mut 0;
-        *{ yield; x } += match String::new() { _ => 0 };
-    };
-
-    // Please don't ever actually write something like this
-    let _z = static || {
-        let x = &mut 0;
-        *{
-            let inner = &mut 1;
-            *{ yield (); inner } += match String::new() { _ => 1};
-            yield;
-            x
-        } += match String::new() { _ => 2 };
-    };
-}
-
-fn main() {
-    foo()
-}
diff --git a/src/test/ui/generator/async-generator-issue-67158.rs b/src/test/ui/generator/async-generator-issue-67158.rs
deleted file mode 100644
index 8125a7a9bb6..00000000000
--- a/src/test/ui/generator/async-generator-issue-67158.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-#![feature(generators)]
-// edition:2018
-// Regression test for #67158.
-fn main() {
-    async { yield print!(":C") }; //~ ERROR `async` generators are not yet supported
-}
diff --git a/src/test/ui/generator/async-generator-issue-67158.stderr b/src/test/ui/generator/async-generator-issue-67158.stderr
deleted file mode 100644
index 7270d188e8b..00000000000
--- a/src/test/ui/generator/async-generator-issue-67158.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0727]: `async` generators are not yet supported
-  --> $DIR/async-generator-issue-67158.rs:5:13
-   |
-LL |     async { yield print!(":C") };
-   |             ^^^^^^^^^^^^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0727`.
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
-}
diff --git a/src/test/ui/generator/auto-trait-regions.stderr b/src/test/ui/generator/auto-trait-regions.stderr
deleted file mode 100644
index 0b1f34aeb96..00000000000
--- a/src/test/ui/generator/auto-trait-regions.stderr
+++ /dev/null
@@ -1,47 +0,0 @@
-error[E0716]: temporary value dropped while borrowed
-  --> $DIR/auto-trait-regions.rs:45:24
-   |
-LL |         let a = A(&mut true, &mut true, No);
-   |                        ^^^^                - temporary value is freed at the end of this statement
-   |                        |
-   |                        creates a temporary value which is freed while still in use
-...
-LL |         assert_foo(a);
-   |                    - borrow later used here
-   |
-   = note: consider using a `let` binding to create a longer lived value
-
-error[E0716]: temporary value dropped while borrowed
-  --> $DIR/auto-trait-regions.rs:45:35
-   |
-LL |         let a = A(&mut true, &mut true, No);
-   |                                   ^^^^     - temporary value is freed at the end of this statement
-   |                                   |
-   |                                   creates a temporary value which is freed while still in use
-...
-LL |         assert_foo(a);
-   |                    - borrow later used here
-   |
-   = note: consider using a `let` binding to create a longer lived value
-
-error: implementation of `Foo` is not general enough
-  --> $DIR/auto-trait-regions.rs:31:5
-   |
-LL |     assert_foo(gen);
-   |     ^^^^^^^^^^^^^^^ implementation of `Foo` is not general enough
-   |
-   = note: `&'0 OnlyFooIfStaticRef` must implement `Foo`, for any lifetime `'0`...
-   = note: ...but `Foo` is actually implemented for the type `&'static OnlyFooIfStaticRef`
-
-error: implementation of `Foo` is not general enough
-  --> $DIR/auto-trait-regions.rs:51:5
-   |
-LL |     assert_foo(gen);
-   |     ^^^^^^^^^^^^^^^ implementation of `Foo` is not general enough
-   |
-   = note: `Foo` would have to be implemented for the type `A<'0, '1>`, for any two lifetimes `'0` and `'1`...
-   = note: ...but `Foo` is actually implemented for the type `A<'_, '2>`, for some specific lifetime `'2`
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0716`.
diff --git a/src/test/ui/generator/auxiliary/metadata-sufficient-for-layout.rs b/src/test/ui/generator/auxiliary/metadata-sufficient-for-layout.rs
deleted file mode 100644
index 207c2735f88..00000000000
--- a/src/test/ui/generator/auxiliary/metadata-sufficient-for-layout.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// compile-flags: --emit metadata
-#![feature(generators, generator_trait)]
-
-use std::marker::Unpin;
-use std::ops::Generator;
-
-pub fn g() -> impl Generator<(), Yield = (), Return = ()> {
-    || {
-        yield;
-    }
-}
diff --git a/src/test/ui/generator/auxiliary/xcrate-reachable.rs b/src/test/ui/generator/auxiliary/xcrate-reachable.rs
deleted file mode 100644
index 2dd5ea67523..00000000000
--- a/src/test/ui/generator/auxiliary/xcrate-reachable.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-fn msg() -> u32 {
-    0
-}
-
-pub fn foo() -> impl Generator<(), Yield=(), Return=u32> {
-    || {
-        yield;
-        return msg();
-    }
-}
diff --git a/src/test/ui/generator/auxiliary/xcrate.rs b/src/test/ui/generator/auxiliary/xcrate.rs
deleted file mode 100644
index d07abd0918c..00000000000
--- a/src/test/ui/generator/auxiliary/xcrate.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::marker::Unpin;
-use std::ops::Generator;
-
-pub fn foo() -> impl Generator<(), Yield = (), Return = ()> {
-    || {
-        if false {
-            yield;
-        }
-    }
-}
-
-pub fn bar<T: 'static>(t: T) -> Box<Generator<(), Yield = T, Return = ()> + Unpin> {
-    Box::new(|| {
-        yield t;
-    })
-}
diff --git a/src/test/ui/generator/borrow-in-tail-expr.rs b/src/test/ui/generator/borrow-in-tail-expr.rs
deleted file mode 100644
index 540f5e3e1dd..00000000000
--- a/src/test/ui/generator/borrow-in-tail-expr.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// run-pass
-
-#![feature(generators)]
-
-fn main() {
-    let _a = || {
-        yield;
-        let a = String::new();
-        a.len()
-    };
-}
diff --git a/src/test/ui/generator/borrowing.rs b/src/test/ui/generator/borrowing.rs
deleted file mode 100644
index d36592583cd..00000000000
--- a/src/test/ui/generator/borrowing.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::pin::Pin;
-
-fn main() {
-    let _b = {
-        let a = 3;
-        Pin::new(&mut || yield &a).resume(())
-        //~^ ERROR: `a` does not live long enough
-    };
-
-    let _b = {
-        let a = 3;
-        || {
-            yield &a
-            //~^ ERROR: `a` does not live long enough
-        }
-    };
-}
diff --git a/src/test/ui/generator/borrowing.stderr b/src/test/ui/generator/borrowing.stderr
deleted file mode 100644
index 38e1ace8c4e..00000000000
--- a/src/test/ui/generator/borrowing.stderr
+++ /dev/null
@@ -1,31 +0,0 @@
-error[E0597]: `a` does not live long enough
-  --> $DIR/borrowing.rs:9:33
-   |
-LL |     let _b = {
-   |         -- borrow later stored here
-LL |         let a = 3;
-LL |         Pin::new(&mut || yield &a).resume(())
-   |                       --        ^ borrowed value does not live long enough
-   |                       |
-   |                       value captured here by generator
-LL |
-LL |     };
-   |     - `a` dropped here while still borrowed
-
-error[E0597]: `a` does not live long enough
-  --> $DIR/borrowing.rs:16:20
-   |
-LL |     let _b = {
-   |         -- borrow later stored here
-LL |         let a = 3;
-LL |         || {
-   |         -- value captured here by generator
-LL |             yield &a
-   |                    ^ borrowed value does not live long enough
-...
-LL |     };
-   |     - `a` dropped here while still borrowed
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/generator/clone-impl-async.rs b/src/test/ui/generator/clone-impl-async.rs
deleted file mode 100644
index 9e9b59d3633..00000000000
--- a/src/test/ui/generator/clone-impl-async.rs
+++ /dev/null
@@ -1,70 +0,0 @@
-// edition:2021
-// gate-test-generator_clone
-// Verifies that feature(generator_clone) doesn't allow async blocks to be cloned/copied.
-
-#![feature(generators, generator_clone)]
-
-use std::future::ready;
-
-struct NonClone;
-
-fn main() {
-    let inner_non_clone = async {
-        let non_clone = NonClone;
-        let () = ready(()).await;
-        drop(non_clone);
-    };
-    check_copy(&inner_non_clone);
-    //~^ ERROR : Copy` is not satisfied
-    check_clone(&inner_non_clone);
-    //~^ ERROR : Clone` is not satisfied
-
-    let non_clone = NonClone;
-    let outer_non_clone = async move {
-        drop(non_clone);
-    };
-    check_copy(&outer_non_clone);
-    //~^ ERROR : Copy` is not satisfied
-    check_clone(&outer_non_clone);
-    //~^ ERROR : Clone` is not satisfied
-
-    let maybe_copy_clone = async move {};
-    check_copy(&maybe_copy_clone);
-    //~^ ERROR : Copy` is not satisfied
-    check_clone(&maybe_copy_clone);
-    //~^ ERROR : Clone` is not satisfied
-
-    let inner_non_clone_fn = the_inner_non_clone_fn();
-    check_copy(&inner_non_clone_fn);
-    //~^ ERROR : Copy` is not satisfied
-    check_clone(&inner_non_clone_fn);
-    //~^ ERROR : Clone` is not satisfied
-
-    let outer_non_clone_fn = the_outer_non_clone_fn(NonClone);
-    check_copy(&outer_non_clone_fn);
-    //~^ ERROR : Copy` is not satisfied
-    check_clone(&outer_non_clone_fn);
-    //~^ ERROR : Clone` is not satisfied
-
-    let maybe_copy_clone_fn = the_maybe_copy_clone_fn();
-    check_copy(&maybe_copy_clone_fn);
-    //~^ ERROR : Copy` is not satisfied
-    check_clone(&maybe_copy_clone_fn);
-    //~^ ERROR : Clone` is not satisfied
-}
-
-async fn the_inner_non_clone_fn() {
-    let non_clone = NonClone;
-    let () = ready(()).await;
-    drop(non_clone);
-}
-
-async fn the_outer_non_clone_fn(non_clone: NonClone) {
-    let () = ready(()).await;
-    drop(non_clone);
-}
-
-async fn the_maybe_copy_clone_fn() {}
-
-fn check_copy<T: Copy>(_x: &T) {}
-fn check_clone<T: Clone>(_x: &T) {}
diff --git a/src/test/ui/generator/clone-impl-async.stderr b/src/test/ui/generator/clone-impl-async.stderr
deleted file mode 100644
index 9854728876f..00000000000
--- a/src/test/ui/generator/clone-impl-async.stderr
+++ /dev/null
@@ -1,171 +0,0 @@
-error[E0277]: the trait bound `[async block@$DIR/clone-impl-async.rs:12:27: 16:6]: Copy` is not satisfied
-  --> $DIR/clone-impl-async.rs:17:16
-   |
-LL |     check_copy(&inner_non_clone);
-   |     ---------- ^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `[async block@$DIR/clone-impl-async.rs:12:27: 16:6]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl-async.rs:69:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `[async block@$DIR/clone-impl-async.rs:12:27: 16:6]: Clone` is not satisfied
-  --> $DIR/clone-impl-async.rs:19:17
-   |
-LL |     check_clone(&inner_non_clone);
-   |     ----------- ^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `[async block@$DIR/clone-impl-async.rs:12:27: 16:6]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl-async.rs:70:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-
-error[E0277]: the trait bound `[async block@$DIR/clone-impl-async.rs:23:27: 25:6]: Copy` is not satisfied
-  --> $DIR/clone-impl-async.rs:26:16
-   |
-LL |     check_copy(&outer_non_clone);
-   |     ---------- ^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `[async block@$DIR/clone-impl-async.rs:23:27: 25:6]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl-async.rs:69:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `[async block@$DIR/clone-impl-async.rs:23:27: 25:6]: Clone` is not satisfied
-  --> $DIR/clone-impl-async.rs:28:17
-   |
-LL |     check_clone(&outer_non_clone);
-   |     ----------- ^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `[async block@$DIR/clone-impl-async.rs:23:27: 25:6]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl-async.rs:70:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-
-error[E0277]: the trait bound `[async block@$DIR/clone-impl-async.rs:31:28: 31:41]: Copy` is not satisfied
-  --> $DIR/clone-impl-async.rs:32:16
-   |
-LL |     check_copy(&maybe_copy_clone);
-   |     ---------- ^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `[async block@$DIR/clone-impl-async.rs:31:28: 31:41]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl-async.rs:69:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `[async block@$DIR/clone-impl-async.rs:31:28: 31:41]: Clone` is not satisfied
-  --> $DIR/clone-impl-async.rs:34:17
-   |
-LL |     check_clone(&maybe_copy_clone);
-   |     ----------- ^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `[async block@$DIR/clone-impl-async.rs:31:28: 31:41]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl-async.rs:70:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-
-error[E0277]: the trait bound `impl Future<Output = ()>: Copy` is not satisfied
-  --> $DIR/clone-impl-async.rs:38:16
-   |
-LL |     check_copy(&inner_non_clone_fn);
-   |     ---------- ^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `impl Future<Output = ()>`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl-async.rs:69:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `impl Future<Output = ()>: Clone` is not satisfied
-  --> $DIR/clone-impl-async.rs:40:17
-   |
-LL |     check_clone(&inner_non_clone_fn);
-   |     ----------- ^^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `impl Future<Output = ()>`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl-async.rs:70:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-
-error[E0277]: the trait bound `impl Future<Output = ()>: Copy` is not satisfied
-  --> $DIR/clone-impl-async.rs:44:16
-   |
-LL |     check_copy(&outer_non_clone_fn);
-   |     ---------- ^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `impl Future<Output = ()>`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl-async.rs:69:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `impl Future<Output = ()>: Clone` is not satisfied
-  --> $DIR/clone-impl-async.rs:46:17
-   |
-LL |     check_clone(&outer_non_clone_fn);
-   |     ----------- ^^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `impl Future<Output = ()>`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl-async.rs:70:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-
-error[E0277]: the trait bound `impl Future<Output = ()>: Copy` is not satisfied
-  --> $DIR/clone-impl-async.rs:50:16
-   |
-LL |     check_copy(&maybe_copy_clone_fn);
-   |     ---------- ^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `impl Future<Output = ()>`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl-async.rs:69:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `impl Future<Output = ()>: Clone` is not satisfied
-  --> $DIR/clone-impl-async.rs:52:17
-   |
-LL |     check_clone(&maybe_copy_clone_fn);
-   |     ----------- ^^^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `impl Future<Output = ()>`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl-async.rs:70:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-
-error: aborting due to 12 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/clone-impl-static.rs b/src/test/ui/generator/clone-impl-static.rs
deleted file mode 100644
index 55ed0f281e0..00000000000
--- a/src/test/ui/generator/clone-impl-static.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// gate-test-generator_clone
-// Verifies that static generators cannot be cloned/copied.
-
-#![feature(generators, generator_clone)]
-
-fn main() {
-    let gen = static move || {
-        yield;
-    };
-    check_copy(&gen);
-    //~^ ERROR Copy` is not satisfied
-    check_clone(&gen);
-    //~^ ERROR Clone` is not satisfied
-}
-
-fn check_copy<T: Copy>(_x: &T) {}
-fn check_clone<T: Clone>(_x: &T) {}
diff --git a/src/test/ui/generator/clone-impl-static.stderr b/src/test/ui/generator/clone-impl-static.stderr
deleted file mode 100644
index cbadf6f156a..00000000000
--- a/src/test/ui/generator/clone-impl-static.stderr
+++ /dev/null
@@ -1,31 +0,0 @@
-error[E0277]: the trait bound `[static generator@$DIR/clone-impl-static.rs:7:15: 7:29]: Copy` is not satisfied
-  --> $DIR/clone-impl-static.rs:10:16
-   |
-LL |     check_copy(&gen);
-   |     ---------- ^^^^ the trait `Copy` is not implemented for `[static generator@$DIR/clone-impl-static.rs:7:15: 7:29]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl-static.rs:16:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `[static generator@$DIR/clone-impl-static.rs:7:15: 7:29]: Clone` is not satisfied
-  --> $DIR/clone-impl-static.rs:12:17
-   |
-LL |     check_clone(&gen);
-   |     ----------- ^^^^ the trait `Clone` is not implemented for `[static generator@$DIR/clone-impl-static.rs:7:15: 7:29]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl-static.rs:17:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/clone-impl.rs b/src/test/ui/generator/clone-impl.rs
deleted file mode 100644
index cbfd65a5309..00000000000
--- a/src/test/ui/generator/clone-impl.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-// gate-test-generator_clone
-// Verifies that non-static generators can be cloned/copied if all their upvars and locals held
-// across awaits can be cloned/copied.
-
-#![feature(generators, generator_clone)]
-
-struct NonClone;
-
-fn main() {
-    let copyable: u32 = 123;
-    let clonable_0: Vec<u32> = Vec::new();
-    let clonable_1: Vec<u32> = Vec::new();
-    let non_clonable: NonClone = NonClone;
-
-    let gen_copy_0 = move || {
-        yield;
-        drop(copyable);
-    };
-    check_copy(&gen_copy_0);
-    check_clone(&gen_copy_0);
-    let gen_copy_1 = move || {
-        /*
-        let v = vec!['a'];
-        let n = NonClone;
-        drop(v);
-        drop(n);
-        */
-        yield;
-        let v = vec!['a'];
-        let n = NonClone;
-        drop(n);
-        drop(copyable);
-    };
-    check_copy(&gen_copy_1);
-    check_clone(&gen_copy_1);
-    let gen_clone_0 = move || {
-        let v = vec!['a'];
-        yield;
-        drop(v);
-        drop(clonable_0);
-    };
-    check_copy(&gen_clone_0);
-    //~^ ERROR the trait bound `Vec<u32>: Copy` is not satisfied
-    //~| ERROR the trait bound `Vec<char>: Copy` is not satisfied
-    check_clone(&gen_clone_0);
-    let gen_clone_1 = move || {
-        let v = vec!['a'];
-        /*
-        let n = NonClone;
-        drop(n);
-        */
-        yield;
-        let n = NonClone;
-        drop(n);
-        drop(v);
-        drop(clonable_1);
-    };
-    check_copy(&gen_clone_1);
-    //~^ ERROR the trait bound `Vec<u32>: Copy` is not satisfied
-    //~| ERROR the trait bound `Vec<char>: Copy` is not satisfied
-    check_clone(&gen_clone_1);
-    let gen_non_clone = move || {
-        yield;
-        drop(non_clonable);
-    };
-    check_copy(&gen_non_clone);
-    //~^ ERROR the trait bound `NonClone: Copy` is not satisfied
-    check_clone(&gen_non_clone);
-    //~^ ERROR the trait bound `NonClone: Clone` is not satisfied
-}
-
-fn check_copy<T: Copy>(_x: &T) {}
-fn check_clone<T: Clone>(_x: &T) {}
diff --git a/src/test/ui/generator/clone-impl.stderr b/src/test/ui/generator/clone-impl.stderr
deleted file mode 100644
index a92646b198c..00000000000
--- a/src/test/ui/generator/clone-impl.stderr
+++ /dev/null
@@ -1,142 +0,0 @@
-error[E0277]: the trait bound `Vec<u32>: Copy` is not satisfied in `[generator@$DIR/clone-impl.rs:36:23: 36:30]`
-  --> $DIR/clone-impl.rs:42:16
-   |
-LL |     let gen_clone_0 = move || {
-   |                       ------- within this `[generator@$DIR/clone-impl.rs:36:23: 36:30]`
-...
-LL |     check_copy(&gen_clone_0);
-   |                ^^^^^^^^^^^^ within `[generator@$DIR/clone-impl.rs:36:23: 36:30]`, the trait `Copy` is not implemented for `Vec<u32>`
-   |
-note: captured value does not implement `Copy`
-  --> $DIR/clone-impl.rs:40:14
-   |
-LL |         drop(clonable_0);
-   |              ^^^^^^^^^^ has type `Vec<u32>` which does not implement `Copy`
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl.rs:72:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `Vec<char>: Copy` is not satisfied in `[generator@$DIR/clone-impl.rs:36:23: 36:30]`
-  --> $DIR/clone-impl.rs:42:16
-   |
-LL |     let gen_clone_0 = move || {
-   |                       ------- within this `[generator@$DIR/clone-impl.rs:36:23: 36:30]`
-...
-LL |     check_copy(&gen_clone_0);
-   |                ^^^^^^^^^^^^ within `[generator@$DIR/clone-impl.rs:36:23: 36:30]`, the trait `Copy` is not implemented for `Vec<char>`
-   |
-note: generator does not implement `Copy` as this value is used across a yield
-  --> $DIR/clone-impl.rs:38:9
-   |
-LL |         let v = vec!['a'];
-   |             - has type `Vec<char>` which does not implement `Copy`
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `v` maybe used later
-...
-LL |     };
-   |     - `v` is later dropped here
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl.rs:72:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `Vec<u32>: Copy` is not satisfied in `[generator@$DIR/clone-impl.rs:46:23: 46:30]`
-  --> $DIR/clone-impl.rs:58:16
-   |
-LL |     let gen_clone_1 = move || {
-   |                       ------- within this `[generator@$DIR/clone-impl.rs:46:23: 46:30]`
-...
-LL |     check_copy(&gen_clone_1);
-   |                ^^^^^^^^^^^^ within `[generator@$DIR/clone-impl.rs:46:23: 46:30]`, the trait `Copy` is not implemented for `Vec<u32>`
-   |
-note: captured value does not implement `Copy`
-  --> $DIR/clone-impl.rs:56:14
-   |
-LL |         drop(clonable_1);
-   |              ^^^^^^^^^^ has type `Vec<u32>` which does not implement `Copy`
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl.rs:72:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `Vec<char>: Copy` is not satisfied in `[generator@$DIR/clone-impl.rs:46:23: 46:30]`
-  --> $DIR/clone-impl.rs:58:16
-   |
-LL |     let gen_clone_1 = move || {
-   |                       ------- within this `[generator@$DIR/clone-impl.rs:46:23: 46:30]`
-...
-LL |     check_copy(&gen_clone_1);
-   |                ^^^^^^^^^^^^ within `[generator@$DIR/clone-impl.rs:46:23: 46:30]`, the trait `Copy` is not implemented for `Vec<char>`
-   |
-note: generator does not implement `Copy` as this value is used across a yield
-  --> $DIR/clone-impl.rs:52:9
-   |
-LL |         let v = vec!['a'];
-   |             - has type `Vec<char>` which does not implement `Copy`
-...
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `v` maybe used later
-...
-LL |     };
-   |     - `v` is later dropped here
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl.rs:72:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-
-error[E0277]: the trait bound `NonClone: Copy` is not satisfied in `[generator@$DIR/clone-impl.rs:62:25: 62:32]`
-  --> $DIR/clone-impl.rs:66:16
-   |
-LL |     let gen_non_clone = move || {
-   |                         ------- within this `[generator@$DIR/clone-impl.rs:62:25: 62:32]`
-...
-LL |     check_copy(&gen_non_clone);
-   |                ^^^^^^^^^^^^^^ within `[generator@$DIR/clone-impl.rs:62:25: 62:32]`, the trait `Copy` is not implemented for `NonClone`
-   |
-note: captured value does not implement `Copy`
-  --> $DIR/clone-impl.rs:64:14
-   |
-LL |         drop(non_clonable);
-   |              ^^^^^^^^^^^^ has type `NonClone` which does not implement `Copy`
-note: required by a bound in `check_copy`
-  --> $DIR/clone-impl.rs:72:18
-   |
-LL | fn check_copy<T: Copy>(_x: &T) {}
-   |                  ^^^^ required by this bound in `check_copy`
-help: consider annotating `NonClone` with `#[derive(Copy)]`
-   |
-LL | #[derive(Copy)]
-   |
-
-error[E0277]: the trait bound `NonClone: Clone` is not satisfied in `[generator@$DIR/clone-impl.rs:62:25: 62:32]`
-  --> $DIR/clone-impl.rs:68:17
-   |
-LL |     let gen_non_clone = move || {
-   |                         ------- within this `[generator@$DIR/clone-impl.rs:62:25: 62:32]`
-...
-LL |     check_clone(&gen_non_clone);
-   |                 ^^^^^^^^^^^^^^ within `[generator@$DIR/clone-impl.rs:62:25: 62:32]`, the trait `Clone` is not implemented for `NonClone`
-   |
-note: captured value does not implement `Clone`
-  --> $DIR/clone-impl.rs:64:14
-   |
-LL |         drop(non_clonable);
-   |              ^^^^^^^^^^^^ has type `NonClone` which does not implement `Clone`
-note: required by a bound in `check_clone`
-  --> $DIR/clone-impl.rs:73:19
-   |
-LL | fn check_clone<T: Clone>(_x: &T) {}
-   |                   ^^^^^ required by this bound in `check_clone`
-help: consider annotating `NonClone` with `#[derive(Clone)]`
-   |
-LL | #[derive(Clone)]
-   |
-
-error: aborting due to 6 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/conditional-drop.rs b/src/test/ui/generator/conditional-drop.rs
deleted file mode 100644
index 0927df86927..00000000000
--- a/src/test/ui/generator/conditional-drop.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-// run-pass
-
-// revisions: default nomiropt
-//[nomiropt]compile-flags: -Z mir-opt-level=0
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::pin::Pin;
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-static A: AtomicUsize = AtomicUsize::new(0);
-
-struct B;
-
-impl Drop for B {
-    fn drop(&mut self) {
-        A.fetch_add(1, Ordering::SeqCst);
-    }
-}
-
-
-fn test() -> bool { true }
-fn test2() -> bool { false }
-
-fn main() {
-    t1();
-    t2();
-}
-
-fn t1() {
-    let mut a = || {
-        let b = B;
-        if test() {
-            drop(b);
-        }
-        yield;
-    };
-
-    let n = A.load(Ordering::SeqCst);
-    Pin::new(&mut a).resume(());
-    assert_eq!(A.load(Ordering::SeqCst), n + 1);
-    Pin::new(&mut a).resume(());
-    assert_eq!(A.load(Ordering::SeqCst), n + 1);
-}
-
-fn t2() {
-    let mut a = || {
-        let b = B;
-        if test2() {
-            drop(b);
-        }
-        yield;
-    };
-
-    let n = A.load(Ordering::SeqCst);
-    Pin::new(&mut a).resume(());
-    assert_eq!(A.load(Ordering::SeqCst), n);
-    Pin::new(&mut a).resume(());
-    assert_eq!(A.load(Ordering::SeqCst), n + 1);
-}
diff --git a/src/test/ui/generator/control-flow.rs b/src/test/ui/generator/control-flow.rs
deleted file mode 100644
index 4f69c785560..00000000000
--- a/src/test/ui/generator/control-flow.rs
+++ /dev/null
@@ -1,53 +0,0 @@
-// run-pass
-
-// revisions: default nomiropt
-//[nomiropt]compile-flags: -Z mir-opt-level=0
-
-#![feature(generators, generator_trait)]
-
-use std::marker::Unpin;
-use std::ops::{GeneratorState, Generator};
-use std::pin::Pin;
-
-fn finish<T>(mut amt: usize, mut t: T) -> T::Return
-    where T: Generator<(), Yield = ()> + Unpin,
-{
-    loop {
-        match Pin::new(&mut t).resume(()) {
-            GeneratorState::Yielded(()) => amt = amt.checked_sub(1).unwrap(),
-            GeneratorState::Complete(ret) => {
-                assert_eq!(amt, 0);
-                return ret
-            }
-        }
-    }
-
-}
-
-fn main() {
-    finish(1, || yield);
-    finish(8, || {
-        for _ in 0..8 {
-            yield;
-        }
-    });
-    finish(1, || {
-        if true {
-            yield;
-        } else {
-        }
-    });
-    finish(1, || {
-        if false {
-        } else {
-            yield;
-        }
-    });
-    finish(2, || {
-        if { yield; false } {
-            yield;
-            panic!()
-        }
-        yield
-    });
-}
diff --git a/src/test/ui/generator/derived-drop-parent-expr.rs b/src/test/ui/generator/derived-drop-parent-expr.rs
deleted file mode 100644
index 4bd34346a18..00000000000
--- a/src/test/ui/generator/derived-drop-parent-expr.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// build-pass
-// compile-flags:-Zdrop-tracking
-
-//! Like drop-tracking-parent-expression, but also tests that this doesn't ICE when building MIR
-#![feature(generators)]
-
-fn assert_send<T: Send>(_thing: T) {}
-
-#[derive(Default)]
-pub struct Client { pub nickname: String }
-
-fn main() {
-    let g = move || match drop(Client { ..Client::default() }) {
-        _status => yield,
-    };
-    assert_send(g);
-}
diff --git a/src/test/ui/generator/discriminant.rs b/src/test/ui/generator/discriminant.rs
deleted file mode 100644
index 195e7702299..00000000000
--- a/src/test/ui/generator/discriminant.rs
+++ /dev/null
@@ -1,137 +0,0 @@
-//! Tests that generator discriminant sizes and ranges are chosen optimally and that they are
-//! reflected in the output of `mem::discriminant`.
-
-// run-pass
-
-#![feature(generators, generator_trait, core_intrinsics, discriminant_kind)]
-
-use std::intrinsics::discriminant_value;
-use std::marker::{Unpin, DiscriminantKind};
-use std::mem::size_of_val;
-use std::{cmp, ops::*};
-
-macro_rules! yield25 {
-    ($e:expr) => {
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-        yield $e;
-    };
-}
-
-/// Yields 250 times.
-macro_rules! yield250 {
-    () => {
-        yield250!(())
-    };
-
-    ($e:expr) => {
-        yield25!($e);
-        yield25!($e);
-        yield25!($e);
-        yield25!($e);
-        yield25!($e);
-
-        yield25!($e);
-        yield25!($e);
-        yield25!($e);
-        yield25!($e);
-        yield25!($e);
-    };
-}
-
-fn cycle(
-    gen: impl Generator<()> + Unpin + DiscriminantKind<Discriminant = u32>,
-    expected_max_discr: u32
-) {
-    let mut gen = Box::pin(gen);
-    let mut max_discr = 0;
-    loop {
-        max_discr = cmp::max(max_discr, discriminant_value(gen.as_mut().get_mut()));
-        match gen.as_mut().resume(()) {
-            GeneratorState::Yielded(_) => {}
-            GeneratorState::Complete(_) => {
-                assert_eq!(max_discr, expected_max_discr);
-                return;
-            }
-        }
-    }
-}
-
-fn main() {
-    // Has only one invalid discr. value.
-    let gen_u8_tiny_niche = || {
-        || {
-            // 3 reserved variants
-
-            yield250!(); // 253 variants
-
-            yield; // 254
-            yield; // 255
-        }
-    };
-
-    // Uses all values in the u8 discriminant.
-    let gen_u8_full = || {
-        || {
-            // 3 reserved variants
-
-            yield250!(); // 253 variants
-
-            yield; // 254
-            yield; // 255
-            yield; // 256
-        }
-    };
-
-    // Barely needs a u16 discriminant.
-    let gen_u16 = || {
-        || {
-            // 3 reserved variants
-
-            yield250!(); // 253 variants
-
-            yield; // 254
-            yield; // 255
-            yield; // 256
-            yield; // 257
-        }
-    };
-
-    assert_eq!(size_of_val(&gen_u8_tiny_niche()), 1);
-    assert_eq!(size_of_val(&Some(gen_u8_tiny_niche())), 1); // uses niche
-    assert_eq!(size_of_val(&Some(Some(gen_u8_tiny_niche()))), 2); // cannot use niche anymore
-    assert_eq!(size_of_val(&gen_u8_full()), 1);
-    assert_eq!(size_of_val(&Some(gen_u8_full())), 2); // cannot use niche
-    assert_eq!(size_of_val(&gen_u16()), 2);
-    assert_eq!(size_of_val(&Some(gen_u16())), 2); // uses niche
-
-    cycle(gen_u8_tiny_niche(), 254);
-    cycle(gen_u8_full(), 255);
-    cycle(gen_u16(), 256);
-}
diff --git a/src/test/ui/generator/drop-and-replace.rs b/src/test/ui/generator/drop-and-replace.rs
deleted file mode 100644
index a9a50a122a1..00000000000
--- a/src/test/ui/generator/drop-and-replace.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-// run-pass
-// Regression test for incorrect DropAndReplace behavior introduced in #60840
-// and fixed in #61373. When combined with the optimization implemented in
-// #60187, this produced incorrect code for generators when a saved local was
-// re-assigned.
-
-#![feature(generators, generator_trait)]
-
-use std::ops::{Generator, GeneratorState};
-use std::pin::Pin;
-
-#[derive(Debug, PartialEq)]
-struct Foo(i32);
-
-impl Drop for Foo {
-    fn drop(&mut self) { }
-}
-
-fn main() {
-    let mut a = || {
-        let mut x = Foo(4);
-        yield;
-        assert_eq!(x.0, 4);
-
-        // At one point this tricked our dataflow analysis into thinking `x` was
-        // StorageDead after the assignment.
-        x = Foo(5);
-        assert_eq!(x.0, 5);
-
-        {
-            let y = Foo(6);
-            yield;
-            assert_eq!(y.0, 6);
-        }
-
-        assert_eq!(x.0, 5);
-    };
-
-    loop {
-        match Pin::new(&mut a).resume(()) {
-            GeneratorState::Complete(()) => break,
-            _ => (),
-        }
-    }
-}
diff --git a/src/test/ui/generator/drop-control-flow.rs b/src/test/ui/generator/drop-control-flow.rs
deleted file mode 100644
index d383680002f..00000000000
--- a/src/test/ui/generator/drop-control-flow.rs
+++ /dev/null
@@ -1,139 +0,0 @@
-// build-pass
-// compile-flags: -Zdrop-tracking
-
-// A test to ensure generators capture values that were conditionally dropped,
-// and also that values that are dropped along all paths to a yield do not get
-// included in the generator type.
-
-#![feature(generators, negative_impls)]
-#![allow(unused_assignments, dead_code)]
-
-struct Ptr;
-impl<'a> Drop for Ptr {
-    fn drop(&mut self) {}
-}
-
-struct NonSend;
-impl !Send for NonSend {}
-
-fn assert_send<T: Send>(_: T) {}
-
-// This test case is reduced from src/test/ui/drop/dynamic-drop-async.rs
-fn one_armed_if(arg: bool) {
-    let _ = || {
-        let arr = [Ptr];
-        if arg {
-            drop(arr);
-        }
-        yield;
-    };
-}
-
-fn two_armed_if(arg: bool) {
-    assert_send(|| {
-        let arr = [Ptr];
-        if arg {
-            drop(arr);
-        } else {
-            drop(arr);
-        }
-        yield;
-    })
-}
-
-fn if_let(arg: Option<i32>) {
-    let _ = || {
-        let arr = [Ptr];
-        if let Some(_) = arg {
-            drop(arr);
-        }
-        yield;
-    };
-}
-
-fn init_in_if(arg: bool) {
-    assert_send(|| {
-        let mut x = NonSend;
-        drop(x);
-        if arg {
-            x = NonSend;
-        } else {
-            yield;
-        }
-    })
-}
-
-fn init_in_match_arm(arg: Option<i32>) {
-    assert_send(|| {
-        let mut x = NonSend;
-        drop(x);
-        match arg {
-            Some(_) => x = NonSend,
-            None => yield,
-        }
-    })
-}
-
-fn reinit() {
-    let _ = || {
-        let mut arr = [Ptr];
-        drop(arr);
-        arr = [Ptr];
-        yield;
-    };
-}
-
-fn loop_uninit() {
-    let _ = || {
-        let mut arr = [Ptr];
-        let mut count = 0;
-        drop(arr);
-        while count < 3 {
-            yield;
-            arr = [Ptr];
-            count += 1;
-        }
-    };
-}
-
-fn nested_loop() {
-    let _ = || {
-        let mut arr = [Ptr];
-        let mut count = 0;
-        drop(arr);
-        while count < 3 {
-            for _ in 0..3 {
-                yield;
-            }
-            arr = [Ptr];
-            count += 1;
-        }
-    };
-}
-
-fn loop_continue(b: bool) {
-    let _ = || {
-        let mut arr = [Ptr];
-        let mut count = 0;
-        drop(arr);
-        while count < 3 {
-            count += 1;
-            yield;
-            if b {
-                arr = [Ptr];
-                continue;
-            }
-        }
-    };
-}
-
-fn main() {
-    one_armed_if(true);
-    if_let(Some(41));
-    init_in_if(true);
-    init_in_match_arm(Some(41));
-    reinit();
-    loop_uninit();
-    nested_loop();
-    loop_continue(true);
-}
diff --git a/src/test/ui/generator/drop-env.rs b/src/test/ui/generator/drop-env.rs
deleted file mode 100644
index 66dfb8c2c09..00000000000
--- a/src/test/ui/generator/drop-env.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-// run-pass
-
-// revisions: default nomiropt
-//[nomiropt]compile-flags: -Z mir-opt-level=0
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::pin::Pin;
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-static A: AtomicUsize = AtomicUsize::new(0);
-
-struct B;
-
-impl Drop for B {
-    fn drop(&mut self) {
-        A.fetch_add(1, Ordering::SeqCst);
-    }
-}
-
-fn main() {
-    t1();
-    t2();
-    t3();
-}
-
-fn t1() {
-    let b = B;
-    let mut foo = || {
-        yield;
-        drop(b);
-    };
-
-    let n = A.load(Ordering::SeqCst);
-    drop(Pin::new(&mut foo).resume(()));
-    assert_eq!(A.load(Ordering::SeqCst), n);
-    drop(foo);
-    assert_eq!(A.load(Ordering::SeqCst), n + 1);
-}
-
-fn t2() {
-    let b = B;
-    let mut foo = || {
-        yield b;
-    };
-
-    let n = A.load(Ordering::SeqCst);
-    drop(Pin::new(&mut foo).resume(()));
-    assert_eq!(A.load(Ordering::SeqCst), n + 1);
-    drop(foo);
-    assert_eq!(A.load(Ordering::SeqCst), n + 1);
-}
-
-fn t3() {
-    let b = B;
-    let foo = || {
-        yield;
-        drop(b);
-    };
-
-    let n = A.load(Ordering::SeqCst);
-    assert_eq!(A.load(Ordering::SeqCst), n);
-    drop(foo);
-    assert_eq!(A.load(Ordering::SeqCst), n + 1);
-}
diff --git a/src/test/ui/generator/drop-track-addassign-yield.rs b/src/test/ui/generator/drop-track-addassign-yield.rs
deleted file mode 100644
index 71cfb170bf6..00000000000
--- a/src/test/ui/generator/drop-track-addassign-yield.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-// run-pass
-// compile-flags: -Zdrop-tracking
-
-// Based on addassign-yield.rs, but with drop tracking enabled. Originally we did not implement
-// the fake_read callback on ExprUseVisitor which caused this case to break.
-
-#![feature(generators)]
-
-fn foo() {
-    let _y = static || {
-        let x = &mut 0;
-        *{
-            yield;
-            x
-        } += match String::new() {
-            _ => 0,
-        };
-    };
-
-    // Please don't ever actually write something like this
-    let _z = static || {
-        let x = &mut 0;
-        *{
-            let inner = &mut 1;
-            *{
-                yield ();
-                inner
-            } += match String::new() {
-                _ => 1,
-            };
-            yield;
-            x
-        } += match String::new() {
-            _ => 2,
-        };
-    };
-}
-
-fn main() {
-    foo()
-}
diff --git a/src/test/ui/generator/drop-tracking-parent-expression.rs b/src/test/ui/generator/drop-tracking-parent-expression.rs
deleted file mode 100644
index d40f1b8f64d..00000000000
--- a/src/test/ui/generator/drop-tracking-parent-expression.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-// compile-flags: -Zdrop-tracking
-#![feature(generators, negative_impls, rustc_attrs)]
-
-macro_rules! type_combinations {
-    (
-        $( $name:ident => { $( $tt:tt )* } );* $(;)?
-    ) => { $(
-        mod $name {
-            $( $tt )*
-
-            impl !Sync for Client {}
-            impl !Send for Client {}
-        }
-
-        // Struct update syntax. This fails because the Client used in the update is considered
-        // dropped *after* the yield.
-        {
-            let g = move || match drop($name::Client { ..$name::Client::default() }) {
-            //~^ `significant_drop::Client` which is not `Send`
-            //~| `insignificant_dtor::Client` which is not `Send`
-            //~| `derived_drop::Client` which is not `Send`
-                _ => yield,
-            };
-            assert_send(g);
-            //~^ ERROR cannot be sent between threads
-            //~| ERROR cannot be sent between threads
-            //~| ERROR cannot be sent between threads
-        }
-
-        // Simple owned value. This works because the Client is considered moved into `drop`,
-        // even though the temporary expression doesn't end until after the yield.
-        {
-            let g = move || match drop($name::Client::default()) {
-                _ => yield,
-            };
-            assert_send(g);
-        }
-    )* }
-}
-
-fn assert_send<T: Send>(_thing: T) {}
-
-fn main() {
-    type_combinations!(
-        // OK
-        copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-        // NOT OK: MIR borrowck thinks that this is used after the yield, even though
-        // this has no `Drop` impl and only the drops of the fields are observable.
-        // FIXME: this should compile.
-        derived_drop => { #[derive(Default)] pub struct Client { pub nickname: String } };
-        // NOT OK
-        significant_drop => {
-            #[derive(Default)]
-            pub struct Client;
-            impl Drop for Client {
-                fn drop(&mut self) {}
-            }
-        };
-        // NOT OK (we need to agree with MIR borrowck)
-        insignificant_dtor => {
-            #[derive(Default)]
-            #[rustc_insignificant_dtor]
-            pub struct Client;
-            impl Drop for Client {
-                fn drop(&mut self) {}
-            }
-        };
-    );
-}
diff --git a/src/test/ui/generator/drop-tracking-parent-expression.stderr b/src/test/ui/generator/drop-tracking-parent-expression.stderr
deleted file mode 100644
index fbf5d6e0725..00000000000
--- a/src/test/ui/generator/drop-tracking-parent-expression.stderr
+++ /dev/null
@@ -1,128 +0,0 @@
-error: generator cannot be sent between threads safely
-  --> $DIR/drop-tracking-parent-expression.rs:24:25
-   |
-LL |               assert_send(g);
-   |                           ^ generator is not `Send`
-...
-LL | /     type_combinations!(
-LL | |         // OK
-LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
-...  |
-LL | |         };
-LL | |     );
-   | |_____- in this macro invocation
-   |
-   = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:18:21: 18:28]`, the trait `Send` is not implemented for `derived_drop::Client`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/drop-tracking-parent-expression.rs:22:22
-   |
-LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
-   |                                                            ------------------------ has type `derived_drop::Client` which is not `Send`
-...
-LL |                   _ => yield,
-   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
-LL |               };
-   |               - `$name::Client::default()` is later dropped here
-...
-LL | /     type_combinations!(
-LL | |         // OK
-LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
-...  |
-LL | |         };
-LL | |     );
-   | |_____- in this macro invocation
-note: required by a bound in `assert_send`
-  --> $DIR/drop-tracking-parent-expression.rs:41:19
-   |
-LL | fn assert_send<T: Send>(_thing: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: generator cannot be sent between threads safely
-  --> $DIR/drop-tracking-parent-expression.rs:24:25
-   |
-LL |               assert_send(g);
-   |                           ^ generator is not `Send`
-...
-LL | /     type_combinations!(
-LL | |         // OK
-LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
-...  |
-LL | |         };
-LL | |     );
-   | |_____- in this macro invocation
-   |
-   = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:18:21: 18:28]`, the trait `Send` is not implemented for `significant_drop::Client`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/drop-tracking-parent-expression.rs:22:22
-   |
-LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
-   |                                                            ------------------------ has type `significant_drop::Client` which is not `Send`
-...
-LL |                   _ => yield,
-   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
-LL |               };
-   |               - `$name::Client::default()` is later dropped here
-...
-LL | /     type_combinations!(
-LL | |         // OK
-LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
-...  |
-LL | |         };
-LL | |     );
-   | |_____- in this macro invocation
-note: required by a bound in `assert_send`
-  --> $DIR/drop-tracking-parent-expression.rs:41:19
-   |
-LL | fn assert_send<T: Send>(_thing: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: generator cannot be sent between threads safely
-  --> $DIR/drop-tracking-parent-expression.rs:24:25
-   |
-LL |               assert_send(g);
-   |                           ^ generator is not `Send`
-...
-LL | /     type_combinations!(
-LL | |         // OK
-LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
-...  |
-LL | |         };
-LL | |     );
-   | |_____- in this macro invocation
-   |
-   = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:18:21: 18:28]`, the trait `Send` is not implemented for `insignificant_dtor::Client`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/drop-tracking-parent-expression.rs:22:22
-   |
-LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
-   |                                                            ------------------------ has type `insignificant_dtor::Client` which is not `Send`
-...
-LL |                   _ => yield,
-   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
-LL |               };
-   |               - `$name::Client::default()` is later dropped here
-...
-LL | /     type_combinations!(
-LL | |         // OK
-LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
-...  |
-LL | |         };
-LL | |     );
-   | |_____- in this macro invocation
-note: required by a bound in `assert_send`
-  --> $DIR/drop-tracking-parent-expression.rs:41:19
-   |
-LL | fn assert_send<T: Send>(_thing: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: aborting due to 3 previous errors
-
diff --git a/src/test/ui/generator/drop-tracking-yielding-in-match-guards.rs b/src/test/ui/generator/drop-tracking-yielding-in-match-guards.rs
deleted file mode 100644
index 646365e4359..00000000000
--- a/src/test/ui/generator/drop-tracking-yielding-in-match-guards.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// build-pass
-// edition:2018
-// compile-flags: -Zdrop-tracking
-
-#![feature(generators)]
-
-fn main() {
-    let _ = static |x: u8| match x {
-        y if { yield } == y + 1 => (),
-        _ => (),
-    };
-}
diff --git a/src/test/ui/generator/drop-yield-twice.rs b/src/test/ui/generator/drop-yield-twice.rs
deleted file mode 100644
index f484cbb8d67..00000000000
--- a/src/test/ui/generator/drop-yield-twice.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-#![feature(negative_impls, generators)]
-
-struct Foo(i32);
-impl !Send for Foo {}
-
-fn main() {
-    assert_send(|| { //~ ERROR generator cannot be sent between threads safely
-        let guard = Foo(42);
-        yield;
-        drop(guard);
-        yield;
-    })
-}
-
-fn assert_send<T: Send>(_: T) {}
diff --git a/src/test/ui/generator/drop-yield-twice.stderr b/src/test/ui/generator/drop-yield-twice.stderr
deleted file mode 100644
index 0808a2c85ee..00000000000
--- a/src/test/ui/generator/drop-yield-twice.stderr
+++ /dev/null
@@ -1,31 +0,0 @@
-error: generator cannot be sent between threads safely
-  --> $DIR/drop-yield-twice.rs:7:17
-   |
-LL |       assert_send(|| {
-   |  _________________^
-LL | |         let guard = Foo(42);
-LL | |         yield;
-LL | |         drop(guard);
-LL | |         yield;
-LL | |     })
-   | |_____^ generator is not `Send`
-   |
-   = help: within `[generator@$DIR/drop-yield-twice.rs:7:17: 7:19]`, the trait `Send` is not implemented for `Foo`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/drop-yield-twice.rs:9:9
-   |
-LL |         let guard = Foo(42);
-   |             ----- has type `Foo` which is not `Send`
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `guard` maybe used later
-...
-LL |     })
-   |     - `guard` is later dropped here
-note: required by a bound in `assert_send`
-  --> $DIR/drop-yield-twice.rs:15:19
-   |
-LL | fn assert_send<T: Send>(_: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/generator/dropck-resume.rs b/src/test/ui/generator/dropck-resume.rs
deleted file mode 100644
index 4c18077f335..00000000000
--- a/src/test/ui/generator/dropck-resume.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::{Generator, GeneratorState};
-use std::pin::Pin;
-
-struct SetToNone<'a: 'b, 'b>(&'b mut Option<&'a i32>);
-
-impl<'a, 'b> Drop for SetToNone<'a, 'b> {
-    fn drop(&mut self) {
-        *self.0 = None;
-    }
-}
-
-fn drop_using_generator() -> i32 {
-    let mut y = Some(&0);
-    let z = &mut y;
-    let r;
-    {
-        let mut g = move |r| {
-            let _s = SetToNone(r);
-            yield;
-        };
-        let mut g = Pin::new(&mut g);
-        g.as_mut().resume(z);
-        r = y.as_ref().unwrap();
-        //~^ ERROR cannot borrow `y` as immutable because it is also borrowed as mutable
-    }
-    **r
-}
-
-fn main() {
-    println!("{}", drop_using_generator());
-}
diff --git a/src/test/ui/generator/dropck-resume.stderr b/src/test/ui/generator/dropck-resume.stderr
deleted file mode 100644
index b0756eb5589..00000000000
--- a/src/test/ui/generator/dropck-resume.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0502]: cannot borrow `y` as immutable because it is also borrowed as mutable
-  --> $DIR/dropck-resume.rs:25:13
-   |
-LL |     let z = &mut y;
-   |             ------ mutable borrow occurs here
-...
-LL |         r = y.as_ref().unwrap();
-   |             ^^^^^^^^^^ immutable borrow occurs here
-LL |
-LL |     }
-   |     - mutable borrow might be used here, when `g` is dropped and runs the destructor for generator
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0502`.
diff --git a/src/test/ui/generator/dropck.rs b/src/test/ui/generator/dropck.rs
deleted file mode 100644
index f82111a76b1..00000000000
--- a/src/test/ui/generator/dropck.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::cell::RefCell;
-use std::ops::Generator;
-use std::pin::Pin;
-
-fn main() {
-    let (mut gen, cell);
-    cell = Box::new(RefCell::new(0));
-    let ref_ = Box::leak(Box::new(Some(cell.borrow_mut())));
-    //~^ ERROR `*cell` does not live long enough [E0597]
-    // the upvar is the non-dropck `&mut Option<Ref<'a, i32>>`.
-    gen = || {
-        // but the generator can use it to drop a `Ref<'a, i32>`.
-        let _d = ref_.take(); //~ ERROR `ref_` does not live long enough
-        yield;
-    };
-    Pin::new(&mut gen).resume(());
-    // drops the RefCell and then the Ref, leading to use-after-free
-}
diff --git a/src/test/ui/generator/dropck.stderr b/src/test/ui/generator/dropck.stderr
deleted file mode 100644
index 7bb188352d7..00000000000
--- a/src/test/ui/generator/dropck.stderr
+++ /dev/null
@@ -1,34 +0,0 @@
-error[E0597]: `*cell` does not live long enough
-  --> $DIR/dropck.rs:10:40
-   |
-LL |     let ref_ = Box::leak(Box::new(Some(cell.borrow_mut())));
-   |                                        ^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
-...
-LL | }
-   | -
-   | |
-   | `*cell` dropped here while still borrowed
-   | borrow might be used here, when `gen` is dropped and runs the destructor for generator
-   |
-   = note: values in a scope are dropped in the opposite order they are defined
-
-error[E0597]: `ref_` does not live long enough
-  --> $DIR/dropck.rs:15:18
-   |
-LL |     gen = || {
-   |           -- value captured here by generator
-LL |         // but the generator can use it to drop a `Ref<'a, i32>`.
-LL |         let _d = ref_.take();
-   |                  ^^^^ borrowed value does not live long enough
-...
-LL | }
-   | -
-   | |
-   | `ref_` dropped here while still borrowed
-   | borrow might be used here, when `gen` is dropped and runs the destructor for generator
-   |
-   = note: values in a scope are dropped in the opposite order they are defined
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/generator/generator-region-requirements.migrate.stderr b/src/test/ui/generator/generator-region-requirements.migrate.stderr
deleted file mode 100644
index 8a96d187f6b..00000000000
--- a/src/test/ui/generator/generator-region-requirements.migrate.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `x`
-  --> $DIR/generator-region-requirements.rs:16:51
-   |
-LL | fn dangle(x: &mut i32) -> &'static mut i32 {
-   |              -------- help: add explicit lifetime `'static` to the type of `x`: `&'static mut i32`
-...
-LL |             GeneratorState::Complete(c) => return c,
-   |                                                   ^ lifetime `'static` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/generator/generator-region-requirements.rs b/src/test/ui/generator/generator-region-requirements.rs
deleted file mode 100644
index 7269a79ca3f..00000000000
--- a/src/test/ui/generator/generator-region-requirements.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-#![feature(generators, generator_trait)]
-use std::ops::{Generator, GeneratorState};
-use std::pin::Pin;
-
-fn dangle(x: &mut i32) -> &'static mut i32 {
-    let mut g = || {
-        yield;
-        x
-    };
-    loop {
-        match Pin::new(&mut g).resume(()) {
-            GeneratorState::Complete(c) => return c,
-            //~^ ERROR lifetime may not live long enough
-            GeneratorState::Yielded(_) => (),
-        }
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/generator-region-requirements.stderr b/src/test/ui/generator/generator-region-requirements.stderr
deleted file mode 100644
index 87f60467287..00000000000
--- a/src/test/ui/generator/generator-region-requirements.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/generator-region-requirements.rs:12:51
-   |
-LL | fn dangle(x: &mut i32) -> &'static mut i32 {
-   |              - let's call the lifetime of this reference `'1`
-...
-LL |             GeneratorState::Complete(c) => return c,
-   |                                                   ^ returning this value requires that `'1` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/generator/generator-resume-after-panic.rs b/src/test/ui/generator/generator-resume-after-panic.rs
deleted file mode 100644
index f2e67f1f750..00000000000
--- a/src/test/ui/generator/generator-resume-after-panic.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// run-fail
-// needs-unwind
-// error-pattern:generator resumed after panicking
-// ignore-emscripten no processes
-
-// Test that we get the correct message for resuming a panicked generator.
-
-#![feature(generators, generator_trait)]
-
-use std::{
-    ops::Generator,
-    pin::Pin,
-    panic,
-};
-
-fn main() {
-    let mut g = || {
-        panic!();
-        yield;
-    };
-    panic::catch_unwind(panic::AssertUnwindSafe(|| {
-        let x = Pin::new(&mut g).resume(());
-    }));
-    Pin::new(&mut g).resume(());
-}
diff --git a/src/test/ui/generator/generator-with-nll.rs b/src/test/ui/generator/generator-with-nll.rs
deleted file mode 100644
index cee3e6d226c..00000000000
--- a/src/test/ui/generator/generator-with-nll.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-#![feature(generators)]
-
-fn main() {
-    || {
-        // The reference in `_a` is a Legal with NLL since it ends before the yield
-        let _a = &mut true;
-        let b = &mut true;
-        //~^ borrow may still be in use when generator yields
-        yield ();
-        println!("{}", b);
-    };
-}
diff --git a/src/test/ui/generator/generator-with-nll.stderr b/src/test/ui/generator/generator-with-nll.stderr
deleted file mode 100644
index 14199aeb930..00000000000
--- a/src/test/ui/generator/generator-with-nll.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0626]: borrow may still be in use when generator yields
-  --> $DIR/generator-with-nll.rs:7:17
-   |
-LL |         let b = &mut true;
-   |                 ^^^^^^^^^
-LL |
-LL |         yield ();
-   |         -------- possible yield occurs here
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0626`.
diff --git a/src/test/ui/generator/generator-yielding-or-returning-itself.rs b/src/test/ui/generator/generator-yielding-or-returning-itself.rs
deleted file mode 100644
index 30788e3c186..00000000000
--- a/src/test/ui/generator/generator-yielding-or-returning-itself.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-#![feature(generator_trait)]
-#![feature(generators)]
-
-// Test that we cannot create a generator that returns a value of its
-// own type.
-
-use std::ops::Generator;
-
-pub fn want_cyclic_generator_return<T>(_: T)
-    where T: Generator<Yield = (), Return = T>
-{
-}
-
-fn supply_cyclic_generator_return() {
-    want_cyclic_generator_return(|| {
-        //~^ ERROR type mismatch
-        if false { yield None.unwrap(); }
-        None.unwrap()
-    })
-}
-
-pub fn want_cyclic_generator_yield<T>(_: T)
-    where T: Generator<Yield = T, Return = ()>
-{
-}
-
-fn supply_cyclic_generator_yield() {
-    want_cyclic_generator_yield(|| {
-        //~^ ERROR type mismatch
-        if false { yield None.unwrap(); }
-        None.unwrap()
-    })
-}
-
-fn main() { }
diff --git a/src/test/ui/generator/generator-yielding-or-returning-itself.stderr b/src/test/ui/generator/generator-yielding-or-returning-itself.stderr
deleted file mode 100644
index 8f5d2429a28..00000000000
--- a/src/test/ui/generator/generator-yielding-or-returning-itself.stderr
+++ /dev/null
@@ -1,53 +0,0 @@
-error[E0271]: type mismatch resolving `<[generator@$DIR/generator-yielding-or-returning-itself.rs:15:34: 15:36] as Generator>::Return == [generator@$DIR/generator-yielding-or-returning-itself.rs:15:34: 15:36]`
-  --> $DIR/generator-yielding-or-returning-itself.rs:15:34
-   |
-LL |       want_cyclic_generator_return(|| {
-   |  _____----------------------------_^
-   | |     |
-   | |     required by a bound introduced by this call
-LL | |
-LL | |         if false { yield None.unwrap(); }
-LL | |         None.unwrap()
-LL | |     })
-   | |_____^ cyclic type of infinite size
-   |
-   = note: closures cannot capture themselves or take themselves as argument;
-           this error may be the result of a recent compiler bug-fix,
-           see issue #46062 <https://github.com/rust-lang/rust/issues/46062>
-           for more information
-note: required by a bound in `want_cyclic_generator_return`
-  --> $DIR/generator-yielding-or-returning-itself.rs:10:36
-   |
-LL | pub fn want_cyclic_generator_return<T>(_: T)
-   |        ---------------------------- required by a bound in this
-LL |     where T: Generator<Yield = (), Return = T>
-   |                                    ^^^^^^^^^^ required by this bound in `want_cyclic_generator_return`
-
-error[E0271]: type mismatch resolving `<[generator@$DIR/generator-yielding-or-returning-itself.rs:28:33: 28:35] as Generator>::Yield == [generator@$DIR/generator-yielding-or-returning-itself.rs:28:33: 28:35]`
-  --> $DIR/generator-yielding-or-returning-itself.rs:28:33
-   |
-LL |       want_cyclic_generator_yield(|| {
-   |  _____---------------------------_^
-   | |     |
-   | |     required by a bound introduced by this call
-LL | |
-LL | |         if false { yield None.unwrap(); }
-LL | |         None.unwrap()
-LL | |     })
-   | |_____^ cyclic type of infinite size
-   |
-   = note: closures cannot capture themselves or take themselves as argument;
-           this error may be the result of a recent compiler bug-fix,
-           see issue #46062 <https://github.com/rust-lang/rust/issues/46062>
-           for more information
-note: required by a bound in `want_cyclic_generator_yield`
-  --> $DIR/generator-yielding-or-returning-itself.rs:23:24
-   |
-LL | pub fn want_cyclic_generator_yield<T>(_: T)
-   |        --------------------------- required by a bound in this
-LL |     where T: Generator<Yield = T, Return = ()>
-   |                        ^^^^^^^^^ required by this bound in `want_cyclic_generator_yield`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0271`.
diff --git a/src/test/ui/generator/issue-102645.rs b/src/test/ui/generator/issue-102645.rs
deleted file mode 100644
index 35acd5cd727..00000000000
--- a/src/test/ui/generator/issue-102645.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// compile-flags: -Zdrop-tracking
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::pin::Pin;
-
-fn main() {
-    let mut a = 5;
-    let mut b = || {
-        let d = 6;
-        yield;
-        _zzz(); // #break
-        a = d;
-    };
-    Pin::new(&mut b).resume();
-    //~^ ERROR this method takes 1 argument but 0 arguments were supplied
-    // This type error is required to reproduce the ICE...
-}
-
-fn _zzz() {
-    ()
-}
diff --git a/src/test/ui/generator/issue-102645.stderr b/src/test/ui/generator/issue-102645.stderr
deleted file mode 100644
index f6d2440295e..00000000000
--- a/src/test/ui/generator/issue-102645.stderr
+++ /dev/null
@@ -1,16 +0,0 @@
-error[E0061]: this method takes 1 argument but 0 arguments were supplied
-  --> $DIR/issue-102645.rs:16:22
-   |
-LL |     Pin::new(&mut b).resume();
-   |                      ^^^^^^-- an argument of type `()` is missing
-   |
-note: associated function defined here
-  --> $SRC_DIR/core/src/ops/generator.rs:LL:COL
-help: provide the argument
-   |
-LL |     Pin::new(&mut b).resume(());
-   |                            ~~~~
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0061`.
diff --git a/src/test/ui/generator/issue-44197.rs b/src/test/ui/generator/issue-44197.rs
deleted file mode 100644
index 389b9d13969..00000000000
--- a/src/test/ui/generator/issue-44197.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::ops::{Generator, GeneratorState};
-use std::pin::Pin;
-
-fn foo(_: &str) -> String {
-    String::new()
-}
-
-fn bar(baz: String) -> impl Generator<(), Yield = String, Return = ()> {
-    move || {
-        yield foo(&baz);
-    }
-}
-
-fn foo2(_: &str) -> Result<String, ()> {
-    Err(())
-}
-
-fn bar2(baz: String) -> impl Generator<(), Yield = String, Return = ()> {
-    move || {
-        if let Ok(quux) = foo2(&baz) {
-            yield quux;
-        }
-    }
-}
-
-fn main() {
-    assert_eq!(
-        Pin::new(&mut bar(String::new())).resume(()),
-        GeneratorState::Yielded(String::new())
-    );
-    assert_eq!(Pin::new(&mut bar2(String::new())).resume(()), GeneratorState::Complete(()));
-}
diff --git a/src/test/ui/generator/issue-45729-unsafe-in-generator.mir.stderr b/src/test/ui/generator/issue-45729-unsafe-in-generator.mir.stderr
deleted file mode 100644
index 3afbea07931..00000000000
--- a/src/test/ui/generator/issue-45729-unsafe-in-generator.mir.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0133]: dereference of raw pointer is unsafe and requires unsafe function or block
-  --> $DIR/issue-45729-unsafe-in-generator.rs:8:9
-   |
-LL |         *(1 as *mut u32) = 42;
-   |         ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
-   |
-   = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0133`.
diff --git a/src/test/ui/generator/issue-45729-unsafe-in-generator.rs b/src/test/ui/generator/issue-45729-unsafe-in-generator.rs
deleted file mode 100644
index 379c36d2ca3..00000000000
--- a/src/test/ui/generator/issue-45729-unsafe-in-generator.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// revisions: mir thir
-// [thir]compile-flags: -Z thir-unsafeck
-
-#![feature(generators)]
-
-fn main() {
-    let _ = || {
-        *(1 as *mut u32) = 42;
-        //~^ ERROR dereference of raw pointer is unsafe
-        yield;
-    };
-}
diff --git a/src/test/ui/generator/issue-45729-unsafe-in-generator.thir.stderr b/src/test/ui/generator/issue-45729-unsafe-in-generator.thir.stderr
deleted file mode 100644
index 10d768f19fc..00000000000
--- a/src/test/ui/generator/issue-45729-unsafe-in-generator.thir.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0133]: dereference of raw pointer is unsafe and requires unsafe function or block
-  --> $DIR/issue-45729-unsafe-in-generator.rs:8:9
-   |
-LL |         *(1 as *mut u32) = 42;
-   |         ^^^^^^^^^^^^^^^^ dereference of raw pointer
-   |
-   = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0133`.
diff --git a/src/test/ui/generator/issue-48048.rs b/src/test/ui/generator/issue-48048.rs
deleted file mode 100644
index 992bbc97a9f..00000000000
--- a/src/test/ui/generator/issue-48048.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![feature(generators)]
-
-fn main() {
-    let x = (|_| {},);
-
-    || {
-        let x = x;
-
-        x.0({ //~ ERROR borrow may still be in use when generator yields
-            yield;
-        });
-    };
-}
diff --git a/src/test/ui/generator/issue-48048.stderr b/src/test/ui/generator/issue-48048.stderr
deleted file mode 100644
index 23423583916..00000000000
--- a/src/test/ui/generator/issue-48048.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0626]: borrow may still be in use when generator yields
-  --> $DIR/issue-48048.rs:9:9
-   |
-LL |         x.0({
-   |         ^^^
-LL |             yield;
-   |             ----- possible yield occurs here
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0626`.
diff --git a/src/test/ui/generator/issue-52304.rs b/src/test/ui/generator/issue-52304.rs
deleted file mode 100644
index 3e9de765b12..00000000000
--- a/src/test/ui/generator/issue-52304.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// check-pass
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-pub fn example() -> impl Generator {
-    || yield &1
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/issue-52398.rs b/src/test/ui/generator/issue-52398.rs
deleted file mode 100644
index ada380d116c..00000000000
--- a/src/test/ui/generator/issue-52398.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// run-pass
-#![allow(unused_variables)]
-
-#![feature(generators)]
-
-use std::cell::RefCell;
-
-struct A;
-
-impl A {
-    fn test(&self, a: ()) {}
-}
-
-fn main() {
-    // Test that the MIR local with type &A created for the auto-borrow adjustment
-    // is caught by typeck
-    move || { //~ WARN unused generator that must be used
-        A.test(yield);
-    };
-
-    // Test that the std::cell::Ref temporary returned from the `borrow` call
-    // is caught by typeck
-    let y = RefCell::new(true);
-    static move || { //~ WARN unused generator that must be used
-        yield *y.borrow();
-        return "Done";
-    };
-}
diff --git a/src/test/ui/generator/issue-52398.stderr b/src/test/ui/generator/issue-52398.stderr
deleted file mode 100644
index 539343275df..00000000000
--- a/src/test/ui/generator/issue-52398.stderr
+++ /dev/null
@@ -1,24 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/issue-52398.rs:17:5
-   |
-LL | /     move || {
-LL | |         A.test(yield);
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: unused generator that must be used
-  --> $DIR/issue-52398.rs:24:5
-   |
-LL | /     static move || {
-LL | |         yield *y.borrow();
-LL | |         return "Done";
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-
-warning: 2 warnings emitted
-
diff --git a/src/test/ui/generator/issue-53548-1.rs b/src/test/ui/generator/issue-53548-1.rs
deleted file mode 100644
index 173ae3c6fb6..00000000000
--- a/src/test/ui/generator/issue-53548-1.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// A variant of #53548 that does not actually require generators,
-// but which encountered the same ICE/error. See `issue-53548.rs`
-// for details.
-//
-// check-pass
-
-use std::cell::RefCell;
-use std::rc::Rc;
-
-trait Trait: 'static {}
-
-struct Store<C> {
-    inner: Rc<RefCell<Option<C>>>,
-}
-
-fn main() {
-    let store = Store::<Box<for<'a> fn(&(dyn Trait + 'a))>> {
-        inner: Default::default(),
-    };
-}
diff --git a/src/test/ui/generator/issue-53548.rs b/src/test/ui/generator/issue-53548.rs
deleted file mode 100644
index 3ebabb91462..00000000000
--- a/src/test/ui/generator/issue-53548.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-// Regression test for #53548. The `Box<dyn Trait>` type below is
-// expanded to `Box<dyn Trait + 'static>`, but the generator "witness"
-// that results is `for<'r> { Box<dyn Trait + 'r> }`. The WF code was
-// encountering an ICE (when debug-assertions were enabled) and an
-// unexpected compilation error (without debug-asserions) when trying
-// to process this `'r` region bound. In particular, to be WF, the
-// region bound must meet the requirements of the trait, and hence we
-// got `for<'r> { 'r: 'static }`. This would ICE because the `Binder`
-// constructor we were using was assering that no higher-ranked
-// regions were involved (because the WF code is supposed to skip
-// those). The error (if debug-asserions were disabled) came because
-// we obviously cannot prove that `'r: 'static` for any region `'r`.
-// Pursuant with our "lazy WF" strategy for higher-ranked regions, the
-// fix is not to require that `for<'r> { 'r: 'static }` holds (this is
-// also analogous to what we would do for higher-ranked regions
-// appearing within the trait in other positions).
-//
-// check-pass
-
-#![feature(generators)]
-
-use std::cell::RefCell;
-use std::rc::Rc;
-
-trait Trait: 'static {}
-
-struct Store<C> {
-    inner: Rc<RefCell<Option<C>>>,
-}
-
-fn main() {
-    Box::new(static move || {
-        let store = Store::<Box<dyn Trait>> {
-            inner: Default::default(),
-        };
-        yield ();
-    });
-}
diff --git a/src/test/ui/generator/issue-57017.rs b/src/test/ui/generator/issue-57017.rs
deleted file mode 100644
index c0bde3b4473..00000000000
--- a/src/test/ui/generator/issue-57017.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-// build-pass
-// compile-flags: -Zdrop-tracking
-#![feature(generators, negative_impls)]
-
-macro_rules! type_combinations {
-    (
-        $( $name:ident => { $( $tt:tt )* } );*
-    ) => { $(
-        mod $name {
-            pub mod unsync {
-                $( $tt )*
-
-                impl !Sync for Client {}
-            }
-            pub mod unsend {
-                $( $tt )*
-
-                impl !Send for Client {}
-            }
-        }
-
-        // This is the same bug as issue 57017, but using yield instead of await
-        {
-            let g = move || match drop(&$name::unsync::Client::default()) {
-                _status => yield,
-            };
-            assert_send(g);
-        }
-
-        // This tests that `Client` is properly considered to be dropped after moving it into the
-        // function.
-        {
-            let g = move || match drop($name::unsend::Client::default()) {
-                _status => yield,
-            };
-            assert_send(g);
-        }
-    )* }
-}
-
-fn assert_send<T: Send>(_thing: T) {}
-
-fn main() {
-    type_combinations!(
-        copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
-        derived_drop => { #[derive(Default)] pub struct Client { pub nickname: String } };
-        significant_drop => {
-            #[derive(Default)]
-            pub struct Client;
-            impl Drop for Client {
-                fn drop(&mut self) {}
-            }
-        }
-    );
-}
diff --git a/src/test/ui/generator/issue-57084.rs b/src/test/ui/generator/issue-57084.rs
deleted file mode 100644
index 2a5c3dd0570..00000000000
--- a/src/test/ui/generator/issue-57084.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// This issue reproduces an ICE on compile (E.g. fails on 2018-12-19 nightly).
-// "cannot relate bound region: ReLateBound(DebruijnIndex(1), BrAnon(1)) <= '_#1r"
-// run-pass
-// edition:2018
-#![feature(generators,generator_trait)]
-use std::ops::Generator;
-
-fn with<F>(f: F) -> impl Generator<Yield=(), Return=()>
-where F: Fn() -> ()
-{
-    move || {
-        loop {
-            match f() {
-                _ => yield,
-            }
-        }
-    }
-}
-
-fn main() {
-    let data = &vec![1];
-    || { //~ WARN unused generator that must be used
-        let _to_pin = with(move || println!("{:p}", data));
-        loop {
-            yield
-        }
-    };
-}
diff --git a/src/test/ui/generator/issue-57084.stderr b/src/test/ui/generator/issue-57084.stderr
deleted file mode 100644
index 8f1fc5e8031..00000000000
--- a/src/test/ui/generator/issue-57084.stderr
+++ /dev/null
@@ -1,16 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/issue-57084.rs:22:5
-   |
-LL | /     || {
-LL | |         let _to_pin = with(move || println!("{:p}", data));
-LL | |         loop {
-LL | |             yield
-LL | |         }
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/issue-57478.rs b/src/test/ui/generator/issue-57478.rs
deleted file mode 100644
index 91407ea1844..00000000000
--- a/src/test/ui/generator/issue-57478.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// check-pass
-// compile-flags: -Zdrop-tracking
-
-#![feature(negative_impls, generators)]
-
-struct Foo;
-impl !Send for Foo {}
-
-fn main() {
-    assert_send(|| {
-        let guard = Foo;
-        drop(guard);
-        yield;
-    })
-}
-
-fn assert_send<T: Send>(_: T) {}
diff --git a/src/test/ui/generator/issue-58888.rs b/src/test/ui/generator/issue-58888.rs
deleted file mode 100644
index d42d09d401e..00000000000
--- a/src/test/ui/generator/issue-58888.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// run-pass
-// compile-flags: -g
-// ignore-asmjs wasm2js does not support source maps yet
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-struct Database;
-
-impl Database {
-    fn get_connection(&self) -> impl Iterator<Item = ()> {
-        Some(()).into_iter()
-    }
-
-    fn check_connection(&self) -> impl Generator<Yield = (), Return = ()> + '_ {
-        move || {
-            let iter = self.get_connection();
-            for i in iter {
-                yield i
-            }
-        }
-    }
-}
-
-fn main() {
-    Database.check_connection();
-}
diff --git a/src/test/ui/generator/issue-61442-stmt-expr-with-drop.rs b/src/test/ui/generator/issue-61442-stmt-expr-with-drop.rs
deleted file mode 100644
index 187c374021d..00000000000
--- a/src/test/ui/generator/issue-61442-stmt-expr-with-drop.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-// Test that we don't consider temporaries for statement expressions as live
-// across yields
-
-// check-pass
-// edition:2018
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-async fn drop_and_await() {
-    async {};
-    async {}.await;
-}
-
-fn drop_and_yield() {
-    let x = || {
-        String::new();
-        yield;
-    };
-    Box::pin(x).as_mut().resume(());
-    let y = static || {
-        String::new();
-        yield;
-    };
-    Box::pin(y).as_mut().resume(());
-}
-
-fn main() {
-    drop_and_await();
-    drop_and_yield();
-}
diff --git a/src/test/ui/generator/issue-62506-two_awaits.rs b/src/test/ui/generator/issue-62506-two_awaits.rs
deleted file mode 100644
index 672e16b780d..00000000000
--- a/src/test/ui/generator/issue-62506-two_awaits.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Output = String caused an ICE whereas Output = &'static str compiled successfully.
-// Broken MIR: generator contains type std::string::String in MIR,
-// but typeck only knows about {<S as T>::Future, ()}
-// check-pass
-// edition:2018
-
-use std::future::Future;
-
-pub trait T {
-    type Future: Future<Output = String>;
-    fn bar() -> Self::Future;
-}
-pub async fn foo<S>() where S: T {
-    S::bar().await;
-    S::bar().await;
-}
-pub fn main() {}
diff --git a/src/test/ui/generator/issue-64620-yield-array-element.rs b/src/test/ui/generator/issue-64620-yield-array-element.rs
deleted file mode 100644
index 2cbe8f51614..00000000000
--- a/src/test/ui/generator/issue-64620-yield-array-element.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// Regression test for #64620
-
-#![feature(generators)]
-
-pub fn crash(arr: [usize; 1]) {
-    yield arr[0]; //~ ERROR: yield expression outside of generator literal
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/issue-64620-yield-array-element.stderr b/src/test/ui/generator/issue-64620-yield-array-element.stderr
deleted file mode 100644
index 48383c2ed08..00000000000
--- a/src/test/ui/generator/issue-64620-yield-array-element.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0627]: yield expression outside of generator literal
-  --> $DIR/issue-64620-yield-array-element.rs:6:5
-   |
-LL |     yield arr[0];
-   |     ^^^^^^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0627`.
diff --git a/src/test/ui/generator/issue-68112.rs b/src/test/ui/generator/issue-68112.rs
deleted file mode 100644
index 21026f45cb8..00000000000
--- a/src/test/ui/generator/issue-68112.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::{
-    cell::RefCell,
-    sync::Arc,
-    pin::Pin,
-    ops::{Generator, GeneratorState},
-};
-
-pub struct Ready<T>(Option<T>);
-impl<T> Generator<()> for Ready<T> {
-    type Return = T;
-    type Yield = ();
-    fn resume(mut self: Pin<&mut Self>, _args: ()) -> GeneratorState<(), T> {
-        GeneratorState::Complete(self.0.take().unwrap())
-    }
-}
-pub fn make_gen1<T>(t: T) -> Ready<T> {
-    Ready(Some(t))
-}
-
-fn require_send(_: impl Send) {}
-//~^ NOTE required by a bound
-//~| NOTE required by a bound
-//~| NOTE required by this bound
-//~| NOTE required by this bound
-
-fn make_non_send_generator() -> impl Generator<Return = Arc<RefCell<i32>>> {
-    make_gen1(Arc::new(RefCell::new(0)))
-}
-
-fn test1() {
-    let send_gen = || {
-        let _non_send_gen = make_non_send_generator();
-        //~^ NOTE not `Send`
-        yield;
-        //~^ NOTE yield occurs here
-        //~| NOTE value is used across a yield
-    }; //~ NOTE later dropped here
-    require_send(send_gen);
-    //~^ ERROR generator cannot be sent between threads
-    //~| NOTE not `Send`
-}
-
-pub fn make_gen2<T>(t: T) -> impl Generator<Return = T> {
-//~^ NOTE appears within the type
-//~| NOTE expansion of desugaring
-    || { //~ NOTE used within this generator
-        yield;
-        t
-    }
-}
-fn make_non_send_generator2() -> impl Generator<Return = Arc<RefCell<i32>>> { //~ NOTE appears within the type
-//~^ NOTE expansion of desugaring
-    make_gen2(Arc::new(RefCell::new(0)))
-}
-
-fn test2() {
-    let send_gen = || { //~ NOTE used within this generator
-        let _non_send_gen = make_non_send_generator2();
-        yield;
-    };
-    require_send(send_gen);
-    //~^ ERROR `RefCell<i32>` cannot be shared between threads safely
-    //~| NOTE `RefCell<i32>` cannot be shared between threads safely
-    //~| NOTE required for
-    //~| NOTE required by a bound introduced by this call
-    //~| NOTE captures the following types
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/issue-68112.stderr b/src/test/ui/generator/issue-68112.stderr
deleted file mode 100644
index eb99d42c920..00000000000
--- a/src/test/ui/generator/issue-68112.stderr
+++ /dev/null
@@ -1,64 +0,0 @@
-error: generator cannot be sent between threads safely
-  --> $DIR/issue-68112.rs:40:18
-   |
-LL |     require_send(send_gen);
-   |                  ^^^^^^^^ generator is not `Send`
-   |
-   = help: the trait `Sync` is not implemented for `RefCell<i32>`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/issue-68112.rs:36:9
-   |
-LL |         let _non_send_gen = make_non_send_generator();
-   |             ------------- has type `impl Generator<Return = Arc<RefCell<i32>>>` which is not `Send`
-LL |
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `_non_send_gen` maybe used later
-...
-LL |     };
-   |     - `_non_send_gen` is later dropped here
-note: required by a bound in `require_send`
-  --> $DIR/issue-68112.rs:22:25
-   |
-LL | fn require_send(_: impl Send) {}
-   |                         ^^^^ required by this bound in `require_send`
-
-error[E0277]: `RefCell<i32>` cannot be shared between threads safely
-  --> $DIR/issue-68112.rs:63:18
-   |
-LL |     require_send(send_gen);
-   |     ------------ ^^^^^^^^ `RefCell<i32>` cannot be shared between threads safely
-   |     |
-   |     required by a bound introduced by this call
-   |
-   = help: the trait `Sync` is not implemented for `RefCell<i32>`
-   = note: required for `Arc<RefCell<i32>>` to implement `Send`
-note: required because it's used within this generator
-  --> $DIR/issue-68112.rs:48:5
-   |
-LL |     || {
-   |     ^^
-note: required because it appears within the type `impl Generator<Return = Arc<RefCell<i32>>>`
-  --> $DIR/issue-68112.rs:45:30
-   |
-LL | pub fn make_gen2<T>(t: T) -> impl Generator<Return = T> {
-   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: required because it appears within the type `impl Generator<Return = Arc<RefCell<i32>>>`
-  --> $DIR/issue-68112.rs:53:34
-   |
-LL | fn make_non_send_generator2() -> impl Generator<Return = Arc<RefCell<i32>>> {
-   |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: required because it captures the following types: `impl Generator<Return = Arc<RefCell<i32>>>`, `()`
-note: required because it's used within this generator
-  --> $DIR/issue-68112.rs:59:20
-   |
-LL |     let send_gen = || {
-   |                    ^^
-note: required by a bound in `require_send`
-  --> $DIR/issue-68112.rs:22:25
-   |
-LL | fn require_send(_: impl Send) {}
-   |                         ^^^^ required by this bound in `require_send`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/issue-69017.rs b/src/test/ui/generator/issue-69017.rs
deleted file mode 100644
index 511deb60e45..00000000000
--- a/src/test/ui/generator/issue-69017.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// This issue reproduces an ICE on compile
-// Fails on 2020-02-08 nightly
-// regressed commit: https://github.com/rust-lang/rust/commit/f8fd4624474a68bd26694eff3536b9f3a127b2d3
-//
-// check-pass
-
-#![feature(generator_trait)]
-#![feature(generators)]
-
-use std::ops::Generator;
-
-fn gen() -> impl Generator<usize> {
-    |_: usize| {
-        println!("-> {}", yield);
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/issue-69039.rs b/src/test/ui/generator/issue-69039.rs
deleted file mode 100644
index ccc141860aa..00000000000
--- a/src/test/ui/generator/issue-69039.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::ops::{Generator, GeneratorState};
-
-fn mkstr(my_name: String, my_mood: String) -> String {
-    format!("{} is {}", my_name.trim(), my_mood.trim())
-}
-
-fn my_scenario() -> impl Generator<String, Yield = &'static str, Return = String> {
-    |_arg: String| {
-        let my_name = yield "What is your name?";
-        let my_mood = yield "How are you feeling?";
-        mkstr(my_name, my_mood)
-    }
-}
-
-fn main() {
-    let mut my_session = Box::pin(my_scenario());
-
-    assert_eq!(
-        my_session.as_mut().resume("_arg".to_string()),
-        GeneratorState::Yielded("What is your name?")
-    );
-    assert_eq!(
-        my_session.as_mut().resume("Your Name".to_string()),
-        GeneratorState::Yielded("How are you feeling?")
-    );
-    assert_eq!(
-        my_session.as_mut().resume("Sensory Organs".to_string()),
-        GeneratorState::Complete("Your Name is Sensory Organs".to_string())
-    );
-}
diff --git a/src/test/ui/generator/issue-87142.rs b/src/test/ui/generator/issue-87142.rs
deleted file mode 100644
index fc10d04d46c..00000000000
--- a/src/test/ui/generator/issue-87142.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-// compile-flags: -Cdebuginfo=2
-// build-pass
-
-// Regression test for #87142
-// This test needs the above flags and the "lib" crate type.
-
-#![feature(type_alias_impl_trait, generator_trait, generators)]
-#![crate_type = "lib"]
-
-use std::ops::Generator;
-
-pub trait GeneratorProviderAlt: Sized {
-    type Gen: Generator<(), Return = (), Yield = ()>;
-
-    fn start(ctx: Context<Self>) -> Self::Gen;
-}
-
-pub struct Context<G: 'static + GeneratorProviderAlt> {
-    pub link: Box<G::Gen>,
-}
-
-impl GeneratorProviderAlt for () {
-    type Gen = impl Generator<(), Return = (), Yield = ()>;
-    fn start(ctx: Context<Self>) -> Self::Gen {
-        move || {
-            match ctx {
-                _ => (),
-            }
-            yield ();
-        }
-    }
-}
diff --git a/src/test/ui/generator/issue-88653.rs b/src/test/ui/generator/issue-88653.rs
deleted file mode 100644
index 1d9377bcef4..00000000000
--- a/src/test/ui/generator/issue-88653.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// Regression test for #88653, where a confusing warning about a
-// type mismatch in generator arguments was issued.
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-fn foo(bar: bool) -> impl Generator<(bool,)> {
-    //~^ ERROR: type mismatch in generator arguments [E0631]
-    //~| NOTE: expected due to this
-    //~| NOTE: expected generator signature `fn((bool,)) -> _`
-    //~| NOTE: in this expansion of desugaring of `impl Trait`
-    //~| NOTE: in this expansion of desugaring of `impl Trait`
-    |bar| {
-        //~^ NOTE: found signature defined here
-        if bar {
-            yield bar;
-        }
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/issue-88653.stderr b/src/test/ui/generator/issue-88653.stderr
deleted file mode 100644
index b742c6e2f1c..00000000000
--- a/src/test/ui/generator/issue-88653.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0631]: type mismatch in generator arguments
-  --> $DIR/issue-88653.rs:8:22
-   |
-LL | fn foo(bar: bool) -> impl Generator<(bool,)> {
-   |                      ^^^^^^^^^^^^^^^^^^^^^^^ expected due to this
-...
-LL |     |bar| {
-   |     ----- found signature defined here
-   |
-   = note: expected generator signature `fn((bool,)) -> _`
-              found generator signature `fn(bool) -> _`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0631`.
diff --git a/src/test/ui/generator/issue-91477.rs b/src/test/ui/generator/issue-91477.rs
deleted file mode 100644
index 6c027feb422..00000000000
--- a/src/test/ui/generator/issue-91477.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-#![feature(generators)]
-
-fn foo() -> impl Sized {
-    yield 1; //~ ERROR E0627
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/issue-91477.stderr b/src/test/ui/generator/issue-91477.stderr
deleted file mode 100644
index 4597dc1bcdf..00000000000
--- a/src/test/ui/generator/issue-91477.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0627]: yield expression outside of generator literal
-  --> $DIR/issue-91477.rs:4:5
-   |
-LL |     yield 1;
-   |     ^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0627`.
diff --git a/src/test/ui/generator/issue-93161.rs b/src/test/ui/generator/issue-93161.rs
deleted file mode 100644
index 92305609c83..00000000000
--- a/src/test/ui/generator/issue-93161.rs
+++ /dev/null
@@ -1,94 +0,0 @@
-// edition:2021
-// run-pass
-// compile-flags: -Zdrop-tracking
-
-#![feature(never_type)]
-
-use std::future::Future;
-
-// See if we can run a basic `async fn`
-pub async fn foo(x: &u32, y: u32) -> u32 {
-    let y = &y;
-    let z = 9;
-    let z = &z;
-    let y = async { *y + *z }.await;
-    let a = 10;
-    let a = &a;
-    *x + y + *a
-}
-
-async fn add(x: u32, y: u32) -> u32 {
-    let a = async { x + y };
-    a.await
-}
-
-async fn build_aggregate(a: u32, b: u32, c: u32, d: u32) -> u32 {
-    let x = (add(a, b).await, add(c, d).await);
-    x.0 + x.1
-}
-
-enum Never {}
-fn never() -> Never {
-    panic!()
-}
-
-async fn includes_never(crash: bool, x: u32) -> u32 {
-    let result = async { x * x }.await;
-    if !crash {
-        return result;
-    }
-    #[allow(unused)]
-    let bad = never();
-    result *= async { x + x }.await;
-    drop(bad);
-    result
-}
-
-async fn partial_init(x: u32) -> u32 {
-    #[allow(unreachable_code)]
-    let _x: (String, !) = (String::new(), return async { x + x }.await);
-}
-
-async fn read_exact(_from: &mut &[u8], _to: &mut [u8]) -> Option<()> {
-    Some(())
-}
-
-async fn hello_world() {
-    let data = [0u8; 1];
-    let mut reader = &data[..];
-
-    let mut marker = [0u8; 1];
-    read_exact(&mut reader, &mut marker).await.unwrap();
-}
-
-fn run_fut<T>(fut: impl Future<Output = T>) -> T {
-    use std::sync::Arc;
-    use std::task::{Context, Poll, Wake, Waker};
-
-    struct MyWaker;
-    impl Wake for MyWaker {
-        fn wake(self: Arc<Self>) {
-            unimplemented!()
-        }
-    }
-
-    let waker = Waker::from(Arc::new(MyWaker));
-    let mut context = Context::from_waker(&waker);
-
-    let mut pinned = Box::pin(fut);
-    loop {
-        match pinned.as_mut().poll(&mut context) {
-            Poll::Pending => continue,
-            Poll::Ready(v) => return v,
-        }
-    }
-}
-
-fn main() {
-    let x = 5;
-    assert_eq!(run_fut(foo(&x, 7)), 31);
-    assert_eq!(run_fut(build_aggregate(1, 2, 3, 4)), 10);
-    assert_eq!(run_fut(includes_never(false, 4)), 16);
-    assert_eq!(run_fut(partial_init(4)), 8);
-    run_fut(hello_world());
-}
diff --git a/src/test/ui/generator/iterator-count.rs b/src/test/ui/generator/iterator-count.rs
deleted file mode 100644
index 90eefe02f66..00000000000
--- a/src/test/ui/generator/iterator-count.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::marker::Unpin;
-use std::ops::{GeneratorState, Generator};
-use std::pin::Pin;
-
-struct W<T>(T);
-
-// This impl isn't safe in general, but the generator used in this test is movable
-// so it won't cause problems.
-impl<T: Generator<(), Return = ()> + Unpin> Iterator for W<T> {
-    type Item = T::Yield;
-
-    fn next(&mut self) -> Option<Self::Item> {
-        match Pin::new(&mut self.0).resume(()) {
-            GeneratorState::Complete(..) => None,
-            GeneratorState::Yielded(v) => Some(v),
-        }
-    }
-}
-
-fn test() -> impl Generator<(), Return=(), Yield=u8> + Unpin {
-    || {
-        for i in 1..6 {
-            yield i
-        }
-    }
-}
-
-fn main() {
-    let end = 11;
-
-    let closure_test = |start| {
-        move || {
-            for i in start..end {
-                yield i
-            }
-        }
-    };
-
-    assert!(W(test()).chain(W(closure_test(6))).eq(1..11));
-}
diff --git a/src/test/ui/generator/layout-error.rs b/src/test/ui/generator/layout-error.rs
deleted file mode 100644
index 7c3d187409a..00000000000
--- a/src/test/ui/generator/layout-error.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// Verifies that computing a layout of a generator tainted by type errors
-// doesn't ICE. Regression test for #80998.
-//
-// edition:2018
-
-#![feature(type_alias_impl_trait)]
-use std::future::Future;
-
-pub struct Task<F: Future>(F);
-impl<F: Future> Task<F> {
-    const fn new() -> Self {
-        todo!()
-    }
-    fn spawn(&self, _: impl FnOnce() -> F) {
-        todo!()
-    }
-}
-
-fn main() {
-    async fn cb() {
-        let a = Foo; //~ ERROR cannot find value `Foo` in this scope
-    }
-
-    type F = impl Future;
-    // Check that statics are inhabited computes they layout.
-    static POOL: Task<F> = Task::new();
-    Task::spawn(&POOL, || cb());
-}
diff --git a/src/test/ui/generator/layout-error.stderr b/src/test/ui/generator/layout-error.stderr
deleted file mode 100644
index b1a258f4f2c..00000000000
--- a/src/test/ui/generator/layout-error.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0425]: cannot find value `Foo` in this scope
-  --> $DIR/layout-error.rs:21:17
-   |
-LL |         let a = Foo;
-   |                 ^^^ not found in this scope
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/ui/generator/live-upvar-across-yield.rs b/src/test/ui/generator/live-upvar-across-yield.rs
deleted file mode 100644
index 6a2e42a5573..00000000000
--- a/src/test/ui/generator/live-upvar-across-yield.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::pin::Pin;
-
-fn main() {
-    let b = |_| 3;
-    let mut a = || {
-        b(yield);
-    };
-    Pin::new(&mut a).resume(());
-}
diff --git a/src/test/ui/generator/match-bindings.rs b/src/test/ui/generator/match-bindings.rs
deleted file mode 100644
index 865904a57d4..00000000000
--- a/src/test/ui/generator/match-bindings.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-
-#![feature(generators)]
-
-enum Enum {
-    A(String),
-    B
-}
-
-fn main() {
-    || { //~ WARN unused generator that must be used
-        loop {
-            if let true = true {
-                match Enum::A(String::new()) {
-                    Enum::A(_var) => {}
-                    Enum::B => {}
-                }
-            }
-            yield;
-        }
-    };
-}
diff --git a/src/test/ui/generator/match-bindings.stderr b/src/test/ui/generator/match-bindings.stderr
deleted file mode 100644
index 3dd2d595445..00000000000
--- a/src/test/ui/generator/match-bindings.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/match-bindings.rs:12:5
-   |
-LL | /     || {
-LL | |         loop {
-LL | |             if let true = true {
-LL | |                 match Enum::A(String::new()) {
-...  |
-LL | |         }
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.rs b/src/test/ui/generator/metadata-sufficient-for-layout.rs
deleted file mode 100644
index d0e648ee775..00000000000
--- a/src/test/ui/generator/metadata-sufficient-for-layout.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// Check that the layout of a generator is available when auxiliary crate
-// is compiled with --emit metadata.
-//
-// Regression test for #80998.
-//
-// aux-build:metadata-sufficient-for-layout.rs
-
-#![feature(type_alias_impl_trait, rustc_attrs)]
-#![feature(generator_trait)]
-
-extern crate metadata_sufficient_for_layout;
-
-use std::ops::Generator;
-
-type F = impl Generator<(), Yield = (), Return = ()>;
-
-// Static queries the layout of the generator.
-static A: Option<F> = None;
-
-fn f() -> F {
-    metadata_sufficient_for_layout::g()
-}
-
-#[rustc_error]
-fn main() {} //~ ERROR
diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.stderr b/src/test/ui/generator/metadata-sufficient-for-layout.stderr
deleted file mode 100644
index 3488b04f226..00000000000
--- a/src/test/ui/generator/metadata-sufficient-for-layout.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: fatal error triggered by #[rustc_error]
-  --> $DIR/metadata-sufficient-for-layout.rs:25:1
-   |
-LL | fn main() {}
-   | ^^^^^^^^^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/generator/nested_generators.rs b/src/test/ui/generator/nested_generators.rs
deleted file mode 100644
index 45519150eec..00000000000
--- a/src/test/ui/generator/nested_generators.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::ops::{Generator, GeneratorState};
-use std::pin::Pin;
-
-fn main() {
-    let _generator = || {
-        let mut sub_generator = || {
-            yield 2;
-        };
-
-        match Pin::new(&mut sub_generator).resume(()) {
-            GeneratorState::Yielded(x) => {
-                yield x;
-            }
-            _ => panic!(),
-        };
-    };
-}
diff --git a/src/test/ui/generator/niche-in-generator.rs b/src/test/ui/generator/niche-in-generator.rs
deleted file mode 100644
index 42bee81f524..00000000000
--- a/src/test/ui/generator/niche-in-generator.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// Test that niche finding works with captured generator upvars.
-
-// run-pass
-
-#![feature(generators)]
-
-use std::mem::size_of_val;
-
-fn take<T>(_: T) {}
-
-fn main() {
-    let x = false;
-    let gen1 = || {
-        yield;
-        take(x);
-    };
-
-    assert_eq!(size_of_val(&gen1), size_of_val(&Some(gen1)));
-}
diff --git a/src/test/ui/generator/non-static-is-unpin.rs b/src/test/ui/generator/non-static-is-unpin.rs
deleted file mode 100644
index 96d0a8e2833..00000000000
--- a/src/test/ui/generator/non-static-is-unpin.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::marker::{PhantomPinned, Unpin};
-
-fn assert_unpin<G: Unpin>(_: G) {
-}
-
-fn main() {
-    // Even though this generator holds a `PhantomPinned` in its environment, it
-    // remains `Unpin`.
-    assert_unpin(|| {
-        let pinned = PhantomPinned;
-        yield;
-        drop(pinned);
-    });
-}
diff --git a/src/test/ui/generator/not-send-sync.rs b/src/test/ui/generator/not-send-sync.rs
deleted file mode 100644
index 8ca5565fb2a..00000000000
--- a/src/test/ui/generator/not-send-sync.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-#![feature(generators)]
-
-use std::cell::Cell;
-
-fn main() {
-    fn assert_sync<T: Sync>(_: T) {}
-    fn assert_send<T: Send>(_: T) {}
-
-    assert_sync(|| {
-        //~^ ERROR: generator cannot be shared between threads safely
-        let a = Cell::new(2);
-        yield;
-    });
-
-    let a = Cell::new(2);
-    assert_send(|| {
-        //~^ ERROR: E0277
-        drop(&a);
-        yield;
-    });
-}
diff --git a/src/test/ui/generator/not-send-sync.stderr b/src/test/ui/generator/not-send-sync.stderr
deleted file mode 100644
index a821c57b923..00000000000
--- a/src/test/ui/generator/not-send-sync.stderr
+++ /dev/null
@@ -1,56 +0,0 @@
-error[E0277]: `Cell<i32>` cannot be shared between threads safely
-  --> $DIR/not-send-sync.rs:16:17
-   |
-LL |       assert_send(|| {
-   |  _____-----------_^
-   | |     |
-   | |     required by a bound introduced by this call
-LL | |
-LL | |         drop(&a);
-LL | |         yield;
-LL | |     });
-   | |_____^ `Cell<i32>` cannot be shared between threads safely
-   |
-   = help: the trait `Sync` is not implemented for `Cell<i32>`
-   = note: required for `&Cell<i32>` to implement `Send`
-note: required because it's used within this generator
-  --> $DIR/not-send-sync.rs:16:17
-   |
-LL |     assert_send(|| {
-   |                 ^^
-note: required by a bound in `assert_send`
-  --> $DIR/not-send-sync.rs:7:23
-   |
-LL |     fn assert_send<T: Send>(_: T) {}
-   |                       ^^^^ required by this bound in `assert_send`
-
-error: generator cannot be shared between threads safely
-  --> $DIR/not-send-sync.rs:9:17
-   |
-LL |       assert_sync(|| {
-   |  _________________^
-LL | |
-LL | |         let a = Cell::new(2);
-LL | |         yield;
-LL | |     });
-   | |_____^ generator is not `Sync`
-   |
-   = help: within `[generator@$DIR/not-send-sync.rs:9:17: 9:19]`, the trait `Sync` is not implemented for `Cell<i32>`
-note: generator is not `Sync` as this value is used across a yield
-  --> $DIR/not-send-sync.rs:12:9
-   |
-LL |         let a = Cell::new(2);
-   |             - has type `Cell<i32>` which is not `Sync`
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `a` maybe used later
-LL |     });
-   |     - `a` is later dropped here
-note: required by a bound in `assert_sync`
-  --> $DIR/not-send-sync.rs:6:23
-   |
-LL |     fn assert_sync<T: Sync>(_: T) {}
-   |                       ^^^^ required by this bound in `assert_sync`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/overlap-locals.rs b/src/test/ui/generator/overlap-locals.rs
deleted file mode 100644
index 101c8714fa8..00000000000
--- a/src/test/ui/generator/overlap-locals.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// run-pass
-
-#![feature(generators)]
-
-fn main() {
-    let a = || {
-        {
-            let w: i32 = 4;
-            yield;
-            println!("{:?}", w);
-        }
-        {
-            let x: i32 = 5;
-            yield;
-            println!("{:?}", x);
-        }
-        {
-            let y: i32 = 6;
-            yield;
-            println!("{:?}", y);
-        }
-        {
-            let z: i32 = 7;
-            yield;
-            println!("{:?}", z);
-        }
-    };
-    assert_eq!(8, std::mem::size_of_val(&a));
-}
diff --git a/src/test/ui/generator/panic-drops-resume.rs b/src/test/ui/generator/panic-drops-resume.rs
deleted file mode 100644
index 4c3caeb14d6..00000000000
--- a/src/test/ui/generator/panic-drops-resume.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-//! Tests that panics inside a generator will correctly drop the initial resume argument.
-
-// run-pass
-// needs-unwind
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::panic::{catch_unwind, AssertUnwindSafe};
-use std::pin::Pin;
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-static DROP: AtomicUsize = AtomicUsize::new(0);
-
-struct Dropper {}
-
-impl Drop for Dropper {
-    fn drop(&mut self) {
-        DROP.fetch_add(1, Ordering::SeqCst);
-    }
-}
-
-fn main() {
-    let mut gen = |_arg| {
-        if true {
-            panic!();
-        }
-        yield ();
-    };
-    let mut gen = Pin::new(&mut gen);
-
-    assert_eq!(DROP.load(Ordering::Acquire), 0);
-    let res = catch_unwind(AssertUnwindSafe(|| gen.as_mut().resume(Dropper {})));
-    assert!(res.is_err());
-    assert_eq!(DROP.load(Ordering::Acquire), 1);
-}
diff --git a/src/test/ui/generator/panic-drops.rs b/src/test/ui/generator/panic-drops.rs
deleted file mode 100644
index 65001fd879b..00000000000
--- a/src/test/ui/generator/panic-drops.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-// run-pass
-// needs-unwind
-
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::panic;
-use std::pin::Pin;
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-static A: AtomicUsize = AtomicUsize::new(0);
-
-struct B;
-
-impl Drop for B {
-    fn drop(&mut self) {
-        A.fetch_add(1, Ordering::SeqCst);
-    }
-}
-
-fn bool_true() -> bool {
-    true
-}
-
-fn main() {
-    let b = B;
-    let mut foo = || {
-        if bool_true() {
-            panic!();
-        }
-        drop(b);
-        yield;
-    };
-
-    assert_eq!(A.load(Ordering::SeqCst), 0);
-    let res = panic::catch_unwind(panic::AssertUnwindSafe(|| {
-        Pin::new(&mut foo).resume(())
-    }));
-    assert!(res.is_err());
-    assert_eq!(A.load(Ordering::SeqCst), 1);
-
-    let mut foo = || {
-        if bool_true() {
-            panic!();
-        }
-        drop(B);
-        yield;
-    };
-
-    assert_eq!(A.load(Ordering::SeqCst), 1);
-    let res = panic::catch_unwind(panic::AssertUnwindSafe(|| {
-        Pin::new(&mut foo).resume(())
-    }));
-    assert!(res.is_err());
-    assert_eq!(A.load(Ordering::SeqCst), 1);
-}
diff --git a/src/test/ui/generator/panic-safe.rs b/src/test/ui/generator/panic-safe.rs
deleted file mode 100644
index 3db80bb5821..00000000000
--- a/src/test/ui/generator/panic-safe.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// run-pass
-// needs-unwind
-
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::pin::Pin;
-use std::panic;
-
-fn main() {
-    let mut foo = || {
-        if true {
-            panic!();
-        }
-        yield;
-    };
-
-    let res = panic::catch_unwind(panic::AssertUnwindSafe(|| {
-        Pin::new(&mut foo).resume(())
-    }));
-    assert!(res.is_err());
-
-    for _ in 0..10 {
-        let res = panic::catch_unwind(panic::AssertUnwindSafe(|| {
-            Pin::new(&mut foo).resume(())
-        }));
-        assert!(res.is_err());
-    }
-}
diff --git a/src/test/ui/generator/partial-drop.rs b/src/test/ui/generator/partial-drop.rs
deleted file mode 100644
index c872fb7f3e6..00000000000
--- a/src/test/ui/generator/partial-drop.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-// compile-flags: -Zdrop-tracking
-
-#![feature(negative_impls, generators)]
-
-struct Foo;
-impl !Send for Foo {}
-
-struct Bar {
-    foo: Foo,
-    x: i32,
-}
-
-fn main() {
-    assert_send(|| {
-        //~^ ERROR generator cannot be sent between threads safely
-        // FIXME: it would be nice to make this work.
-        let guard = Bar { foo: Foo, x: 42 };
-        drop(guard.foo);
-        yield;
-    });
-
-    assert_send(|| {
-        //~^ ERROR generator cannot be sent between threads safely
-        // FIXME: it would be nice to make this work.
-        let guard = Bar { foo: Foo, x: 42 };
-        drop(guard);
-        guard.foo = Foo;
-        guard.x = 23;
-        yield;
-    });
-
-    assert_send(|| {
-        //~^ ERROR generator cannot be sent between threads safely
-        // FIXME: it would be nice to make this work.
-        let guard = Bar { foo: Foo, x: 42 };
-        let Bar { foo, x } = guard;
-        drop(foo);
-        yield;
-    });
-}
-
-fn assert_send<T: Send>(_: T) {}
diff --git a/src/test/ui/generator/partial-drop.stderr b/src/test/ui/generator/partial-drop.stderr
deleted file mode 100644
index 9baafe54e84..00000000000
--- a/src/test/ui/generator/partial-drop.stderr
+++ /dev/null
@@ -1,92 +0,0 @@
-error: generator cannot be sent between threads safely
-  --> $DIR/partial-drop.rs:14:17
-   |
-LL |       assert_send(|| {
-   |  _________________^
-LL | |
-LL | |         // FIXME: it would be nice to make this work.
-LL | |         let guard = Bar { foo: Foo, x: 42 };
-LL | |         drop(guard.foo);
-LL | |         yield;
-LL | |     });
-   | |_____^ generator is not `Send`
-   |
-   = help: within `[generator@$DIR/partial-drop.rs:14:17: 14:19]`, the trait `Send` is not implemented for `Foo`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/partial-drop.rs:19:9
-   |
-LL |         let guard = Bar { foo: Foo, x: 42 };
-   |             ----- has type `Bar` which is not `Send`
-LL |         drop(guard.foo);
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `guard` maybe used later
-LL |     });
-   |     - `guard` is later dropped here
-note: required by a bound in `assert_send`
-  --> $DIR/partial-drop.rs:42:19
-   |
-LL | fn assert_send<T: Send>(_: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-
-error: generator cannot be sent between threads safely
-  --> $DIR/partial-drop.rs:22:17
-   |
-LL |       assert_send(|| {
-   |  _________________^
-LL | |
-LL | |         // FIXME: it would be nice to make this work.
-LL | |         let guard = Bar { foo: Foo, x: 42 };
-...  |
-LL | |         yield;
-LL | |     });
-   | |_____^ generator is not `Send`
-   |
-   = help: within `[generator@$DIR/partial-drop.rs:22:17: 22:19]`, the trait `Send` is not implemented for `Foo`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/partial-drop.rs:29:9
-   |
-LL |         let guard = Bar { foo: Foo, x: 42 };
-   |             ----- has type `Bar` which is not `Send`
-...
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `guard` maybe used later
-LL |     });
-   |     - `guard` is later dropped here
-note: required by a bound in `assert_send`
-  --> $DIR/partial-drop.rs:42:19
-   |
-LL | fn assert_send<T: Send>(_: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-
-error: generator cannot be sent between threads safely
-  --> $DIR/partial-drop.rs:32:17
-   |
-LL |       assert_send(|| {
-   |  _________________^
-LL | |
-LL | |         // FIXME: it would be nice to make this work.
-LL | |         let guard = Bar { foo: Foo, x: 42 };
-...  |
-LL | |         yield;
-LL | |     });
-   | |_____^ generator is not `Send`
-   |
-   = help: within `[generator@$DIR/partial-drop.rs:32:17: 32:19]`, the trait `Send` is not implemented for `Foo`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/partial-drop.rs:38:9
-   |
-LL |         let guard = Bar { foo: Foo, x: 42 };
-   |             ----- has type `Bar` which is not `Send`
-...
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `guard` maybe used later
-LL |     });
-   |     - `guard` is later dropped here
-note: required by a bound in `assert_send`
-  --> $DIR/partial-drop.rs:42:19
-   |
-LL | fn assert_send<T: Send>(_: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-
-error: aborting due to 3 previous errors
-
diff --git a/src/test/ui/generator/partial-initialization-across-yield.rs b/src/test/ui/generator/partial-initialization-across-yield.rs
deleted file mode 100644
index 65d9e6d39ca..00000000000
--- a/src/test/ui/generator/partial-initialization-across-yield.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Test that we don't allow yielding from a generator while a local is partially
-// initialized.
-
-#![feature(generators)]
-
-struct S { x: i32, y: i32 }
-struct T(i32, i32);
-
-fn test_tuple() {
-    let _ = || {
-        let mut t: (i32, i32);
-        t.0 = 42; //~ ERROR E0381
-        yield;
-        t.1 = 88;
-        let _ = t;
-    };
-}
-
-fn test_tuple_struct() {
-    let _ = || {
-        let mut t: T;
-        t.0 = 42; //~ ERROR E0381
-        yield;
-        t.1 = 88;
-        let _ = t;
-    };
-}
-
-fn test_struct() {
-    let _ = || {
-        let mut t: S;
-        t.x = 42; //~ ERROR E0381
-        yield;
-        t.y = 88;
-        let _ = t;
-    };
-}
-
-fn main() {
-    test_tuple();
-    test_tuple_struct();
-    test_struct();
-}
diff --git a/src/test/ui/generator/partial-initialization-across-yield.stderr b/src/test/ui/generator/partial-initialization-across-yield.stderr
deleted file mode 100644
index 3f9f1c046ba..00000000000
--- a/src/test/ui/generator/partial-initialization-across-yield.stderr
+++ /dev/null
@@ -1,33 +0,0 @@
-error[E0381]: partially assigned binding `t` isn't fully initialized
-  --> $DIR/partial-initialization-across-yield.rs:12:9
-   |
-LL |         let mut t: (i32, i32);
-   |             ----- binding declared here but left uninitialized
-LL |         t.0 = 42;
-   |         ^^^^^^^^ `t` partially assigned here but it isn't fully initialized
-   |
-   = help: partial initialization isn't supported, fully initialize the binding with a default value and mutate it, or use `std::mem::MaybeUninit`
-
-error[E0381]: partially assigned binding `t` isn't fully initialized
-  --> $DIR/partial-initialization-across-yield.rs:22:9
-   |
-LL |         let mut t: T;
-   |             ----- binding declared here but left uninitialized
-LL |         t.0 = 42;
-   |         ^^^^^^^^ `t` partially assigned here but it isn't fully initialized
-   |
-   = help: partial initialization isn't supported, fully initialize the binding with a default value and mutate it, or use `std::mem::MaybeUninit`
-
-error[E0381]: partially assigned binding `t` isn't fully initialized
-  --> $DIR/partial-initialization-across-yield.rs:32:9
-   |
-LL |         let mut t: S;
-   |             ----- binding declared here but left uninitialized
-LL |         t.x = 42;
-   |         ^^^^^^^^ `t` partially assigned here but it isn't fully initialized
-   |
-   = help: partial initialization isn't supported, fully initialize the binding with a default value and mutate it, or use `std::mem::MaybeUninit`
-
-error: aborting due to 3 previous errors
-
-For more information about this error, try `rustc --explain E0381`.
diff --git a/src/test/ui/generator/pattern-borrow.rs b/src/test/ui/generator/pattern-borrow.rs
deleted file mode 100644
index d1936370819..00000000000
--- a/src/test/ui/generator/pattern-borrow.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-#![feature(generators)]
-
-enum Test { A(i32), B, }
-
-fn main() { }
-
-fn fun(test: Test) {
-    move || {
-        if let Test::A(ref _a) = test { //~ ERROR borrow may still be in use when generator yields
-            yield ();
-            _a.use_ref();
-        }
-    };
-}
-
-trait Fake { fn use_mut(&mut self) { } fn use_ref(&self) { }  }
-impl<T> Fake for T { }
diff --git a/src/test/ui/generator/pattern-borrow.stderr b/src/test/ui/generator/pattern-borrow.stderr
deleted file mode 100644
index d78da510491..00000000000
--- a/src/test/ui/generator/pattern-borrow.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0626]: borrow may still be in use when generator yields
-  --> $DIR/pattern-borrow.rs:9:24
-   |
-LL |         if let Test::A(ref _a) = test {
-   |                        ^^^^^^
-LL |             yield ();
-   |             -------- possible yield occurs here
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0626`.
diff --git a/src/test/ui/generator/pin-box-generator.rs b/src/test/ui/generator/pin-box-generator.rs
deleted file mode 100644
index c3136f5c0ec..00000000000
--- a/src/test/ui/generator/pin-box-generator.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-fn assert_generator<G: Generator>(_: G) {
-}
-
-fn main() {
-    assert_generator(static || yield);
-    assert_generator(Box::pin(static || yield));
-}
diff --git a/src/test/ui/generator/print/generator-print-verbose-1.rs b/src/test/ui/generator/print/generator-print-verbose-1.rs
deleted file mode 100644
index fe0687722b0..00000000000
--- a/src/test/ui/generator/print/generator-print-verbose-1.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-// compile-flags: -Zverbose
-
-// Same as: src/test/ui/generator/issue-68112.stderr
-
-#![feature(generators, generator_trait)]
-
-use std::{
-    cell::RefCell,
-    sync::Arc,
-    pin::Pin,
-    ops::{Generator, GeneratorState},
-};
-
-pub struct Ready<T>(Option<T>);
-impl<T> Generator<()> for Ready<T> {
-    type Return = T;
-    type Yield = ();
-    fn resume(mut self: Pin<&mut Self>, _args: ()) -> GeneratorState<(), T> {
-        GeneratorState::Complete(self.0.take().unwrap())
-    }
-}
-pub fn make_gen1<T>(t: T) -> Ready<T> {
-    Ready(Some(t))
-}
-
-fn require_send(_: impl Send) {}
-
-fn make_non_send_generator() -> impl Generator<Return = Arc<RefCell<i32>>> {
-    make_gen1(Arc::new(RefCell::new(0)))
-}
-
-fn test1() {
-    let send_gen = || {
-        let _non_send_gen = make_non_send_generator();
-        yield;
-    };
-    require_send(send_gen);
-    //~^ ERROR generator cannot be sent between threads
-}
-
-pub fn make_gen2<T>(t: T) -> impl Generator<Return = T> {
-    || {
-        yield;
-        t
-    }
-}
-fn make_non_send_generator2() -> impl Generator<Return = Arc<RefCell<i32>>> {
-    make_gen2(Arc::new(RefCell::new(0)))
-}
-
-fn test2() {
-    let send_gen = || {
-        let _non_send_gen = make_non_send_generator2();
-        yield;
-    };
-    require_send(send_gen);
-    //~^ ERROR `RefCell<i32>` cannot be shared between threads safely
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/print/generator-print-verbose-1.stderr b/src/test/ui/generator/print/generator-print-verbose-1.stderr
deleted file mode 100644
index ebf35be581c..00000000000
--- a/src/test/ui/generator/print/generator-print-verbose-1.stderr
+++ /dev/null
@@ -1,62 +0,0 @@
-error: generator cannot be sent between threads safely
-  --> $DIR/generator-print-verbose-1.rs:37:18
-   |
-LL |     require_send(send_gen);
-   |                  ^^^^^^^^ generator is not `Send`
-   |
-   = help: the trait `Sync` is not implemented for `RefCell<i32>`
-note: generator is not `Send` as this value is used across a yield
-  --> $DIR/generator-print-verbose-1.rs:35:9
-   |
-LL |         let _non_send_gen = make_non_send_generator();
-   |             ------------- has type `Opaque(DefId(0:34 ~ generator_print_verbose_1[749a]::make_non_send_generator::{opaque#0}), [])` which is not `Send`
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `_non_send_gen` maybe used later
-LL |     };
-   |     - `_non_send_gen` is later dropped here
-note: required by a bound in `require_send`
-  --> $DIR/generator-print-verbose-1.rs:26:25
-   |
-LL | fn require_send(_: impl Send) {}
-   |                         ^^^^ required by this bound in `require_send`
-
-error[E0277]: `RefCell<i32>` cannot be shared between threads safely
-  --> $DIR/generator-print-verbose-1.rs:56:18
-   |
-LL |     require_send(send_gen);
-   |     ------------ ^^^^^^^^ `RefCell<i32>` cannot be shared between threads safely
-   |     |
-   |     required by a bound introduced by this call
-   |
-   = help: the trait `Sync` is not implemented for `RefCell<i32>`
-   = note: required for `Arc<RefCell<i32>>` to implement `Send`
-note: required because it's used within this generator
-  --> $DIR/generator-print-verbose-1.rs:42:5
-   |
-LL |     || {
-   |     ^^
-note: required because it appears within the type `Opaque(DefId(0:35 ~ generator_print_verbose_1[749a]::make_gen2::{opaque#0}), [Arc<RefCell<i32>>])`
-  --> $DIR/generator-print-verbose-1.rs:41:30
-   |
-LL | pub fn make_gen2<T>(t: T) -> impl Generator<Return = T> {
-   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: required because it appears within the type `Opaque(DefId(0:36 ~ generator_print_verbose_1[749a]::make_non_send_generator2::{opaque#0}), [])`
-  --> $DIR/generator-print-verbose-1.rs:47:34
-   |
-LL | fn make_non_send_generator2() -> impl Generator<Return = Arc<RefCell<i32>>> {
-   |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   = note: required because it captures the following types: `Opaque(DefId(0:36 ~ generator_print_verbose_1[749a]::make_non_send_generator2::{opaque#0}), [])`, `()`
-note: required because it's used within this generator
-  --> $DIR/generator-print-verbose-1.rs:52:20
-   |
-LL |     let send_gen = || {
-   |                    ^^
-note: required by a bound in `require_send`
-  --> $DIR/generator-print-verbose-1.rs:26:25
-   |
-LL | fn require_send(_: impl Send) {}
-   |                         ^^^^ required by this bound in `require_send`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/print/generator-print-verbose-2.rs b/src/test/ui/generator/print/generator-print-verbose-2.rs
deleted file mode 100644
index d914719cb36..00000000000
--- a/src/test/ui/generator/print/generator-print-verbose-2.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// compile-flags: -Zverbose
-
-// Same as test/ui/generator/not-send-sync.rs
-#![feature(generators)]
-
-use std::cell::Cell;
-
-fn main() {
-    fn assert_sync<T: Sync>(_: T) {}
-    fn assert_send<T: Send>(_: T) {}
-
-    assert_sync(|| {
-        //~^ ERROR: generator cannot be shared between threads safely
-        let a = Cell::new(2);
-        yield;
-    });
-
-    let a = Cell::new(2);
-    assert_send(|| {
-        //~^ ERROR: E0277
-        drop(&a);
-        yield;
-    });
-}
diff --git a/src/test/ui/generator/print/generator-print-verbose-2.stderr b/src/test/ui/generator/print/generator-print-verbose-2.stderr
deleted file mode 100644
index 909e49c38b8..00000000000
--- a/src/test/ui/generator/print/generator-print-verbose-2.stderr
+++ /dev/null
@@ -1,56 +0,0 @@
-error[E0277]: `Cell<i32>` cannot be shared between threads safely
-  --> $DIR/generator-print-verbose-2.rs:19:17
-   |
-LL |       assert_send(|| {
-   |  _____-----------_^
-   | |     |
-   | |     required by a bound introduced by this call
-LL | |
-LL | |         drop(&a);
-LL | |         yield;
-LL | |     });
-   | |_____^ `Cell<i32>` cannot be shared between threads safely
-   |
-   = help: the trait `Sync` is not implemented for `Cell<i32>`
-   = note: required for `&'_#4r Cell<i32>` to implement `Send`
-note: required because it's used within this generator
-  --> $DIR/generator-print-verbose-2.rs:19:17
-   |
-LL |     assert_send(|| {
-   |                 ^^
-note: required by a bound in `assert_send`
-  --> $DIR/generator-print-verbose-2.rs:10:23
-   |
-LL |     fn assert_send<T: Send>(_: T) {}
-   |                       ^^^^ required by this bound in `assert_send`
-
-error: generator cannot be shared between threads safely
-  --> $DIR/generator-print-verbose-2.rs:12:17
-   |
-LL |       assert_sync(|| {
-   |  _________________^
-LL | |
-LL | |         let a = Cell::new(2);
-LL | |         yield;
-LL | |     });
-   | |_____^ generator is not `Sync`
-   |
-   = help: within `[main::{closure#0} upvar_tys=() {Cell<i32>, ()}]`, the trait `Sync` is not implemented for `Cell<i32>`
-note: generator is not `Sync` as this value is used across a yield
-  --> $DIR/generator-print-verbose-2.rs:15:9
-   |
-LL |         let a = Cell::new(2);
-   |             - has type `Cell<i32>` which is not `Sync`
-LL |         yield;
-   |         ^^^^^ yield occurs here, with `a` maybe used later
-LL |     });
-   |     - `a` is later dropped here
-note: required by a bound in `assert_sync`
-  --> $DIR/generator-print-verbose-2.rs:9:23
-   |
-LL |     fn assert_sync<T: Sync>(_: T) {}
-   |                       ^^^^ required by this bound in `assert_sync`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/print/generator-print-verbose-3.rs b/src/test/ui/generator/print/generator-print-verbose-3.rs
deleted file mode 100644
index 8689539ec8e..00000000000
--- a/src/test/ui/generator/print/generator-print-verbose-3.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// compile-flags: -Zverbose
-
-#![feature(generators, generator_trait)]
-
-fn main() {
-    let x = "Type mismatch test";
-    let generator :() = || {
-    //~^ ERROR mismatched types
-        yield 1i32;
-        return x
-    };
-}
diff --git a/src/test/ui/generator/print/generator-print-verbose-3.stderr b/src/test/ui/generator/print/generator-print-verbose-3.stderr
deleted file mode 100644
index d15646259b2..00000000000
--- a/src/test/ui/generator/print/generator-print-verbose-3.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/generator-print-verbose-3.rs:7:25
-   |
-LL |       let generator :() = || {
-   |  ____________________--___^
-   | |                    |
-   | |                    expected due to this
-LL | |
-LL | |         yield 1i32;
-LL | |         return x
-LL | |     };
-   | |_____^ expected `()`, found generator
-   |
-   = note: expected unit type `()`
-              found generator `[main::{closure#0} upvar_tys=(unavailable)]`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/generator/reborrow-mut-upvar.rs b/src/test/ui/generator/reborrow-mut-upvar.rs
deleted file mode 100644
index dbd9e24e205..00000000000
--- a/src/test/ui/generator/reborrow-mut-upvar.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// run-pass
-
-#![feature(generators)]
-
-fn _run(bar: &mut i32) {
-    || { //~ WARN unused generator that must be used
-        {
-            let _baz = &*bar;
-            yield;
-        }
-
-        *bar = 2;
-    };
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/reborrow-mut-upvar.stderr b/src/test/ui/generator/reborrow-mut-upvar.stderr
deleted file mode 100644
index 2e1fec35eaf..00000000000
--- a/src/test/ui/generator/reborrow-mut-upvar.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/reborrow-mut-upvar.rs:6:5
-   |
-LL | /     || {
-LL | |         {
-LL | |             let _baz = &*bar;
-LL | |             yield;
-...  |
-LL | |         *bar = 2;
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/ref-escapes-but-not-over-yield.rs b/src/test/ui/generator/ref-escapes-but-not-over-yield.rs
deleted file mode 100644
index 3856d8233bc..00000000000
--- a/src/test/ui/generator/ref-escapes-but-not-over-yield.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-#![feature(generators)]
-
-fn foo(x: &i32) {
-    // In this case, a reference to `b` escapes the generator, but not
-    // because of a yield. We see that there is no yield in the scope of
-    // `b` and give the more generic error message.
-    let mut a = &3;
-    let mut b = move || {
-        yield();
-        let b = 5;
-        a = &b;
-        //~^ ERROR borrowed data escapes outside of generator
-    };
-}
-
-fn main() { }
diff --git a/src/test/ui/generator/ref-escapes-but-not-over-yield.stderr b/src/test/ui/generator/ref-escapes-but-not-over-yield.stderr
deleted file mode 100644
index 5fc81004098..00000000000
--- a/src/test/ui/generator/ref-escapes-but-not-over-yield.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0521]: borrowed data escapes outside of generator
-  --> $DIR/ref-escapes-but-not-over-yield.rs:11:9
-   |
-LL |     let mut a = &3;
-   |         ----- `a` declared here, outside of the generator body
-...
-LL |         a = &b;
-   |         ^^^^--
-   |         |   |
-   |         |   borrow is only valid in the generator body
-   |         reference to `b` escapes the generator body here
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0521`.
diff --git a/src/test/ui/generator/ref-upvar-not-send.rs b/src/test/ui/generator/ref-upvar-not-send.rs
deleted file mode 100644
index eb9ef63ecfc..00000000000
--- a/src/test/ui/generator/ref-upvar-not-send.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-// For `Send` generators, suggest a `T: Sync` requirement for `&T` upvars,
-// and suggest a `T: Send` requirement for `&mut T` upvars.
-
-#![feature(generators)]
-
-fn assert_send<T: Send>(_: T) {}
-//~^ NOTE required by a bound in `assert_send`
-//~| NOTE required by this bound in `assert_send`
-//~| NOTE required by a bound in `assert_send`
-//~| NOTE required by this bound in `assert_send`
-
-fn main() {
-    let x: &*mut () = &std::ptr::null_mut();
-    let y: &mut *mut () = &mut std::ptr::null_mut();
-    assert_send(move || {
-        //~^ ERROR generator cannot be sent between threads safely
-        //~| NOTE generator is not `Send`
-        yield;
-        let _x = x;
-    });
-    //~^^ NOTE captured value is not `Send` because `&` references cannot be sent unless their referent is `Sync`
-    //~| NOTE has type `&*mut ()` which is not `Send`, because `*mut ()` is not `Sync`
-    assert_send(move || {
-        //~^ ERROR generator cannot be sent between threads safely
-        //~| NOTE generator is not `Send`
-        yield;
-        let _y = y;
-    });
-    //~^^ NOTE captured value is not `Send` because `&mut` references cannot be sent unless their referent is `Send`
-    //~| NOTE has type `&mut *mut ()` which is not `Send`, because `*mut ()` is not `Send`
-}
diff --git a/src/test/ui/generator/ref-upvar-not-send.stderr b/src/test/ui/generator/ref-upvar-not-send.stderr
deleted file mode 100644
index 689ace67e34..00000000000
--- a/src/test/ui/generator/ref-upvar-not-send.stderr
+++ /dev/null
@@ -1,50 +0,0 @@
-error: generator cannot be sent between threads safely
-  --> $DIR/ref-upvar-not-send.rs:15:17
-   |
-LL |       assert_send(move || {
-   |  _________________^
-LL | |
-LL | |
-LL | |         yield;
-LL | |         let _x = x;
-LL | |     });
-   | |_____^ generator is not `Send`
-   |
-   = help: the trait `Sync` is not implemented for `*mut ()`
-note: captured value is not `Send` because `&` references cannot be sent unless their referent is `Sync`
-  --> $DIR/ref-upvar-not-send.rs:19:18
-   |
-LL |         let _x = x;
-   |                  ^ has type `&*mut ()` which is not `Send`, because `*mut ()` is not `Sync`
-note: required by a bound in `assert_send`
-  --> $DIR/ref-upvar-not-send.rs:6:19
-   |
-LL | fn assert_send<T: Send>(_: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-
-error: generator cannot be sent between threads safely
-  --> $DIR/ref-upvar-not-send.rs:23:17
-   |
-LL |       assert_send(move || {
-   |  _________________^
-LL | |
-LL | |
-LL | |         yield;
-LL | |         let _y = y;
-LL | |     });
-   | |_____^ generator is not `Send`
-   |
-   = help: within `[generator@$DIR/ref-upvar-not-send.rs:23:17: 23:24]`, the trait `Send` is not implemented for `*mut ()`
-note: captured value is not `Send` because `&mut` references cannot be sent unless their referent is `Send`
-  --> $DIR/ref-upvar-not-send.rs:27:18
-   |
-LL |         let _y = y;
-   |                  ^ has type `&mut *mut ()` which is not `Send`, because `*mut ()` is not `Send`
-note: required by a bound in `assert_send`
-  --> $DIR/ref-upvar-not-send.rs:6:19
-   |
-LL | fn assert_send<T: Send>(_: T) {}
-   |                   ^^^^ required by this bound in `assert_send`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/generator/reinit-in-match-guard.rs b/src/test/ui/generator/reinit-in-match-guard.rs
deleted file mode 100644
index 260b341a525..00000000000
--- a/src/test/ui/generator/reinit-in-match-guard.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// build-pass
-
-#![feature(generators)]
-
-#![allow(unused_assignments, dead_code)]
-
-fn main() {
-    let _ = || {
-        let mut x = vec![22_usize];
-        std::mem::drop(x);
-        match y() {
-            true if {
-                x = vec![];
-                false
-            } => {}
-            _ => {
-                yield;
-            }
-        }
-    };
-}
-
-fn y() -> bool {
-    true
-}
diff --git a/src/test/ui/generator/resume-after-return.rs b/src/test/ui/generator/resume-after-return.rs
deleted file mode 100644
index 01a059a161c..00000000000
--- a/src/test/ui/generator/resume-after-return.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// run-pass
-// needs-unwind
-
-
-#![feature(generators, generator_trait)]
-
-use std::ops::{GeneratorState, Generator};
-use std::pin::Pin;
-use std::panic;
-
-fn main() {
-    let mut foo = || {
-        if true {
-            return
-        }
-        yield;
-    };
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-
-    match panic::catch_unwind(move || Pin::new(&mut foo).resume(())) {
-        Ok(_) => panic!("generator successfully resumed"),
-        Err(_) => {}
-    }
-}
diff --git a/src/test/ui/generator/resume-arg-late-bound.rs b/src/test/ui/generator/resume-arg-late-bound.rs
deleted file mode 100644
index 1c35ba80d2b..00000000000
--- a/src/test/ui/generator/resume-arg-late-bound.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-//! Tests that we cannot produce a generator that accepts a resume argument
-//! with any lifetime and then stores it across a `yield`.
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-fn test(a: impl for<'a> Generator<&'a mut bool>) {}
-
-fn main() {
-    let gen = |arg: &mut bool| {
-        yield ();
-        *arg = true;
-    };
-    test(gen);
-    //~^ ERROR mismatched types
-}
diff --git a/src/test/ui/generator/resume-arg-late-bound.stderr b/src/test/ui/generator/resume-arg-late-bound.stderr
deleted file mode 100644
index 34ee4036cc5..00000000000
--- a/src/test/ui/generator/resume-arg-late-bound.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/resume-arg-late-bound.rs:15:5
-   |
-LL |     test(gen);
-   |     ^^^^^^^^^ one type is more general than the other
-   |
-   = note: expected trait `for<'a> Generator<&'a mut bool>`
-              found trait `Generator<&mut bool>`
-note: the lifetime requirement is introduced here
-  --> $DIR/resume-arg-late-bound.rs:8:17
-   |
-LL | fn test(a: impl for<'a> Generator<&'a mut bool>) {}
-   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/generator/resume-arg-size.rs b/src/test/ui/generator/resume-arg-size.rs
deleted file mode 100644
index b93dc54f7a9..00000000000
--- a/src/test/ui/generator/resume-arg-size.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-#![feature(generators)]
-
-// run-pass
-
-use std::mem::size_of_val;
-
-fn main() {
-    // Generator taking a `Copy`able resume arg.
-    let gen_copy = |mut x: usize| {
-        loop {
-            drop(x);
-            x = yield;
-        }
-    };
-
-    // Generator taking a non-`Copy` resume arg.
-    let gen_move = |mut x: Box<usize>| {
-        loop {
-            drop(x);
-            x = yield;
-        }
-    };
-
-    // Neither of these generators have the resume arg live across the `yield`, so they should be
-    // 1 Byte in size (only storing the discriminant)
-    assert_eq!(size_of_val(&gen_copy), 1);
-    assert_eq!(size_of_val(&gen_move), 1);
-}
diff --git a/src/test/ui/generator/resume-live-across-yield.rs b/src/test/ui/generator/resume-live-across-yield.rs
deleted file mode 100644
index 4c4cf117a55..00000000000
--- a/src/test/ui/generator/resume-live-across-yield.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::ops::{Generator, GeneratorState};
-use std::pin::Pin;
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-static DROP: AtomicUsize = AtomicUsize::new(0);
-
-#[derive(PartialEq, Eq, Debug)]
-struct Dropper(String);
-
-impl Drop for Dropper {
-    fn drop(&mut self) {
-        DROP.fetch_add(1, Ordering::SeqCst);
-    }
-}
-
-fn main() {
-    let mut g = |mut _d| {
-        _d = yield;
-        _d
-    };
-
-    let mut g = Pin::new(&mut g);
-
-    assert_eq!(
-        g.as_mut().resume(Dropper(String::from("Hello world!"))),
-        GeneratorState::Yielded(())
-    );
-    assert_eq!(DROP.load(Ordering::Acquire), 0);
-    match g.as_mut().resume(Dropper(String::from("Number Two"))) {
-        GeneratorState::Complete(dropper) => {
-            assert_eq!(DROP.load(Ordering::Acquire), 1);
-            assert_eq!(dropper.0, "Number Two");
-            drop(dropper);
-            assert_eq!(DROP.load(Ordering::Acquire), 2);
-        }
-        _ => unreachable!(),
-    }
-
-    drop(g);
-    assert_eq!(DROP.load(Ordering::Acquire), 2);
-}
diff --git a/src/test/ui/generator/retain-resume-ref.rs b/src/test/ui/generator/retain-resume-ref.rs
deleted file mode 100644
index 0606ea71cdf..00000000000
--- a/src/test/ui/generator/retain-resume-ref.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-//! This test ensures that a mutable reference cannot be passed as a resume argument twice.
-
-#![feature(generators, generator_trait)]
-
-use std::marker::Unpin;
-use std::ops::{
-    Generator,
-    GeneratorState::{self, *},
-};
-use std::pin::Pin;
-
-fn main() {
-    let mut thing = String::from("hello");
-
-    let mut gen = |r| {
-        if false {
-            yield r;
-        }
-    };
-
-    let mut gen = Pin::new(&mut gen);
-    gen.as_mut().resume(&mut thing);
-    gen.as_mut().resume(&mut thing);
-    //~^ cannot borrow `thing` as mutable more than once at a time
-}
diff --git a/src/test/ui/generator/retain-resume-ref.stderr b/src/test/ui/generator/retain-resume-ref.stderr
deleted file mode 100644
index e33310d12d9..00000000000
--- a/src/test/ui/generator/retain-resume-ref.stderr
+++ /dev/null
@@ -1,13 +0,0 @@
-error[E0499]: cannot borrow `thing` as mutable more than once at a time
-  --> $DIR/retain-resume-ref.rs:23:25
-   |
-LL |     gen.as_mut().resume(&mut thing);
-   |                         ---------- first mutable borrow occurs here
-LL |     gen.as_mut().resume(&mut thing);
-   |                  ------ ^^^^^^^^^^ second mutable borrow occurs here
-   |                  |
-   |                  first borrow later used by call
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0499`.
diff --git a/src/test/ui/generator/size-moved-locals.rs b/src/test/ui/generator/size-moved-locals.rs
deleted file mode 100644
index 601a3141828..00000000000
--- a/src/test/ui/generator/size-moved-locals.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-// run-pass
-// Test that we don't duplicate storage for a variable that is moved to another
-// binding. This used to happen in the presence of unwind and drop edges (see
-// `complex` below.)
-//
-// The exact sizes here can change (we'd like to know when they do). What we
-// don't want to see is the `complex` generator size being upwards of 2048 bytes
-// (which would indicate it is reserving space for two copies of Foo.)
-//
-// See issue #59123 for a full explanation.
-
-// edition:2018
-// ignore-wasm32 issue #62807
-// ignore-asmjs issue #62807
-// needs-unwind Size of Closures change on panic=abort
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-const FOO_SIZE: usize = 1024;
-struct Foo(#[allow(unused_tuple_struct_fields)] [u8; FOO_SIZE]);
-
-impl Drop for Foo {
-    fn drop(&mut self) {}
-}
-
-fn move_before_yield() -> impl Generator<Yield = (), Return = ()> {
-    static || {
-        let first = Foo([0; FOO_SIZE]);
-        let _second = first;
-        yield;
-        // _second dropped here
-    }
-}
-
-fn noop() {}
-
-fn move_before_yield_with_noop() -> impl Generator<Yield = (), Return = ()> {
-    static || {
-        let first = Foo([0; FOO_SIZE]);
-        noop();
-        let _second = first;
-        yield;
-        // _second dropped here
-    }
-}
-
-// Today we don't have NRVO (we allocate space for both `first` and `second`,)
-// but we can overlap `first` with `_third`.
-fn overlap_move_points() -> impl Generator<Yield = (), Return = ()> {
-    static || {
-        let first = Foo([0; FOO_SIZE]);
-        yield;
-        let second = first;
-        yield;
-        let _third = second;
-        yield;
-    }
-}
-
-fn overlap_x_and_y() -> impl Generator<Yield = (), Return = ()> {
-    static || {
-        let x = Foo([0; FOO_SIZE]);
-        yield;
-        drop(x);
-        let y = Foo([0; FOO_SIZE]);
-        yield;
-        drop(y);
-    }
-}
-
-fn main() {
-    assert_eq!(1025, std::mem::size_of_val(&move_before_yield()));
-    assert_eq!(1026, std::mem::size_of_val(&move_before_yield_with_noop()));
-    assert_eq!(2051, std::mem::size_of_val(&overlap_move_points()));
-    assert_eq!(1026, std::mem::size_of_val(&overlap_x_and_y()));
-}
diff --git a/src/test/ui/generator/sized-yield.rs b/src/test/ui/generator/sized-yield.rs
deleted file mode 100644
index c6dd738d6ac..00000000000
--- a/src/test/ui/generator/sized-yield.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-use std::pin::Pin;
-
-fn main() {
-   let s = String::from("foo");
-   let mut gen = move || {
-   //~^ ERROR the size for values of type
-       yield s[..];
-   };
-   Pin::new(&mut gen).resume(());
-   //~^ ERROR the size for values of type
-}
diff --git a/src/test/ui/generator/sized-yield.stderr b/src/test/ui/generator/sized-yield.stderr
deleted file mode 100644
index fb34540d969..00000000000
--- a/src/test/ui/generator/sized-yield.stderr
+++ /dev/null
@@ -1,26 +0,0 @@
-error[E0277]: the size for values of type `str` cannot be known at compilation time
-  --> $DIR/sized-yield.rs:8:26
-   |
-LL |      let mut gen = move || {
-   |  __________________________^
-LL | |
-LL | |        yield s[..];
-LL | |    };
-   | |____^ doesn't have a size known at compile-time
-   |
-   = help: the trait `Sized` is not implemented for `str`
-   = note: the yield type of a generator must have a statically known size
-
-error[E0277]: the size for values of type `str` cannot be known at compilation time
-  --> $DIR/sized-yield.rs:12:23
-   |
-LL |    Pin::new(&mut gen).resume(());
-   |                       ^^^^^^ doesn't have a size known at compile-time
-   |
-   = help: the trait `Sized` is not implemented for `str`
-note: required by a bound in `GeneratorState`
-  --> $SRC_DIR/core/src/ops/generator.rs:LL:COL
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/smoke-resume-args.rs b/src/test/ui/generator/smoke-resume-args.rs
deleted file mode 100644
index fa9271c538f..00000000000
--- a/src/test/ui/generator/smoke-resume-args.rs
+++ /dev/null
@@ -1,100 +0,0 @@
-// run-pass
-
-// revisions: default nomiropt
-//[nomiropt]compile-flags: -Z mir-opt-level=0
-
-#![feature(generators, generator_trait)]
-
-use std::fmt::Debug;
-use std::marker::Unpin;
-use std::ops::{
-    Generator,
-    GeneratorState::{self, *},
-};
-use std::pin::Pin;
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-fn drain<G: Generator<R, Yield = Y> + Unpin, R, Y>(
-    gen: &mut G,
-    inout: Vec<(R, GeneratorState<Y, G::Return>)>,
-) where
-    Y: Debug + PartialEq,
-    G::Return: Debug + PartialEq,
-{
-    let mut gen = Pin::new(gen);
-
-    for (input, out) in inout {
-        assert_eq!(gen.as_mut().resume(input), out);
-    }
-}
-
-static DROPS: AtomicUsize = AtomicUsize::new(0);
-
-#[derive(Debug, PartialEq)]
-struct DropMe;
-
-impl Drop for DropMe {
-    fn drop(&mut self) {
-        DROPS.fetch_add(1, Ordering::SeqCst);
-    }
-}
-
-fn expect_drops<T>(expected_drops: usize, f: impl FnOnce() -> T) -> T {
-    DROPS.store(0, Ordering::SeqCst);
-
-    let res = f();
-
-    let actual_drops = DROPS.load(Ordering::SeqCst);
-    assert_eq!(actual_drops, expected_drops);
-    res
-}
-
-fn main() {
-    drain(
-        &mut |mut b| {
-            while b != 0 {
-                b = yield (b + 1);
-            }
-            -1
-        },
-        vec![(1, Yielded(2)), (-45, Yielded(-44)), (500, Yielded(501)), (0, Complete(-1))],
-    );
-
-    expect_drops(2, || drain(&mut |a| yield a, vec![(DropMe, Yielded(DropMe))]));
-
-    expect_drops(6, || {
-        drain(
-            &mut |a| yield yield a,
-            vec![(DropMe, Yielded(DropMe)), (DropMe, Yielded(DropMe)), (DropMe, Complete(DropMe))],
-        )
-    });
-
-    #[allow(unreachable_code)]
-    expect_drops(2, || drain(&mut |a| yield return a, vec![(DropMe, Complete(DropMe))]));
-
-    expect_drops(2, || {
-        drain(
-            &mut |a: DropMe| {
-                if false { yield () } else { a }
-            },
-            vec![(DropMe, Complete(DropMe))],
-        )
-    });
-
-    expect_drops(4, || {
-        drain(
-            #[allow(unused_assignments, unused_variables)]
-            &mut |mut a: DropMe| {
-                a = yield;
-                a = yield;
-                a = yield;
-            },
-            vec![
-                (DropMe, Yielded(())),
-                (DropMe, Yielded(())),
-                (DropMe, Yielded(())),
-                (DropMe, Complete(())),
-            ],
-        )
-    });
-}
diff --git a/src/test/ui/generator/smoke.rs b/src/test/ui/generator/smoke.rs
deleted file mode 100644
index 7a917a05dd9..00000000000
--- a/src/test/ui/generator/smoke.rs
+++ /dev/null
@@ -1,177 +0,0 @@
-// run-pass
-
-// revisions: default nomiropt
-//[nomiropt]compile-flags: -Z mir-opt-level=0
-
-// ignore-emscripten no threads support
-// compile-flags: --test
-
-#![feature(generators, generator_trait)]
-
-use std::ops::{GeneratorState, Generator};
-use std::pin::Pin;
-use std::thread;
-
-#[test]
-fn simple() {
-    let mut foo = || {
-        if false {
-            yield;
-        }
-    };
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-}
-
-#[test]
-fn return_capture() {
-    let a = String::from("foo");
-    let mut foo = || {
-        if false {
-            yield;
-        }
-        a
-    };
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(ref s) if *s == "foo" => {}
-        s => panic!("bad state: {:?}", s),
-    }
-}
-
-#[test]
-fn simple_yield() {
-    let mut foo = || {
-        yield;
-    };
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Yielded(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-}
-
-#[test]
-fn yield_capture() {
-    let b = String::from("foo");
-    let mut foo = || {
-        yield b;
-    };
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Yielded(ref s) if *s == "foo" => {}
-        s => panic!("bad state: {:?}", s),
-    }
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-}
-
-#[test]
-fn simple_yield_value() {
-    let mut foo = || {
-        yield String::from("bar");
-        return String::from("foo")
-    };
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Yielded(ref s) if *s == "bar" => {}
-        s => panic!("bad state: {:?}", s),
-    }
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(ref s) if *s == "foo" => {}
-        s => panic!("bad state: {:?}", s),
-    }
-}
-
-#[test]
-fn return_after_yield() {
-    let a = String::from("foo");
-    let mut foo = || {
-        yield;
-        return a
-    };
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Yielded(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(ref s) if *s == "foo" => {}
-        s => panic!("bad state: {:?}", s),
-    }
-}
-
-#[test]
-fn send_and_sync() {
-    assert_send_sync(|| {
-        yield
-    });
-    assert_send_sync(|| {
-        yield String::from("foo");
-    });
-    assert_send_sync(|| {
-        yield;
-        return String::from("foo");
-    });
-    let a = 3;
-    assert_send_sync(|| {
-        yield a;
-        return
-    });
-    let a = 3;
-    assert_send_sync(move || {
-        yield a;
-        return
-    });
-    let a = String::from("a");
-    assert_send_sync(|| {
-        yield ;
-        drop(a);
-        return
-    });
-    let a = String::from("a");
-    assert_send_sync(move || {
-        yield ;
-        drop(a);
-        return
-    });
-
-    fn assert_send_sync<T: Send + Sync>(_: T) {}
-}
-
-#[test]
-fn send_over_threads() {
-    let mut foo = || { yield };
-    thread::spawn(move || {
-        match Pin::new(&mut foo).resume(()) {
-            GeneratorState::Yielded(()) => {}
-            s => panic!("bad state: {:?}", s),
-        }
-        match Pin::new(&mut foo).resume(()) {
-            GeneratorState::Complete(()) => {}
-            s => panic!("bad state: {:?}", s),
-        }
-    }).join().unwrap();
-
-    let a = String::from("a");
-    let mut foo = || { yield a };
-    thread::spawn(move || {
-        match Pin::new(&mut foo).resume(()) {
-            GeneratorState::Yielded(ref s) if *s == "a" => {}
-            s => panic!("bad state: {:?}", s),
-        }
-        match Pin::new(&mut foo).resume(()) {
-            GeneratorState::Complete(()) => {}
-            s => panic!("bad state: {:?}", s),
-        }
-    }).join().unwrap();
-}
diff --git a/src/test/ui/generator/static-generators.rs b/src/test/ui/generator/static-generators.rs
deleted file mode 100644
index d098bf1e688..00000000000
--- a/src/test/ui/generator/static-generators.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// run-pass
-
-#![feature(generators, generator_trait)]
-
-use std::pin::Pin;
-use std::ops::{Generator, GeneratorState};
-
-fn main() {
-    let mut generator = static || {
-        let a = true;
-        let b = &a;
-        yield;
-        assert_eq!(b as *const _, &a as *const _);
-    };
-    // SAFETY: We shadow the original generator variable so have no safe API to
-    // move it after this point.
-    let mut generator = unsafe { Pin::new_unchecked(&mut generator) };
-    assert_eq!(generator.as_mut().resume(()), GeneratorState::Yielded(()));
-    assert_eq!(generator.as_mut().resume(()), GeneratorState::Complete(()));
-}
diff --git a/src/test/ui/generator/static-mut-reference-across-yield.rs b/src/test/ui/generator/static-mut-reference-across-yield.rs
deleted file mode 100644
index 0fa6d9cdc77..00000000000
--- a/src/test/ui/generator/static-mut-reference-across-yield.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-// build-pass
-// revisions: mir thir
-// [thir]compile-flags: -Zthir-unsafeck
-
-#![feature(generators)]
-
-static mut A: [i32; 5] = [1, 2, 3, 4, 5];
-
-fn is_send_sync<T: Send + Sync>(_: T) {}
-
-fn main() {
-    unsafe {
-        let gen_index = static || {
-            let u = A[{
-                yield;
-                1
-            }];
-        };
-        let gen_match = static || match A {
-            i if {
-                yield;
-                true
-            } =>
-            {
-                ()
-            }
-            _ => (),
-        };
-        is_send_sync(gen_index);
-        is_send_sync(gen_match);
-    }
-}
diff --git a/src/test/ui/generator/static-not-unpin.rs b/src/test/ui/generator/static-not-unpin.rs
deleted file mode 100644
index cfcb94737be..00000000000
--- a/src/test/ui/generator/static-not-unpin.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-#![feature(generators)]
-
-// normalize-stderr-test "std::pin::Unpin" -> "std::marker::Unpin"
-
-use std::marker::Unpin;
-
-fn assert_unpin<T: Unpin>(_: T) {
-}
-
-fn main() {
-    let mut generator = static || {
-        yield;
-    };
-    assert_unpin(generator); //~ ERROR E0277
-}
diff --git a/src/test/ui/generator/static-not-unpin.stderr b/src/test/ui/generator/static-not-unpin.stderr
deleted file mode 100644
index e3859595fd2..00000000000
--- a/src/test/ui/generator/static-not-unpin.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-error[E0277]: `[static generator@$DIR/static-not-unpin.rs:11:25: 11:34]` cannot be unpinned
-  --> $DIR/static-not-unpin.rs:14:18
-   |
-LL |     assert_unpin(generator);
-   |     ------------ ^^^^^^^^^ the trait `Unpin` is not implemented for `[static generator@$DIR/static-not-unpin.rs:11:25: 11:34]`
-   |     |
-   |     required by a bound introduced by this call
-   |
-   = note: consider using `Box::pin`
-note: required by a bound in `assert_unpin`
-  --> $DIR/static-not-unpin.rs:7:20
-   |
-LL | fn assert_unpin<T: Unpin>(_: T) {
-   |                    ^^^^^ required by this bound in `assert_unpin`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/static-reference-across-yield.rs b/src/test/ui/generator/static-reference-across-yield.rs
deleted file mode 100644
index 23b11593bb5..00000000000
--- a/src/test/ui/generator/static-reference-across-yield.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// build-pass
-#![feature(generators)]
-
-static A: [i32; 5] = [1, 2, 3, 4, 5];
-
-fn main() {
-    static || {
-        let u = A[{yield; 1}];
-    };
-    static || {
-        match A {
-            i if { yield; true } => (),
-            _ => (),
-        }
-    };
-}
diff --git a/src/test/ui/generator/too-live-local-in-immovable-gen.rs b/src/test/ui/generator/too-live-local-in-immovable-gen.rs
deleted file mode 100644
index e0b856db7a5..00000000000
--- a/src/test/ui/generator/too-live-local-in-immovable-gen.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// run-pass
-#![allow(unused_unsafe)]
-
-#![feature(generators)]
-
-fn main() {
-    unsafe {
-        static move || { //~ WARN unused generator that must be used
-            // Tests that the generator transformation finds out that `a` is not live
-            // during the yield expression. Type checking will also compute liveness
-            // and it should also find out that `a` is not live.
-            // The compiler will panic if the generator transformation finds that
-            // `a` is live and type checking finds it dead.
-            let a = {
-                yield ();
-                4i32
-            };
-            let _ = &a;
-        };
-    }
-}
diff --git a/src/test/ui/generator/too-live-local-in-immovable-gen.stderr b/src/test/ui/generator/too-live-local-in-immovable-gen.stderr
deleted file mode 100644
index e262f213f63..00000000000
--- a/src/test/ui/generator/too-live-local-in-immovable-gen.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/too-live-local-in-immovable-gen.rs:8:9
-   |
-LL | /         static move || {
-LL | |             // Tests that the generator transformation finds out that `a` is not live
-LL | |             // during the yield expression. Type checking will also compute liveness
-LL | |             // and it should also find out that `a` is not live.
-...  |
-LL | |             let _ = &a;
-LL | |         };
-   | |_________^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/too-many-parameters.rs b/src/test/ui/generator/too-many-parameters.rs
deleted file mode 100644
index 7a353ea298b..00000000000
--- a/src/test/ui/generator/too-many-parameters.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-#![feature(generators)]
-
-fn main() {
-    |(), ()| {
-        //~^ error: too many parameters for a generator
-        yield;
-    };
-}
diff --git a/src/test/ui/generator/too-many-parameters.stderr b/src/test/ui/generator/too-many-parameters.stderr
deleted file mode 100644
index 22d40db3f26..00000000000
--- a/src/test/ui/generator/too-many-parameters.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0628]: too many parameters for a generator (expected 0 or 1 parameters)
-  --> $DIR/too-many-parameters.rs:4:5
-   |
-LL |     |(), ()| {
-   |     ^^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0628`.
diff --git a/src/test/ui/generator/type-mismatch-error.rs b/src/test/ui/generator/type-mismatch-error.rs
deleted file mode 100644
index d39c788a84b..00000000000
--- a/src/test/ui/generator/type-mismatch-error.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-//! Test that we get the expected type mismatch error instead of "closure is expected to take 0
-//! arguments" (which got introduced after implementing resume arguments).
-
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-fn f<G: Generator>(_: G, _: G::Return) {}
-
-fn main() {
-    f(
-        |a: u8| {
-            if false {
-                yield ();
-            } else {
-                a
-                //~^ error: `if` and `else` have incompatible types
-            }
-        },
-        0u8,
-    );
-}
diff --git a/src/test/ui/generator/type-mismatch-error.stderr b/src/test/ui/generator/type-mismatch-error.stderr
deleted file mode 100644
index 8f5949533e2..00000000000
--- a/src/test/ui/generator/type-mismatch-error.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0308]: `if` and `else` have incompatible types
-  --> $DIR/type-mismatch-error.rs:16:17
-   |
-LL | /             if false {
-LL | |                 yield ();
-   | |                 ---------
-   | |                 |       |
-   | |                 |       help: consider removing this semicolon
-   | |                 expected because of this
-LL | |             } else {
-LL | |                 a
-   | |                 ^ expected `()`, found `u8`
-LL | |
-LL | |             }
-   | |_____________- `if` and `else` have incompatible types
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/generator/type-mismatch-signature-deduction.rs b/src/test/ui/generator/type-mismatch-signature-deduction.rs
deleted file mode 100644
index 8d1ce6c7a43..00000000000
--- a/src/test/ui/generator/type-mismatch-signature-deduction.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::Generator;
-
-fn foo() -> impl Generator<Return = i32> {
-    //~^ ERROR type mismatch
-    || {
-        if false {
-            return Ok(6);
-        }
-
-        yield ();
-
-        5 //~ ERROR mismatched types [E0308]
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/type-mismatch-signature-deduction.stderr b/src/test/ui/generator/type-mismatch-signature-deduction.stderr
deleted file mode 100644
index b98da1ed8be..00000000000
--- a/src/test/ui/generator/type-mismatch-signature-deduction.stderr
+++ /dev/null
@@ -1,33 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/type-mismatch-signature-deduction.rs:14:9
-   |
-LL |         5
-   |         ^ expected enum `Result`, found integer
-   |
-   = note: expected enum `Result<{integer}, _>`
-              found type `{integer}`
-note: return type inferred to be `Result<{integer}, _>` here
-  --> $DIR/type-mismatch-signature-deduction.rs:9:20
-   |
-LL |             return Ok(6);
-   |                    ^^^^^
-help: try wrapping the expression in a variant of `Result`
-   |
-LL |         Ok(5)
-   |         +++ +
-LL |         Err(5)
-   |         ++++ +
-
-error[E0271]: type mismatch resolving `<[generator@$DIR/type-mismatch-signature-deduction.rs:7:5: 7:7] as Generator>::Return == i32`
-  --> $DIR/type-mismatch-signature-deduction.rs:5:13
-   |
-LL | fn foo() -> impl Generator<Return = i32> {
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected enum `Result`, found `i32`
-   |
-   = note: expected enum `Result<{integer}, _>`
-              found type `i32`
-
-error: aborting due to 2 previous errors
-
-Some errors have detailed explanations: E0271, E0308.
-For more information about an error, try `rustc --explain E0271`.
diff --git a/src/test/ui/generator/unresolved-ct-var-drop-tracking.rs b/src/test/ui/generator/unresolved-ct-var-drop-tracking.rs
deleted file mode 100644
index a6589348d30..00000000000
--- a/src/test/ui/generator/unresolved-ct-var-drop-tracking.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// incremental
-// edition:2021
-// compile-flags: -Zdrop-tracking
-
-fn main() {
-    let _ = async {
-        let s = std::array::from_fn(|_| ()).await;
-        //~^ ERROR `[(); _]` is not a future
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-    };
-}
diff --git a/src/test/ui/generator/unresolved-ct-var-drop-tracking.stderr b/src/test/ui/generator/unresolved-ct-var-drop-tracking.stderr
deleted file mode 100644
index 9e1fed54c54..00000000000
--- a/src/test/ui/generator/unresolved-ct-var-drop-tracking.stderr
+++ /dev/null
@@ -1,78 +0,0 @@
-error[E0277]: `[(); _]` is not a future
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ---------------------------^^^^^^
-   |                 |                          |
-   |                 |                          `[(); _]` is not a future
-   |                 |                          help: remove the `.await`
-   |                 this call returns `[(); _]`
-   |
-   = help: the trait `Future` is not implemented for `[(); _]`
-   = note: [(); _] must be a future or must implement `IntoFuture` to be awaited
-   = note: required for `[(); _]` to implement `IntoFuture`
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var-drop-tracking.rs:7:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error: aborting due to 6 previous errors
-
-Some errors have detailed explanations: E0277, E0698.
-For more information about an error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/unresolved-ct-var.rs b/src/test/ui/generator/unresolved-ct-var.rs
deleted file mode 100644
index 0a1570fc239..00000000000
--- a/src/test/ui/generator/unresolved-ct-var.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// incremental
-// edition:2021
-
-fn main() {
-    let _ = async {
-        let s = std::array::from_fn(|_| ()).await;
-        //~^ ERROR `[(); _]` is not a future
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-        //~| ERROR type inside `async` block must be known in this context
-    };
-}
diff --git a/src/test/ui/generator/unresolved-ct-var.stderr b/src/test/ui/generator/unresolved-ct-var.stderr
deleted file mode 100644
index fdf00dfad7a..00000000000
--- a/src/test/ui/generator/unresolved-ct-var.stderr
+++ /dev/null
@@ -1,78 +0,0 @@
-error[E0277]: `[(); _]` is not a future
-  --> $DIR/unresolved-ct-var.rs:6:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ---------------------------^^^^^^
-   |                 |                          |
-   |                 |                          `[(); _]` is not a future
-   |                 |                          help: remove the `.await`
-   |                 this call returns `[(); _]`
-   |
-   = help: the trait `Future` is not implemented for `[(); _]`
-   = note: [(); _] must be a future or must implement `IntoFuture` to be awaited
-   = note: required for `[(); _]` to implement `IntoFuture`
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var.rs:6:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var.rs:6:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var.rs:6:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var.rs:6:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var.rs:6:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var.rs:6:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var.rs:6:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var.rs:6:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error[E0698]: type inside `async` block must be known in this context
-  --> $DIR/unresolved-ct-var.rs:6:17
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                 ^^^^^^^^^^^^^^^^^^^ cannot infer the value of const parameter `N` declared on the function `from_fn`
-   |
-note: the type is part of the `async` block because of this `await`
-  --> $DIR/unresolved-ct-var.rs:6:44
-   |
-LL |         let s = std::array::from_fn(|_| ()).await;
-   |                                            ^^^^^^
-
-error: aborting due to 6 previous errors
-
-Some errors have detailed explanations: E0277, E0698.
-For more information about an error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/xcrate-reachable.rs b/src/test/ui/generator/xcrate-reachable.rs
deleted file mode 100644
index 1b1cff3387d..00000000000
--- a/src/test/ui/generator/xcrate-reachable.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// run-pass
-
-// aux-build:xcrate-reachable.rs
-
-#![feature(generator_trait)]
-
-extern crate xcrate_reachable as foo;
-
-use std::ops::Generator;
-use std::pin::Pin;
-
-fn main() {
-    Pin::new(&mut foo::foo()).resume(());
-}
diff --git a/src/test/ui/generator/xcrate.rs b/src/test/ui/generator/xcrate.rs
deleted file mode 100644
index 40986bbeb65..00000000000
--- a/src/test/ui/generator/xcrate.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// run-pass
-
-// aux-build:xcrate.rs
-
-#![feature(generators, generator_trait)]
-
-extern crate xcrate;
-
-use std::ops::{GeneratorState, Generator};
-use std::pin::Pin;
-
-fn main() {
-    let mut foo = xcrate::foo();
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-
-    let mut foo = xcrate::bar(3);
-
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Yielded(3) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-    match Pin::new(&mut foo).resume(()) {
-        GeneratorState::Complete(()) => {}
-        s => panic!("bad state: {:?}", s),
-    }
-}
diff --git a/src/test/ui/generator/yield-in-args-rev.rs b/src/test/ui/generator/yield-in-args-rev.rs
deleted file mode 100644
index 4c99bb3ef5e..00000000000
--- a/src/test/ui/generator/yield-in-args-rev.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-
-// Test that a borrow that occurs after a yield in the same
-// argument list is not treated as live across the yield by
-// type-checking.
-
-#![feature(generators)]
-
-fn foo(_a: (), _b: &bool) {}
-
-fn bar() {
-    || { //~ WARN unused generator that must be used
-        let b = true;
-        foo(yield, &b);
-    };
-}
-
-fn main() { }
diff --git a/src/test/ui/generator/yield-in-args-rev.stderr b/src/test/ui/generator/yield-in-args-rev.stderr
deleted file mode 100644
index a87248f6621..00000000000
--- a/src/test/ui/generator/yield-in-args-rev.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/yield-in-args-rev.rs:13:5
-   |
-LL | /     || {
-LL | |         let b = true;
-LL | |         foo(yield, &b);
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/yield-in-args.rs b/src/test/ui/generator/yield-in-args.rs
deleted file mode 100644
index 80110af55ab..00000000000
--- a/src/test/ui/generator/yield-in-args.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-#![feature(generators)]
-
-fn foo(_b: &bool, _a: ()) {}
-
-fn main() {
-    || {
-        let b = true;
-        foo(&b, yield); //~ ERROR
-    };
-}
diff --git a/src/test/ui/generator/yield-in-args.stderr b/src/test/ui/generator/yield-in-args.stderr
deleted file mode 100644
index ee6d22c27cd..00000000000
--- a/src/test/ui/generator/yield-in-args.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0626]: borrow may still be in use when generator yields
-  --> $DIR/yield-in-args.rs:8:13
-   |
-LL |         foo(&b, yield);
-   |             ^^  ----- possible yield occurs here
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0626`.
diff --git a/src/test/ui/generator/yield-in-box.rs b/src/test/ui/generator/yield-in-box.rs
deleted file mode 100644
index dd6fa7c151a..00000000000
--- a/src/test/ui/generator/yield-in-box.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// run-pass
-// Test that box-statements with yields in them work.
-
-#![feature(generators, box_syntax, generator_trait)]
-use std::pin::Pin;
-use std::ops::Generator;
-use std::ops::GeneratorState;
-
-fn main() {
-    let x = 0i32;
-    || { //~ WARN unused generator that must be used
-        let y = 2u32;
-        {
-            let _t = box (&x, yield 0, &y);
-        }
-        match box (&x, yield 0, &y) {
-            _t => {}
-        }
-    };
-
-    let mut g = |_| box yield;
-    assert_eq!(Pin::new(&mut g).resume(1), GeneratorState::Yielded(()));
-    assert_eq!(Pin::new(&mut g).resume(2), GeneratorState::Complete(box 2));
-}
diff --git a/src/test/ui/generator/yield-in-box.stderr b/src/test/ui/generator/yield-in-box.stderr
deleted file mode 100644
index 9d03ee00800..00000000000
--- a/src/test/ui/generator/yield-in-box.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/yield-in-box.rs:11:5
-   |
-LL | /     || {
-LL | |         let y = 2u32;
-LL | |         {
-LL | |             let _t = box (&x, yield 0, &y);
-...  |
-LL | |         }
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/yield-in-const.rs b/src/test/ui/generator/yield-in-const.rs
deleted file mode 100644
index fe5ca822cec..00000000000
--- a/src/test/ui/generator/yield-in-const.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-#![feature(generators)]
-
-const A: u8 = { yield 3u8; 3u8};
-//~^ ERROR yield expression outside
-
-fn main() {}
diff --git a/src/test/ui/generator/yield-in-const.stderr b/src/test/ui/generator/yield-in-const.stderr
deleted file mode 100644
index dcf4fe63e64..00000000000
--- a/src/test/ui/generator/yield-in-const.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0627]: yield expression outside of generator literal
-  --> $DIR/yield-in-const.rs:3:17
-   |
-LL | const A: u8 = { yield 3u8; 3u8};
-   |                 ^^^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0627`.
diff --git a/src/test/ui/generator/yield-in-function.rs b/src/test/ui/generator/yield-in-function.rs
deleted file mode 100644
index 29b811621de..00000000000
--- a/src/test/ui/generator/yield-in-function.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-#![feature(generators)]
-
-fn main() { yield; }
-//~^ ERROR yield expression outside
diff --git a/src/test/ui/generator/yield-in-function.stderr b/src/test/ui/generator/yield-in-function.stderr
deleted file mode 100644
index 51cce198ca3..00000000000
--- a/src/test/ui/generator/yield-in-function.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0627]: yield expression outside of generator literal
-  --> $DIR/yield-in-function.rs:3:13
-   |
-LL | fn main() { yield; }
-   |             ^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0627`.
diff --git a/src/test/ui/generator/yield-in-initializer.rs b/src/test/ui/generator/yield-in-initializer.rs
deleted file mode 100644
index 0cab36e5f28..00000000000
--- a/src/test/ui/generator/yield-in-initializer.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-
-#![feature(generators)]
-
-fn main() {
-    static || { //~ WARN unused generator that must be used
-        loop {
-            // Test that `opt` is not live across the yield, even when borrowed in a loop
-            // See https://github.com/rust-lang/rust/issues/52792
-            let opt = {
-                yield;
-                true
-            };
-            let _ = &opt;
-        }
-    };
-}
diff --git a/src/test/ui/generator/yield-in-initializer.stderr b/src/test/ui/generator/yield-in-initializer.stderr
deleted file mode 100644
index ed14a2e3273..00000000000
--- a/src/test/ui/generator/yield-in-initializer.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/yield-in-initializer.rs:6:5
-   |
-LL | /     static || {
-LL | |         loop {
-LL | |             // Test that `opt` is not live across the yield, even when borrowed in a loop
-LL | |             // See https://github.com/rust-lang/rust/issues/52792
-...  |
-LL | |         }
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/yield-in-static.rs b/src/test/ui/generator/yield-in-static.rs
deleted file mode 100644
index d27fbb33ba1..00000000000
--- a/src/test/ui/generator/yield-in-static.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-#![feature(generators)]
-
-static B: u8 = { yield 3u8; 3u8};
-//~^ ERROR yield expression outside
-
-fn main() {}
diff --git a/src/test/ui/generator/yield-in-static.stderr b/src/test/ui/generator/yield-in-static.stderr
deleted file mode 100644
index d867f3ad345..00000000000
--- a/src/test/ui/generator/yield-in-static.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0627]: yield expression outside of generator literal
-  --> $DIR/yield-in-static.rs:3:18
-   |
-LL | static B: u8 = { yield 3u8; 3u8};
-   |                  ^^^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0627`.
diff --git a/src/test/ui/generator/yield-outside-generator-issue-78653.rs b/src/test/ui/generator/yield-outside-generator-issue-78653.rs
deleted file mode 100644
index 4e8050c81b0..00000000000
--- a/src/test/ui/generator/yield-outside-generator-issue-78653.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-#![feature(generators)]
-
-fn main() {
-    yield || for i in 0 { }
-    //~^ ERROR yield expression outside of generator literal
-    //~| ERROR `{integer}` is not an iterator
-}
diff --git a/src/test/ui/generator/yield-outside-generator-issue-78653.stderr b/src/test/ui/generator/yield-outside-generator-issue-78653.stderr
deleted file mode 100644
index dcfb211744c..00000000000
--- a/src/test/ui/generator/yield-outside-generator-issue-78653.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0627]: yield expression outside of generator literal
-  --> $DIR/yield-outside-generator-issue-78653.rs:4:5
-   |
-LL |     yield || for i in 0 { }
-   |     ^^^^^^^^^^^^^^^^^^^^^^^
-
-error[E0277]: `{integer}` is not an iterator
-  --> $DIR/yield-outside-generator-issue-78653.rs:4:23
-   |
-LL |     yield || for i in 0 { }
-   |                       ^ `{integer}` is not an iterator
-   |
-   = help: the trait `Iterator` is not implemented for `{integer}`
-   = note: if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end`
-   = note: required for `{integer}` to implement `IntoIterator`
-
-error: aborting due to 2 previous errors
-
-Some errors have detailed explanations: E0277, E0627.
-For more information about an error, try `rustc --explain E0277`.
diff --git a/src/test/ui/generator/yield-subtype.rs b/src/test/ui/generator/yield-subtype.rs
deleted file mode 100644
index cb3fc909145..00000000000
--- a/src/test/ui/generator/yield-subtype.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(dead_code)]
-
-#![feature(generators)]
-
-fn bar<'a>() {
-    let a: &'static str = "hi";
-    let b: &'a str = a;
-
-    || { //~ WARN unused generator that must be used
-        yield a;
-        yield b;
-    };
-}
-
-fn main() {}
diff --git a/src/test/ui/generator/yield-subtype.stderr b/src/test/ui/generator/yield-subtype.stderr
deleted file mode 100644
index 97862e91cd4..00000000000
--- a/src/test/ui/generator/yield-subtype.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-warning: unused generator that must be used
-  --> $DIR/yield-subtype.rs:11:5
-   |
-LL | /     || {
-LL | |         yield a;
-LL | |         yield b;
-LL | |     };
-   | |_____^
-   |
-   = note: generators are lazy and do nothing unless resumed
-   = note: `#[warn(unused_must_use)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/generator/yield-while-iterating.rs b/src/test/ui/generator/yield-while-iterating.rs
deleted file mode 100644
index 985e5d8bdc8..00000000000
--- a/src/test/ui/generator/yield-while-iterating.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::{GeneratorState, Generator};
-use std::cell::Cell;
-use std::pin::Pin;
-
-fn yield_during_iter_owned_data(x: Vec<i32>) {
-    // The generator owns `x`, so we error out when yielding with a
-    // reference to it.  This winds up becoming a rather confusing
-    // regionck error -- in particular, we would freeze with the
-    // reference in scope, and it doesn't live long enough.
-    let _b = move || {
-        for p in &x { //~ ERROR
-            yield();
-        }
-    };
-}
-
-fn yield_during_iter_borrowed_slice(x: &[i32]) {
-    let _b = move || {
-        for p in x {
-            yield();
-        }
-    };
-}
-
-fn yield_during_iter_borrowed_slice_2() {
-    let mut x = vec![22_i32];
-    let _b = || {
-        for p in &x {
-            yield();
-        }
-    };
-    println!("{:?}", x);
-}
-
-fn yield_during_iter_borrowed_slice_3() {
-    // OK to take a mutable ref to `x` and yield
-    // up pointers from it:
-    let mut x = vec![22_i32];
-    let mut b = || {
-        for p in &mut x {
-            yield p;
-        }
-    };
-    Pin::new(&mut b).resume(());
-}
-
-fn yield_during_iter_borrowed_slice_4() {
-    // ...but not OK to do that while reading
-    // from `x` too
-    let mut x = vec![22_i32];
-    let mut b = || {
-        for p in &mut x {
-            yield p;
-        }
-    };
-    println!("{}", x[0]); //~ ERROR
-    Pin::new(&mut b).resume(());
-}
-
-fn yield_during_range_iter() {
-    // Should be OK.
-    let mut b = || {
-        let v = vec![1,2,3];
-        let len = v.len();
-        for i in 0..len {
-            let x = v[i];
-            yield x;
-        }
-    };
-    Pin::new(&mut b).resume(());
-}
-
-fn main() { }
diff --git a/src/test/ui/generator/yield-while-iterating.stderr b/src/test/ui/generator/yield-while-iterating.stderr
deleted file mode 100644
index b6563475235..00000000000
--- a/src/test/ui/generator/yield-while-iterating.stderr
+++ /dev/null
@@ -1,25 +0,0 @@
-error[E0626]: borrow may still be in use when generator yields
-  --> $DIR/yield-while-iterating.rs:13:18
-   |
-LL |         for p in &x {
-   |                  ^^
-LL |             yield();
-   |             ------- possible yield occurs here
-
-error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
-  --> $DIR/yield-while-iterating.rs:58:20
-   |
-LL |     let mut b = || {
-   |                 -- mutable borrow occurs here
-LL |         for p in &mut x {
-   |                       - first borrow occurs due to use of `x` in generator
-...
-LL |     println!("{}", x[0]);
-   |                    ^ immutable borrow occurs here
-LL |     Pin::new(&mut b).resume(());
-   |              ------ mutable borrow later used here
-
-error: aborting due to 2 previous errors
-
-Some errors have detailed explanations: E0502, E0626.
-For more information about an error, try `rustc --explain E0502`.
diff --git a/src/test/ui/generator/yield-while-local-borrowed.rs b/src/test/ui/generator/yield-while-local-borrowed.rs
deleted file mode 100644
index 061a64dbc36..00000000000
--- a/src/test/ui/generator/yield-while-local-borrowed.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::{GeneratorState, Generator};
-use std::cell::Cell;
-use std::pin::Pin;
-
-fn borrow_local_inline() {
-    // Not OK to yield with a borrow of a temporary.
-    //
-    // (This error occurs because the region shows up in the type of
-    // `b` and gets extended by region inference.)
-    let mut b = move || {
-        let a = &mut 3;
-        //~^ ERROR borrow may still be in use when generator yields
-        yield();
-        println!("{}", a);
-    };
-    Pin::new(&mut b).resume(());
-}
-
-fn borrow_local_inline_done() {
-    // No error here -- `a` is not in scope at the point of `yield`.
-    let mut b = move || {
-        {
-            let a = &mut 3;
-        }
-        yield();
-    };
-    Pin::new(&mut b).resume(());
-}
-
-fn borrow_local() {
-    // Not OK to yield with a borrow of a temporary.
-    //
-    // (This error occurs because the region shows up in the type of
-    // `b` and gets extended by region inference.)
-    let mut b = move || {
-        let a = 3;
-        {
-            let b = &a;
-            //~^ ERROR borrow may still be in use when generator yields
-            yield();
-            println!("{}", b);
-        }
-    };
-    Pin::new(&mut b).resume(());
-}
-
-fn main() { }
diff --git a/src/test/ui/generator/yield-while-local-borrowed.stderr b/src/test/ui/generator/yield-while-local-borrowed.stderr
deleted file mode 100644
index c1513ef9b71..00000000000
--- a/src/test/ui/generator/yield-while-local-borrowed.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0626]: borrow may still be in use when generator yields
-  --> $DIR/yield-while-local-borrowed.rs:13:17
-   |
-LL |         let a = &mut 3;
-   |                 ^^^^^^
-LL |
-LL |         yield();
-   |         ------- possible yield occurs here
-
-error[E0626]: borrow may still be in use when generator yields
-  --> $DIR/yield-while-local-borrowed.rs:40:21
-   |
-LL |             let b = &a;
-   |                     ^^
-LL |
-LL |             yield();
-   |             ------- possible yield occurs here
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0626`.
diff --git a/src/test/ui/generator/yield-while-ref-reborrowed.rs b/src/test/ui/generator/yield-while-ref-reborrowed.rs
deleted file mode 100644
index a03ef945dd2..00000000000
--- a/src/test/ui/generator/yield-while-ref-reborrowed.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::{GeneratorState, Generator};
-use std::cell::Cell;
-use std::pin::Pin;
-
-fn reborrow_shared_ref(x: &i32) {
-    // This is OK -- we have a borrow live over the yield, but it's of
-    // data that outlives the generator.
-    let mut b = move || {
-        let a = &*x;
-        yield();
-        println!("{}", a);
-    };
-    Pin::new(&mut b).resume(());
-}
-
-fn reborrow_mutable_ref(x: &mut i32) {
-    // This is OK -- we have a borrow live over the yield, but it's of
-    // data that outlives the generator.
-    let mut b = move || {
-        let a = &mut *x;
-        yield();
-        println!("{}", a);
-    };
-    Pin::new(&mut b).resume(());
-}
-
-fn reborrow_mutable_ref_2(x: &mut i32) {
-    // ...but not OK to go on using `x`.
-    let mut b = || {
-        let a = &mut *x;
-        yield();
-        println!("{}", a);
-    };
-    println!("{}", x); //~ ERROR
-    Pin::new(&mut b).resume(());
-}
-
-fn main() { }
diff --git a/src/test/ui/generator/yield-while-ref-reborrowed.stderr b/src/test/ui/generator/yield-while-ref-reborrowed.stderr
deleted file mode 100644
index 47147f9c05d..00000000000
--- a/src/test/ui/generator/yield-while-ref-reborrowed.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-error[E0501]: cannot borrow `x` as immutable because previous closure requires unique access
-  --> $DIR/yield-while-ref-reborrowed.rs:36:20
-   |
-LL |     let mut b = || {
-   |                 -- generator construction occurs here
-LL |         let a = &mut *x;
-   |                      -- first borrow occurs due to use of `x` in generator
-...
-LL |     println!("{}", x);
-   |                    ^ second borrow occurs here
-LL |     Pin::new(&mut b).resume(());
-   |              ------ first borrow later used here
-   |
-   = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0501`.
diff --git a/src/test/ui/generator/yielding-in-match-guards.rs b/src/test/ui/generator/yielding-in-match-guards.rs
deleted file mode 100644
index 4e89fc975d0..00000000000
--- a/src/test/ui/generator/yielding-in-match-guards.rs
+++ /dev/null
@@ -1,53 +0,0 @@
-// build-pass
-// edition:2018
-
-// This test is derived from
-// https://github.com/rust-lang/rust/issues/72651#issuecomment-668720468
-
-// This test demonstrates that, in `async fn g()`,
-// indeed a temporary borrow `y` from `x` is live
-// while `f().await` is being evaluated.
-// Thus, `&'_ u8` should be included in type signature
-// of the underlying generator.
-
-#![feature(if_let_guard)]
-
-async fn f() -> u8 { 1 }
-async fn foo() -> [bool; 10] { [false; 10] }
-
-pub async fn g(x: u8) {
-    match x {
-        y if f().await == y => (),
-        _ => (),
-    }
-}
-
-// #78366: check the reference to the binding is recorded even if the binding is not autorefed
-
-async fn h(x: usize) {
-    match x {
-        y if foo().await[y] => (),
-        _ => (),
-    }
-}
-
-async fn i(x: u8) {
-    match x {
-        y if f().await == y + 1 => (),
-        _ => (),
-    }
-}
-
-async fn j(x: u8) {
-    match x {
-        y if let (1, 42) = (f().await, y) => (),
-        _ => (),
-    }
-}
-
-fn main() {
-    let _ = g(10);
-    let _ = h(9);
-    let _ = i(8);
-    let _ = j(7);
-}