about summary refs log tree commit diff
path: root/src/test/ui/regions
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/regions
parentca855e6e42787ecd062d81d53336fe6788ef51a9 (diff)
downloadrust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.tar.gz
rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.zip
Move /src/test to /tests
Diffstat (limited to 'src/test/ui/regions')
-rw-r--r--src/test/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs32
-rw-r--r--src/test/ui/regions/closure-in-projection-issue-97405.rs32
-rw-r--r--src/test/ui/regions/closure-in-projection-issue-97405.stderr30
-rw-r--r--src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs12
-rw-r--r--src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr14
-rw-r--r--src/test/ui/regions/forall-wf-ref-reflexive.rs18
-rw-r--r--src/test/ui/regions/forall-wf-ref-reflexive.stderr8
-rw-r--r--src/test/ui/regions/forall-wf-reflexive.rs15
-rw-r--r--src/test/ui/regions/init-res-into-things.rs81
-rw-r--r--src/test/ui/regions/issue-101280.rs10
-rw-r--r--src/test/ui/regions/issue-101280.stderr14
-rw-r--r--src/test/ui/regions/issue-102374.rs21
-rw-r--r--src/test/ui/regions/issue-102374.stderr15
-rw-r--r--src/test/ui/regions/issue-102392.rs6
-rw-r--r--src/test/ui/regions/issue-102392.stderr14
-rw-r--r--src/test/ui/regions/issue-11612.rs24
-rw-r--r--src/test/ui/regions/issue-12470.rs34
-rw-r--r--src/test/ui/regions/issue-12470.stderr11
-rw-r--r--src/test/ui/regions/issue-21520.rs22
-rw-r--r--src/test/ui/regions/issue-24085.rs19
-rw-r--r--src/test/ui/regions/issue-26448-1.rs13
-rw-r--r--src/test/ui/regions/issue-26448-2.rs21
-rw-r--r--src/test/ui/regions/issue-26448-3.rs25
-rw-r--r--src/test/ui/regions/issue-2718.rs327
-rw-r--r--src/test/ui/regions/issue-28848.rs14
-rw-r--r--src/test/ui/regions/issue-28848.stderr14
-rw-r--r--src/test/ui/regions/issue-5243.rs17
-rw-r--r--src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs67
-rw-r--r--src/test/ui/regions/issue-6157.rs23
-rw-r--r--src/test/ui/regions/issue-72051-member-region-hang.rs7
-rw-r--r--src/test/ui/regions/issue-78262.base.stderr14
-rw-r--r--src/test/ui/regions/issue-78262.polonius.stderr14
-rw-r--r--src/test/ui/regions/issue-78262.rs15
-rw-r--r--src/test/ui/regions/outlives-with-missing.rs16
-rw-r--r--src/test/ui/regions/outlives-with-missing.stderr12
-rw-r--r--src/test/ui/regions/owned-implies-static.rs8
-rw-r--r--src/test/ui/regions/rcvr-borrowed-to-region.rs28
-rw-r--r--src/test/ui/regions/region-borrow-params-issue-29793-big.rs74
-rw-r--r--src/test/ui/regions/region-borrow-params-issue-29793-big.stderr39
-rw-r--r--src/test/ui/regions/region-borrow-params-issue-29793-small.rs212
-rw-r--r--src/test/ui/regions/region-borrow-params-issue-29793-small.stderr363
-rw-r--r--src/test/ui/regions/region-bound-extra-bound-in-inherent-impl.rs16
-rw-r--r--src/test/ui/regions/region-bound-on-closure-outlives-call.rs6
-rw-r--r--src/test/ui/regions/region-bound-on-closure-outlives-call.stderr24
-rw-r--r--src/test/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs17
-rw-r--r--src/test/ui/regions/region-bounds-on-objects-and-type-parameters.rs36
-rw-r--r--src/test/ui/regions/region-bounds-on-objects-and-type-parameters.stderr35
-rw-r--r--src/test/ui/regions/region-invariant-static-error-reporting.rs21
-rw-r--r--src/test/ui/regions/region-invariant-static-error-reporting.stderr21
-rw-r--r--src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs30
-rw-r--r--src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr12
-rw-r--r--src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs32
-rw-r--r--src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr12
-rw-r--r--src/test/ui/regions/region-object-lifetime-1.rs18
-rw-r--r--src/test/ui/regions/region-object-lifetime-2.rs14
-rw-r--r--src/test/ui/regions/region-object-lifetime-2.stderr14
-rw-r--r--src/test/ui/regions/region-object-lifetime-3.rs18
-rw-r--r--src/test/ui/regions/region-object-lifetime-4.rs16
-rw-r--r--src/test/ui/regions/region-object-lifetime-4.stderr14
-rw-r--r--src/test/ui/regions/region-object-lifetime-5.rs14
-rw-r--r--src/test/ui/regions/region-object-lifetime-5.stderr9
-rw-r--r--src/test/ui/regions/region-object-lifetime-in-coercion.rs34
-rw-r--r--src/test/ui/regions/region-object-lifetime-in-coercion.stderr62
-rw-r--r--src/test/ui/regions/regions-addr-of-arg.rs17
-rw-r--r--src/test/ui/regions/regions-addr-of-arg.stderr20
-rw-r--r--src/test/ui/regions/regions-addr-of-interior-of-unique-box.rs23
-rw-r--r--src/test/ui/regions/regions-addr-of-ret.rs9
-rw-r--r--src/test/ui/regions/regions-addr-of-self.rs28
-rw-r--r--src/test/ui/regions/regions-addr-of-self.stderr10
-rw-r--r--src/test/ui/regions/regions-addr-of-upvar-self.rs18
-rw-r--r--src/test/ui/regions/regions-addr-of-upvar-self.stderr35
-rw-r--r--src/test/ui/regions/regions-adjusted-lvalue-op.rs16
-rw-r--r--src/test/ui/regions/regions-adjusted-lvalue-op.stderr21
-rw-r--r--src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs41
-rw-r--r--src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr15
-rw-r--r--src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs24
-rw-r--r--src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr27
-rw-r--r--src/test/ui/regions/regions-assoc-type-region-bound.rs22
-rw-r--r--src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs19
-rw-r--r--src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr15
-rw-r--r--src/test/ui/regions/regions-assoc-type-static-bound.rs19
-rw-r--r--src/test/ui/regions/regions-borrow-at.rs12
-rw-r--r--src/test/ui/regions/regions-borrow-evec-fixed.rs10
-rw-r--r--src/test/ui/regions/regions-borrow-evec-uniq.rs16
-rw-r--r--src/test/ui/regions/regions-borrow-uniq.rs11
-rw-r--r--src/test/ui/regions/regions-bot.rs11
-rw-r--r--src/test/ui/regions/regions-bound-lists-feature-gate-2.rs14
-rw-r--r--src/test/ui/regions/regions-bound-lists-feature-gate.rs18
-rw-r--r--src/test/ui/regions/regions-bounded-by-trait-requiring-static.rs69
-rw-r--r--src/test/ui/regions/regions-bounded-by-trait-requiring-static.stderr50
-rw-r--r--src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs24
-rw-r--r--src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr18
-rw-r--r--src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs29
-rw-r--r--src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr18
-rw-r--r--src/test/ui/regions/regions-bounded-method-type-parameters.rs16
-rw-r--r--src/test/ui/regions/regions-bounded-method-type-parameters.stderr10
-rw-r--r--src/test/ui/regions/regions-bounds.rs18
-rw-r--r--src/test/ui/regions/regions-bounds.stderr26
-rw-r--r--src/test/ui/regions/regions-close-associated-type-into-object.rs71
-rw-r--r--src/test/ui/regions/regions-close-associated-type-into-object.stderr40
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-1.rs15
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-1.stderr12
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-2.rs14
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-2.stderr29
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-3.rs14
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-3.stderr12
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-4.rs19
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-4.stderr74
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-5.rs25
-rw-r--r--src/test/ui/regions/regions-close-object-into-object-5.stderr57
-rw-r--r--src/test/ui/regions/regions-close-over-type-parameter-1.rs24
-rw-r--r--src/test/ui/regions/regions-close-over-type-parameter-1.stderr26
-rw-r--r--src/test/ui/regions/regions-close-over-type-parameter-multiple.rs24
-rw-r--r--src/test/ui/regions/regions-close-over-type-parameter-multiple.stderr15
-rw-r--r--src/test/ui/regions/regions-close-over-type-parameter-successfully.rs21
-rw-r--r--src/test/ui/regions/regions-close-param-into-object.rs27
-rw-r--r--src/test/ui/regions/regions-close-param-into-object.stderr48
-rw-r--r--src/test/ui/regions/regions-copy-closure.rs21
-rw-r--r--src/test/ui/regions/regions-creating-enums.rs33
-rw-r--r--src/test/ui/regions/regions-creating-enums.stderr21
-rw-r--r--src/test/ui/regions/regions-creating-enums2.rs17
-rw-r--r--src/test/ui/regions/regions-creating-enums3.rs12
-rw-r--r--src/test/ui/regions/regions-creating-enums3.stderr14
-rw-r--r--src/test/ui/regions/regions-creating-enums4.rs12
-rw-r--r--src/test/ui/regions/regions-creating-enums4.stderr14
-rw-r--r--src/test/ui/regions/regions-creating-enums5.rs17
-rw-r--r--src/test/ui/regions/regions-debruijn-of-object.rs22
-rw-r--r--src/test/ui/regions/regions-dependent-addr-of.rs112
-rw-r--r--src/test/ui/regions/regions-dependent-autofn.rs15
-rw-r--r--src/test/ui/regions/regions-dependent-autoslice.rs14
-rw-r--r--src/test/ui/regions/regions-dependent-let-ref.rs12
-rw-r--r--src/test/ui/regions/regions-early-bound-error-method.rs26
-rw-r--r--src/test/ui/regions/regions-early-bound-error-method.stderr14
-rw-r--r--src/test/ui/regions/regions-early-bound-error.rs24
-rw-r--r--src/test/ui/regions/regions-early-bound-error.stderr14
-rw-r--r--src/test/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs35
-rw-r--r--src/test/ui/regions/regions-early-bound-trait-param.rs132
-rw-r--r--src/test/ui/regions/regions-early-bound-used-in-bound-method.rs30
-rw-r--r--src/test/ui/regions/regions-early-bound-used-in-bound.rs28
-rw-r--r--src/test/ui/regions/regions-early-bound-used-in-type-param.rs28
-rw-r--r--src/test/ui/regions/regions-escape-into-other-fn.rs8
-rw-r--r--src/test/ui/regions/regions-escape-method.rs16
-rw-r--r--src/test/ui/regions/regions-escape-method.stderr11
-rw-r--r--src/test/ui/regions/regions-escape-via-trait-or-not.rs22
-rw-r--r--src/test/ui/regions/regions-escape-via-trait-or-not.stderr11
-rw-r--r--src/test/ui/regions/regions-expl-self.rs15
-rw-r--r--src/test/ui/regions/regions-fn-subtyping-2.rs20
-rw-r--r--src/test/ui/regions/regions-fn-subtyping-return-static-fail.rs51
-rw-r--r--src/test/ui/regions/regions-fn-subtyping-return-static-fail.stderr19
-rw-r--r--src/test/ui/regions/regions-fn-subtyping-return-static.rs48
-rw-r--r--src/test/ui/regions/regions-fn-subtyping.rs30
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-callee-4.rs11
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-callee-4.stderr20
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-callee.rs30
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-callee.stderr28
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-caller.rs23
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-caller.stderr39
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-caller1.rs14
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-caller1.stderr32
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-incorrect.rs22
-rw-r--r--src/test/ui/regions/regions-free-region-ordering-incorrect.stderr17
-rw-r--r--src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs17
-rw-r--r--src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr10
-rw-r--r--src/test/ui/regions/regions-glb-free-free.rs29
-rw-r--r--src/test/ui/regions/regions-glb-free-free.stderr16
-rw-r--r--src/test/ui/regions/regions-implied-bounds-projection-gap-1.rs30
-rw-r--r--src/test/ui/regions/regions-implied-bounds-projection-gap-1.stderr14
-rw-r--r--src/test/ui/regions/regions-implied-bounds-projection-gap-2.rs23
-rw-r--r--src/test/ui/regions/regions-implied-bounds-projection-gap-3.rs23
-rw-r--r--src/test/ui/regions/regions-implied-bounds-projection-gap-4.rs23
-rw-r--r--src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs27
-rw-r--r--src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr29
-rw-r--r--src/test/ui/regions/regions-in-enums-anon.rs7
-rw-r--r--src/test/ui/regions/regions-in-enums-anon.stderr15
-rw-r--r--src/test/ui/regions/regions-in-enums.rs20
-rw-r--r--src/test/ui/regions/regions-in-enums.stderr19
-rw-r--r--src/test/ui/regions/regions-in-structs-anon.rs7
-rw-r--r--src/test/ui/regions/regions-in-structs-anon.stderr15
-rw-r--r--src/test/ui/regions/regions-in-structs.rs15
-rw-r--r--src/test/ui/regions/regions-in-structs.stderr20
-rw-r--r--src/test/ui/regions/regions-infer-at-fn-not-param.rs19
-rw-r--r--src/test/ui/regions/regions-infer-at-fn-not-param.stderr11
-rw-r--r--src/test/ui/regions/regions-infer-borrow-scope-addr-of.rs23
-rw-r--r--src/test/ui/regions/regions-infer-borrow-scope-too-big.rs16
-rw-r--r--src/test/ui/regions/regions-infer-borrow-scope-too-big.stderr12
-rw-r--r--src/test/ui/regions/regions-infer-borrow-scope-view.rs11
-rw-r--r--src/test/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs12
-rw-r--r--src/test/ui/regions/regions-infer-borrow-scope.rs14
-rw-r--r--src/test/ui/regions/regions-infer-bound-from-trait-self.rs51
-rw-r--r--src/test/ui/regions/regions-infer-bound-from-trait-self.stderr12
-rw-r--r--src/test/ui/regions/regions-infer-bound-from-trait.rs40
-rw-r--r--src/test/ui/regions/regions-infer-bound-from-trait.stderr25
-rw-r--r--src/test/ui/regions/regions-infer-call-2.rs15
-rw-r--r--src/test/ui/regions/regions-infer-call-3.rs14
-rw-r--r--src/test/ui/regions/regions-infer-call-3.stderr11
-rw-r--r--src/test/ui/regions/regions-infer-call.rs11
-rw-r--r--src/test/ui/regions/regions-infer-contravariance-due-to-decl.rs29
-rw-r--r--src/test/ui/regions/regions-infer-contravariance-due-to-decl.stderr15
-rw-r--r--src/test/ui/regions/regions-infer-contravariance-due-to-ret.rs22
-rw-r--r--src/test/ui/regions/regions-infer-covariance-due-to-decl.rs26
-rw-r--r--src/test/ui/regions/regions-infer-covariance-due-to-decl.stderr15
-rw-r--r--src/test/ui/regions/regions-infer-invariance-due-to-decl.rs17
-rw-r--r--src/test/ui/regions/regions-infer-invariance-due-to-decl.stderr14
-rw-r--r--src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.rs15
-rw-r--r--src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr14
-rw-r--r--src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.rs15
-rw-r--r--src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr14
-rw-r--r--src/test/ui/regions/regions-infer-not-param.rs24
-rw-r--r--src/test/ui/regions/regions-infer-not-param.stderr40
-rw-r--r--src/test/ui/regions/regions-infer-paramd-indirect.rs27
-rw-r--r--src/test/ui/regions/regions-infer-paramd-indirect.stderr13
-rw-r--r--src/test/ui/regions/regions-infer-proc-static-upvar.rs24
-rw-r--r--src/test/ui/regions/regions-infer-proc-static-upvar.stderr15
-rw-r--r--src/test/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs18
-rw-r--r--src/test/ui/regions/regions-infer-region-in-fn-but-not-type.rs19
-rw-r--r--src/test/ui/regions/regions-infer-static-from-proc.rs18
-rw-r--r--src/test/ui/regions/regions-issue-21422.rs18
-rw-r--r--src/test/ui/regions/regions-issue-22246.rs29
-rw-r--r--src/test/ui/regions/regions-lifetime-bounds-on-fns.rs30
-rw-r--r--src/test/ui/regions/regions-lifetime-bounds-on-fns.stderr12
-rw-r--r--src/test/ui/regions/regions-lifetime-nonfree-late-bound.rs33
-rw-r--r--src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs26
-rw-r--r--src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr19
-rw-r--r--src/test/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs20
-rw-r--r--src/test/ui/regions/regions-link-fn-args.rs15
-rw-r--r--src/test/ui/regions/regions-lub-ref-ref-rc.rs28
-rw-r--r--src/test/ui/regions/regions-mock-codegen.rs54
-rw-r--r--src/test/ui/regions/regions-name-duplicated.rs6
-rw-r--r--src/test/ui/regions/regions-name-duplicated.stderr11
-rw-r--r--src/test/ui/regions/regions-name-static.rs6
-rw-r--r--src/test/ui/regions/regions-name-static.stderr9
-rw-r--r--src/test/ui/regions/regions-name-undeclared.rs58
-rw-r--r--src/test/ui/regions/regions-name-undeclared.stderr156
-rw-r--r--src/test/ui/regions/regions-nested-fns-2.rs12
-rw-r--r--src/test/ui/regions/regions-nested-fns-2.stderr17
-rw-r--r--src/test/ui/regions/regions-nested-fns.rs24
-rw-r--r--src/test/ui/regions/regions-nested-fns.stderr52
-rw-r--r--src/test/ui/regions/regions-no-bound-in-argument-cleanup.rs24
-rw-r--r--src/test/ui/regions/regions-no-variance-from-fn-generics.rs44
-rw-r--r--src/test/ui/regions/regions-normalize-in-where-clause-list.rs31
-rw-r--r--src/test/ui/regions/regions-normalize-in-where-clause-list.stderr27
-rw-r--r--src/test/ui/regions/regions-nullary-variant.rs15
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-enum-region.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-enum-type.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-struct-region.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-nominal-type-struct-type.rs20
-rw-r--r--src/test/ui/regions/regions-outlives-projection-container-hrtb.rs52
-rw-r--r--src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr28
-rw-r--r--src/test/ui/regions/regions-outlives-projection-container-wc.rs35
-rw-r--r--src/test/ui/regions/regions-outlives-projection-container-wc.stderr15
-rw-r--r--src/test/ui/regions/regions-outlives-projection-container.rs77
-rw-r--r--src/test/ui/regions/regions-outlives-projection-container.stderr54
-rw-r--r--src/test/ui/regions/regions-outlives-projection-hrtype.rs26
-rw-r--r--src/test/ui/regions/regions-outlives-projection-trait-def.rs21
-rw-r--r--src/test/ui/regions/regions-outlives-scalar.rs13
-rw-r--r--src/test/ui/regions/regions-params.rs19
-rw-r--r--src/test/ui/regions/regions-pattern-typing-issue-19552.rs8
-rw-r--r--src/test/ui/regions/regions-pattern-typing-issue-19552.stderr14
-rw-r--r--src/test/ui/regions/regions-pattern-typing-issue-19997.rs11
-rw-r--r--src/test/ui/regions/regions-pattern-typing-issue-19997.stderr14
-rw-r--r--src/test/ui/regions/regions-proc-bound-capture.rs13
-rw-r--r--src/test/ui/regions/regions-proc-bound-capture.stderr20
-rw-r--r--src/test/ui/regions/regions-reassign-let-bound-pointer.rs18
-rw-r--r--src/test/ui/regions/regions-reassign-match-bound-pointer.rs21
-rw-r--r--src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs9
-rw-r--r--src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr14
-rw-r--r--src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.rs16
-rw-r--r--src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr14
-rw-r--r--src/test/ui/regions/regions-ref-in-fn-arg.rs14
-rw-r--r--src/test/ui/regions/regions-ref-in-fn-arg.stderr19
-rw-r--r--src/test/ui/regions/regions-refcell.rs45
-rw-r--r--src/test/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs57
-rw-r--r--src/test/ui/regions/regions-ret-borrowed-1.rs17
-rw-r--r--src/test/ui/regions/regions-ret-borrowed-1.stderr11
-rw-r--r--src/test/ui/regions/regions-ret-borrowed.rs20
-rw-r--r--src/test/ui/regions/regions-ret-borrowed.stderr11
-rw-r--r--src/test/ui/regions/regions-ret.rs8
-rw-r--r--src/test/ui/regions/regions-ret.stderr12
-rw-r--r--src/test/ui/regions/regions-return-interior-of-option.rs24
-rw-r--r--src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.rs11
-rw-r--r--src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr17
-rw-r--r--src/test/ui/regions/regions-return-stack-allocated-vec.rs10
-rw-r--r--src/test/ui/regions/regions-return-stack-allocated-vec.stderr12
-rw-r--r--src/test/ui/regions/regions-scope-chain-example.rs43
-rw-r--r--src/test/ui/regions/regions-self-impls.rs20
-rw-r--r--src/test/ui/regions/regions-self-in-enums.rs17
-rw-r--r--src/test/ui/regions/regions-simple.rs7
-rw-r--r--src/test/ui/regions/regions-static-bound-rpass.rs26
-rw-r--r--src/test/ui/regions/regions-static-bound-rpass.stderr26
-rw-r--r--src/test/ui/regions/regions-static-bound.rs21
-rw-r--r--src/test/ui/regions/regions-static-bound.stderr54
-rw-r--r--src/test/ui/regions/regions-static-closure.rs19
-rw-r--r--src/test/ui/regions/regions-steal-closure.rs17
-rw-r--r--src/test/ui/regions/regions-steal-closure.stderr16
-rw-r--r--src/test/ui/regions/regions-trait-1.rs33
-rw-r--r--src/test/ui/regions/regions-trait-object-1.rs35
-rw-r--r--src/test/ui/regions/regions-trait-object-subtyping.rs26
-rw-r--r--src/test/ui/regions/regions-trait-object-subtyping.stderr34
-rw-r--r--src/test/ui/regions/regions-trait-variance.rs44
-rw-r--r--src/test/ui/regions/regions-trait-variance.stderr11
-rw-r--r--src/test/ui/regions/regions-undeclared.rs13
-rw-r--r--src/test/ui/regions/regions-undeclared.stderr42
-rw-r--r--src/test/ui/regions/regions-var-type-out-of-scope.rs14
-rw-r--r--src/test/ui/regions/regions-var-type-out-of-scope.stderr15
-rw-r--r--src/test/ui/regions/regions-variance-contravariant-use-contravariant.rs27
-rw-r--r--src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs29
-rw-r--r--src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr15
-rw-r--r--src/test/ui/regions/regions-variance-contravariant-use-covariant.rs27
-rw-r--r--src/test/ui/regions/regions-variance-contravariant-use-covariant.stderr15
-rw-r--r--src/test/ui/regions/regions-variance-covariant-use-contravariant.rs27
-rw-r--r--src/test/ui/regions/regions-variance-covariant-use-contravariant.stderr15
-rw-r--r--src/test/ui/regions/regions-variance-covariant-use-covariant.rs23
-rw-r--r--src/test/ui/regions/regions-variance-invariant-use-contravariant.rs24
-rw-r--r--src/test/ui/regions/regions-variance-invariant-use-contravariant.stderr18
-rw-r--r--src/test/ui/regions/regions-variance-invariant-use-covariant.rs21
-rw-r--r--src/test/ui/regions/regions-variance-invariant-use-covariant.stderr15
-rw-r--r--src/test/ui/regions/regions-wf-trait-object.rs10
-rw-r--r--src/test/ui/regions/regions-wf-trait-object.stderr20
-rw-r--r--src/test/ui/regions/type-param-outlives-reempty-issue-74429-2.rs66
-rw-r--r--src/test/ui/regions/type-param-outlives-reempty-issue-74429.rs35
-rw-r--r--src/test/ui/regions/wf-bound-region-in-object-type.rs22
325 files changed, 0 insertions, 8428 deletions
diff --git a/src/test/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs b/src/test/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs
deleted file mode 100644
index ce2a3a7db29..00000000000
--- a/src/test/ui/regions/auxiliary/rbmtp_cross_crate_lib.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-// Check that method bounds declared on traits/impls in a cross-crate
-// scenario work. This is the library portion of the test.
-
-pub enum MaybeOwned<'a> {
-    Owned(isize),
-    Borrowed(&'a isize)
-}
-
-pub struct Inv<'a> { // invariant w/r/t 'a
-    x: &'a mut &'a isize
-}
-
-// I encountered a bug at some point with encoding the IntoMaybeOwned
-// trait, so I'll use that as the template for this test.
-pub trait IntoMaybeOwned<'a> {
-    fn into_maybe_owned(self) -> MaybeOwned<'a>;
-
-    // Note: without this `into_inv` method, the trait is
-    // contravariant w/r/t `'a`, since if you look strictly at the
-    // interface, it only returns `'a`. This complicates the
-    // downstream test since it wants invariance to force an error.
-    // Hence we add this method.
-    fn into_inv(self) -> Inv<'a>;
-
-    fn bigger_region<'b:'a>(self, b: Inv<'b>);
-}
-
-impl<'a> IntoMaybeOwned<'a> for Inv<'a> {
-    fn into_maybe_owned(self) -> MaybeOwned<'a> { panic!() }
-    fn into_inv(self) -> Inv<'a> { panic!() }
-    fn bigger_region<'b:'a>(self, b: Inv<'b>) { panic!() }
-}
diff --git a/src/test/ui/regions/closure-in-projection-issue-97405.rs b/src/test/ui/regions/closure-in-projection-issue-97405.rs
deleted file mode 100644
index e567d5c2723..00000000000
--- a/src/test/ui/regions/closure-in-projection-issue-97405.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-// Regression test for #97405.
-// In `good_generic_fn` the param `T` ends up in the substs of closures/generators,
-// but we should be able to prove `<Gen<T> as Iterator>::Item: 'static` without
-// requiring `T: 'static`
-
-// edition:2018
-// check-fail
-
-fn opaque<F>(_: F) -> impl Iterator { b"".iter() }
-
-fn assert_static<T: 'static>(_: T) {}
-
-fn good_generic_fn<T>() {
-    // Previously, proving `<OpaqueTy<type_of(async {})> as Iterator>::Item: 'static`
-    // used to require `T: 'static`.
-    assert_static(opaque(async {}).next());
-    assert_static(opaque(|| {}).next());
-    assert_static(opaque(opaque(async {}).next()).next());
-}
-
-
-// This should fail because `T` ends up in the upvars of the closure.
-fn bad_generic_fn<T: Copy>(t: T) {
-    assert_static(opaque(async move { t; }).next());
-    //~^ ERROR the associated type `<impl Iterator as Iterator>::Item` may not live long enough
-    assert_static(opaque(move || { t; }).next());
-    //~^ ERROR the associated type `<impl Iterator as Iterator>::Item` may not live long enough
-    assert_static(opaque(opaque(async move { t; }).next()).next());
-    //~^ ERROR the associated type `<impl Iterator as Iterator>::Item` may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/closure-in-projection-issue-97405.stderr b/src/test/ui/regions/closure-in-projection-issue-97405.stderr
deleted file mode 100644
index c08f1059ebf..00000000000
--- a/src/test/ui/regions/closure-in-projection-issue-97405.stderr
+++ /dev/null
@@ -1,30 +0,0 @@
-error[E0310]: the associated type `<impl Iterator as Iterator>::Item` may not live long enough
-  --> $DIR/closure-in-projection-issue-97405.rs:24:5
-   |
-LL |     assert_static(opaque(async move { t; }).next());
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<impl Iterator as Iterator>::Item: 'static`...
-   = note: ...so that the type `<impl Iterator as Iterator>::Item` will meet its required lifetime bounds
-
-error[E0310]: the associated type `<impl Iterator as Iterator>::Item` may not live long enough
-  --> $DIR/closure-in-projection-issue-97405.rs:26:5
-   |
-LL |     assert_static(opaque(move || { t; }).next());
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<impl Iterator as Iterator>::Item: 'static`...
-   = note: ...so that the type `<impl Iterator as Iterator>::Item` will meet its required lifetime bounds
-
-error[E0310]: the associated type `<impl Iterator as Iterator>::Item` may not live long enough
-  --> $DIR/closure-in-projection-issue-97405.rs:28:5
-   |
-LL |     assert_static(opaque(opaque(async move { t; }).next()).next());
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<impl Iterator as Iterator>::Item: 'static`...
-   = note: ...so that the type `<impl Iterator as Iterator>::Item` will meet its required lifetime bounds
-
-error: aborting due to 3 previous errors
-
-For more information about this error, try `rustc --explain E0310`.
diff --git a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs b/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs
deleted file mode 100644
index a1e801e3923..00000000000
--- a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-pub trait T {}
-
-struct S<'a>(&'a ());
-
-impl<'a> T for S<'a> {}
-
-fn foo() -> impl T {
-    let x = ();
-    S(&x) //~ ERROR `x` does not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr b/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr
deleted file mode 100644
index 6ea238f302f..00000000000
--- a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0597]: `x` does not live long enough
-  --> $DIR/do-not-suggest-adding-bound-to-opaque-type.rs:9:7
-   |
-LL |     S(&x)
-   |     --^^-
-   |     | |
-   |     | borrowed value does not live long enough
-   |     opaque type requires that `x` is borrowed for `'static`
-LL | }
-   | - `x` dropped here while still borrowed
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/forall-wf-ref-reflexive.rs b/src/test/ui/regions/forall-wf-ref-reflexive.rs
deleted file mode 100644
index 9c37d72d56b..00000000000
--- a/src/test/ui/regions/forall-wf-ref-reflexive.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Test that we consider `for<'a> &'a T: 'a` to be sufficient to prove
-// that `for<'a> &'a T: 'a`.
-//
-// FIXME. Except we don't!
-
-#![allow(warnings)]
-
-fn self_wf2<T>()
-where
-    for<'a> &'a T: 'a,
-{
-    self_wf2::<T>();
-    //~^ ERROR `T` does not live long enough
-    //
-    // FIXME. This ought to be accepted, presumably.
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/forall-wf-ref-reflexive.stderr b/src/test/ui/regions/forall-wf-ref-reflexive.stderr
deleted file mode 100644
index 3d059ccec72..00000000000
--- a/src/test/ui/regions/forall-wf-ref-reflexive.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: `T` does not live long enough
-  --> $DIR/forall-wf-ref-reflexive.rs:12:5
-   |
-LL |     self_wf2::<T>();
-   |     ^^^^^^^^^^^^^^^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/forall-wf-reflexive.rs b/src/test/ui/regions/forall-wf-reflexive.rs
deleted file mode 100644
index 8e6b8224b31..00000000000
--- a/src/test/ui/regions/forall-wf-reflexive.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// Test that we consider `for<'a> T: 'a` to be sufficient to prove
-// that `for<'a> T: 'a`.
-//
-// check-pass
-
-#![allow(warnings)]
-
-fn self_wf1<T>()
-where
-    for<'a> T: 'a,
-{
-    self_wf1::<T>();
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/init-res-into-things.rs b/src/test/ui/regions/init-res-into-things.rs
deleted file mode 100644
index 7f416262dcb..00000000000
--- a/src/test/ui/regions/init-res-into-things.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-// run-pass
-
-#![allow(non_camel_case_types)]
-#![allow(dead_code)]
-
-use std::cell::Cell;
-
-// Resources can't be copied, but storing into data structures counts
-// as a move unless the stored thing is used afterwards.
-
-struct r<'a> {
-    i: &'a Cell<isize>,
-}
-
-struct BoxR<'a> { x: r<'a> }
-
-impl<'a> Drop for r<'a> {
-    fn drop(&mut self) {
-        self.i.set(self.i.get() + 1)
-    }
-}
-
-fn r(i: &Cell<isize>) -> r {
-    r {
-        i: i
-    }
-}
-
-fn test_rec() {
-    let i = &Cell::new(0);
-    {
-        let _a = BoxR {x: r(i)};
-    }
-    assert_eq!(i.get(), 1);
-}
-
-fn test_tag() {
-    enum t<'a> {
-        t0(r<'a>),
-    }
-
-    let i = &Cell::new(0);
-    {
-        let _a = t::t0(r(i));
-    }
-    assert_eq!(i.get(), 1);
-}
-
-fn test_tup() {
-    let i = &Cell::new(0);
-    {
-        let _a = (r(i), 0);
-    }
-    assert_eq!(i.get(), 1);
-}
-
-fn test_unique() {
-    let i = &Cell::new(0);
-    {
-        let _a: Box<_> = Box::new(r(i));
-    }
-    assert_eq!(i.get(), 1);
-}
-
-fn test_unique_rec() {
-    let i = &Cell::new(0);
-    {
-        let _a: Box<_> = Box::new(BoxR {
-            x: r(i)
-        });
-    }
-    assert_eq!(i.get(), 1);
-}
-
-pub fn main() {
-    test_rec();
-    test_tag();
-    test_tup();
-    test_unique();
-    test_unique_rec();
-}
diff --git a/src/test/ui/regions/issue-101280.rs b/src/test/ui/regions/issue-101280.rs
deleted file mode 100644
index 29f158366f0..00000000000
--- a/src/test/ui/regions/issue-101280.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-use std::cell::Cell;
-
-type Ty = for<'r> fn(Cell<(&'r i32, &'r i32)>);
-
-fn f<'r>(f: fn(Cell<(&'r i32, &i32)>)) -> Ty {
-    f
-    //~^ ERROR mismatched types
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-101280.stderr b/src/test/ui/regions/issue-101280.stderr
deleted file mode 100644
index 320d008aeff..00000000000
--- a/src/test/ui/regions/issue-101280.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/issue-101280.rs:6:5
-   |
-LL | fn f<'r>(f: fn(Cell<(&'r i32, &i32)>)) -> Ty {
-   |                                           -- expected `for<'r> fn(Cell<(&'r i32, &'r i32)>)` because of return type
-LL |     f
-   |     ^ one type is more general than the other
-   |
-   = note: expected fn pointer `for<'r> fn(Cell<(&'r i32, &'r i32)>)`
-              found fn pointer `for<'a> fn(Cell<(&'r i32, &'a i32)>)`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/regions/issue-102374.rs b/src/test/ui/regions/issue-102374.rs
deleted file mode 100644
index fd71248d9cb..00000000000
--- a/src/test/ui/regions/issue-102374.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// normalize-stderr-test: "long-type-\d+" -> "long-type-hash"
-use std::cell::Cell;
-
-#[rustfmt::skip]
-fn f(
-    f: for<'a, 'b, 'c, 'd, 'e, 'f, 'g,
-           'h, 'i, 'j, 'k, 'l, 'm, 'n,
-           'o, 'p, 'q, 'r, 's, 't, 'u,
-           'v, 'w, 'x, 'y, 'z, 'z0>
-        fn(Cell<(&   i32, &'a i32, &'b i32, &'c i32, &'d i32,
-                 &'e i32, &'f i32, &'g i32, &'h i32, &'i i32,
-                 &'j i32, &'k i32, &'l i32, &'m i32, &'n i32,
-                 &'o i32, &'p i32, &'q i32, &'r i32, &'s i32,
-                 &'t i32, &'u i32, &'v i32, &'w i32, &'x i32,
-                 &'y i32, &'z i32, &'z0 i32)>),
-) -> i32 {
-    f
-    //~^ ERROR mismatched types
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-102374.stderr b/src/test/ui/regions/issue-102374.stderr
deleted file mode 100644
index 157850693ab..00000000000
--- a/src/test/ui/regions/issue-102374.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/issue-102374.rs:17:5
-   |
-LL | ) -> i32 {
-   |      --- expected `i32` because of return type
-LL |     f
-   |     ^ expected `i32`, found fn pointer
-   |
-   = note:    expected type `i32`
-           found fn pointer `for<'z1, 'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p, 'q, 'r, 's, 't, 'u, 'v, 'w, 'x, 'y, 'z, 'z0> fn(Cell<...>)`
-           the full type name has been written to '$TEST_BUILD_DIR/regions/issue-102374/issue-102374.long-type-hash.txt'
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/regions/issue-102392.rs b/src/test/ui/regions/issue-102392.rs
deleted file mode 100644
index 87cc1a8e7a8..00000000000
--- a/src/test/ui/regions/issue-102392.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-fn g(f: for<'a> fn(fn(&str, &'a str))) -> bool {
-    f
-    //~^ ERROR mismatched types
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-102392.stderr b/src/test/ui/regions/issue-102392.stderr
deleted file mode 100644
index 56f4c0c5db4..00000000000
--- a/src/test/ui/regions/issue-102392.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/issue-102392.rs:2:5
-   |
-LL | fn g(f: for<'a> fn(fn(&str, &'a str))) -> bool {
-   |                                           ---- expected `bool` because of return type
-LL |     f
-   |     ^ expected `bool`, found fn pointer
-   |
-   = note:    expected type `bool`
-           found fn pointer `for<'a> fn(for<'b> fn(&'b str, &'a str))`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/regions/issue-11612.rs b/src/test/ui/regions/issue-11612.rs
deleted file mode 100644
index 9f7f1cc6fc7..00000000000
--- a/src/test/ui/regions/issue-11612.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// check-pass
-#![allow(dead_code)]
-// #11612
-// We weren't updating the auto adjustments with all the resolved
-// type information after type check.
-
-// pretty-expanded FIXME #23616
-
-trait A { fn dummy(&self) { } }
-
-struct B<'a, T:'a> {
-    f: &'a T
-}
-
-impl<'a, T> A for B<'a, T> {}
-
-fn foo(_: &dyn A) {}
-
-fn bar<G>(b: &B<G>) {
-    foo(b);       // Coercion should work
-    foo(b as &dyn A); // Explicit cast should work as well
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-12470.rs b/src/test/ui/regions/issue-12470.rs
deleted file mode 100644
index d8f2abb0c3c..00000000000
--- a/src/test/ui/regions/issue-12470.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-trait X {
-    fn get_i(&self) -> isize;
-}
-
-
-
-
-struct B {
-    i: isize
-}
-
-impl X for B {
-    fn get_i(&self) -> isize {
-        self.i
-    }
-}
-
-struct A<'a> {
-    p: &'a (dyn X + 'a)
-}
-
-fn make_a<'a>(p: &'a dyn X) -> A<'a> {
-    A { p: p }
-}
-
-fn make_make_a<'a>() -> A<'a> {
-    let b: Box<B> = Box::new(B { i: 1 });
-    let bb: &B = &*b;
-    make_a(bb)  //~ ERROR cannot return value referencing local data `*b`
-}
-
-fn main() {
-    let _a = make_make_a();
-}
diff --git a/src/test/ui/regions/issue-12470.stderr b/src/test/ui/regions/issue-12470.stderr
deleted file mode 100644
index c97e59195ed..00000000000
--- a/src/test/ui/regions/issue-12470.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0515]: cannot return value referencing local data `*b`
-  --> $DIR/issue-12470.rs:29:5
-   |
-LL |     let bb: &B = &*b;
-   |                  --- `*b` is borrowed here
-LL |     make_a(bb)
-   |     ^^^^^^^^^^ returns a value referencing data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/issue-21520.rs b/src/test/ui/regions/issue-21520.rs
deleted file mode 100644
index ab4ac7237c7..00000000000
--- a/src/test/ui/regions/issue-21520.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// check-pass
-#![allow(dead_code)]
-// Test that the requirement (in `Bar`) that `T::Bar : 'static` does
-// not wind up propagating to `T`.
-
-// pretty-expanded FIXME #23616
-
-pub trait Foo {
-    type Bar;
-
-    fn foo(&self) -> Self;
-}
-
-pub struct Static<T:'static>(T);
-
-struct Bar<T:Foo>
-    where T::Bar : 'static
-{
-    x: Static<Option<T::Bar>>
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/issue-24085.rs b/src/test/ui/regions/issue-24085.rs
deleted file mode 100644
index 86e94beb7e2..00000000000
--- a/src/test/ui/regions/issue-24085.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// check-pass
-#![allow(dead_code)]
-// Regression test for #24085. Errors were occurring in region
-// inference due to the requirement that `'a:b'`, which was getting
-// incorrectly codegened in connection with the closure below.
-
-#[derive(Copy,Clone)]
-struct Path<'a:'b, 'b> {
-    x: &'a i32,
-    tail: Option<&'b Path<'a, 'b>>
-}
-
-#[allow(dead_code, unconditional_recursion)]
-fn foo<'a,'b,F>(p: Path<'a, 'b>, mut f: F)
-                where F: for<'c> FnMut(Path<'a, 'c>) {
-    foo(p, |x| f(x))
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/issue-26448-1.rs b/src/test/ui/regions/issue-26448-1.rs
deleted file mode 100644
index 7d2d75bf2e8..00000000000
--- a/src/test/ui/regions/issue-26448-1.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// run-pass
-
-pub trait Foo<T> {
-    fn foo(self) -> T;
-}
-
-impl<'a, T> Foo<T> for &'a str where &'a str: Into<T> {
-    fn foo(self) -> T {
-        panic!();
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-26448-2.rs b/src/test/ui/regions/issue-26448-2.rs
deleted file mode 100644
index c60e06c3ceb..00000000000
--- a/src/test/ui/regions/issue-26448-2.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// check-pass
-
-pub struct Bar<T> {
-    items: Vec<&'static str>,
-    inner: T,
-}
-
-pub trait IntoBar<T> {
-    fn into_bar(self) -> Bar<T>;
-}
-
-impl<'a, T> IntoBar<T> for &'a str where &'a str: Into<T> {
-    fn into_bar(self) -> Bar<T> {
-        Bar {
-            items: Vec::new(),
-            inner: self.into(),
-        }
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-26448-3.rs b/src/test/ui/regions/issue-26448-3.rs
deleted file mode 100644
index d48022c09fe..00000000000
--- a/src/test/ui/regions/issue-26448-3.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// check-pass
-
-pub struct Item {
-    _inner: &'static str,
-}
-
-pub struct Bar<T> {
-    items: Vec<Item>,
-    inner: T,
-}
-
-pub trait IntoBar<T> {
-    fn into_bar(self) -> Bar<T>;
-}
-
-impl<'a, T> IntoBar<T> for &'a str where &'a str: Into<T> {
-    fn into_bar(self) -> Bar<T> {
-        Bar {
-            items: Vec::new(),
-            inner: self.into(),
-        }
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-2718.rs b/src/test/ui/regions/issue-2718.rs
deleted file mode 100644
index 6449337eea4..00000000000
--- a/src/test/ui/regions/issue-2718.rs
+++ /dev/null
@@ -1,327 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_unsafe)]
-#![allow(unused_imports)]
-#![allow(non_camel_case_types)]
-
-pub type Task = isize;
-
-// tjc: I don't know why
-pub mod pipes {
-    use self::state::{empty, full, blocked, terminated};
-    use super::Task;
-    use std::mem::{forget, transmute};
-    use std::mem::{replace, swap};
-    use std::mem;
-    use std::thread;
-    use std::marker::Send;
-
-    pub struct Stuff<T> {
-        state: state,
-        blocked_task: Option<Task>,
-        payload: Option<T>
-    }
-
-    #[derive(PartialEq, Debug)]
-    #[repr(isize)]
-    pub enum state {
-        empty,
-        full,
-        blocked,
-        terminated
-    }
-
-    pub struct packet<T> {
-        state: state,
-        blocked_task: Option<Task>,
-        payload: Option<T>
-    }
-
-    unsafe impl<T:Send> Send for packet<T> {}
-
-    pub fn packet<T:Send>() -> *const packet<T> {
-        unsafe {
-            let p: *const packet<T> = mem::transmute(Box::new(Stuff{
-                state: empty,
-                blocked_task: None::<Task>,
-                payload: None::<T>
-            }));
-            p
-        }
-    }
-
-    mod rusti {
-      pub fn atomic_xchg(_dst: &mut isize, _src: isize) -> isize { panic!(); }
-      pub fn atomic_xchg_acq(_dst: &mut isize, _src: isize) -> isize { panic!(); }
-      pub fn atomic_xchg_rel(_dst: &mut isize, _src: isize) -> isize { panic!(); }
-    }
-
-    // We should consider moving this to ::std::unsafe, although I
-    // suspect graydon would want us to use void pointers instead.
-    pub unsafe fn uniquify<T>(x: *const T) -> Box<T> {
-        mem::transmute(x)
-    }
-
-    pub fn swap_state_acq(dst: &mut state, src: state) -> state {
-        unsafe {
-            transmute(rusti::atomic_xchg_acq(transmute(dst), src as isize))
-        }
-    }
-
-    pub fn swap_state_rel(dst: &mut state, src: state) -> state {
-        unsafe {
-            transmute(rusti::atomic_xchg_rel(transmute(dst), src as isize))
-        }
-    }
-
-    pub fn send<T:Send>(mut p: send_packet<T>, payload: T) {
-        let p = p.unwrap();
-        let mut p = unsafe { uniquify(p) };
-        assert!((*p).payload.is_none());
-        (*p).payload = Some(payload);
-        let old_state = swap_state_rel(&mut (*p).state, full);
-        match old_state {
-          empty => {
-            // Yay, fastpath.
-
-            // The receiver will eventually clean this up.
-            unsafe { forget(p); }
-          }
-          full => { panic!("duplicate send") }
-          blocked => {
-
-            // The receiver will eventually clean this up.
-            unsafe { forget(p); }
-          }
-          terminated => {
-            // The receiver will never receive this. Rely on drop_glue
-            // to clean everything up.
-          }
-        }
-    }
-
-    pub fn recv<T:Send>(mut p: recv_packet<T>) -> Option<T> {
-        let p = p.unwrap();
-        let mut p = unsafe { uniquify(p) };
-        loop {
-            let old_state = swap_state_acq(&mut (*p).state,
-                                           blocked);
-            match old_state {
-              empty | blocked => { thread::yield_now(); }
-              full => {
-                let payload = replace(&mut p.payload, None);
-                return Some(payload.unwrap())
-              }
-              terminated => {
-                assert_eq!(old_state, terminated);
-                return None;
-              }
-            }
-        }
-    }
-
-    pub fn sender_terminate<T:Send>(p: *const packet<T>) {
-        let mut p = unsafe { uniquify(p) };
-        match swap_state_rel(&mut (*p).state, terminated) {
-          empty | blocked => {
-            // The receiver will eventually clean up.
-            unsafe { forget(p) }
-          }
-          full => {
-            // This is impossible
-            panic!("you dun goofed")
-          }
-          terminated => {
-            // I have to clean up, use drop_glue
-          }
-        }
-    }
-
-    pub fn receiver_terminate<T:Send>(p: *const packet<T>) {
-        let mut p = unsafe { uniquify(p) };
-        match swap_state_rel(&mut (*p).state, terminated) {
-          empty => {
-            // the sender will clean up
-            unsafe { forget(p) }
-          }
-          blocked => {
-            // this shouldn't happen.
-            panic!("terminating a blocked packet")
-          }
-          terminated | full => {
-            // I have to clean up, use drop_glue
-          }
-        }
-    }
-
-    pub struct send_packet<T:Send> {
-        p: Option<*const packet<T>>,
-    }
-
-    impl<T:Send> Drop for send_packet<T> {
-        fn drop(&mut self) {
-            unsafe {
-                if self.p != None {
-                    let self_p: &mut Option<*const packet<T>> =
-                        mem::transmute(&mut self.p);
-                    let p = replace(self_p, None);
-                    sender_terminate(p.unwrap())
-                }
-            }
-        }
-    }
-
-    impl<T:Send> send_packet<T> {
-        pub fn unwrap(&mut self) -> *const packet<T> {
-            replace(&mut self.p, None).unwrap()
-        }
-    }
-
-    pub fn send_packet<T:Send>(p: *const packet<T>) -> send_packet<T> {
-        send_packet {
-            p: Some(p)
-        }
-    }
-
-    pub struct recv_packet<T:Send> {
-        p: Option<*const packet<T>>,
-    }
-
-    impl<T:Send> Drop for recv_packet<T> {
-        fn drop(&mut self) {
-            unsafe {
-                if self.p != None {
-                    let self_p: &mut Option<*const packet<T>> =
-                        mem::transmute(&mut self.p);
-                    let p = replace(self_p, None);
-                    receiver_terminate(p.unwrap())
-                }
-            }
-        }
-    }
-
-    impl<T:Send> recv_packet<T> {
-        pub fn unwrap(&mut self) -> *const packet<T> {
-            replace(&mut self.p, None).unwrap()
-        }
-    }
-
-    pub fn recv_packet<T:Send>(p: *const packet<T>) -> recv_packet<T> {
-        recv_packet {
-            p: Some(p)
-        }
-    }
-
-    pub fn entangle<T:Send>() -> (send_packet<T>, recv_packet<T>) {
-        let p = packet();
-        (send_packet(p), recv_packet(p))
-    }
-}
-
-pub mod pingpong {
-    use std::mem;
-
-    pub struct ping(::pipes::send_packet<pong>);
-
-    unsafe impl Send for ping {}
-
-    pub struct pong(::pipes::send_packet<ping>);
-
-    unsafe impl Send for pong {}
-
-    pub fn liberate_ping(p: ping) -> ::pipes::send_packet<pong> {
-        unsafe {
-            let _addr : *const ::pipes::send_packet<pong> = match &p {
-              &ping(ref x) => { mem::transmute(x) }
-            };
-            panic!()
-        }
-    }
-
-    pub fn liberate_pong(p: pong) -> ::pipes::send_packet<ping> {
-        unsafe {
-            let _addr : *const ::pipes::send_packet<ping> = match &p {
-              &pong(ref x) => { mem::transmute(x) }
-            };
-            panic!()
-        }
-    }
-
-    pub fn init() -> (client::ping, server::ping) {
-        ::pipes::entangle()
-    }
-
-    pub mod client {
-        use pingpong;
-
-        pub type ping = ::pipes::send_packet<pingpong::ping>;
-        pub type pong = ::pipes::recv_packet<pingpong::pong>;
-
-        pub fn do_ping(c: ping) -> pong {
-            let (sp, rp) = ::pipes::entangle();
-
-            ::pipes::send(c, pingpong::ping(sp));
-            rp
-        }
-
-        pub fn do_pong(c: pong) -> (ping, ()) {
-            let packet = ::pipes::recv(c);
-            if packet.is_none() {
-                panic!("sender closed the connection")
-            }
-            (pingpong::liberate_pong(packet.unwrap()), ())
-        }
-    }
-
-    pub mod server {
-        use pingpong;
-
-        pub type ping = ::pipes::recv_packet<pingpong::ping>;
-        pub type pong = ::pipes::send_packet<pingpong::pong>;
-
-        pub fn do_ping(c: ping) -> (pong, ()) {
-            let packet = ::pipes::recv(c);
-            if packet.is_none() {
-                panic!("sender closed the connection")
-            }
-            (pingpong::liberate_ping(packet.unwrap()), ())
-        }
-
-        pub fn do_pong(c: pong) -> ping {
-            let (sp, rp) = ::pipes::entangle();
-            ::pipes::send(c, pingpong::pong(sp));
-            rp
-        }
-    }
-}
-
-fn client(chan: pingpong::client::ping) {
-    let chan = pingpong::client::do_ping(chan);
-    println!("Sent ping");
-    let (_chan, _data) = pingpong::client::do_pong(chan);
-    println!("Received pong");
-}
-
-fn server(chan: pingpong::server::ping) {
-    let (chan, _data) = pingpong::server::do_ping(chan);
-    println!("Received ping");
-    let _chan = pingpong::server::do_pong(chan);
-    println!("Sent pong");
-}
-
-pub fn main() {
-  /*
-//    Commented out because of option::get error
-
-    let (client_, server_) = pingpong::init();
-
-    task::spawn {|client_|
-        let client__ = client_.take();
-        client(client__);
-    };
-    task::spawn {|server_|
-        let server__ = server_.take();
-        server(server_ËŠ);
-    };
-  */
-}
diff --git a/src/test/ui/regions/issue-28848.rs b/src/test/ui/regions/issue-28848.rs
deleted file mode 100644
index 0eb3d89c590..00000000000
--- a/src/test/ui/regions/issue-28848.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-struct Foo<'a, 'b: 'a>(&'a &'b ());
-
-impl<'a, 'b> Foo<'a, 'b> {
-    fn xmute(a: &'b ()) -> &'a () {
-        unreachable!()
-    }
-}
-
-pub fn foo<'a, 'b>(u: &'b ()) -> &'a () {
-    Foo::<'a, 'b>::xmute(u)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/issue-28848.stderr b/src/test/ui/regions/issue-28848.stderr
deleted file mode 100644
index a29dac4c9c8..00000000000
--- a/src/test/ui/regions/issue-28848.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/issue-28848.rs:10:5
-   |
-LL | pub fn foo<'a, 'b>(u: &'b ()) -> &'a () {
-   |            --  -- lifetime `'b` defined here
-   |            |
-   |            lifetime `'a` defined here
-LL |     Foo::<'a, 'b>::xmute(u)
-   |     ^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/issue-5243.rs b/src/test/ui/regions/issue-5243.rs
deleted file mode 100644
index c511d45f02d..00000000000
--- a/src/test/ui/regions/issue-5243.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Check that merely having lifetime parameters is not
-// enough for codegen to consider this as non-monomorphic,
-// which led to various assertions and failures in turn.
-
-// pretty-expanded FIXME #23616
-
-struct S<'a> {
-    v: &'a isize
-}
-
-fn f<'lt>(_s: &'lt S<'lt>) {}
-
-pub fn main() {
-    f(& S { v: &42 });
-}
diff --git a/src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs b/src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs
deleted file mode 100644
index a8f7a41c442..00000000000
--- a/src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs
+++ /dev/null
@@ -1,67 +0,0 @@
-// This is a collection of examples where a function's formal
-// parameter has an explicit lifetime and a closure within that
-// function returns that formal parameter. The closure's return type,
-// to be correctly inferred, needs to include the lifetime introduced
-// by the function.
-//
-// This works today, which precludes changing things so that closures
-// follow the same lifetime-elision rules used elsewhere. See
-// rust-lang/rust#56537
-
-// check-pass
-
-fn willy_no_annot<'w>(p: &'w str, q: &str) -> &'w str {
-    let free_dumb = |_x| { p }; // no type annotation at all
-    let hello = format!("Hello");
-    free_dumb(&hello)
-}
-
-fn willy_ret_type_annot<'w>(p: &'w str, q: &str) -> &'w str {
-    let free_dumb = |_x| -> &str { p }; // type annotation on the return type
-    let hello = format!("Hello");
-    free_dumb(&hello)
-}
-
-fn willy_ret_region_annot<'w>(p: &'w str, q: &str) -> &'w str {
-    let free_dumb = |_x| -> &'w str { p }; // type+region annotation on return type
-    let hello = format!("Hello");
-    free_dumb(&hello)
-}
-
-fn willy_arg_type_ret_type_annot<'w>(p: &'w str, q: &str) -> &'w str {
-    let free_dumb = |_x: &str| -> &str { p }; // type annotation on arg and return types
-    let hello = format!("Hello");
-    free_dumb(&hello)
-}
-
-fn willy_arg_type_ret_region_annot<'w>(p: &'w str, q: &str) -> &'w str {
-    let free_dumb = |_x: &str| -> &'w str { p }; // fully annotated
-    let hello = format!("Hello");
-    free_dumb(&hello)
-}
-
-fn main() {
-    let world = format!("World");
-    let w1: &str = {
-        let hello = format!("He11o");
-        willy_no_annot(&world, &hello)
-    };
-    let w2: &str = {
-        let hello = format!("He22o");
-        willy_ret_type_annot(&world, &hello)
-    };
-    let w3: &str = {
-        let hello = format!("He33o");
-        willy_ret_region_annot(&world, &hello)
-    };
-    let w4: &str = {
-        let hello = format!("He44o");
-        willy_arg_type_ret_type_annot(&world, &hello)
-    };
-    let w5: &str = {
-        let hello = format!("He55o");
-        willy_arg_type_ret_region_annot(&world, &hello)
-    };
-    assert_eq!((w1, w2, w3, w4, w5),
-               ("World","World","World","World","World"));
-}
diff --git a/src/test/ui/regions/issue-6157.rs b/src/test/ui/regions/issue-6157.rs
deleted file mode 100644
index b7a44ed8623..00000000000
--- a/src/test/ui/regions/issue-6157.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// run-pass
-// pretty-expanded FIXME #23616
-
-pub trait OpInt { fn call(&mut self, _: isize, _: isize) -> isize; }
-
-impl<F> OpInt for F where F: FnMut(isize, isize) -> isize {
-    fn call(&mut self, a:isize, b:isize) -> isize {
-        (*self)(a, b)
-    }
-}
-
-fn squarei<'a>(x: isize, op: &'a mut dyn OpInt) -> isize { op.call(x, x) }
-
-fn muli(x:isize, y:isize) -> isize { x * y }
-
-pub fn main() {
-    let mut f = |x, y| muli(x, y);
-    {
-        let g = &mut f;
-        let h = g as &mut dyn OpInt;
-        squarei(3, h);
-    }
-}
diff --git a/src/test/ui/regions/issue-72051-member-region-hang.rs b/src/test/ui/regions/issue-72051-member-region-hang.rs
deleted file mode 100644
index b7340b79d68..00000000000
--- a/src/test/ui/regions/issue-72051-member-region-hang.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// Regression test for #72051, hang when resolving regions.
-
-// check-pass
-// edition:2018
-
-pub async fn query<'a>(_: &(), _: &(), _: (&(dyn std::any::Any + 'a),) ) {}
-fn main() {}
diff --git a/src/test/ui/regions/issue-78262.base.stderr b/src/test/ui/regions/issue-78262.base.stderr
deleted file mode 100644
index 7f232e4a7b2..00000000000
--- a/src/test/ui/regions/issue-78262.base.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0521]: borrowed data escapes outside of closure
-  --> $DIR/issue-78262.rs:12:26
-   |
-LL |     let f = |x: &dyn TT| x.func();
-   |              -  -        ^^^^^^^^
-   |              |  |        |
-   |              |  |        `x` escapes the closure body here
-   |              |  |        argument requires that `'1` must outlive `'static`
-   |              |  let's call the lifetime of this reference `'1`
-   |              `x` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0521`.
diff --git a/src/test/ui/regions/issue-78262.polonius.stderr b/src/test/ui/regions/issue-78262.polonius.stderr
deleted file mode 100644
index 7f232e4a7b2..00000000000
--- a/src/test/ui/regions/issue-78262.polonius.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0521]: borrowed data escapes outside of closure
-  --> $DIR/issue-78262.rs:12:26
-   |
-LL |     let f = |x: &dyn TT| x.func();
-   |              -  -        ^^^^^^^^
-   |              |  |        |
-   |              |  |        `x` escapes the closure body here
-   |              |  |        argument requires that `'1` must outlive `'static`
-   |              |  let's call the lifetime of this reference `'1`
-   |              `x` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0521`.
diff --git a/src/test/ui/regions/issue-78262.rs b/src/test/ui/regions/issue-78262.rs
deleted file mode 100644
index 642dbd7f821..00000000000
--- a/src/test/ui/regions/issue-78262.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// revisions: base polonius
-// ignore-compare-mode-polonius
-// [polonius] compile-flags: -Z polonius
-
-trait TT {}
-
-impl dyn TT {
-    fn func(&self) {}
-}
-
-fn main() {
-    let f = |x: &dyn TT| x.func();
-    //[base]~^ ERROR: borrowed data escapes outside of closure
-    //[polonius]~^^ ERROR: borrowed data escapes outside of closure
-}
diff --git a/src/test/ui/regions/outlives-with-missing.rs b/src/test/ui/regions/outlives-with-missing.rs
deleted file mode 100644
index 29d89718b58..00000000000
--- a/src/test/ui/regions/outlives-with-missing.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-trait HandlerFamily {
-    type Target;
-}
-
-struct HandlerWrapper<H: HandlerFamily>(H);
-
-impl<H: HandlerFamily> HandlerWrapper<H> {
-    pub fn set_handler(&self, handler: &H::Target)
-    where
-        T: Send + Sync + 'static,
-        //~^ ERROR cannot find type `T` in this scope
-    {
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/outlives-with-missing.stderr b/src/test/ui/regions/outlives-with-missing.stderr
deleted file mode 100644
index e204c918724..00000000000
--- a/src/test/ui/regions/outlives-with-missing.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0412]: cannot find type `T` in this scope
-  --> $DIR/outlives-with-missing.rs:10:9
-   |
-LL | impl<H: HandlerFamily> HandlerWrapper<H> {
-   |      - similarly named type parameter `H` defined here
-...
-LL |         T: Send + Sync + 'static,
-   |         ^ help: a type parameter with a similar name exists: `H`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0412`.
diff --git a/src/test/ui/regions/owned-implies-static.rs b/src/test/ui/regions/owned-implies-static.rs
deleted file mode 100644
index 2efa8cc02f4..00000000000
--- a/src/test/ui/regions/owned-implies-static.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-// run-pass
-// pretty-expanded FIXME #23616
-
-fn f<T: 'static>(_x: T) {}
-
-pub fn main() {
-    f(Box::new(5));
-}
diff --git a/src/test/ui/regions/rcvr-borrowed-to-region.rs b/src/test/ui/regions/rcvr-borrowed-to-region.rs
deleted file mode 100644
index 7f32b8b91a6..00000000000
--- a/src/test/ui/regions/rcvr-borrowed-to-region.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// run-pass
-
-#![allow(non_camel_case_types)]
-
-trait get {
-    fn get(self) -> isize;
-}
-
-// Note: impl on a slice; we're checking that the pointers below
-// correctly get borrowed to `&`. (similar to impling for `isize`, with
-// `&self` instead of `self`.)
-impl<'a> get for &'a isize {
-    fn get(self) -> isize {
-        return *self;
-    }
-}
-
-pub fn main() {
-    let x: Box<_> = 6.into();
-    let y = x.get();
-    println!("y={}", y);
-    assert_eq!(y, 6);
-
-    let x = &6;
-    let y = x.get();
-    println!("y={}", y);
-    assert_eq!(y, 6);
-}
diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-big.rs b/src/test/ui/regions/region-borrow-params-issue-29793-big.rs
deleted file mode 100644
index 83b1a6eab57..00000000000
--- a/src/test/ui/regions/region-borrow-params-issue-29793-big.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-// Issue #29793, big regression test: do not let borrows of
-// parameters to ever be returned (expanded with exploration of
-// variations).
-//
-// This is the version of the test that actually exposed unsound
-// behavior (because the improperly accepted closure was actually
-// able to be invoked).
-
-struct WrapA<F>(Option<F>);
-
-impl<F> WrapA<F> {
-    fn new() -> WrapA<F> {
-        WrapA(None)
-    }
-    fn set(mut self, f: F) -> Self {
-        self.0 = Some(f);
-        self
-    }
-}
-
-struct WrapB<F>(Option<F>);
-
-impl<F> WrapB<F> {
-    fn new() -> WrapB<F> {
-        WrapB(None)
-    }
-    fn set(mut self, f: F) -> Self {
-        self.0 = Some(f);
-        self
-    }
-}
-
-trait DoStuff : Sized {
-    fn handle(self);
-}
-
-impl<F, T> DoStuff for WrapA<F>
-    where F: FnMut(usize, usize) -> T, T: DoStuff {
-        fn handle(mut self) {
-            if let Some(ref mut f) = self.0 {
-                let x = f(1, 2);
-                let _foo = [0usize; 16];
-                x.handle();
-            }
-        }
-    }
-
-impl<F> DoStuff for WrapB<F> where F: FnMut(bool) -> usize {
-    fn handle(mut self) {
-        if let Some(ref mut f) = self.0 {
-            println!("{}", f(true));
-        }
-    }
-}
-
-impl<F, T> WrapA<F>
-    where F: FnMut(usize, usize) -> T, T: DoStuff {
-        fn handle_ref(&mut self) {
-            if let Some(ref mut f) = self.0 {
-                let x = f(1, 2);
-            }
-        }
-    }
-
-fn main() {
-    let mut w = WrapA::new().set(|x: usize, y: usize| {
-        WrapB::new().set(|t: bool| if t { x } else { y }) // (separate errors for `x` vs `y`)
-            //~^ ERROR closure may outlive the current function
-            //~| ERROR closure may outlive the current function
-    });
-
-    w.handle(); // This works
-    // w.handle_ref(); // This doesn't
-}
diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-big.stderr b/src/test/ui/regions/region-borrow-params-issue-29793-big.stderr
deleted file mode 100644
index 561dd64b49d..00000000000
--- a/src/test/ui/regions/region-borrow-params-issue-29793-big.stderr
+++ /dev/null
@@ -1,39 +0,0 @@
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-big.rs:67:26
-   |
-LL |         WrapB::new().set(|t: bool| if t { x } else { y }) // (separate errors for `x` vs `y`)
-   |                          ^^^^^^^^^        - `x` is borrowed here
-   |                          |
-   |                          may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-big.rs:67:9
-   |
-LL |         WrapB::new().set(|t: bool| if t { x } else { y }) // (separate errors for `x` vs `y`)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |         WrapB::new().set(move |t: bool| if t { x } else { y }) // (separate errors for `x` vs `y`)
-   |                          ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-big.rs:67:26
-   |
-LL |         WrapB::new().set(|t: bool| if t { x } else { y }) // (separate errors for `x` vs `y`)
-   |                          ^^^^^^^^^                   - `y` is borrowed here
-   |                          |
-   |                          may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-big.rs:67:9
-   |
-LL |         WrapB::new().set(|t: bool| if t { x } else { y }) // (separate errors for `x` vs `y`)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |         WrapB::new().set(move |t: bool| if t { x } else { y }) // (separate errors for `x` vs `y`)
-   |                          ++++
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0373`.
diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-small.rs b/src/test/ui/regions/region-borrow-params-issue-29793-small.rs
deleted file mode 100644
index 5f1c2ed08f6..00000000000
--- a/src/test/ui/regions/region-borrow-params-issue-29793-small.rs
+++ /dev/null
@@ -1,212 +0,0 @@
-// Issue #29793, small regression tests: do not let borrows of
-// parameters to ever be returned (expanded with exploration of
-// variations).
-
-// CLOSURES
-
-fn escaping_borrow_of_closure_params_1() {
-    let g = |x: usize, y:usize| {
-        let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-        //~^ ERROR E0373
-        //~| ERROR E0373
-        return f;
-    };
-
-    // We delberately do not call `g`; this small version of the test,
-    // after adding such a call, was (properly) rejected even when the
-    // system still suffered from issue #29793.
-
-    // g(10, 20)(true);
-}
-
-fn escaping_borrow_of_closure_params_2() {
-    let g = |x: usize, y:usize| {
-        let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-        //~^ ERROR E0373
-        //~| ERROR E0373
-        f
-    };
-
-    // (we don't call `g`; see above)
-}
-
-fn move_of_closure_params() {
-    let g = |x: usize, y:usize| {
-        let f = move |t: bool| if t { x } else { y };
-        f;
-    };
-    // (this code is fine, so lets go ahead and ensure rustc accepts call of `g`)
-    (g(1,2));
-}
-
-fn ok_borrow_of_fn_params(a: usize, b:usize) {
-    let g = |x: usize, y:usize| {
-        let f = |t: bool| if t { a } else { b };
-        return f;
-    };
-    // (this code is fine, so lets go ahead and ensure rustc accepts call of `g`)
-    (g(1,2))(true);
-}
-
-// TOP-LEVEL FN'S
-
-fn escaping_borrow_of_fn_params_1() {
-    fn g<'a>(x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-        let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-        //~^ ERROR E0373
-        //~| ERROR E0373
-        return Box::new(f);
-    };
-
-    // (we don't call `g`; see above)
-}
-
-fn escaping_borrow_of_fn_params_2() {
-    fn g<'a>(x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-        let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-        //~^ ERROR E0373
-        //~| ERROR E0373
-        Box::new(f)
-    };
-
-    // (we don't call `g`; see above)
-}
-
-fn move_of_fn_params() {
-    fn g<'a>(x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-        let f = move |t: bool| if t { x } else { y };
-        return Box::new(f);
-    };
-    // (this code is fine, so lets go ahead and ensure rustc accepts call of `g`)
-    (g(1,2))(true);
-}
-
-// INHERENT METHODS
-
-fn escaping_borrow_of_method_params_1() {
-    struct S;
-    impl S {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-            //~^ ERROR E0373
-            //~| ERROR E0373
-            return Box::new(f);
-        }
-    }
-
-    // (we don't call `g`; see above)
-}
-
-fn escaping_borrow_of_method_params_2() {
-    struct S;
-    impl S {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-            //~^ ERROR E0373
-            //~| ERROR E0373
-            Box::new(f)
-        }
-    }
-    // (we don't call `g`; see above)
-}
-
-fn move_of_method_params() {
-    struct S;
-    impl S {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = move |t: bool| if t { x } else { y };
-            return Box::new(f);
-        }
-    }
-    // (this code is fine, so lets go ahead and ensure rustc accepts call of `g`)
-    (S.g(1,2))(true);
-}
-
-// TRAIT IMPL METHODS
-
-fn escaping_borrow_of_trait_impl_params_1() {
-    trait T { fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a>; }
-    struct S;
-    impl T for S {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-            //~^ ERROR E0373
-            //~| ERROR E0373
-            return Box::new(f);
-        }
-    }
-
-    // (we don't call `g`; see above)
-}
-
-fn escaping_borrow_of_trait_impl_params_2() {
-    trait T { fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a>; }
-    struct S;
-    impl T for S {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-            //~^ ERROR E0373
-            //~| ERROR E0373
-            Box::new(f)
-        }
-    }
-    // (we don't call `g`; see above)
-}
-
-fn move_of_trait_impl_params() {
-    trait T { fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a>; }
-    struct S;
-    impl T for S {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = move |t: bool| if t { x } else { y };
-            return Box::new(f);
-        }
-    }
-    // (this code is fine, so lets go ahead and ensure rustc accepts call of `g`)
-    (S.g(1,2))(true);
-}
-
-// TRAIT DEFAULT METHODS
-
-fn escaping_borrow_of_trait_default_params_1() {
-    struct S;
-    trait T {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-            //~^ ERROR E0373
-            //~| ERROR E0373
-            return Box::new(f);
-        }
-    }
-    impl T for S {}
-    // (we don't call `g`; see above)
-}
-
-fn escaping_borrow_of_trait_default_params_2() {
-    struct S;
-    trait T {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-            //~^ ERROR E0373
-            //~| ERROR E0373
-            Box::new(f)
-        }
-    }
-    impl T for S {}
-    // (we don't call `g`; see above)
-}
-
-fn move_of_trait_default_params() {
-    struct S;
-    trait T {
-        fn g<'a>(&self, x: usize, y:usize) -> Box<dyn Fn(bool) -> usize + 'a> {
-            let f = move |t: bool| if t { x } else { y };
-            return Box::new(f);
-        }
-    }
-    impl T for S {}
-    // (this code is fine, so lets go ahead and ensure rustc accepts call of `g`)
-    (S.g(1,2))(true);
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/region-borrow-params-issue-29793-small.stderr b/src/test/ui/regions/region-borrow-params-issue-29793-small.stderr
deleted file mode 100644
index e446f2a0027..00000000000
--- a/src/test/ui/regions/region-borrow-params-issue-29793-small.stderr
+++ /dev/null
@@ -1,363 +0,0 @@
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:9:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^        - `x` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:12:16
-   |
-LL |         return f;
-   |                ^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:9:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^                   - `y` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:12:16
-   |
-LL |         return f;
-   |                ^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:24:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^        - `x` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:27:9
-   |
-LL |         f
-   |         ^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:24:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^                   - `y` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:27:9
-   |
-LL |         f
-   |         ^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:55:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^        - `x` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:58:16
-   |
-LL |         return Box::new(f);
-   |                ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:55:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^                   - `y` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:58:16
-   |
-LL |         return Box::new(f);
-   |                ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:66:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^        - `x` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:69:9
-   |
-LL |         Box::new(f)
-   |         ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:66:17
-   |
-LL |         let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ^^^^^^^^^                   - `y` is borrowed here
-   |                 |
-   |                 may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:69:9
-   |
-LL |         Box::new(f)
-   |         ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |         let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                 ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:90:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^        - `x` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:93:20
-   |
-LL |             return Box::new(f);
-   |                    ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:90:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^                   - `y` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:93:20
-   |
-LL |             return Box::new(f);
-   |                    ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:104:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^        - `x` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:107:13
-   |
-LL |             Box::new(f)
-   |             ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:104:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^                   - `y` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:107:13
-   |
-LL |             Box::new(f)
-   |             ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:132:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^        - `x` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:135:20
-   |
-LL |             return Box::new(f);
-   |                    ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:132:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^                   - `y` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:135:20
-   |
-LL |             return Box::new(f);
-   |                    ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:147:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^        - `x` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:150:13
-   |
-LL |             Box::new(f)
-   |             ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:147:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^                   - `y` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:150:13
-   |
-LL |             Box::new(f)
-   |             ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:175:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^        - `x` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:178:20
-   |
-LL |             return Box::new(f);
-   |                    ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:175:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^                   - `y` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:178:20
-   |
-LL |             return Box::new(f);
-   |                    ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `x`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:189:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^        - `x` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `x`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:192:13
-   |
-LL |             Box::new(f)
-   |             ^^^^^^^^^^^
-help: to force the closure to take ownership of `x` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error[E0373]: closure may outlive the current function, but it borrows `y`, which is owned by the current function
-  --> $DIR/region-borrow-params-issue-29793-small.rs:189:21
-   |
-LL |             let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ^^^^^^^^^                   - `y` is borrowed here
-   |                     |
-   |                     may outlive borrowed value `y`
-   |
-note: closure is returned here
-  --> $DIR/region-borrow-params-issue-29793-small.rs:192:13
-   |
-LL |             Box::new(f)
-   |             ^^^^^^^^^^^
-help: to force the closure to take ownership of `y` (and any other referenced variables), use the `move` keyword
-   |
-LL |             let f = move |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
-   |                     ++++
-
-error: aborting due to 20 previous errors
-
-For more information about this error, try `rustc --explain E0373`.
diff --git a/src/test/ui/regions/region-bound-extra-bound-in-inherent-impl.rs b/src/test/ui/regions/region-bound-extra-bound-in-inherent-impl.rs
deleted file mode 100644
index 72d82da4534..00000000000
--- a/src/test/ui/regions/region-bound-extra-bound-in-inherent-impl.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Test related to #22779. In this case, the impl is an inherent impl,
-// so it doesn't have to match any trait, so no error results.
-
-// check-pass
-#![allow(dead_code)]
-
-struct MySlice<'a, T:'a>(&'a mut [T]);
-
-impl<'a, T> MySlice<'a, T> {
-    fn renew<'b: 'a>(self) -> &'b mut [T] where 'a: 'b {
-        &mut self.0[..]
-    }
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/region-bound-on-closure-outlives-call.rs b/src/test/ui/regions/region-bound-on-closure-outlives-call.rs
deleted file mode 100644
index 1311d5121b5..00000000000
--- a/src/test/ui/regions/region-bound-on-closure-outlives-call.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-fn call_rec<F>(mut f: F) -> usize where F: FnMut(usize) -> usize {
-    //~^ WARN function cannot return without recursing
-    (|x| f(x))(call_rec(f)) //~ ERROR cannot move out of `f`
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/region-bound-on-closure-outlives-call.stderr b/src/test/ui/regions/region-bound-on-closure-outlives-call.stderr
deleted file mode 100644
index ea43dde11f8..00000000000
--- a/src/test/ui/regions/region-bound-on-closure-outlives-call.stderr
+++ /dev/null
@@ -1,24 +0,0 @@
-warning: function cannot return without recursing
-  --> $DIR/region-bound-on-closure-outlives-call.rs:1:1
-   |
-LL | fn call_rec<F>(mut f: F) -> usize where F: FnMut(usize) -> usize {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
-LL |
-LL |     (|x| f(x))(call_rec(f))
-   |                ----------- recursive call site
-   |
-   = help: a `loop` may express intention better if this is on purpose
-   = note: `#[warn(unconditional_recursion)]` on by default
-
-error[E0505]: cannot move out of `f` because it is borrowed
-  --> $DIR/region-bound-on-closure-outlives-call.rs:3:25
-   |
-LL |     (|x| f(x))(call_rec(f))
-   |      --- -              ^ move out of `f` occurs here
-   |      |   |
-   |      |   borrow occurs due to use in closure
-   |      borrow of `f` occurs here
-
-error: aborting due to previous error; 1 warning emitted
-
-For more information about this error, try `rustc --explain E0505`.
diff --git a/src/test/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs b/src/test/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs
deleted file mode 100644
index 68056370c44..00000000000
--- a/src/test/ui/regions/region-bound-same-bounds-in-trait-and-impl.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Test related to #22779, but where the `'a:'b` relation
-// appears in the trait too. No error here.
-
-// check-pass
-
-trait Tr<'a, T> {
-    fn renew<'b: 'a>(self) -> &'b mut [T] where 'a: 'b;
-}
-
-impl<'a, T> Tr<'a, T> for &'a mut [T] {
-    fn renew<'b: 'a>(self) -> &'b mut [T] where 'a: 'b {
-        &mut self[..]
-    }
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.rs b/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.rs
deleted file mode 100644
index 40d2b740b43..00000000000
--- a/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-// Test related to when a region bound is required to be specified.
-
-trait IsStatic : 'static { }
-trait IsSend : Send { }
-trait Is<'a> : 'a { }
-trait Is2<'a> : 'a { }
-trait SomeTrait { }
-
-// Bounds on object types:
-
-struct Foo<'a,'b,'c> { //~ ERROR parameter `'c` is never used
-    // All of these are ok, because we can derive exactly one bound:
-    a: Box<dyn IsStatic>,
-    b: Box<dyn Is<'static>>,
-    c: Box<dyn Is<'a>>,
-    d: Box<dyn IsSend>,
-    e: Box<dyn Is<'a>+Send>, // we can derive two bounds, but one is 'static, so ok
-    f: Box<dyn SomeTrait>,   // OK, defaults to 'static due to RFC 599.
-    g: Box<dyn SomeTrait+'a>,
-
-    z: Box<dyn Is<'a>+'b+'c>,
-    //~^ ERROR only a single explicit lifetime bound is permitted
-    //~| ERROR lifetime bound not satisfied
-}
-
-fn test<
-    'a,
-    'b,
-    A:IsStatic,
-    B:Is<'a>+Is2<'b>, // OK in a parameter, but not an object type.
-    C:'b+Is<'a>+Is2<'b>,
-    D:Is<'a>+Is2<'static>,
-    E:'a+'b           // OK in a parameter, but not an object type.
->() { }
-
-fn main() { }
diff --git a/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.stderr b/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.stderr
deleted file mode 100644
index 2ec2ca49b11..00000000000
--- a/src/test/ui/regions/region-bounds-on-objects-and-type-parameters.stderr
+++ /dev/null
@@ -1,35 +0,0 @@
-error[E0226]: only a single explicit lifetime bound is permitted
-  --> $DIR/region-bounds-on-objects-and-type-parameters.rs:21:26
-   |
-LL |     z: Box<dyn Is<'a>+'b+'c>,
-   |                          ^^
-
-error[E0478]: lifetime bound not satisfied
-  --> $DIR/region-bounds-on-objects-and-type-parameters.rs:21:8
-   |
-LL |     z: Box<dyn Is<'a>+'b+'c>,
-   |        ^^^^^^^^^^^^^^^^^^^^^
-   |
-note: lifetime parameter instantiated with the lifetime `'b` as defined here
-  --> $DIR/region-bounds-on-objects-and-type-parameters.rs:11:15
-   |
-LL | struct Foo<'a,'b,'c> {
-   |               ^^
-note: but lifetime parameter must outlive the lifetime `'a` as defined here
-  --> $DIR/region-bounds-on-objects-and-type-parameters.rs:11:12
-   |
-LL | struct Foo<'a,'b,'c> {
-   |            ^^
-
-error[E0392]: parameter `'c` is never used
-  --> $DIR/region-bounds-on-objects-and-type-parameters.rs:11:18
-   |
-LL | struct Foo<'a,'b,'c> {
-   |                  ^^ unused parameter
-   |
-   = help: consider removing `'c`, referring to it in a field, or using a marker such as `PhantomData`
-
-error: aborting due to 3 previous errors
-
-Some errors have detailed explanations: E0226, E0392, E0478.
-For more information about an error, try `rustc --explain E0226`.
diff --git a/src/test/ui/regions/region-invariant-static-error-reporting.rs b/src/test/ui/regions/region-invariant-static-error-reporting.rs
deleted file mode 100644
index c8288b5923c..00000000000
--- a/src/test/ui/regions/region-invariant-static-error-reporting.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// This test checks that the error messages you get for this example
-// at least mention `'a` and `'static`. The precise messages can drift
-// over time, but this test used to exhibit some pretty bogus messages
-// that were not remotely helpful.
-
-// error-pattern:argument requires that `'a` must outlive `'static`
-
-struct Invariant<'a>(Option<&'a mut &'a mut ()>);
-
-fn mk_static() -> Invariant<'static> { Invariant(None) }
-
-fn unify<'a>(x: Option<Invariant<'a>>, f: fn(Invariant<'a>)) {
-    let bad = if x.is_some() {
-        x.unwrap() //~ ERROR borrowed data escapes outside of function [E0521]
-    } else {
-        mk_static()
-    };
-    f(bad);
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/region-invariant-static-error-reporting.stderr b/src/test/ui/regions/region-invariant-static-error-reporting.stderr
deleted file mode 100644
index 2ad39b00071..00000000000
--- a/src/test/ui/regions/region-invariant-static-error-reporting.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0521]: borrowed data escapes outside of function
-  --> $DIR/region-invariant-static-error-reporting.rs:14:9
-   |
-LL | fn unify<'a>(x: Option<Invariant<'a>>, f: fn(Invariant<'a>)) {
-   |          --  - `x` is a reference that is only valid in the function body
-   |          |
-   |          lifetime `'a` defined here
-LL |     let bad = if x.is_some() {
-LL |         x.unwrap()
-   |         ^^^^^^^^^^
-   |         |
-   |         `x` escapes the function body here
-   |         argument requires that `'a` must outlive `'static`
-   |
-   = note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Invariant<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0521`.
diff --git a/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs b/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs
deleted file mode 100644
index d364c467714..00000000000
--- a/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-fn a<'a, 'b>(x: &mut &'a isize, y: &mut &'b isize) where 'b: 'a {
-    // Note: this is legal because of the `'b:'a` declaration.
-    *x = *y;
-}
-
-fn b<'a, 'b>(x: &mut &'a isize, y: &mut &'b isize) {
-    // Illegal now because there is no `'b:'a` declaration.
-    *x = *y;
-}
-
-fn c<'a,'b>(x: &mut &'a isize, y: &mut &'b isize) {
-    // Here we try to call `foo` but do not know that `'a` and `'b` are
-    // related as required.
-    a(x, y);
-}
-
-fn d() {
-    // 'a and 'b are early bound in the function `a` because they appear
-    // inconstraints:
-    let _: fn(&mut &isize, &mut &isize) = a;
-    //~^ ERROR mismatched types [E0308]
-}
-
-fn e() {
-    // 'a and 'b are late bound in the function `b` because there are
-    // no constraints:
-    let _: fn(&mut &isize, &mut &isize) = b;
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr b/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr
deleted file mode 100644
index 3b62c7b61c1..00000000000
--- a/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/region-lifetime-bounds-on-fns-where-clause.rs:20:43
-   |
-LL |     let _: fn(&mut &isize, &mut &isize) = a;
-   |                                           ^ one type is more general than the other
-   |
-   = note: expected fn pointer `for<'a, 'b, 'c, 'd> fn(&'a mut &'b isize, &'c mut &'d isize)`
-                 found fn item `for<'a, 'b> fn(&'a mut &isize, &'b mut &isize) {a::<'_, '_>}`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs b/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs
deleted file mode 100644
index 60dafdd528c..00000000000
--- a/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-fn a<'a, 'b, 'c>(x: &mut &'a isize, y: &mut &'b isize, z: &mut &'c isize) where 'b: 'a + 'c {
-    // Note: this is legal because of the `'b:'a` declaration.
-    *x = *y;
-    *z = *y;
-}
-
-fn b<'a, 'b, 'c>(x: &mut &'a isize, y: &mut &'b isize, z: &mut &'c isize) {
-    // Illegal now because there is no `'b:'a` declaration.
-    *x = *y;
-    *z = *y;
-}
-
-fn c<'a,'b, 'c>(x: &mut &'a isize, y: &mut &'b isize, z: &mut &'c isize) {
-    // Here we try to call `foo` but do not know that `'a` and `'b` are
-    // related as required.
-    a(x, y, z);
-}
-
-fn d() {
-    // 'a and 'b are early bound in the function `a` because they appear
-    // inconstraints:
-    let _: fn(&mut &isize, &mut &isize, &mut &isize) = a;
-    //~^ ERROR E0308
-}
-
-fn e() {
-    // 'a and 'b are late bound in the function `b` because there are
-    // no constraints:
-    let _: fn(&mut &isize, &mut &isize, &mut &isize) = b;
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr b/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr
deleted file mode 100644
index 8a18a234b5c..00000000000
--- a/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/region-multiple-lifetime-bounds-on-fns-where-clause.rs:22:56
-   |
-LL |     let _: fn(&mut &isize, &mut &isize, &mut &isize) = a;
-   |                                                        ^ one type is more general than the other
-   |
-   = note: expected fn pointer `for<'a, 'b, 'c, 'd, 'e, 'f> fn(&'a mut &'b isize, &'c mut &'d isize, &'e mut &'f isize)`
-                 found fn item `for<'a, 'b, 'c> fn(&'a mut &isize, &'b mut &isize, &'c mut &isize) {a::<'_, '_, '_>}`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/regions/region-object-lifetime-1.rs b/src/test/ui/regions/region-object-lifetime-1.rs
deleted file mode 100644
index ddf3be690dd..00000000000
--- a/src/test/ui/regions/region-object-lifetime-1.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Various tests related to testing how region inference works
-// with respect to the object receivers.
-
-// check-pass
-#![allow(warnings)]
-
-trait Foo {
-    fn borrowed<'a>(&'a self) -> &'a ();
-}
-
-// Here the receiver and return value all have the same lifetime,
-// so no error results.
-fn borrowed_receiver_same_lifetime<'a>(x: &'a Foo) -> &'a () {
-    x.borrowed()
-}
-
-
-fn main() {}
diff --git a/src/test/ui/regions/region-object-lifetime-2.rs b/src/test/ui/regions/region-object-lifetime-2.rs
deleted file mode 100644
index cfdb8fefed3..00000000000
--- a/src/test/ui/regions/region-object-lifetime-2.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// Various tests related to testing how region inference works
-// with respect to the object receivers.
-
-trait Foo {
-    fn borrowed<'a>(&'a self) -> &'a ();
-}
-
-// Borrowed receiver but two distinct lifetimes, we get an error.
-fn borrowed_receiver_different_lifetimes<'a,'b>(x: &'a dyn Foo) -> &'b () {
-    x.borrowed()
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/region-object-lifetime-2.stderr b/src/test/ui/regions/region-object-lifetime-2.stderr
deleted file mode 100644
index d95289f3f9d..00000000000
--- a/src/test/ui/regions/region-object-lifetime-2.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/region-object-lifetime-2.rs:10:5
-   |
-LL | fn borrowed_receiver_different_lifetimes<'a,'b>(x: &'a dyn Foo) -> &'b () {
-   |                                          -- -- lifetime `'b` defined here
-   |                                          |
-   |                                          lifetime `'a` defined here
-LL |     x.borrowed()
-   |     ^^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/region-object-lifetime-3.rs b/src/test/ui/regions/region-object-lifetime-3.rs
deleted file mode 100644
index 0536fa2a20f..00000000000
--- a/src/test/ui/regions/region-object-lifetime-3.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Various tests related to testing how region inference works
-// with respect to the object receivers.
-
-// check-pass
-#![allow(warnings)]
-
-trait Foo {
-    fn borrowed<'a>(&'a self) -> &'a ();
-}
-
-// Borrowed receiver with two distinct lifetimes, but we know that
-// 'b:'a, hence &'a () is permitted.
-fn borrowed_receiver_related_lifetimes<'a,'b>(x: &'a (Foo+'b)) -> &'a () {
-    x.borrowed()
-}
-
-
-fn main() {}
diff --git a/src/test/ui/regions/region-object-lifetime-4.rs b/src/test/ui/regions/region-object-lifetime-4.rs
deleted file mode 100644
index 8f42df831e3..00000000000
--- a/src/test/ui/regions/region-object-lifetime-4.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Various tests related to testing how region inference works
-// with respect to the object receivers.
-
-trait Foo {
-    fn borrowed<'a>(&'a self) -> &'a ();
-}
-
-// Here we have two distinct lifetimes, but we try to return a pointer
-// with the longer lifetime when (from the signature) we only know
-// that it lives as long as the shorter lifetime. Therefore, error.
-fn borrowed_receiver_related_lifetimes2<'a,'b>(x: &'a (dyn Foo + 'b)) -> &'b () {
-    x.borrowed()
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/region-object-lifetime-4.stderr b/src/test/ui/regions/region-object-lifetime-4.stderr
deleted file mode 100644
index fda66a2412c..00000000000
--- a/src/test/ui/regions/region-object-lifetime-4.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/region-object-lifetime-4.rs:12:5
-   |
-LL | fn borrowed_receiver_related_lifetimes2<'a,'b>(x: &'a (dyn Foo + 'b)) -> &'b () {
-   |                                         -- -- lifetime `'b` defined here
-   |                                         |
-   |                                         lifetime `'a` defined here
-LL |     x.borrowed()
-   |     ^^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/region-object-lifetime-5.rs b/src/test/ui/regions/region-object-lifetime-5.rs
deleted file mode 100644
index ad359367168..00000000000
--- a/src/test/ui/regions/region-object-lifetime-5.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// Various tests related to testing how region inference works
-// with respect to the object receivers.
-
-trait Foo {
-    fn borrowed<'a>(&'a self) -> &'a ();
-}
-
-// Here, the object is bounded by an anonymous lifetime and returned
-// as `&'static`, so you get an error.
-fn owned_receiver(x: Box<dyn Foo>) -> &'static () {
-    x.borrowed() //~ ERROR cannot return reference to local data `*x`
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/region-object-lifetime-5.stderr b/src/test/ui/regions/region-object-lifetime-5.stderr
deleted file mode 100644
index b82b58c7a8e..00000000000
--- a/src/test/ui/regions/region-object-lifetime-5.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0515]: cannot return reference to local data `*x`
-  --> $DIR/region-object-lifetime-5.rs:11:5
-   |
-LL |     x.borrowed()
-   |     ^^^^^^^^^^^^ returns a reference to data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/region-object-lifetime-in-coercion.rs b/src/test/ui/regions/region-object-lifetime-in-coercion.rs
deleted file mode 100644
index 95708de04d2..00000000000
--- a/src/test/ui/regions/region-object-lifetime-in-coercion.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Test that attempts to implicitly coerce a value into an
-// object respect the lifetime bound on the object type.
-
-trait Foo {}
-impl<'a> Foo for &'a [u8] {}
-
-fn a(v: &[u8]) -> Box<dyn Foo + 'static> {
-    let x: Box<dyn Foo + 'static> = Box::new(v);
-    //~^ ERROR lifetime may not live long enough
-    x
-}
-
-fn b(v: &[u8]) -> Box<dyn Foo + 'static> {
-    Box::new(v)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn c(v: &[u8]) -> Box<dyn Foo> {
-    // same as previous case due to RFC 599
-
-    Box::new(v)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn d<'a,'b>(v: &'a [u8]) -> Box<dyn Foo+'b> {
-    Box::new(v)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn e<'a:'b,'b>(v: &'a [u8]) -> Box<dyn Foo+'b> {
-    Box::new(v) // OK, thanks to 'a:'b
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/region-object-lifetime-in-coercion.stderr b/src/test/ui/regions/region-object-lifetime-in-coercion.stderr
deleted file mode 100644
index b5bb08c73c8..00000000000
--- a/src/test/ui/regions/region-object-lifetime-in-coercion.stderr
+++ /dev/null
@@ -1,62 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/region-object-lifetime-in-coercion.rs:8:12
-   |
-LL | fn a(v: &[u8]) -> Box<dyn Foo + 'static> {
-   |         - let's call the lifetime of this reference `'1`
-LL |     let x: Box<dyn Foo + 'static> = Box::new(v);
-   |            ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-   |
-help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
-   |
-LL | fn a(v: &[u8]) -> Box<dyn Foo + '_> {
-   |                                 ~~
-help: alternatively, add an explicit `'static` bound to this reference
-   |
-LL | fn a(v: &'static [u8]) -> Box<dyn Foo + 'static> {
-   |         ~~~~~~~~~~~~~
-
-error: lifetime may not live long enough
-  --> $DIR/region-object-lifetime-in-coercion.rs:14:5
-   |
-LL | fn b(v: &[u8]) -> Box<dyn Foo + 'static> {
-   |         - let's call the lifetime of this reference `'1`
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static`
-   |
-help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
-   |
-LL | fn b(v: &[u8]) -> Box<dyn Foo + '_> {
-   |                                 ~~
-help: alternatively, add an explicit `'static` bound to this reference
-   |
-LL | fn b(v: &'static [u8]) -> Box<dyn Foo + 'static> {
-   |         ~~~~~~~~~~~~~
-
-error: lifetime may not live long enough
-  --> $DIR/region-object-lifetime-in-coercion.rs:21:5
-   |
-LL | fn c(v: &[u8]) -> Box<dyn Foo> {
-   |         - let's call the lifetime of this reference `'1`
-...
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static`
-   |
-help: to declare that the trait object captures data from argument `v`, you can add an explicit `'_` lifetime bound
-   |
-LL | fn c(v: &[u8]) -> Box<dyn Foo + '_> {
-   |                               ++++
-
-error: lifetime may not live long enough
-  --> $DIR/region-object-lifetime-in-coercion.rs:26:5
-   |
-LL | fn d<'a,'b>(v: &'a [u8]) -> Box<dyn Foo+'b> {
-   |      -- -- lifetime `'b` defined here
-   |      |
-   |      lifetime `'a` defined here
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to 4 previous errors
-
diff --git a/src/test/ui/regions/regions-addr-of-arg.rs b/src/test/ui/regions/regions-addr-of-arg.rs
deleted file mode 100644
index 1805141c421..00000000000
--- a/src/test/ui/regions/regions-addr-of-arg.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Check that taking the address of an argument yields a lifetime
-// bounded by the current function call.
-
-fn foo(a: isize) {
-    let _p: &'static isize = &a; //~ ERROR `a` does not live long enough
-}
-
-fn bar(a: isize) {
-    let _q: &isize = &a;
-}
-
-fn zed<'a>(a: isize) -> &'a isize {
-    &a //~ ERROR cannot return reference to function parameter `a`
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-addr-of-arg.stderr b/src/test/ui/regions/regions-addr-of-arg.stderr
deleted file mode 100644
index e77289287e5..00000000000
--- a/src/test/ui/regions/regions-addr-of-arg.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0597]: `a` does not live long enough
-  --> $DIR/regions-addr-of-arg.rs:5:30
-   |
-LL |     let _p: &'static isize = &a;
-   |             --------------   ^^ borrowed value does not live long enough
-   |             |
-   |             type annotation requires that `a` is borrowed for `'static`
-LL | }
-   |  - `a` dropped here while still borrowed
-
-error[E0515]: cannot return reference to function parameter `a`
-  --> $DIR/regions-addr-of-arg.rs:13:5
-   |
-LL |     &a
-   |     ^^ returns a reference to data owned by the current function
-
-error: aborting due to 2 previous errors
-
-Some errors have detailed explanations: E0515, E0597.
-For more information about an error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-addr-of-interior-of-unique-box.rs b/src/test/ui/regions/regions-addr-of-interior-of-unique-box.rs
deleted file mode 100644
index 4221ebfdffb..00000000000
--- a/src/test/ui/regions/regions-addr-of-interior-of-unique-box.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-
-// pretty-expanded FIXME #23616
-
-struct Point {
-    x: isize,
-    y: isize
-}
-
-struct Character {
-    pos: Box<Point>,
-}
-
-fn get_x(x: &Character) -> &isize {
-    // interesting case because the scope of this
-    // borrow of the unique pointer is in fact
-    // larger than the fn itself
-    return &x.pos.x;
-}
-
-pub fn main() {
-}
diff --git a/src/test/ui/regions/regions-addr-of-ret.rs b/src/test/ui/regions/regions-addr-of-ret.rs
deleted file mode 100644
index e5dcd6db033..00000000000
--- a/src/test/ui/regions/regions-addr-of-ret.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// run-pass
-fn f(x: &isize) -> &isize {
-    return &*x;
-}
-
-pub fn main() {
-    let three = &3;
-    println!("{}", *f(three));
-}
diff --git a/src/test/ui/regions/regions-addr-of-self.rs b/src/test/ui/regions/regions-addr-of-self.rs
deleted file mode 100644
index 23647182fcf..00000000000
--- a/src/test/ui/regions/regions-addr-of-self.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-struct Dog {
-    cats_chased: usize,
-}
-
-impl Dog {
-    pub fn chase_cat(&mut self) {
-        let p: &'static mut usize = &mut self.cats_chased;
-        //~^ ERROR lifetime may not live long enough
-        *p += 1;
-    }
-
-    pub fn chase_cat_2(&mut self) {
-        let p: &mut usize = &mut self.cats_chased;
-        *p += 1;
-    }
-}
-
-fn dog() -> Dog {
-    Dog {
-        cats_chased: 0
-    }
-}
-
-fn main() {
-    let mut d = dog();
-    d.chase_cat();
-    println!("cats_chased: {}", d.cats_chased);
-}
diff --git a/src/test/ui/regions/regions-addr-of-self.stderr b/src/test/ui/regions/regions-addr-of-self.stderr
deleted file mode 100644
index 3d7aac74bd4..00000000000
--- a/src/test/ui/regions/regions-addr-of-self.stderr
+++ /dev/null
@@ -1,10 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-addr-of-self.rs:7:16
-   |
-LL |     pub fn chase_cat(&mut self) {
-   |                      - let's call the lifetime of this reference `'1`
-LL |         let p: &'static mut usize = &mut self.cats_chased;
-   |                ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-addr-of-upvar-self.rs b/src/test/ui/regions/regions-addr-of-upvar-self.rs
deleted file mode 100644
index 171eca32e29..00000000000
--- a/src/test/ui/regions/regions-addr-of-upvar-self.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-struct Dog {
-    food: usize,
-}
-
-impl Dog {
-    pub fn chase_cat(&mut self) {
-        let _f = || {
-            let p: &'static mut usize = &mut self.food;
-            //~^ ERROR lifetime may not live long enough
-            //~^^ ERROR lifetime may not live long enough
-            //~^^^ ERROR E0597
-            *p = 3;
-        };
-    }
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-addr-of-upvar-self.stderr b/src/test/ui/regions/regions-addr-of-upvar-self.stderr
deleted file mode 100644
index c16a6f8585b..00000000000
--- a/src/test/ui/regions/regions-addr-of-upvar-self.stderr
+++ /dev/null
@@ -1,35 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-addr-of-upvar-self.rs:8:20
-   |
-LL |         let _f = || {
-   |                  -- lifetime `'1` represents this closure's body
-LL |             let p: &'static mut usize = &mut self.food;
-   |                    ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-   |
-   = note: closure implements `FnMut`, so references to captured variables can't escape the closure
-
-error: lifetime may not live long enough
-  --> $DIR/regions-addr-of-upvar-self.rs:8:20
-   |
-LL |     pub fn chase_cat(&mut self) {
-   |                      - let's call the lifetime of this reference `'1`
-LL |         let _f = || {
-LL |             let p: &'static mut usize = &mut self.food;
-   |                    ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-
-error[E0597]: `self` does not live long enough
-  --> $DIR/regions-addr-of-upvar-self.rs:8:46
-   |
-LL |         let _f = || {
-   |                  -- value captured here
-LL |             let p: &'static mut usize = &mut self.food;
-   |                    ------------------        ^^^^^^^^^ borrowed value does not live long enough
-   |                    |
-   |                    type annotation requires that `self` is borrowed for `'static`
-...
-LL |     }
-   |      - `self` dropped here while still borrowed
-
-error: aborting due to 3 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-adjusted-lvalue-op.rs b/src/test/ui/regions/regions-adjusted-lvalue-op.rs
deleted file mode 100644
index 5aa5a3ecb24..00000000000
--- a/src/test/ui/regions/regions-adjusted-lvalue-op.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// check that we link regions in mutable place ops correctly - issue #41774
-
-struct Data(i32);
-
-trait OhNo {
-    fn oh_no(&mut self, other: &Vec<Data>) { loop {} }
-}
-
-impl OhNo for Data {}
-impl OhNo for [Data] {}
-
-fn main() {
-    let mut v = vec![Data(0)];
-    v[0].oh_no(&v); //~ ERROR cannot borrow `v` as immutable because
-    (*v).oh_no(&v); //~ ERROR cannot borrow `v` as immutable because
-}
diff --git a/src/test/ui/regions/regions-adjusted-lvalue-op.stderr b/src/test/ui/regions/regions-adjusted-lvalue-op.stderr
deleted file mode 100644
index 2c55634445d..00000000000
--- a/src/test/ui/regions/regions-adjusted-lvalue-op.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable
-  --> $DIR/regions-adjusted-lvalue-op.rs:14:16
-   |
-LL |     v[0].oh_no(&v);
-   |     -    ----- ^^ immutable borrow occurs here
-   |     |    |
-   |     |    mutable borrow later used by call
-   |     mutable borrow occurs here
-
-error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable
-  --> $DIR/regions-adjusted-lvalue-op.rs:15:16
-   |
-LL |     (*v).oh_no(&v);
-   |       -  ----- ^^ immutable borrow occurs here
-   |       |  |
-   |       |  mutable borrow later used by call
-   |       mutable borrow occurs here
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0502`.
diff --git a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs b/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs
deleted file mode 100644
index eb6e66818fc..00000000000
--- a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-// Test that we are imposing the requirement that every associated
-// type of a bound that appears in the where clause on a struct must
-// outlive the location in which the type appears, even when the
-// associted type is in a supertype. Issue #22246.
-
-#![allow(dead_code)]
-
-pub trait TheTrait {
-    type TheAssocType;
-}
-
-pub trait TheSubTrait : TheTrait {
-}
-
-pub struct TheType<'b> {
-    m: [fn(&'b()); 0]
-}
-
-impl<'b> TheTrait for TheType<'b> {
-    type TheAssocType = &'b ();
-}
-
-impl<'b> TheSubTrait for TheType<'b> {
-}
-
-pub struct WithAssoc<T:TheSubTrait> {
-    m: [T; 0]
-}
-
-fn with_assoc<'a,'b>() {
-    // For this type to be valid, the rules require that all
-    // associated types of traits that appear in `WithAssoc` must
-    // outlive 'a. In this case, that means TheType<'b>::TheAssocType,
-    // which is &'b (), must outlive 'a.
-
-    let _: &'a WithAssoc<TheType<'b>> = loop { };
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr b/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr
deleted file mode 100644
index 2a262520361..00000000000
--- a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-assoc-type-in-supertrait-outlives-container.rs:36:12
-   |
-LL | fn with_assoc<'a,'b>() {
-   |               -- -- lifetime `'b` defined here
-   |               |
-   |               lifetime `'a` defined here
-...
-LL |     let _: &'a WithAssoc<TheType<'b>> = loop { };
-   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs b/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs
deleted file mode 100644
index 575dfafe15e..00000000000
--- a/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// Test that the compiler checks that arbitrary region bounds declared
-// in the trait must be satisfied on the impl. Issue #20890.
-
-trait Foo<'a> {
-    type Value: 'a;
-    fn dummy(&'a self) {}
-}
-
-impl<'a> Foo<'a> for &'a i16 {
-    // OK.
-    type Value = &'a i32;
-}
-
-impl<'a> Foo<'static> for &'a i32 {
-    type Value = &'a i32;
-    //~^ ERROR the type `&'a i32` does not fulfill the required lifetime
-}
-
-impl<'a, 'b> Foo<'b> for &'a i64 {
-    type Value = &'a i32;
-    //~^ ERROR the type `&'a i32` does not fulfill the required lifetime
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr b/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr
deleted file mode 100644
index ac6154139e2..00000000000
--- a/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.stderr
+++ /dev/null
@@ -1,27 +0,0 @@
-error[E0477]: the type `&'a i32` does not fulfill the required lifetime
-  --> $DIR/regions-assoc-type-region-bound-in-trait-not-met.rs:15:18
-   |
-LL |     type Value = &'a i32;
-   |                  ^^^^^^^
-   |
-note: type must satisfy the static lifetime as required by this binding
-  --> $DIR/regions-assoc-type-region-bound-in-trait-not-met.rs:5:17
-   |
-LL |     type Value: 'a;
-   |                 ^^
-
-error[E0477]: the type `&'a i32` does not fulfill the required lifetime
-  --> $DIR/regions-assoc-type-region-bound-in-trait-not-met.rs:20:18
-   |
-LL |     type Value = &'a i32;
-   |                  ^^^^^^^
-   |
-note: type must outlive the lifetime `'b` as defined here as required by this binding
-  --> $DIR/regions-assoc-type-region-bound-in-trait-not-met.rs:19:10
-   |
-LL | impl<'a, 'b> Foo<'b> for &'a i64 {
-   |          ^^
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0477`.
diff --git a/src/test/ui/regions/regions-assoc-type-region-bound.rs b/src/test/ui/regions/regions-assoc-type-region-bound.rs
deleted file mode 100644
index cbb7d1726d9..00000000000
--- a/src/test/ui/regions/regions-assoc-type-region-bound.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test that the compiler considers the 'a bound declared in the
-// trait. Issue #20890.
-
-// pretty-expanded FIXME #23616
-
-trait Foo<'a> {
-    type Value: 'a;
-
-    fn get(&self) -> &'a Self::Value;
-}
-
-fn takes_foo<'a,F: Foo<'a>>(f: &'a F) {
-    // This call would be illegal, because it results in &'a F::Value,
-    // and the only way we know that `F::Value : 'a` is because of the
-    // trait declaration.
-
-    f.get();
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs b/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs
deleted file mode 100644
index 00100e0e9ea..00000000000
--- a/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// Test that the compiler checks that the 'static bound declared in
-// the trait must be satisfied on the impl. Issue #20890.
-
-trait Foo {
-    type Value: 'static;
-    fn dummy(&self) {}
-}
-
-impl<'a> Foo for &'a i32 {
-    type Value = &'a i32;
-    //~^ ERROR the type `&'a i32` does not fulfill the required lifetime
-}
-
-impl<'a> Foo for i32 {
-    // OK.
-    type Value = i32;
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr b/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr
deleted file mode 100644
index a96f5612fa2..00000000000
--- a/src/test/ui/regions/regions-assoc-type-static-bound-in-trait-not-met.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0477]: the type `&'a i32` does not fulfill the required lifetime
-  --> $DIR/regions-assoc-type-static-bound-in-trait-not-met.rs:10:18
-   |
-LL |     type Value = &'a i32;
-   |                  ^^^^^^^
-   |
-note: type must satisfy the static lifetime as required by this binding
-  --> $DIR/regions-assoc-type-static-bound-in-trait-not-met.rs:5:17
-   |
-LL |     type Value: 'static;
-   |                 ^^^^^^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0477`.
diff --git a/src/test/ui/regions/regions-assoc-type-static-bound.rs b/src/test/ui/regions/regions-assoc-type-static-bound.rs
deleted file mode 100644
index 1458787ea65..00000000000
--- a/src/test/ui/regions/regions-assoc-type-static-bound.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test that the compiler considers the 'static bound declared in the
-// trait. Issue #20890.
-
-// pretty-expanded FIXME #23616
-
-trait Foo {
-    type Value: 'static;
-    fn dummy(&self) { }
-}
-
-fn require_static<T: 'static>() {}
-
-fn takes_foo<F: Foo>() {
-    require_static::<F::Value>()
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-borrow-at.rs b/src/test/ui/regions/regions-borrow-at.rs
deleted file mode 100644
index 152abe109bc..00000000000
--- a/src/test/ui/regions/regions-borrow-at.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// run-pass
-
-fn foo(x: &usize) -> usize {
-    *x
-}
-
-pub fn main() {
-    let p: Box<_> = Box::new(22);
-    let r = foo(&*p);
-    println!("r={}", r);
-    assert_eq!(r, 22);
-}
diff --git a/src/test/ui/regions/regions-borrow-evec-fixed.rs b/src/test/ui/regions/regions-borrow-evec-fixed.rs
deleted file mode 100644
index ed828312b46..00000000000
--- a/src/test/ui/regions/regions-borrow-evec-fixed.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-// run-pass
-
-fn foo(x: &[isize]) -> isize {
-    x[0]
-}
-
-pub fn main() {
-    let p = &[1,2,3,4,5];
-    assert_eq!(foo(p), 1);
-}
diff --git a/src/test/ui/regions/regions-borrow-evec-uniq.rs b/src/test/ui/regions/regions-borrow-evec-uniq.rs
deleted file mode 100644
index bbf7ba79e2a..00000000000
--- a/src/test/ui/regions/regions-borrow-evec-uniq.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// run-pass
-
-
-fn foo(x: &[isize]) -> isize {
-    x[0]
-}
-
-pub fn main() {
-    let p = vec![1,2,3,4,5];
-    let r = foo(&p);
-    assert_eq!(r, 1);
-
-    let p = vec![5,4,3,2,1];
-    let r = foo(&p);
-    assert_eq!(r, 5);
-}
diff --git a/src/test/ui/regions/regions-borrow-uniq.rs b/src/test/ui/regions/regions-borrow-uniq.rs
deleted file mode 100644
index adc6b1939da..00000000000
--- a/src/test/ui/regions/regions-borrow-uniq.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// run-pass
-
-fn foo(x: &usize) -> usize {
-    *x
-}
-
-pub fn main() {
-    let p: Box<_> = Box::new(3);
-    let r = foo(&*p);
-    assert_eq!(r, 3);
-}
diff --git a/src/test/ui/regions/regions-bot.rs b/src/test/ui/regions/regions-bot.rs
deleted file mode 100644
index 58016293640..00000000000
--- a/src/test/ui/regions/regions-bot.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// A very limited test of the "bottom" region
-
-
-fn produce_static<T>() -> &'static T { panic!(); }
-
-fn foo<T>(_x: &T) -> &usize { produce_static() }
-
-pub fn main() {
-}
diff --git a/src/test/ui/regions/regions-bound-lists-feature-gate-2.rs b/src/test/ui/regions/regions-bound-lists-feature-gate-2.rs
deleted file mode 100644
index 2c750379933..00000000000
--- a/src/test/ui/regions/regions-bound-lists-feature-gate-2.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(stable_features)]
-
-#![feature(issue_5723_bootstrap)]
-
-trait Foo {
-    fn dummy(&self) { }
-}
-
-fn foo<'a, 'b, 'c:'a+'b, 'd>() {
-}
-
-pub fn main() { }
diff --git a/src/test/ui/regions/regions-bound-lists-feature-gate.rs b/src/test/ui/regions/regions-bound-lists-feature-gate.rs
deleted file mode 100644
index 3815498f86f..00000000000
--- a/src/test/ui/regions/regions-bound-lists-feature-gate.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-#![allow(stable_features)]
-
-#![feature(issue_5723_bootstrap)]
-
-trait Foo {
-    fn dummy(&self) { }
-}
-
-fn foo<'a>(x: Box<dyn Foo + 'a>) {
-}
-
-fn bar<'a, T: 'a>() {
-}
-
-pub fn main() { }
diff --git a/src/test/ui/regions/regions-bounded-by-trait-requiring-static.rs b/src/test/ui/regions/regions-bounded-by-trait-requiring-static.rs
deleted file mode 100644
index 7d02a46193e..00000000000
--- a/src/test/ui/regions/regions-bounded-by-trait-requiring-static.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-// Test which of the builtin types are considered sendable. The tests
-// in this file all test region bound and lifetime violations that are
-// detected during type check.
-
-trait Dummy : 'static { }
-fn assert_send<T:'static>() { }
-
-// lifetime pointers with 'static lifetime are ok
-
-fn static_lifime_ok<'a,T,U:Send>(_: &'a isize) {
-    assert_send::<&'static isize>();
-    assert_send::<&'static str>();
-    assert_send::<&'static [isize]>();
-
-    // whether or not they are mutable
-    assert_send::<&'static mut isize>();
-}
-
-// otherwise lifetime pointers are not ok
-
-fn param_not_ok<'a>(x: &'a isize) {
-    assert_send::<&'a isize>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn param_not_ok1<'a>(_: &'a isize) {
-    assert_send::<&'a str>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn param_not_ok2<'a>(_: &'a isize) {
-    assert_send::<&'a [isize]>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-// boxes are ok
-
-fn box_ok() {
-    assert_send::<Box<isize>>();
-    assert_send::<String>();
-    assert_send::<Vec<isize>>();
-}
-
-// but not if they own a bad thing
-
-fn box_with_region_not_ok<'a>() {
-    assert_send::<Box<&'a isize>>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-// raw pointers are ok unless they point at unsendable things
-
-fn unsafe_ok1<'a>(_: &'a isize) {
-    assert_send::<*const isize>();
-    assert_send::<*mut isize>();
-}
-
-fn unsafe_ok2<'a>(_: &'a isize) {
-    assert_send::<*const &'a isize>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn unsafe_ok3<'a>(_: &'a isize) {
-    assert_send::<*mut &'a isize>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-bounded-by-trait-requiring-static.stderr b/src/test/ui/regions/regions-bounded-by-trait-requiring-static.stderr
deleted file mode 100644
index eea68cc8f1c..00000000000
--- a/src/test/ui/regions/regions-bounded-by-trait-requiring-static.stderr
+++ /dev/null
@@ -1,50 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:22:5
-   |
-LL | fn param_not_ok<'a>(x: &'a isize) {
-   |                 -- lifetime `'a` defined here
-LL |     assert_send::<&'a isize>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:27:5
-   |
-LL | fn param_not_ok1<'a>(_: &'a isize) {
-   |                  -- lifetime `'a` defined here
-LL |     assert_send::<&'a str>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:32:5
-   |
-LL | fn param_not_ok2<'a>(_: &'a isize) {
-   |                  -- lifetime `'a` defined here
-LL |     assert_send::<&'a [isize]>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:47:5
-   |
-LL | fn box_with_region_not_ok<'a>() {
-   |                           -- lifetime `'a` defined here
-LL |     assert_send::<Box<&'a isize>>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:59:5
-   |
-LL | fn unsafe_ok2<'a>(_: &'a isize) {
-   |               -- lifetime `'a` defined here
-LL |     assert_send::<*const &'a isize>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:64:5
-   |
-LL | fn unsafe_ok3<'a>(_: &'a isize) {
-   |               -- lifetime `'a` defined here
-LL |     assert_send::<*mut &'a isize>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: aborting due to 6 previous errors
-
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs b/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs
deleted file mode 100644
index c014b2ccf1e..00000000000
--- a/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// aux-build:rbmtp_cross_crate_lib.rs
-
-// Check explicit region bounds on methods in the cross crate case.
-
-extern crate rbmtp_cross_crate_lib as lib;
-
-use lib::Inv;
-use lib::MaybeOwned;
-use lib::IntoMaybeOwned;
-
-fn call_into_maybe_owned<'x,F:IntoMaybeOwned<'x>>(f: F) {
-    // Exercise a code path I found to be buggy. We were not encoding
-    // the region parameters from the receiver correctly on trait
-    // methods.
-    f.into_maybe_owned();
-}
-
-fn call_bigger_region<'x, 'y>(a: Inv<'x>, b: Inv<'y>) {
-    // Here the value provided for 'y is 'y, and hence 'y:'x does not hold.
-    a.bigger_region(b)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr b/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr
deleted file mode 100644
index 6193bf02f6d..00000000000
--- a/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-method-type-parameters-cross-crate.rs:20:5
-   |
-LL | fn call_bigger_region<'x, 'y>(a: Inv<'x>, b: Inv<'y>) {
-   |                       --  -- lifetime `'y` defined here
-   |                       |
-   |                       lifetime `'x` defined here
-LL |     // Here the value provided for 'y is 'y, and hence 'y:'x does not hold.
-LL |     a.bigger_region(b)
-   |     ^^^^^^^^^^^^^^^^^^ argument requires that `'y` must outlive `'x`
-   |
-   = help: consider adding the following bound: `'y: 'x`
-   = note: requirement occurs because of the type `Inv<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Inv<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs b/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs
deleted file mode 100644
index 5548cb915d8..00000000000
--- a/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// Check that explicit region bounds are allowed on the various
-// nominal types (but not on other types) and that they are type
-// checked.
-
-struct Inv<'a> { // invariant w/r/t 'a
-    x: &'a mut &'a isize
-}
-
-trait Foo<'x> {
-    fn method<'y:'x>(self, y: Inv<'y>);
-}
-
-fn caller1<'a,'b,F:Foo<'a>>(a: Inv<'a>, b: Inv<'b>, f: F) {
-    // Here the value provided for 'y is 'a, and hence 'a:'a holds.
-    f.method(a);
-}
-
-fn caller2<'a,'b,F:Foo<'a>>(a: Inv<'a>, b: Inv<'b>, f: F) {
-    // Here the value provided for 'y is 'b, and hence 'b:'a does not hold.
-    f.method(b);
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn caller3<'a,'b:'a,F:Foo<'a>>(a: Inv<'a>, b: Inv<'b>, f: F) {
-    // Here the value provided for 'y is 'b, and hence 'b:'a holds.
-    f.method(b);
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr b/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr
deleted file mode 100644
index 0e0086be9ea..00000000000
--- a/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-method-type-parameters-trait-bound.rs:20:5
-   |
-LL | fn caller2<'a,'b,F:Foo<'a>>(a: Inv<'a>, b: Inv<'b>, f: F) {
-   |            -- -- lifetime `'b` defined here
-   |            |
-   |            lifetime `'a` defined here
-LL |     // Here the value provided for 'y is 'b, and hence 'b:'a does not hold.
-LL |     f.method(b);
-   |     ^^^^^^^^^^^ argument requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-   = note: requirement occurs because of the type `Inv<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Inv<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters.rs b/src/test/ui/regions/regions-bounded-method-type-parameters.rs
deleted file mode 100644
index 56e750003da..00000000000
--- a/src/test/ui/regions/regions-bounded-method-type-parameters.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Check that explicit region bounds are allowed on the various
-// nominal types (but not on other types) and that they are type
-// checked.
-
-struct Foo;
-
-impl Foo {
-    fn some_method<A:'static>(self) { }
-}
-
-fn caller<'a>(x: &isize) {
-    Foo.some_method::<&'a isize>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters.stderr b/src/test/ui/regions/regions-bounded-method-type-parameters.stderr
deleted file mode 100644
index b6d7b8aac5f..00000000000
--- a/src/test/ui/regions/regions-bounded-method-type-parameters.stderr
+++ /dev/null
@@ -1,10 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-bounded-method-type-parameters.rs:12:9
-   |
-LL | fn caller<'a>(x: &isize) {
-   |           -- lifetime `'a` defined here
-LL |     Foo.some_method::<&'a isize>();
-   |         ^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-bounds.rs b/src/test/ui/regions/regions-bounds.rs
deleted file mode 100644
index fd4d75ab6b8..00000000000
--- a/src/test/ui/regions/regions-bounds.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Check that explicit region bounds are allowed on the various
-// nominal types (but not on other types) and that they are type
-// checked.
-
-struct TupleStruct<'a>(&'a isize);
-struct Struct<'a> { x:&'a isize }
-
-fn a_fn1<'a,'b>(e: TupleStruct<'a>) -> TupleStruct<'b> {
-    return e;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn a_fn3<'a,'b>(e: Struct<'a>) -> Struct<'b> {
-    return e;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-bounds.stderr b/src/test/ui/regions/regions-bounds.stderr
deleted file mode 100644
index 430909e54a6..00000000000
--- a/src/test/ui/regions/regions-bounds.stderr
+++ /dev/null
@@ -1,26 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-bounds.rs:9:12
-   |
-LL | fn a_fn1<'a,'b>(e: TupleStruct<'a>) -> TupleStruct<'b> {
-   |          -- -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-LL |     return e;
-   |            ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-bounds.rs:14:12
-   |
-LL | fn a_fn3<'a,'b>(e: Struct<'a>) -> Struct<'b> {
-   |          -- -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-LL |     return e;
-   |            ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/regions-close-associated-type-into-object.rs b/src/test/ui/regions/regions-close-associated-type-into-object.rs
deleted file mode 100644
index 428477e2489..00000000000
--- a/src/test/ui/regions/regions-close-associated-type-into-object.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-trait X {}
-
-
-
-trait Iter {
-    type Item: X;
-
-    fn into_item(self) -> Self::Item;
-    fn as_item(&self) -> &Self::Item;
-}
-
-fn bad1<T: Iter>(v: T) -> Box<dyn X + 'static>
-{
-    let item = v.into_item();
-    Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-}
-
-fn bad2<T: Iter>(v: T) -> Box<dyn X + 'static>
-    where Box<T::Item> : X
-{
-    let item: Box<_> = Box::new(v.into_item());
-    Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-}
-
-fn bad3<'a, T: Iter>(v: T) -> Box<dyn X + 'a>
-{
-    let item = v.into_item();
-    Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-}
-
-fn bad4<'a, T: Iter>(v: T) -> Box<dyn X + 'a>
-    where Box<T::Item> : X
-{
-    let item: Box<_> = Box::new(v.into_item());
-    Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-}
-
-fn ok1<'a, T: Iter>(v: T) -> Box<dyn X + 'a>
-    where T::Item : 'a
-{
-    let item = v.into_item();
-    Box::new(item) // OK, T::Item : 'a is declared
-}
-
-fn ok2<'a, T: Iter>(v: &T, w: &'a T::Item) -> Box<dyn X + 'a>
-    where T::Item : Clone
-{
-    let item = Clone::clone(w);
-    Box::new(item) // OK, T::Item : 'a is implied
-}
-
-fn ok3<'a, T: Iter>(v: &'a T) -> Box<dyn X + 'a>
-    where T::Item : Clone + 'a
-{
-    let item = Clone::clone(v.as_item());
-    Box::new(item) // OK, T::Item : 'a was declared
-}
-
-fn meh1<'a, T: Iter>(v: &'a T) -> Box<dyn X + 'a>
-    where T::Item : Clone
-{
-    // This case is kind of interesting. It's the same as `ok3` but
-    // without the explicit declaration. This is valid because `T: 'a
-    // => T::Item: 'a`, and the former we can deduce from our argument
-    // of type `&'a T`.
-
-    let item = Clone::clone(v.as_item());
-    Box::new(item)
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-close-associated-type-into-object.stderr b/src/test/ui/regions/regions-close-associated-type-into-object.stderr
deleted file mode 100644
index f7dcaa9d97e..00000000000
--- a/src/test/ui/regions/regions-close-associated-type-into-object.stderr
+++ /dev/null
@@ -1,40 +0,0 @@
-error[E0310]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:15:5
-   |
-LL |     Box::new(item)
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'static`...
-   = note: ...so that the type `<T as Iter>::Item` will meet its required lifetime bounds
-
-error[E0310]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:22:5
-   |
-LL |     Box::new(item)
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'static`...
-   = note: ...so that the type `<T as Iter>::Item` will meet its required lifetime bounds
-
-error[E0309]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:28:5
-   |
-LL |     Box::new(item)
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'a`...
-   = note: ...so that the type `<T as Iter>::Item` will meet its required lifetime bounds
-
-error[E0309]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:35:5
-   |
-LL |     Box::new(item)
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'a`...
-   = note: ...so that the type `<T as Iter>::Item` will meet its required lifetime bounds
-
-error: aborting due to 4 previous errors
-
-Some errors have detailed explanations: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-1.rs b/src/test/ui/regions/regions-close-object-into-object-1.rs
deleted file mode 100644
index 2dc33d5671f..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-1.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-#![allow(warnings)]
-
-trait A<T> { }
-
-struct B<'a, T:'a>(&'a (A<T>+'a));
-
-trait X { }
-
-impl<'a, T> X for B<'a, T> {}
-
-fn f<'a, T:'static, U>(v: Box<A<T>+'static>) -> Box<X+'static> {
-    Box::new(B(&*v)) as Box<X> //~ ERROR cannot return value referencing local data `*v`
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-close-object-into-object-1.stderr b/src/test/ui/regions/regions-close-object-into-object-1.stderr
deleted file mode 100644
index 5bfaeb295c3..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-1.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0515]: cannot return value referencing local data `*v`
-  --> $DIR/regions-close-object-into-object-1.rs:12:5
-   |
-LL |     Box::new(B(&*v)) as Box<X>
-   |     ^^^^^^^^^^^---^^^^^^^^^^^^
-   |     |          |
-   |     |          `*v` is borrowed here
-   |     returns a value referencing data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-2.rs b/src/test/ui/regions/regions-close-object-into-object-2.rs
deleted file mode 100644
index 6960af72c76..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-2.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-trait A<T> { }
-
-struct B<'a, T:'a>(&'a (dyn A<T> + 'a));
-
-trait X { }
-impl<'a, T> X for B<'a, T> {}
-
-fn g<'a, T: 'static>(v: Box<dyn A<T> + 'a>) -> Box<dyn X + 'static> {
-    Box::new(B(&*v)) as Box<dyn X>
-    //~^ ERROR lifetime may not live long enough
-    //~| ERROR cannot return value referencing local data `*v` [E0515]
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-close-object-into-object-2.stderr b/src/test/ui/regions/regions-close-object-into-object-2.stderr
deleted file mode 100644
index aacb5ea4e87..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-2.stderr
+++ /dev/null
@@ -1,29 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-close-object-into-object-2.rs:9:5
-   |
-LL | fn g<'a, T: 'static>(v: Box<dyn A<T> + 'a>) -> Box<dyn X + 'static> {
-   |      -- lifetime `'a` defined here
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-   |
-help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
-   |
-LL | fn g<'a, T: 'static>(v: Box<dyn A<T> + 'a>) -> Box<dyn X + 'a> {
-   |                                                            ~~
-help: alternatively, add an explicit `'static` bound to this reference
-   |
-LL | fn g<'a, T: 'static>(v: Box<(dyn A<T> + 'static)>) -> Box<dyn X + 'static> {
-   |                         ~~~~~~~~~~~~~~~~~~~~~~~~~
-
-error[E0515]: cannot return value referencing local data `*v`
-  --> $DIR/regions-close-object-into-object-2.rs:9:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^---^^^^^^^^^^^^^^^^
-   |     |          |
-   |     |          `*v` is borrowed here
-   |     returns a value referencing data owned by the current function
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-3.rs b/src/test/ui/regions/regions-close-object-into-object-3.rs
deleted file mode 100644
index 78d93b0ece5..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-3.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-#![allow(warnings)]
-
-trait A<T> { }
-
-struct B<'a, T:'a>(&'a (A<T>+'a));
-
-trait X { }
-impl<'a, T> X for B<'a, T> {}
-
-fn h<'a, T, U:'static>(v: Box<A<U>+'static>) -> Box<X+'static> {
-    Box::new(B(&*v)) as Box<X> //~ ERROR cannot return value referencing local data `*v`
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-close-object-into-object-3.stderr b/src/test/ui/regions/regions-close-object-into-object-3.stderr
deleted file mode 100644
index 9f92c40e1e1..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-3.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0515]: cannot return value referencing local data `*v`
-  --> $DIR/regions-close-object-into-object-3.rs:11:5
-   |
-LL |     Box::new(B(&*v)) as Box<X>
-   |     ^^^^^^^^^^^---^^^^^^^^^^^^
-   |     |          |
-   |     |          `*v` is borrowed here
-   |     returns a value referencing data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-4.rs b/src/test/ui/regions/regions-close-object-into-object-4.rs
deleted file mode 100644
index 3bbad9cbffe..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-4.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-trait A<T> { }
-
-struct B<'a, T:'a>(&'a (dyn A<T> + 'a));
-
-trait X { }
-impl<'a, T> X for B<'a, T> {}
-
-fn i<'a, T, U>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
-    Box::new(B(&*v)) as Box<dyn X>
-    //~^ ERROR the parameter type `U` may not live long enough [E0310]
-    //~| ERROR the parameter type `U` may not live long enough [E0310]
-    //~| ERROR the parameter type `U` may not live long enough [E0310]
-    //~| ERROR lifetime may not live long enough
-    //~| ERROR cannot return value referencing local data `*v` [E0515]
-    //~| ERROR the parameter type `U` may not live long enough [E0310]
-
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-close-object-into-object-4.stderr b/src/test/ui/regions/regions-close-object-into-object-4.stderr
deleted file mode 100644
index 7a9f1ab0001..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-4.stderr
+++ /dev/null
@@ -1,74 +0,0 @@
-error[E0310]: the parameter type `U` may not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:9:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^ ...so that the type `U` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn i<'a, T, U: 'static>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
-   |              +++++++++
-
-error[E0310]: the parameter type `U` may not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:9:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^^^^^^ ...so that the type `U` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn i<'a, T, U: 'static>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
-   |              +++++++++
-
-error[E0310]: the parameter type `U` may not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:9:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^^^^^^ ...so that the type `U` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn i<'a, T, U: 'static>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
-   |              +++++++++
-
-error: lifetime may not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:9:5
-   |
-LL | fn i<'a, T, U>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
-   |      -- lifetime `'a` defined here
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-   |
-help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `v`
-   |
-LL | fn i<'a, T, U>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'a> {
-   |                                                    ~~
-help: alternatively, add an explicit `'static` bound to this reference
-   |
-LL | fn i<'a, T, U>(v: Box<(dyn A<U> + 'static)>) -> Box<dyn X + 'static> {
-   |                   ~~~~~~~~~~~~~~~~~~~~~~~~~
-
-error[E0515]: cannot return value referencing local data `*v`
-  --> $DIR/regions-close-object-into-object-4.rs:9:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^---^^^^^^^^^^^^^^^^
-   |     |          |
-   |     |          `*v` is borrowed here
-   |     returns a value referencing data owned by the current function
-
-error[E0310]: the parameter type `U` may not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:9:14
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |              ^^^^^^ ...so that the type `U` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn i<'a, T, U: 'static>(v: Box<dyn A<U>+'a>) -> Box<dyn X + 'static> {
-   |              +++++++++
-
-error: aborting due to 6 previous errors
-
-Some errors have detailed explanations: E0310, E0515.
-For more information about an error, try `rustc --explain E0310`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-5.rs b/src/test/ui/regions/regions-close-object-into-object-5.rs
deleted file mode 100644
index d534c37496d..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-5.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-#![allow(warnings)]
-
-
-trait A<T>
-{
-    fn get(&self) -> T { panic!() }
-}
-
-struct B<'a, T: 'a>(&'a (A<T> + 'a));
-
-trait X { fn foo(&self) {} }
-
-impl<'a, T> X for B<'a, T> {}
-
-fn f<'a, T, U>(v: Box<A<T> + 'static>) -> Box<X + 'static> {
-    // oh dear!
-    Box::new(B(&*v)) as Box<dyn X>
-    //~^ ERROR the parameter type `T` may not live long enough
-    //~| ERROR the parameter type `T` may not live long enough
-    //~| ERROR the parameter type `T` may not live long enough
-    //~| ERROR the parameter type `T` may not live long enough
-    //~| ERROR cannot return value referencing local data `*v` [E0515]
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-close-object-into-object-5.stderr b/src/test/ui/regions/regions-close-object-into-object-5.stderr
deleted file mode 100644
index 311e8868c09..00000000000
--- a/src/test/ui/regions/regions-close-object-into-object-5.stderr
+++ /dev/null
@@ -1,57 +0,0 @@
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-object-into-object-5.rs:17:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn f<'a, T: 'static, U>(v: Box<A<T> + 'static>) -> Box<X + 'static> {
-   |           +++++++++
-
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-object-into-object-5.rs:17:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn f<'a, T: 'static, U>(v: Box<A<T> + 'static>) -> Box<X + 'static> {
-   |           +++++++++
-
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-object-into-object-5.rs:17:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn f<'a, T: 'static, U>(v: Box<A<T> + 'static>) -> Box<X + 'static> {
-   |           +++++++++
-
-error[E0515]: cannot return value referencing local data `*v`
-  --> $DIR/regions-close-object-into-object-5.rs:17:5
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |     ^^^^^^^^^^^---^^^^^^^^^^^^^^^^
-   |     |          |
-   |     |          `*v` is borrowed here
-   |     returns a value referencing data owned by the current function
-
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-object-into-object-5.rs:17:14
-   |
-LL |     Box::new(B(&*v)) as Box<dyn X>
-   |              ^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn f<'a, T: 'static, U>(v: Box<A<T> + 'static>) -> Box<X + 'static> {
-   |           +++++++++
-
-error: aborting due to 5 previous errors
-
-Some errors have detailed explanations: E0310, E0515.
-For more information about an error, try `rustc --explain E0310`.
diff --git a/src/test/ui/regions/regions-close-over-type-parameter-1.rs b/src/test/ui/regions/regions-close-over-type-parameter-1.rs
deleted file mode 100644
index 610f757453b..00000000000
--- a/src/test/ui/regions/regions-close-over-type-parameter-1.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// Test for what happens when a type parameter `A` is closed over into
-// an object. This should yield errors unless `A` (and the object)
-// both have suitable bounds.
-
-trait SomeTrait {
-    fn get(&self) -> isize;
-}
-
-
-fn make_object1<A: SomeTrait>(v: A) -> Box<dyn SomeTrait + 'static> {
-    Box::new(v) as Box<dyn SomeTrait + 'static>
-    //~^ ERROR the parameter type `A` may not live long enough
-}
-
-fn make_object2<'a, A: SomeTrait + 'a>(v: A) -> Box<dyn SomeTrait + 'a> {
-    Box::new(v) as Box<dyn SomeTrait + 'a>
-}
-
-fn make_object3<'a, 'b, A: SomeTrait + 'a>(v: A) -> Box<dyn SomeTrait + 'b> {
-    Box::new(v) as Box<dyn SomeTrait + 'b>
-    //~^ ERROR the parameter type `A` may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-close-over-type-parameter-1.stderr b/src/test/ui/regions/regions-close-over-type-parameter-1.stderr
deleted file mode 100644
index b7b557d7a60..00000000000
--- a/src/test/ui/regions/regions-close-over-type-parameter-1.stderr
+++ /dev/null
@@ -1,26 +0,0 @@
-error[E0310]: the parameter type `A` may not live long enough
-  --> $DIR/regions-close-over-type-parameter-1.rs:11:5
-   |
-LL |     Box::new(v) as Box<dyn SomeTrait + 'static>
-   |     ^^^^^^^^^^^ ...so that the type `A` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn make_object1<A: SomeTrait + 'static>(v: A) -> Box<dyn SomeTrait + 'static> {
-   |                              +++++++++
-
-error[E0309]: the parameter type `A` may not live long enough
-  --> $DIR/regions-close-over-type-parameter-1.rs:20:5
-   |
-LL |     Box::new(v) as Box<dyn SomeTrait + 'b>
-   |     ^^^^^^^^^^^ ...so that the type `A` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn make_object3<'a, 'b, A: SomeTrait + 'a + 'b>(v: A) -> Box<dyn SomeTrait + 'b> {
-   |                                           ++++
-
-error: aborting due to 2 previous errors
-
-Some errors have detailed explanations: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-close-over-type-parameter-multiple.rs b/src/test/ui/regions/regions-close-over-type-parameter-multiple.rs
deleted file mode 100644
index e032a94c32f..00000000000
--- a/src/test/ui/regions/regions-close-over-type-parameter-multiple.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// Various tests where we over type parameters with multiple lifetime
-// bounds.
-
-trait SomeTrait { fn get(&self) -> isize; }
-
-
-fn make_object_good1<'a,'b,A:SomeTrait+'a+'b>(v: A) -> Box<dyn SomeTrait + 'a> {
-    // A outlives 'a AND 'b...
-    Box::new(v) as Box<dyn SomeTrait + 'a> // ...hence this type is safe.
-}
-
-fn make_object_good2<'a,'b,A:SomeTrait+'a+'b>(v: A) -> Box<dyn SomeTrait + 'b> {
-    // A outlives 'a AND 'b...
-    Box::new(v) as Box<dyn SomeTrait + 'b> // ...hence this type is safe.
-}
-
-fn make_object_bad<'a,'b,'c,A:SomeTrait+'a+'b>(v: A) -> Box<dyn SomeTrait + 'c> {
-    // A outlives 'a AND 'b...but not 'c.
-    Box::new(v) as Box<dyn SomeTrait + 'a>
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-close-over-type-parameter-multiple.stderr b/src/test/ui/regions/regions-close-over-type-parameter-multiple.stderr
deleted file mode 100644
index baa0506d04c..00000000000
--- a/src/test/ui/regions/regions-close-over-type-parameter-multiple.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-close-over-type-parameter-multiple.rs:19:5
-   |
-LL | fn make_object_bad<'a,'b,'c,A:SomeTrait+'a+'b>(v: A) -> Box<dyn SomeTrait + 'c> {
-   |                    --    -- lifetime `'c` defined here
-   |                    |
-   |                    lifetime `'a` defined here
-LL |     // A outlives 'a AND 'b...but not 'c.
-LL |     Box::new(v) as Box<dyn SomeTrait + 'a>
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'c` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'c`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-close-over-type-parameter-successfully.rs b/src/test/ui/regions/regions-close-over-type-parameter-successfully.rs
deleted file mode 100644
index 48aad9481bb..00000000000
--- a/src/test/ui/regions/regions-close-over-type-parameter-successfully.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// run-pass
-// A test where we (successfully) close over a reference into
-// an object.
-
-trait SomeTrait { fn get(&self) -> isize; }
-
-impl<'a> SomeTrait for &'a isize {
-    fn get(&self) -> isize {
-        **self
-    }
-}
-
-fn make_object<'a,A:SomeTrait+'a>(v: A) -> Box<dyn SomeTrait+'a> {
-    Box::new(v) as Box<dyn SomeTrait+'a>
-}
-
-fn main() {
-    let i: isize = 22;
-    let obj = make_object(&i);
-    assert_eq!(22, obj.get());
-}
diff --git a/src/test/ui/regions/regions-close-param-into-object.rs b/src/test/ui/regions/regions-close-param-into-object.rs
deleted file mode 100644
index 2760e5eed95..00000000000
--- a/src/test/ui/regions/regions-close-param-into-object.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-trait X { fn foo(&self) {} }
-
-fn p1<T>(v: T) -> Box<dyn X + 'static>
-    where T : X
-{
-    Box::new(v) //~ ERROR parameter type `T` may not live long enough
-}
-
-fn p2<T>(v: Box<T>) -> Box<dyn X + 'static>
-    where Box<T> : X
-{
-    Box::new(v) //~ ERROR parameter type `T` may not live long enough
-}
-
-fn p3<'a,T>(v: T) -> Box<dyn X + 'a>
-    where T : X
-{
-    Box::new(v) //~ ERROR parameter type `T` may not live long enough
-}
-
-fn p4<'a,T>(v: Box<T>) -> Box<dyn X + 'a>
-    where Box<T> : X
-{
-    Box::new(v) //~ ERROR parameter type `T` may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-close-param-into-object.stderr b/src/test/ui/regions/regions-close-param-into-object.stderr
deleted file mode 100644
index 9162be5b93c..00000000000
--- a/src/test/ui/regions/regions-close-param-into-object.stderr
+++ /dev/null
@@ -1,48 +0,0 @@
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:6:5
-   |
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL |     where T : X + 'static
-   |                 +++++++++
-
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:12:5
-   |
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn p2<T: 'static>(v: Box<T>) -> Box<dyn X + 'static>
-   |        +++++++++
-
-error[E0309]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:18:5
-   |
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL |     where T : X + 'a
-   |                 ++++
-
-error[E0309]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:24:5
-   |
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn p4<'a,T: 'a>(v: Box<T>) -> Box<dyn X + 'a>
-   |           ++++
-
-error: aborting due to 4 previous errors
-
-Some errors have detailed explanations: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-copy-closure.rs b/src/test/ui/regions/regions-copy-closure.rs
deleted file mode 100644
index 43640079777..00000000000
--- a/src/test/ui/regions/regions-copy-closure.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// run-pass
-#![allow(non_camel_case_types)]
-
-struct closure_box<'a> {
-    cl: Box<dyn FnMut() + 'a>,
-}
-
-fn box_it<'a>(x: Box<dyn FnMut() + 'a>) -> closure_box<'a> {
-    closure_box {cl: x}
-}
-
-pub fn main() {
-    let mut i = 3;
-    assert_eq!(i, 3);
-    {
-        let cl = || i += 1;
-        let mut cl_box = box_it(Box::new(cl));
-        (cl_box.cl)();
-    }
-    assert_eq!(i, 4);
-}
diff --git a/src/test/ui/regions/regions-creating-enums.rs b/src/test/ui/regions/regions-creating-enums.rs
deleted file mode 100644
index 6ed68f8033c..00000000000
--- a/src/test/ui/regions/regions-creating-enums.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-enum Ast<'a> {
-    Num(usize),
-    Add(&'a Ast<'a>, &'a Ast<'a>)
-}
-
-fn build() {
-    let x = Ast::Num(3);
-    let y = Ast::Num(4);
-    let z = Ast::Add(&x, &y);
-    compute(&z);
-}
-
-fn compute(x: &Ast) -> usize {
-    match *x {
-      Ast::Num(x) => { x }
-      Ast::Add(x, y) => { compute(x) + compute(y) }
-    }
-}
-
-fn map_nums<'a,'b, F>(x: &Ast, f: &mut F) -> &'a Ast<'b> where F: FnMut(usize) -> usize {
-    match *x {
-      Ast::Num(x) => {
-        return &Ast::Num((*f)(x)); //~ ERROR cannot return reference to temporary value
-      }
-      Ast::Add(x, y) => {
-        let m_x = map_nums(x, f);
-        let m_y = map_nums(y, f);
-        return &Ast::Add(m_x, m_y);  //~ ERROR cannot return reference to temporary value
-      }
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-creating-enums.stderr b/src/test/ui/regions/regions-creating-enums.stderr
deleted file mode 100644
index a95d8462901..00000000000
--- a/src/test/ui/regions/regions-creating-enums.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0515]: cannot return reference to temporary value
-  --> $DIR/regions-creating-enums.rs:23:16
-   |
-LL |         return &Ast::Num((*f)(x));
-   |                ^-----------------
-   |                ||
-   |                |temporary value created here
-   |                returns a reference to data owned by the current function
-
-error[E0515]: cannot return reference to temporary value
-  --> $DIR/regions-creating-enums.rs:28:16
-   |
-LL |         return &Ast::Add(m_x, m_y);
-   |                ^------------------
-   |                ||
-   |                |temporary value created here
-   |                returns a reference to data owned by the current function
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-creating-enums2.rs b/src/test/ui/regions/regions-creating-enums2.rs
deleted file mode 100644
index 7b16fb1a8e0..00000000000
--- a/src/test/ui/regions/regions-creating-enums2.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(non_camel_case_types)]
-
-// pretty-expanded FIXME #23616
-
-enum ast<'a> {
-    num(usize),
-    add(&'a ast<'a>, &'a ast<'a>)
-}
-
-fn mk_add_ok<'r>(x: &'r ast<'r>, y: &'r ast<'r>) -> ast<'r> {
-    ast::add(x, y)
-}
-
-pub fn main() {
-}
diff --git a/src/test/ui/regions/regions-creating-enums3.rs b/src/test/ui/regions/regions-creating-enums3.rs
deleted file mode 100644
index 39dbb3d8a7d..00000000000
--- a/src/test/ui/regions/regions-creating-enums3.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-enum Ast<'a> {
-    Num(usize),
-    Add(&'a Ast<'a>, &'a Ast<'a>)
-}
-
-fn mk_add_bad1<'a,'b>(x: &'a Ast<'a>, y: &'b Ast<'b>) -> Ast<'a> {
-    Ast::Add(x, y)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-creating-enums3.stderr b/src/test/ui/regions/regions-creating-enums3.stderr
deleted file mode 100644
index 41d609b56d2..00000000000
--- a/src/test/ui/regions/regions-creating-enums3.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-creating-enums3.rs:7:5
-   |
-LL | fn mk_add_bad1<'a,'b>(x: &'a Ast<'a>, y: &'b Ast<'b>) -> Ast<'a> {
-   |                -- -- lifetime `'b` defined here
-   |                |
-   |                lifetime `'a` defined here
-LL |     Ast::Add(x, y)
-   |     ^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-creating-enums4.rs b/src/test/ui/regions/regions-creating-enums4.rs
deleted file mode 100644
index c9eab08cbe9..00000000000
--- a/src/test/ui/regions/regions-creating-enums4.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-enum Ast<'a> {
-    Num(usize),
-    Add(&'a Ast<'a>, &'a Ast<'a>)
-}
-
-fn mk_add_bad2<'a,'b>(x: &'a Ast<'a>, y: &'a Ast<'a>, z: &Ast) -> Ast<'b> {
-    Ast::Add(x, y)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-creating-enums4.stderr b/src/test/ui/regions/regions-creating-enums4.stderr
deleted file mode 100644
index 91cf57e099d..00000000000
--- a/src/test/ui/regions/regions-creating-enums4.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-creating-enums4.rs:7:5
-   |
-LL | fn mk_add_bad2<'a,'b>(x: &'a Ast<'a>, y: &'a Ast<'a>, z: &Ast) -> Ast<'b> {
-   |                -- -- lifetime `'b` defined here
-   |                |
-   |                lifetime `'a` defined here
-LL |     Ast::Add(x, y)
-   |     ^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-creating-enums5.rs b/src/test/ui/regions/regions-creating-enums5.rs
deleted file mode 100644
index ad3d9748bf0..00000000000
--- a/src/test/ui/regions/regions-creating-enums5.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(non_camel_case_types)]
-
-// pretty-expanded FIXME #23616
-
-enum ast<'a> {
-    num(usize),
-    add(&'a ast<'a>, &'a ast<'a>)
-}
-
-fn mk_add_ok<'a>(x: &'a ast<'a>, y: &'a ast<'a>, _z: &ast) -> ast<'a> {
-    ast::add(x, y)
-}
-
-pub fn main() {
-}
diff --git a/src/test/ui/regions/regions-debruijn-of-object.rs b/src/test/ui/regions/regions-debruijn-of-object.rs
deleted file mode 100644
index 0b5510489fb..00000000000
--- a/src/test/ui/regions/regions-debruijn-of-object.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-#![allow(non_camel_case_types)]
-
-// pretty-expanded FIXME #23616
-
-struct ctxt<'tcx> {
-    x: &'tcx i32
-}
-
-trait AstConv<'tcx> {
-    fn tcx<'a>(&'a self) -> &'a ctxt<'tcx>;
-}
-
-fn foo(conv: &dyn AstConv) { }
-
-fn bar<'tcx>(conv: &dyn AstConv<'tcx>) {
-    foo(conv)
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-dependent-addr-of.rs b/src/test/ui/regions/regions-dependent-addr-of.rs
deleted file mode 100644
index a6cb56e3156..00000000000
--- a/src/test/ui/regions/regions-dependent-addr-of.rs
+++ /dev/null
@@ -1,112 +0,0 @@
-// run-pass
-// Test lifetimes are linked properly when we create dependent region pointers.
-// Issue #3148.
-
-#![feature(box_patterns)]
-
-struct A {
-    value: B
-}
-
-struct B {
-    v1: isize,
-    v2: [isize; 3],
-    v3: Vec<isize> ,
-    v4: C,
-    v5: Box<C>,
-    v6: Option<C>
-}
-
-#[derive(Copy, Clone)]
-struct C {
-    f: isize
-}
-
-fn get_v1(a: &A) -> &isize {
-    // Region inferencer must deduce that &v < L2 < L1
-    let foo = &a.value; // L1
-    &foo.v1             // L2
-}
-
-fn get_v2(a: &A, i: usize) -> &isize {
-    let foo = &a.value;
-    &foo.v2[i]
-}
-
-fn get_v3(a: &A, i: usize) -> &isize {
-    let foo = &a.value;
-    &foo.v3[i]
-}
-
-fn get_v4(a: &A, _i: usize) -> &isize {
-    let foo = &a.value;
-    &foo.v4.f
-}
-
-fn get_v5(a: &A, _i: usize) -> &isize {
-    let foo = &a.value;
-    &foo.v5.f
-}
-
-fn get_v6_a(a: &A, _i: usize) -> &isize {
-    match a.value.v6 {
-        Some(ref v) => &v.f,
-        None => panic!()
-    }
-}
-
-fn get_v6_b(a: &A, _i: usize) -> &isize {
-    match *a {
-        A { value: B { v6: Some(ref v), .. } } => &v.f,
-        _ => panic!()
-    }
-}
-
-fn get_v6_c(a: &A, _i: usize) -> &isize {
-    match a {
-        &A { value: B { v6: Some(ref v), .. } } => &v.f,
-        _ => panic!()
-    }
-}
-
-fn get_v5_ref(a: &A, _i: usize) -> &isize {
-    match &a.value {
-        &B {v5: box C {f: ref v}, ..} => v
-    }
-}
-
-pub fn main() {
-    let a = A {value: B {v1: 22,
-                         v2: [23, 24, 25],
-                         v3: vec![26, 27, 28],
-                         v4: C { f: 29 },
-                         v5: Box::new(C { f: 30 }),
-                         v6: Some(C { f: 31 })}};
-
-    let p = get_v1(&a);
-    assert_eq!(*p, a.value.v1);
-
-    let p = get_v2(&a, 1);
-    assert_eq!(*p, a.value.v2[1]);
-
-    let p = get_v3(&a, 1);
-    assert_eq!(*p, a.value.v3[1]);
-
-    let p = get_v4(&a, 1);
-    assert_eq!(*p, a.value.v4.f);
-
-    let p = get_v5(&a, 1);
-    assert_eq!(*p, a.value.v5.f);
-
-    let p = get_v6_a(&a, 1);
-    assert_eq!(*p, a.value.v6.unwrap().f);
-
-    let p = get_v6_b(&a, 1);
-    assert_eq!(*p, a.value.v6.unwrap().f);
-
-    let p = get_v6_c(&a, 1);
-    assert_eq!(*p, a.value.v6.unwrap().f);
-
-    let p = get_v5_ref(&a, 1);
-    assert_eq!(*p, a.value.v5.f);
-}
diff --git a/src/test/ui/regions/regions-dependent-autofn.rs b/src/test/ui/regions/regions-dependent-autofn.rs
deleted file mode 100644
index 246dbb5563c..00000000000
--- a/src/test/ui/regions/regions-dependent-autofn.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-// Test lifetimes are linked properly when we autoslice a vector.
-// Issue #3148.
-
-// pretty-expanded FIXME #23616
-
-fn subslice<F>(v: F) -> F where F: FnOnce() { v }
-
-fn both<F>(v: F) -> F where F: FnOnce() {
-    subslice(subslice(v))
-}
-
-pub fn main() {
-    both(main);
-}
diff --git a/src/test/ui/regions/regions-dependent-autoslice.rs b/src/test/ui/regions/regions-dependent-autoslice.rs
deleted file mode 100644
index 4c5b35ec455..00000000000
--- a/src/test/ui/regions/regions-dependent-autoslice.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// run-pass
-// Test lifetimes are linked properly when we autoslice a vector.
-// Issue #3148.
-
-fn subslice1<'r>(v: &'r [usize]) -> &'r [usize] { v }
-
-fn both<'r>(v: &'r [usize]) -> &'r [usize] {
-    subslice1(subslice1(v))
-}
-
-pub fn main() {
-    let v = vec![1,2,3];
-    both(&v);
-}
diff --git a/src/test/ui/regions/regions-dependent-let-ref.rs b/src/test/ui/regions/regions-dependent-let-ref.rs
deleted file mode 100644
index 94e3df4b3f1..00000000000
--- a/src/test/ui/regions/regions-dependent-let-ref.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// run-pass
-// Test lifetimes are linked properly when we take reference
-// to interior.
-
-// pretty-expanded FIXME #23616
-
-struct Foo(isize);
-pub fn main() {
-    // Here the lifetime of the `&` should be at least the
-    // block, since a ref binding is created to the interior.
-    let &Foo(ref _x) = &Foo(3);
-}
diff --git a/src/test/ui/regions/regions-early-bound-error-method.rs b/src/test/ui/regions/regions-early-bound-error-method.rs
deleted file mode 100644
index 7edcc677d73..00000000000
--- a/src/test/ui/regions/regions-early-bound-error-method.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// Tests that you can use a fn lifetime parameter as part of
-// the value for a type parameter in a bound.
-
-trait GetRef<'a> {
-    fn get(&self) -> &'a isize;
-}
-
-struct Box<'a> {
-    t: &'a isize
-}
-
-impl<'a> GetRef<'a> for Box<'a> {
-    fn get(&self) -> &'a isize {
-        self.t
-    }
-}
-
-impl<'a> Box<'a> {
-    fn or<'b,G:GetRef<'b>>(&self, g2: G) -> &'a isize {
-        g2.get()
-        //~^ ERROR lifetime may not live long enough
-    }
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-early-bound-error-method.stderr b/src/test/ui/regions/regions-early-bound-error-method.stderr
deleted file mode 100644
index 7f10c051f29..00000000000
--- a/src/test/ui/regions/regions-early-bound-error-method.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-early-bound-error-method.rs:20:9
-   |
-LL | impl<'a> Box<'a> {
-   |      -- lifetime `'a` defined here
-LL |     fn or<'b,G:GetRef<'b>>(&self, g2: G) -> &'a isize {
-   |           -- lifetime `'b` defined here
-LL |         g2.get()
-   |         ^^^^^^^^ associated function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-early-bound-error.rs b/src/test/ui/regions/regions-early-bound-error.rs
deleted file mode 100644
index 98a69c24f43..00000000000
--- a/src/test/ui/regions/regions-early-bound-error.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// Tests that you can use a fn lifetime parameter as part of
-// the value for a type parameter in a bound.
-
-trait GetRef<'a, T> {
-    fn get(&self) -> &'a T;
-}
-
-struct Box<'a, T:'a> {
-    t: &'a T
-}
-
-impl<'a,T:Clone> GetRef<'a,T> for Box<'a,T> {
-    fn get(&self) -> &'a T {
-        self.t
-    }
-}
-
-fn get<'a,'b,G:GetRef<'a, isize>>(g1: G, b: &'b isize) -> &'b isize {
-    g1.get()
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-early-bound-error.stderr b/src/test/ui/regions/regions-early-bound-error.stderr
deleted file mode 100644
index eb4cd5ca72e..00000000000
--- a/src/test/ui/regions/regions-early-bound-error.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-early-bound-error.rs:19:5
-   |
-LL | fn get<'a,'b,G:GetRef<'a, isize>>(g1: G, b: &'b isize) -> &'b isize {
-   |        -- -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-LL |     g1.get()
-   |     ^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs b/src/test/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs
deleted file mode 100644
index fe50a7dd1be..00000000000
--- a/src/test/ui/regions/regions-early-bound-lifetime-in-assoc-fn.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// run-pass
-#![allow(unused_imports)]
-// Test that we are able to compile calls to associated fns like
-// `decode()` where the bound on the `Self` parameter references a
-// lifetime parameter of the trait. This example indicates why trait
-// lifetime parameters must be early bound in the type of the
-// associated item.
-
-// pretty-expanded FIXME #23616
-
-use std::marker;
-
-pub enum Value<'v> {
-    A(&'v str),
-    B,
-}
-
-pub trait Decoder<'v> {
-    fn read(&mut self) -> Value<'v>;
-}
-
-pub trait Decodable<'v, D: Decoder<'v>> {
-    fn decode(d: &mut D) -> Self;
-}
-
-impl<'v, D: Decoder<'v>> Decodable<'v, D> for () {
-    fn decode(d: &mut D) -> () {
-        match d.read() {
-            Value::A(..) => (),
-            Value::B => Decodable::decode(d),
-        }
-    }
-}
-
-pub fn main() { }
diff --git a/src/test/ui/regions/regions-early-bound-trait-param.rs b/src/test/ui/regions/regions-early-bound-trait-param.rs
deleted file mode 100644
index a28bd14ba88..00000000000
--- a/src/test/ui/regions/regions-early-bound-trait-param.rs
+++ /dev/null
@@ -1,132 +0,0 @@
-// run-pass
-// Tests that you can use an early-bound lifetime parameter as
-// on of the generic parameters in a trait.
-
-trait Trait<'a> {
-    fn long(&'a self) -> isize;
-    fn short<'b>(&'b self) -> isize;
-}
-
-fn poly_invoke<'c, T: Trait<'c>>(x: &'c T) -> (isize, isize) {
-    let l = x.long();
-    let s = x.short();
-    (l,s)
-}
-
-fn object_invoke1<'d>(x: &'d dyn Trait<'d>) -> (isize, isize) {
-    let l = x.long();
-    let s = x.short();
-    (l,s)
-}
-
-struct Struct1<'e> {
-    f: &'e (dyn Trait<'e>+'e)
-}
-
-fn field_invoke1<'f, 'g>(x: &'g Struct1<'f>) -> (isize,isize) {
-    let l = x.f.long();
-    let s = x.f.short();
-    (l,s)
-}
-
-struct Struct2<'h, 'i:'h> {
-    f: &'h (dyn Trait<'i>+'h)
-}
-
-fn object_invoke2<'j, 'k>(x: &'k dyn Trait<'j>) -> isize {
-    x.short()
-}
-
-fn field_invoke2<'l, 'm, 'n>(x: &'n Struct2<'l,'m>) -> isize {
-    x.f.short()
-}
-
-trait MakerTrait {
-    fn mk() -> Self;
-}
-
-fn make_val<T:MakerTrait>() -> T {
-    MakerTrait::mk()
-}
-
-trait RefMakerTrait<'q> {
-    fn mk(_: Self) -> &'q Self;
-}
-
-fn make_ref<'r, T:RefMakerTrait<'r>>(t:T) -> &'r T {
-    RefMakerTrait::mk(t)
-}
-
-impl<'s> Trait<'s> for (isize,isize) {
-    fn long(&'s self) -> isize {
-        let &(x,_) = self;
-        x
-    }
-    fn short<'b>(&'b self) -> isize {
-        let &(_,y) = self;
-        y
-    }
-}
-
-impl<'t> MakerTrait for Box<dyn Trait<'t>+'static> {
-    fn mk() -> Box<dyn Trait<'t>+'static> {
-        let tup: Box<(isize, isize)> = Box::new((4,5));
-        tup as Box<dyn Trait>
-    }
-}
-
-enum List<'l> {
-    Cons(isize, &'l List<'l>),
-    Null
-}
-
-impl<'l> List<'l> {
-    fn car<'m>(&'m self) -> isize {
-        match self {
-            &List::Cons(car, _) => car,
-            &List::Null => panic!(),
-        }
-    }
-    fn cdr<'n>(&'n self) -> &'l List<'l> {
-        match self {
-            &List::Cons(_, cdr) => cdr,
-            &List::Null => panic!(),
-        }
-    }
-}
-
-impl<'t> RefMakerTrait<'t> for List<'t> {
-    fn mk(l:List<'t>) -> &'t List<'t> {
-        l.cdr()
-    }
-}
-
-pub fn main() {
-    let t = (2,3);
-    let o = &t as &dyn Trait;
-    let s1 = Struct1 { f: o };
-    let s2 = Struct2 { f: o };
-    assert_eq!(poly_invoke(&t), (2,3));
-    assert_eq!(object_invoke1(&t), (2,3));
-    assert_eq!(field_invoke1(&s1), (2,3));
-    assert_eq!(object_invoke2(&t), 3);
-    assert_eq!(field_invoke2(&s2), 3);
-
-    let m : Box<dyn Trait> = make_val();
-    // assert_eq!(object_invoke1(&*m), (4,5));
-    //            ~~~~~~~~~~~~~~~~~~~
-    // this call yields a compilation error; see ui/span/dropck-object-cycle.rs
-    // for details.
-    assert_eq!(object_invoke2(&*m), 5);
-
-    // The RefMakerTrait above is pretty strange (i.e., it is strange
-    // to consume a value of type T and return a &T).  Easiest thing
-    // that came to my mind: consume a cell of a linked list and
-    // return a reference to the list it points to.
-    let l0 = List::Null;
-    let l1 = List::Cons(1, &l0);
-    let l2 = List::Cons(2, &l1);
-    let rl1 = &l1;
-    let r  = make_ref(l2);
-    assert_eq!(rl1.car(), r.car());
-}
diff --git a/src/test/ui/regions/regions-early-bound-used-in-bound-method.rs b/src/test/ui/regions/regions-early-bound-used-in-bound-method.rs
deleted file mode 100644
index a778dae1ed3..00000000000
--- a/src/test/ui/regions/regions-early-bound-used-in-bound-method.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// run-pass
-// Tests that you can use a fn lifetime parameter as part of
-// the value for a type parameter in a bound.
-
-
-trait GetRef<'a> {
-    fn get(&self) -> &'a isize;
-}
-
-#[derive(Copy, Clone)]
-struct Box<'a> {
-    t: &'a isize
-}
-
-impl<'a> GetRef<'a> for Box<'a> {
-    fn get(&self) -> &'a isize {
-        self.t
-    }
-}
-
-impl<'a> Box<'a> {
-    fn add<'b,G:GetRef<'b>>(&self, g2: G) -> isize {
-        *self.t + *g2.get()
-    }
-}
-
-pub fn main() {
-    let b1 = Box { t: &3 };
-    assert_eq!(b1.add(b1), 6);
-}
diff --git a/src/test/ui/regions/regions-early-bound-used-in-bound.rs b/src/test/ui/regions/regions-early-bound-used-in-bound.rs
deleted file mode 100644
index 6ccc99e845d..00000000000
--- a/src/test/ui/regions/regions-early-bound-used-in-bound.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// run-pass
-// Tests that you can use a fn lifetime parameter as part of
-// the value for a type parameter in a bound.
-
-
-trait GetRef<'a, T> {
-    fn get(&self) -> &'a T;
-}
-
-#[derive(Copy, Clone)]
-struct Box<'a, T:'a> {
-    t: &'a T
-}
-
-impl<'a,T:Clone> GetRef<'a,T> for Box<'a,T> {
-    fn get(&self) -> &'a T {
-        self.t
-    }
-}
-
-fn add<'a,G:GetRef<'a, isize>>(g1: G, g2: G) -> isize {
-    *g1.get() + *g2.get()
-}
-
-pub fn main() {
-    let b1 = Box { t: &3 };
-    assert_eq!(add(b1, b1), 6);
-}
diff --git a/src/test/ui/regions/regions-early-bound-used-in-type-param.rs b/src/test/ui/regions/regions-early-bound-used-in-type-param.rs
deleted file mode 100644
index d58c17ad9c8..00000000000
--- a/src/test/ui/regions/regions-early-bound-used-in-type-param.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// run-pass
-// Tests that you can use a fn lifetime parameter as part of
-// the value for a type parameter in a bound.
-
-
-trait Get<T> {
-    fn get(&self) -> T;
-}
-
-#[derive(Copy, Clone)]
-struct Box<T> {
-    t: T
-}
-
-impl<T:Clone> Get<T> for Box<T> {
-    fn get(&self) -> T {
-        self.t.clone()
-    }
-}
-
-fn add<'a,G:Get<&'a isize>>(g1: G, g2: G) -> isize {
-    *g1.get() + *g2.get()
-}
-
-pub fn main() {
-    let b1 = Box { t: &3 };
-    assert_eq!(add(b1, b1), 6);
-}
diff --git a/src/test/ui/regions/regions-escape-into-other-fn.rs b/src/test/ui/regions/regions-escape-into-other-fn.rs
deleted file mode 100644
index 65f4c1b6a64..00000000000
--- a/src/test/ui/regions/regions-escape-into-other-fn.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-// run-pass
-fn foo(x: &usize) -> &usize { x }
-fn bar(x: &usize) -> usize { *x }
-
-pub fn main() {
-    let p: Box<_> = Box::new(3);
-    assert_eq!(bar(foo(&*p)), 3);
-}
diff --git a/src/test/ui/regions/regions-escape-method.rs b/src/test/ui/regions/regions-escape-method.rs
deleted file mode 100644
index 69c01ae6906..00000000000
--- a/src/test/ui/regions/regions-escape-method.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Test a method call where the parameter `B` would (illegally) be
-// inferred to a region bound in the method argument. If this program
-// were accepted, then the closure passed to `s.f` could escape its
-// argument.
-
-struct S;
-
-impl S {
-    fn f<B, F>(&self, _: F) where F: FnOnce(&i32) -> B {
-    }
-}
-
-fn main() {
-    let s = S;
-    s.f(|p| p) //~ ERROR lifetime may not live long enough
-}
diff --git a/src/test/ui/regions/regions-escape-method.stderr b/src/test/ui/regions/regions-escape-method.stderr
deleted file mode 100644
index 9f425125b98..00000000000
--- a/src/test/ui/regions/regions-escape-method.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-escape-method.rs:15:13
-   |
-LL |     s.f(|p| p)
-   |          -- ^ returning this value requires that `'1` must outlive `'2`
-   |          ||
-   |          |return type of closure is &'2 i32
-   |          has type `&'1 i32`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-escape-via-trait-or-not.rs b/src/test/ui/regions/regions-escape-via-trait-or-not.rs
deleted file mode 100644
index ac0e56de4a0..00000000000
--- a/src/test/ui/regions/regions-escape-via-trait-or-not.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-#![allow(dead_code)]
-
-trait Deref {
-    fn get(self) -> isize;
-}
-
-impl<'a> Deref for &'a isize {
-    fn get(self) -> isize {
-        *self
-    }
-}
-
-fn with<R:Deref, F>(f: F) -> isize where F: FnOnce(&isize) -> R {
-    f(&3).get()
-}
-
-fn return_it() -> isize {
-    with(|o| o) //~ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-escape-via-trait-or-not.stderr b/src/test/ui/regions/regions-escape-via-trait-or-not.stderr
deleted file mode 100644
index cae6c33ac6e..00000000000
--- a/src/test/ui/regions/regions-escape-via-trait-or-not.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-escape-via-trait-or-not.rs:18:14
-   |
-LL |     with(|o| o)
-   |           -- ^ returning this value requires that `'1` must outlive `'2`
-   |           ||
-   |           |return type of closure is &'2 isize
-   |           has type `&'1 isize`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-expl-self.rs b/src/test/ui/regions/regions-expl-self.rs
deleted file mode 100644
index f7315d628a5..00000000000
--- a/src/test/ui/regions/regions-expl-self.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test that you can insert an explicit lifetime in explicit self.
-
-// pretty-expanded FIXME #23616
-
-struct Foo {
-    f: usize
-}
-
-impl Foo {
-    pub fn foo<'a>(&'a self) {}
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-fn-subtyping-2.rs b/src/test/ui/regions/regions-fn-subtyping-2.rs
deleted file mode 100644
index 83949ddba3d..00000000000
--- a/src/test/ui/regions/regions-fn-subtyping-2.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Issue #2263.
-
-// Here, `f` is a function that takes a pointer `x` and a function
-// `g`, where `g` requires its argument `y` to be in the same region
-// that `x` is in.
-// pretty-expanded FIXME #23616
-
-fn has_same_region(f: Box<dyn for<'a> FnMut(&'a isize, Box<dyn FnMut(&'a isize)>)>) {
-    // `f` should be the type that `wants_same_region` wants, but
-    // right now the compiler complains that it isn't.
-    wants_same_region(f);
-}
-
-fn wants_same_region(_f: Box<dyn for<'b> FnMut(&'b isize, Box<dyn FnMut(&'b isize)>)>) {
-}
-
-pub fn main() {
-}
diff --git a/src/test/ui/regions/regions-fn-subtyping-return-static-fail.rs b/src/test/ui/regions/regions-fn-subtyping-return-static-fail.rs
deleted file mode 100644
index 539221b5a04..00000000000
--- a/src/test/ui/regions/regions-fn-subtyping-return-static-fail.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-// In this fn, the type `F` is a function that takes a reference to a
-// struct and returns another reference with the same lifetime.
-//
-// Meanwhile, the bare fn `foo` takes a reference to a struct with
-// *ANY* lifetime and returns a reference with the 'static lifetime.
-// This can safely be considered to be an instance of `F` because all
-// lifetimes are sublifetimes of 'static.
-
-#![allow(dead_code)]
-#![allow(unused_variables)]
-
-struct S;
-
-// Given 'cx, return 'cx
-type F = for<'cx> fn(&'cx S) -> &'cx S;
-fn want_F(f: F) {}
-
-// Given anything, return 'static
-type G = for<'cx> fn(&'cx S) -> &'static S;
-fn want_G(f: G) {}
-
-// Should meet both.
-fn foo(x: &S) -> &'static S {
-    panic!()
-}
-
-// Should meet both.
-fn bar<'a, 'b>(x: &'a S) -> &'b S {
-    panic!()
-}
-
-// Meets F, but not G.
-fn baz(x: &S) -> &S {
-    panic!()
-}
-
-fn supply_F() {
-    want_F(foo);
-
-    want_F(bar);
-
-    want_F(baz);
-}
-
-fn supply_G() {
-    want_G(foo);
-    want_G(bar);
-    want_G(baz); //~ ERROR mismatched types
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-fn-subtyping-return-static-fail.stderr b/src/test/ui/regions/regions-fn-subtyping-return-static-fail.stderr
deleted file mode 100644
index 8d82ff958ff..00000000000
--- a/src/test/ui/regions/regions-fn-subtyping-return-static-fail.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/regions-fn-subtyping-return-static-fail.rs:48:12
-   |
-LL |     want_G(baz);
-   |     ------ ^^^ one type is more general than the other
-   |     |
-   |     arguments to this function are incorrect
-   |
-   = note: expected fn pointer `for<'cx> fn(&'cx S) -> &'static S`
-                 found fn item `for<'a> fn(&'a S) -> &'a S {baz}`
-note: function defined here
-  --> $DIR/regions-fn-subtyping-return-static-fail.rs:20:4
-   |
-LL | fn want_G(f: G) {}
-   |    ^^^^^^ ----
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/regions/regions-fn-subtyping-return-static.rs b/src/test/ui/regions/regions-fn-subtyping-return-static.rs
deleted file mode 100644
index de14d5ba82a..00000000000
--- a/src/test/ui/regions/regions-fn-subtyping-return-static.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-// In this fn, the type `F` is a function that takes a reference to a
-// struct and returns another reference with the same lifetime.
-//
-// Meanwhile, the bare fn `foo` takes a reference to a struct with
-// *ANY* lifetime and returns a reference with the 'static lifetime.
-// This can safely be considered to be an instance of `F` because all
-// lifetimes are sublifetimes of 'static.
-//
-// check-pass
-
-#![allow(dead_code)]
-#![allow(unused_variables)]
-#![allow(non_snake_case)]
-
-struct S;
-
-// Given 'cx, return 'cx
-type F = for<'cx> fn(&'cx S) -> &'cx S;
-fn want_F(f: F) {}
-
-// Given anything, return 'static
-type G = for<'cx> fn(&'cx S) -> &'static S;
-fn want_G(f: G) {}
-
-// Should meet both.
-fn foo(x: &S) -> &'static S {
-    panic!()
-}
-
-// Should meet both.
-fn bar<'a, 'b>(x: &'a S) -> &'b S {
-    panic!()
-}
-
-// Meets F, but not G.
-fn baz(x: &S) -> &S {
-    panic!()
-}
-
-fn supply_F() {
-    want_F(foo);
-
-    want_F(bar);
-
-    want_F(baz);
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-fn-subtyping.rs b/src/test/ui/regions/regions-fn-subtyping.rs
deleted file mode 100644
index 9570359c69e..00000000000
--- a/src/test/ui/regions/regions-fn-subtyping.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_assignments)]
-// Issue #2263.
-
-// pretty-expanded FIXME #23616
-
-#![allow(unused_variables)]
-
-// Should pass region checking.
-fn ok(f: Box<dyn FnMut(&usize)>) {
-    // Here, g is a function that can accept a usize pointer with
-    // lifetime r, and f is a function that can accept a usize pointer
-    // with any lifetime.  The assignment g = f should be OK (i.e.,
-    // f's type should be a subtype of g's type), because f can be
-    // used in any context that expects g's type.  But this currently
-    // fails.
-    let mut g: Box<dyn for<'r> FnMut(&'r usize)> = Box::new(|x| { });
-    g = f;
-}
-
-// This version is the same as above, except that here, g's type is
-// inferred.
-fn ok_inferred(f: Box<dyn FnMut(&usize)>) {
-    let mut g: Box<dyn for<'r> FnMut(&'r usize)> = Box::new(|_| {});
-    g = f;
-}
-
-pub fn main() {
-}
diff --git a/src/test/ui/regions/regions-free-region-ordering-callee-4.rs b/src/test/ui/regions/regions-free-region-ordering-callee-4.rs
deleted file mode 100644
index de58dd0b10f..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-callee-4.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// Tests that callees correctly infer an ordering between free regions
-// that appear in their parameter list.  See also
-// regions-free-region-ordering-caller.rs
-
-fn ordering4<'a, 'b, F>(a: &'a usize, b: &'b usize, x: F) where F: FnOnce(&'a &'b usize) {
-    //~^ ERROR reference has a longer lifetime than the data it references
-    // Do not infer ordering from closure argument types.
-    let z: Option<&'a &'b usize> = None;
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-free-region-ordering-callee-4.stderr b/src/test/ui/regions/regions-free-region-ordering-callee-4.stderr
deleted file mode 100644
index 1df7ca0e3e9..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-callee-4.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0491]: in type `&'a &'b usize`, reference has a longer lifetime than the data it references
-  --> $DIR/regions-free-region-ordering-callee-4.rs:5:68
-   |
-LL | fn ordering4<'a, 'b, F>(a: &'a usize, b: &'b usize, x: F) where F: FnOnce(&'a &'b usize) {
-   |                                                                    ^^^^^^^^^^^^^^^^^^^^^
-   |
-note: the pointer is valid for the lifetime `'a` as defined here
-  --> $DIR/regions-free-region-ordering-callee-4.rs:5:14
-   |
-LL | fn ordering4<'a, 'b, F>(a: &'a usize, b: &'b usize, x: F) where F: FnOnce(&'a &'b usize) {
-   |              ^^
-note: but the referenced data is only valid for the lifetime `'b` as defined here
-  --> $DIR/regions-free-region-ordering-callee-4.rs:5:18
-   |
-LL | fn ordering4<'a, 'b, F>(a: &'a usize, b: &'b usize, x: F) where F: FnOnce(&'a &'b usize) {
-   |                  ^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0491`.
diff --git a/src/test/ui/regions/regions-free-region-ordering-callee.rs b/src/test/ui/regions/regions-free-region-ordering-callee.rs
deleted file mode 100644
index 8158e81e1dd..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-callee.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// Tests that callees correctly infer an ordering between free regions
-// that appear in their parameter list.  See also
-// regions-free-region-ordering-caller.rs
-
-fn ordering1<'a, 'b>(x: &'a &'b usize) -> &'a usize {
-    // It is safe to assume that 'a <= 'b due to the type of x
-    let y: &'b usize = &**x;
-    return y;
-}
-
-fn ordering2<'a, 'b>(x: &'a &'b usize, y: &'a usize) -> &'b usize {
-    // However, it is not safe to assume that 'b <= 'a
-    &*y
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn ordering3<'a, 'b>(x: &'a usize, y: &'b usize) -> &'a &'b usize {
-    // Do not infer an ordering from the return value.
-    let z: &'b usize = &*x;
-    //~^ ERROR lifetime may not live long enough
-    panic!();
-}
-
-// see regions-free-region-ordering-callee-4.rs
-
-fn ordering5<'a, 'b>(a: &'a usize, b: &'b usize, x: Option<&'a &'b usize>) {
-    let z: Option<&'a &'b usize> = None;
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-free-region-ordering-callee.stderr b/src/test/ui/regions/regions-free-region-ordering-callee.stderr
deleted file mode 100644
index a1b46a692f9..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-callee.stderr
+++ /dev/null
@@ -1,28 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-free-region-ordering-callee.rs:13:5
-   |
-LL | fn ordering2<'a, 'b>(x: &'a &'b usize, y: &'a usize) -> &'b usize {
-   |              --  -- lifetime `'b` defined here
-   |              |
-   |              lifetime `'a` defined here
-LL |     // However, it is not safe to assume that 'b <= 'a
-LL |     &*y
-   |     ^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-free-region-ordering-callee.rs:19:12
-   |
-LL | fn ordering3<'a, 'b>(x: &'a usize, y: &'b usize) -> &'a &'b usize {
-   |              --  -- lifetime `'b` defined here
-   |              |
-   |              lifetime `'a` defined here
-LL |     // Do not infer an ordering from the return value.
-LL |     let z: &'b usize = &*x;
-   |            ^^^^^^^^^ type annotation requires that `'a` must outlive `'b`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/regions-free-region-ordering-caller.rs b/src/test/ui/regions/regions-free-region-ordering-caller.rs
deleted file mode 100644
index 2e83c3258be..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-caller.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Test various ways to construct a pointer with a longer lifetime
-// than the thing it points at and ensure that they result in
-// errors. See also regions-free-region-ordering-callee.rs
-
-struct Paramd<'a> { x: &'a usize }
-
-fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
-    let z: Option<&'b &'a usize> = None;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
-    let y: Paramd<'a> = Paramd { x: a };
-    let z: Option<&'b Paramd<'a>> = None;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
-    let z: Option<&'a &'b usize> = None;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-free-region-ordering-caller.stderr b/src/test/ui/regions/regions-free-region-ordering-caller.stderr
deleted file mode 100644
index cdf70d2a5be..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-caller.stderr
+++ /dev/null
@@ -1,39 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-free-region-ordering-caller.rs:8:12
-   |
-LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
-   |          --  -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-LL |     let z: Option<&'b &'a usize> = None;
-   |            ^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'b`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-free-region-ordering-caller.rs:14:12
-   |
-LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
-   |          --  -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-LL |     let y: Paramd<'a> = Paramd { x: a };
-LL |     let z: Option<&'b Paramd<'a>> = None;
-   |            ^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'b`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-free-region-ordering-caller.rs:19:12
-   |
-LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
-   |          --  -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-LL |     let z: Option<&'a &'b usize> = None;
-   |            ^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to 3 previous errors
-
diff --git a/src/test/ui/regions/regions-free-region-ordering-caller1.rs b/src/test/ui/regions/regions-free-region-ordering-caller1.rs
deleted file mode 100644
index f3245561669..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-caller1.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// Test various ways to construct a pointer with a longer lifetime
-// than the thing it points at and ensure that they result in
-// errors. See also regions-free-region-ordering-callee.rs
-
-fn call1<'a>(x: &'a usize) {
-    // Test that creating a pointer like
-    // &'a &'z usize requires that 'a <= 'z:
-    let y: usize = 3;
-    let z: &'a & usize = &(&y);
-    //~^ ERROR temporary value dropped while borrowed
-    //~^^ ERROR `y` does not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-free-region-ordering-caller1.stderr b/src/test/ui/regions/regions-free-region-ordering-caller1.stderr
deleted file mode 100644
index 8ef7e22536b..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-caller1.stderr
+++ /dev/null
@@ -1,32 +0,0 @@
-error[E0716]: temporary value dropped while borrowed
-  --> $DIR/regions-free-region-ordering-caller1.rs:9:27
-   |
-LL | fn call1<'a>(x: &'a usize) {
-   |          -- lifetime `'a` defined here
-...
-LL |     let z: &'a & usize = &(&y);
-   |            -----------    ^^^^ creates a temporary value which is freed while still in use
-   |            |
-   |            type annotation requires that borrow lasts for `'a`
-...
-LL | }
-   | - temporary value is freed at the end of this statement
-
-error[E0597]: `y` does not live long enough
-  --> $DIR/regions-free-region-ordering-caller1.rs:9:27
-   |
-LL | fn call1<'a>(x: &'a usize) {
-   |          -- lifetime `'a` defined here
-...
-LL |     let z: &'a & usize = &(&y);
-   |            -----------    ^^^^ borrowed value does not live long enough
-   |            |
-   |            type annotation requires that `y` is borrowed for `'a`
-...
-LL | }
-   | - `y` dropped here while still borrowed
-
-error: aborting due to 2 previous errors
-
-Some errors have detailed explanations: E0597, E0716.
-For more information about an error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-free-region-ordering-incorrect.rs b/src/test/ui/regions/regions-free-region-ordering-incorrect.rs
deleted file mode 100644
index 1aee6e87644..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-incorrect.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// Test that free regions ordering only goes one way. That is,
-// we have `&'a Node<'b, T>`, which implies that `'a <= 'b`,
-// but not `'b <= 'a`. Hence, returning `&self.val` (which has lifetime
-// `'a`) where `'b` is expected yields an error.
-//
-// This test began its life as a test for issue #4325.
-
-struct Node<'b, T: 'b> {
-    val: T,
-    next: Option<&'b Node<'b, T>>
-}
-
-impl<'b, T> Node<'b, T> {
-    fn get<'a>(&'a self) -> &'b T {
-        match self.next { //~ ERROR lifetime may not live long enough
-            Some(ref next) => next.get(),
-            None => &self.val
-        }
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-free-region-ordering-incorrect.stderr b/src/test/ui/regions/regions-free-region-ordering-incorrect.stderr
deleted file mode 100644
index f7c75033c04..00000000000
--- a/src/test/ui/regions/regions-free-region-ordering-incorrect.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-free-region-ordering-incorrect.rs:15:9
-   |
-LL |   impl<'b, T> Node<'b, T> {
-   |        -- lifetime `'b` defined here
-LL |       fn get<'a>(&'a self) -> &'b T {
-   |              -- lifetime `'a` defined here
-LL | /         match self.next {
-LL | |             Some(ref next) => next.get(),
-LL | |             None => &self.val
-LL | |         }
-   | |_________^ associated function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs b/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs
deleted file mode 100644
index 7c2e1aeeea6..00000000000
--- a/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test that we recognize that if you have
-//
-//     'a : 'static
-//
-// then
-//
-//     'a : 'b
-
-fn test<'a,'b>(x: &'a i32) -> &'b i32
-    where 'a: 'static //~ WARN unnecessary lifetime parameter `'a`
-{
-    x
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr b/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr
deleted file mode 100644
index 70ed418d5cb..00000000000
--- a/src/test/ui/regions/regions-free-region-outlives-static-outlives-free-region.stderr
+++ /dev/null
@@ -1,10 +0,0 @@
-warning: unnecessary lifetime parameter `'a`
-  --> $DIR/regions-free-region-outlives-static-outlives-free-region.rs:12:11
-   |
-LL |     where 'a: 'static
-   |           ^^
-   |
-   = help: you can use the `'static` lifetime directly, in place of `'a`
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/regions/regions-glb-free-free.rs b/src/test/ui/regions/regions-glb-free-free.rs
deleted file mode 100644
index 0370a5192d3..00000000000
--- a/src/test/ui/regions/regions-glb-free-free.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-mod argparse {
-    pub struct Flag<'a> {
-        name: &'a str,
-        pub desc: &'a str,
-        max_count: usize,
-        value: usize
-    }
-
-    pub fn flag<'r>(name: &'r str, desc: &'r str) -> Flag<'r> {
-        Flag { name: name, desc: desc, max_count: 1, value: 0 }
-    }
-
-    impl<'a> Flag<'a> {
-        pub fn set_desc(self, s: &str) -> Flag<'a> {
-            Flag { //~ ERROR explicit lifetime required in the type of `s` [E0621]
-                name: self.name,
-                desc: s,
-                max_count: self.max_count,
-                value: self.value
-            }
-        }
-    }
-}
-
-fn main () {
-    let f : argparse::Flag = argparse::flag("flag", "My flag");
-    let updated_flag = f.set_desc("My new flag");
-    assert_eq!(updated_flag.desc, "My new flag");
-}
diff --git a/src/test/ui/regions/regions-glb-free-free.stderr b/src/test/ui/regions/regions-glb-free-free.stderr
deleted file mode 100644
index 575037a0a4d..00000000000
--- a/src/test/ui/regions/regions-glb-free-free.stderr
+++ /dev/null
@@ -1,16 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `s`
-  --> $DIR/regions-glb-free-free.rs:15:13
-   |
-LL |           pub fn set_desc(self, s: &str) -> Flag<'a> {
-   |                                    ---- help: add explicit lifetime `'a` to the type of `s`: `&'a str`
-LL | /             Flag {
-LL | |                 name: self.name,
-LL | |                 desc: s,
-LL | |                 max_count: self.max_count,
-LL | |                 value: self.value
-LL | |             }
-   | |_____________^ lifetime `'a` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-1.rs b/src/test/ui/regions/regions-implied-bounds-projection-gap-1.rs
deleted file mode 100644
index 38fc9c462da..00000000000
--- a/src/test/ui/regions/regions-implied-bounds-projection-gap-1.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// Illustrates the "projection gap": in this test, even though we know
-// that `T::Foo: 'x`, that does not tell us that `T: 'x`, because
-// there might be other ways for the caller of `func` to show that
-// `T::Foo: 'x` holds (e.g., where-clause).
-
-trait Trait1<'x> {
-    type Foo;
-}
-
-// calling this fn should trigger a check that the type argument
-// supplied is well-formed.
-fn wf<T>() { }
-
-fn func<'x, T:Trait1<'x>>(t: &'x T::Foo)
-{
-    wf::<&'x T>();
-    //~^ ERROR the parameter type `T` may not live long enough
-}
-
-fn caller2<'x, T:Trait1<'x>>(t: &'x T)
-{
-    wf::<&'x T::Foo>(); // OK
-}
-
-fn caller3<'x, T:Trait1<'x>>(t: &'x T::Foo)
-{
-    wf::<&'x T::Foo>(); // OK
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-1.stderr b/src/test/ui/regions/regions-implied-bounds-projection-gap-1.stderr
deleted file mode 100644
index 7c9f405563c..00000000000
--- a/src/test/ui/regions/regions-implied-bounds-projection-gap-1.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0309]: the parameter type `T` may not live long enough
-  --> $DIR/regions-implied-bounds-projection-gap-1.rs:16:5
-   |
-LL |     wf::<&'x T>();
-   |     ^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn func<'x, T:Trait1<'x> + 'x>(t: &'x T::Foo)
-   |                          ++++
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-2.rs b/src/test/ui/regions/regions-implied-bounds-projection-gap-2.rs
deleted file mode 100644
index a481a9cc5fe..00000000000
--- a/src/test/ui/regions/regions-implied-bounds-projection-gap-2.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Along with the other tests in this series, illustrates the
-// "projection gap": in this test, we know that `T: 'x`, and that is
-// enough to conclude that `T::Foo: 'x`.
-
-// check-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-
-trait Trait1<'x> {
-    type Foo;
-}
-
-// calling this fn should trigger a check that the type argument
-// supplied is well-formed.
-fn wf<T>() { }
-
-fn func<'x, T:Trait1<'x>>(t: &'x T)
-{
-    wf::<&'x T::Foo>();
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-3.rs b/src/test/ui/regions/regions-implied-bounds-projection-gap-3.rs
deleted file mode 100644
index a627cbbd88f..00000000000
--- a/src/test/ui/regions/regions-implied-bounds-projection-gap-3.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Along with the other tests in this series, illustrates the
-// "projection gap": in this test, we know that `T::Foo: 'x`, and that
-// is (naturally) enough to conclude that `T::Foo: 'x`.
-
-// check-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-
-trait Trait1<'x> {
-    type Foo;
-}
-
-// calling this fn should trigger a check that the type argument
-// supplied is well-formed.
-fn wf<T>() { }
-
-fn func<'x, T:Trait1<'x>>(t: &'x T::Foo)
-{
-    wf::<&'x T::Foo>();
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-4.rs b/src/test/ui/regions/regions-implied-bounds-projection-gap-4.rs
deleted file mode 100644
index 5158c289340..00000000000
--- a/src/test/ui/regions/regions-implied-bounds-projection-gap-4.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Along with the other tests in this series, illustrates the
-// "projection gap": in this test, we know that `T: 'x`, and that
-// is (naturally) enough to conclude that `T: 'x`.
-
-// check-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-
-trait Trait1<'x> {
-    type Foo;
-}
-
-// calling this fn should trigger a check that the type argument
-// supplied is well-formed.
-fn wf<T>() { }
-
-fn func<'x, T:Trait1<'x>>(t: &'x T)
-{
-    wf::<&'x T>();
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs b/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs
deleted file mode 100644
index 1106352037a..00000000000
--- a/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// The "projection gap" is particularly "fun" around higher-ranked
-// projections.  This is because the current code is hard-coded to say
-// that a projection that contains escaping regions, like `<T as
-// Trait2<'y, 'z>>::Foo` where `'z` is bound, can only be found to
-// outlive a region if all components that appear free (`'y`, where)
-// outlive that region. However, we DON'T add those components to the
-// implied bounds set, but rather we treat projections with escaping
-// regions as opaque entities, just like projections without escaping
-// regions.
-
-trait Trait1<T> { }
-
-trait Trait2<'a, 'b> {
-    type Foo;
-}
-
-// As a side-effect of the conservative process above, the type of
-// this argument `t` is not automatically considered well-formed,
-// since for it to be WF, we would need to know that `'y: 'x`, but we
-// do not infer that.
-fn callee<'x, 'y, T>(t: &'x dyn for<'z> Trait1< <T as Trait2<'y, 'z>>::Foo >)
-    //~^ ERROR the trait bound `for<'z> T: Trait2<'y, 'z>` is not satisfied
-    //~| ERROR the trait bound `for<'z> T: Trait2<'y, 'z>` is not satisfied
-{
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr b/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr
deleted file mode 100644
index 3fd39810d44..00000000000
--- a/src/test/ui/regions/regions-implied-bounds-projection-gap-hr-1.stderr
+++ /dev/null
@@ -1,29 +0,0 @@
-error[E0277]: the trait bound `for<'z> T: Trait2<'y, 'z>` is not satisfied
-  --> $DIR/regions-implied-bounds-projection-gap-hr-1.rs:21:49
-   |
-LL | fn callee<'x, 'y, T>(t: &'x dyn for<'z> Trait1< <T as Trait2<'y, 'z>>::Foo >)
-   |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `for<'z> Trait2<'y, 'z>` is not implemented for `T`
-   |
-help: consider restricting type parameter `T`
-   |
-LL | fn callee<'x, 'y, T: for<'z> Trait2<'y, 'z>>(t: &'x dyn for<'z> Trait1< <T as Trait2<'y, 'z>>::Foo >)
-   |                    ++++++++++++++++++++++++
-
-error[E0277]: the trait bound `for<'z> T: Trait2<'y, 'z>` is not satisfied
-  --> $DIR/regions-implied-bounds-projection-gap-hr-1.rs:21:1
-   |
-LL | / fn callee<'x, 'y, T>(t: &'x dyn for<'z> Trait1< <T as Trait2<'y, 'z>>::Foo >)
-LL | |
-LL | |
-LL | | {
-LL | | }
-   | |_^ the trait `for<'z> Trait2<'y, 'z>` is not implemented for `T`
-   |
-help: consider restricting type parameter `T`
-   |
-LL | fn callee<'x, 'y, T: for<'z> Trait2<'y, 'z>>(t: &'x dyn for<'z> Trait1< <T as Trait2<'y, 'z>>::Foo >)
-   |                    ++++++++++++++++++++++++
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/regions/regions-in-enums-anon.rs b/src/test/ui/regions/regions-in-enums-anon.rs
deleted file mode 100644
index da65cb791ec..00000000000
--- a/src/test/ui/regions/regions-in-enums-anon.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// Test that anonymous lifetimes are not permitted in enum declarations
-
-enum Foo {
-    Bar(&isize) //~ ERROR missing lifetime specifier
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-in-enums-anon.stderr b/src/test/ui/regions/regions-in-enums-anon.stderr
deleted file mode 100644
index ed547aa9c41..00000000000
--- a/src/test/ui/regions/regions-in-enums-anon.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0106]: missing lifetime specifier
-  --> $DIR/regions-in-enums-anon.rs:4:9
-   |
-LL |     Bar(&isize)
-   |         ^ expected named lifetime parameter
-   |
-help: consider introducing a named lifetime parameter
-   |
-LL ~ enum Foo<'a> {
-LL ~     Bar(&'a isize)
-   |
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0106`.
diff --git a/src/test/ui/regions/regions-in-enums.rs b/src/test/ui/regions/regions-in-enums.rs
deleted file mode 100644
index 8cf553a0f35..00000000000
--- a/src/test/ui/regions/regions-in-enums.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that lifetimes must be declared for use on enums.
-// See also regions-undeclared.rs
-
-enum Yes0<'lt> {
-    X3(&'lt usize)
-}
-
-enum Yes1<'a> {
-    X4(&'a usize)
-}
-
-enum No0 {
-    X5(&'foo usize) //~ ERROR use of undeclared lifetime name `'foo`
-}
-
-enum No1 {
-    X6(&'a usize) //~ ERROR use of undeclared lifetime name `'a`
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-in-enums.stderr b/src/test/ui/regions/regions-in-enums.stderr
deleted file mode 100644
index 66537653291..00000000000
--- a/src/test/ui/regions/regions-in-enums.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0261]: use of undeclared lifetime name `'foo`
-  --> $DIR/regions-in-enums.rs:13:9
-   |
-LL | enum No0 {
-   |         - help: consider introducing lifetime `'foo` here: `<'foo>`
-LL |     X5(&'foo usize)
-   |         ^^^^ undeclared lifetime
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-in-enums.rs:17:9
-   |
-LL | enum No1 {
-   |         - help: consider introducing lifetime `'a` here: `<'a>`
-LL |     X6(&'a usize)
-   |         ^^ undeclared lifetime
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0261`.
diff --git a/src/test/ui/regions/regions-in-structs-anon.rs b/src/test/ui/regions/regions-in-structs-anon.rs
deleted file mode 100644
index 7cb2ce0dbf3..00000000000
--- a/src/test/ui/regions/regions-in-structs-anon.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// Test that anonymous lifetimes are not permitted in struct declarations
-
-struct Foo {
-    x: &isize //~ ERROR missing lifetime specifier
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-in-structs-anon.stderr b/src/test/ui/regions/regions-in-structs-anon.stderr
deleted file mode 100644
index 992d25c9fd1..00000000000
--- a/src/test/ui/regions/regions-in-structs-anon.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0106]: missing lifetime specifier
-  --> $DIR/regions-in-structs-anon.rs:4:8
-   |
-LL |     x: &isize
-   |        ^ expected named lifetime parameter
-   |
-help: consider introducing a named lifetime parameter
-   |
-LL ~ struct Foo<'a> {
-LL ~     x: &'a isize
-   |
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0106`.
diff --git a/src/test/ui/regions/regions-in-structs.rs b/src/test/ui/regions/regions-in-structs.rs
deleted file mode 100644
index 71f718ba259..00000000000
--- a/src/test/ui/regions/regions-in-structs.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-struct Yes1<'a> {
-  x: &'a usize,
-}
-
-struct Yes2<'a> {
-  x: &'a usize,
-}
-
-struct StructDecl {
-    a: &'a isize, //~ ERROR use of undeclared lifetime name `'a`
-    b: &'a isize, //~ ERROR use of undeclared lifetime name `'a`
-}
-
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-in-structs.stderr b/src/test/ui/regions/regions-in-structs.stderr
deleted file mode 100644
index 5dfdc2ee93b..00000000000
--- a/src/test/ui/regions/regions-in-structs.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-in-structs.rs:10:9
-   |
-LL | struct StructDecl {
-   |                  - help: consider introducing lifetime `'a` here: `<'a>`
-LL |     a: &'a isize,
-   |         ^^ undeclared lifetime
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-in-structs.rs:11:9
-   |
-LL | struct StructDecl {
-   |                  - help: consider introducing lifetime `'a` here: `<'a>`
-LL |     a: &'a isize,
-LL |     b: &'a isize,
-   |         ^^ undeclared lifetime
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0261`.
diff --git a/src/test/ui/regions/regions-infer-at-fn-not-param.rs b/src/test/ui/regions/regions-infer-at-fn-not-param.rs
deleted file mode 100644
index fb9c5d5c210..00000000000
--- a/src/test/ui/regions/regions-infer-at-fn-not-param.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-struct Parameterized1<'a> {
-    g: Box<dyn FnMut() + 'a>
-}
-
-struct NotParameterized1 {
-    g: Box<dyn FnMut() + 'static>
-}
-
-struct NotParameterized2 {
-    g: Box<dyn FnMut() + 'static>
-}
-
-fn take1<'a>(p: Parameterized1) -> Parameterized1<'a> { p }
-//~^ ERROR explicit lifetime required in the type of `p`
-
-fn take3(p: NotParameterized1) -> NotParameterized1 { p }
-fn take4(p: NotParameterized2) -> NotParameterized2 { p }
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-infer-at-fn-not-param.stderr b/src/test/ui/regions/regions-infer-at-fn-not-param.stderr
deleted file mode 100644
index 8cfc44f6abd..00000000000
--- a/src/test/ui/regions/regions-infer-at-fn-not-param.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `p`
-  --> $DIR/regions-infer-at-fn-not-param.rs:13:57
-   |
-LL | fn take1<'a>(p: Parameterized1) -> Parameterized1<'a> { p }
-   |                 --------------                          ^ lifetime `'a` required
-   |                 |
-   |                 help: add explicit lifetime `'a` to the type of `p`: `Parameterized1<'a>`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/regions/regions-infer-borrow-scope-addr-of.rs b/src/test/ui/regions/regions-infer-borrow-scope-addr-of.rs
deleted file mode 100644
index 5d8ad932ed6..00000000000
--- a/src/test/ui/regions/regions-infer-borrow-scope-addr-of.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// run-pass
-
-use std::mem::swap;
-
-pub fn main() {
-    let mut x = 4;
-
-    for i in 0_usize..3 {
-        // ensure that the borrow in this alt
-        // does not interfere with the swap
-        // below.  note that it would it you
-        // naively borrowed &x for the lifetime
-        // of the variable x, as we once did
-        match i {
-            i => {
-                let y = &x;
-                assert!(i < *y);
-            }
-        }
-        let mut y = 4;
-        swap(&mut y, &mut x);
-    }
-}
diff --git a/src/test/ui/regions/regions-infer-borrow-scope-too-big.rs b/src/test/ui/regions/regions-infer-borrow-scope-too-big.rs
deleted file mode 100644
index 250b41da578..00000000000
--- a/src/test/ui/regions/regions-infer-borrow-scope-too-big.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-struct Point {
-    x: isize,
-    y: isize,
-}
-
-fn x_coord<'r>(p: &'r Point) -> &'r isize {
-    return &p.x;
-}
-
-fn foo<'a>(p: Box<Point>) -> &'a isize {
-    let xc = x_coord(&*p);
-    assert_eq!(*xc, 3);
-    return xc; //~ ERROR cannot return value referencing local data `*p`
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-infer-borrow-scope-too-big.stderr b/src/test/ui/regions/regions-infer-borrow-scope-too-big.stderr
deleted file mode 100644
index 2c7a6e8b5c0..00000000000
--- a/src/test/ui/regions/regions-infer-borrow-scope-too-big.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0515]: cannot return value referencing local data `*p`
-  --> $DIR/regions-infer-borrow-scope-too-big.rs:13:12
-   |
-LL |     let xc = x_coord(&*p);
-   |                      --- `*p` is borrowed here
-LL |     assert_eq!(*xc, 3);
-LL |     return xc;
-   |            ^^ returns a value referencing data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-infer-borrow-scope-view.rs b/src/test/ui/regions/regions-infer-borrow-scope-view.rs
deleted file mode 100644
index 349b5204434..00000000000
--- a/src/test/ui/regions/regions-infer-borrow-scope-view.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// run-pass
-
-
-fn view<T>(x: &[T]) -> &[T] {x}
-
-pub fn main() {
-    let v = vec![1, 2, 3];
-    let x = view(&v);
-    let y = view(x);
-    assert!((v[0] == x[0]) && (v[0] == y[0]));
-}
diff --git a/src/test/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs b/src/test/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs
deleted file mode 100644
index dca26742dac..00000000000
--- a/src/test/ui/regions/regions-infer-borrow-scope-within-loop-ok.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// run-pass
-
-fn borrow<T>(x: &T) -> &T {x}
-
-pub fn main() {
-    let x: Box<_> = Box::new(3);
-    loop {
-        let y = borrow(&*x);
-        assert_eq!(*x, *y);
-        break;
-    }
-}
diff --git a/src/test/ui/regions/regions-infer-borrow-scope.rs b/src/test/ui/regions/regions-infer-borrow-scope.rs
deleted file mode 100644
index b4a050bf1ed..00000000000
--- a/src/test/ui/regions/regions-infer-borrow-scope.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-
-struct Point {x: isize, y: isize}
-
-fn x_coord(p: &Point) -> &isize {
-    return &p.x;
-}
-
-pub fn main() {
-    let p: Box<_> = Box::new(Point {x: 3, y: 4});
-    let xc = x_coord(&*p);
-    assert_eq!(*xc, 3);
-}
diff --git a/src/test/ui/regions/regions-infer-bound-from-trait-self.rs b/src/test/ui/regions/regions-infer-bound-from-trait-self.rs
deleted file mode 100644
index d15bfffe9d9..00000000000
--- a/src/test/ui/regions/regions-infer-bound-from-trait-self.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-// Test that we can derive lifetime bounds on `Self` from trait
-// inheritance.
-
-trait Static : 'static { }
-
-trait Is<'a> : 'a { }
-
-struct Inv<'a> {
-    x: Option<&'a mut &'a isize>
-}
-
-fn check_bound<'a,A:'a>(x: Inv<'a>, a: A) { }
-
-// In these case, `Self` inherits `'static`.
-
-trait InheritsFromStatic : Sized + 'static {
-    fn foo1<'a>(self, x: Inv<'a>) {
-        check_bound(x, self)
-    }
-}
-trait InheritsFromStaticIndirectly : Sized + Static {
-    fn foo1<'a>(self, x: Inv<'a>) {
-        check_bound(x, self)
-    }
-}
-
-
-// In these case, `Self` inherits `'a`.
-
-trait InheritsFromIs<'a> : Sized + 'a {
-    fn foo(self, x: Inv<'a>) {
-        check_bound(x, self)
-    }
-}
-
-trait InheritsFromIsIndirectly<'a> : Sized + Is<'a> {
-    fn foo(self, x: Inv<'a>) {
-        check_bound(x, self)
-    }
-}
-
-// In this case, `Self` inherits nothing.
-
-trait InheritsFromNothing<'a> : Sized {
-    fn foo(self, x: Inv<'a>) {
-        check_bound(x, self)
-            //~^ ERROR parameter type `Self` may not live long enough
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-infer-bound-from-trait-self.stderr b/src/test/ui/regions/regions-infer-bound-from-trait-self.stderr
deleted file mode 100644
index e88f79a3a8c..00000000000
--- a/src/test/ui/regions/regions-infer-bound-from-trait-self.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0309]: the parameter type `Self` may not live long enough
-  --> $DIR/regions-infer-bound-from-trait-self.rs:46:9
-   |
-LL |         check_bound(x, self)
-   |         ^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `Self: 'a`...
-   = note: ...so that the type `Self` will meet its required lifetime bounds
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-infer-bound-from-trait.rs b/src/test/ui/regions/regions-infer-bound-from-trait.rs
deleted file mode 100644
index 610452182f8..00000000000
--- a/src/test/ui/regions/regions-infer-bound-from-trait.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-// Test that we can derive lifetime bounds on type parameters
-// from trait inheritance.
-
-trait Static : 'static { }
-
-trait Is<'a> : 'a { }
-
-struct Inv<'a> {
-    x: Option<&'a mut &'a isize>
-}
-
-fn check_bound<'a,A:'a>(x: Inv<'a>, a: A) { }
-
-// In all of these cases, we can derive a bound for A that is longer
-// than 'a based on the trait bound of A:
-
-fn foo1<'a,A:Static>(x: Inv<'a>, a: A) {
-    check_bound(x, a)
-}
-
-fn foo2<'a,A:Static>(x: Inv<'static>, a: A) {
-    check_bound(x, a)
-}
-
-fn foo3<'a,A:Is<'a>>(x: Inv<'a>, a: A) {
-    check_bound(x, a)
-}
-
-// In these cases, there is no trait bound, so we cannot derive any
-// bound for A and we get an error:
-
-fn bar1<'a,A>(x: Inv<'a>, a: A) {
-    check_bound(x, a) //~ ERROR parameter type `A` may not live long enough
-}
-
-fn bar2<'a,'b,A:Is<'b>>(x: Inv<'a>, y: Inv<'b>, a: A) {
-    check_bound(x, a) //~ ERROR parameter type `A` may not live long enough
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-infer-bound-from-trait.stderr b/src/test/ui/regions/regions-infer-bound-from-trait.stderr
deleted file mode 100644
index 3ee71543d15..00000000000
--- a/src/test/ui/regions/regions-infer-bound-from-trait.stderr
+++ /dev/null
@@ -1,25 +0,0 @@
-error[E0309]: the parameter type `A` may not live long enough
-  --> $DIR/regions-infer-bound-from-trait.rs:33:5
-   |
-LL |     check_bound(x, a)
-   |     ^^^^^^^^^^^^^^^^^ ...so that the type `A` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn bar1<'a,A: 'a>(x: Inv<'a>, a: A) {
-   |             ++++
-
-error[E0309]: the parameter type `A` may not live long enough
-  --> $DIR/regions-infer-bound-from-trait.rs:37:5
-   |
-LL |     check_bound(x, a)
-   |     ^^^^^^^^^^^^^^^^^ ...so that the type `A` will meet its required lifetime bounds
-   |
-help: consider adding an explicit lifetime bound...
-   |
-LL | fn bar2<'a,'b,A:Is<'b> + 'a>(x: Inv<'a>, y: Inv<'b>, a: A) {
-   |                        ++++
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-infer-call-2.rs b/src/test/ui/regions/regions-infer-call-2.rs
deleted file mode 100644
index a288d2e4d6e..00000000000
--- a/src/test/ui/regions/regions-infer-call-2.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-
-fn takes_two(x: &isize, y: &isize) -> isize { *x + *y }
-
-fn with<T, F>(f: F) -> T where F: FnOnce(&isize) -> T {
-    f(&20)
-}
-
-fn has_one<'a>(x: &'a isize) -> isize {
-    with(|y| takes_two(x, y))
-}
-
-pub fn main() {
-    assert_eq!(has_one(&2), 22);
-}
diff --git a/src/test/ui/regions/regions-infer-call-3.rs b/src/test/ui/regions/regions-infer-call-3.rs
deleted file mode 100644
index 063ec84288d..00000000000
--- a/src/test/ui/regions/regions-infer-call-3.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-fn select<'r>(x: &'r isize, y: &'r isize) -> &'r isize { x }
-
-fn with<T, F>(f: F) -> T where F: FnOnce(&isize) -> T {
-    f(&20)
-}
-
-fn manip<'a>(x: &'a isize) -> isize {
-    let z = with(|y| { select(x, y) });
-    //~^ ERROR lifetime may not live long enough
-    *z
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-infer-call-3.stderr b/src/test/ui/regions/regions-infer-call-3.stderr
deleted file mode 100644
index ca51555a077..00000000000
--- a/src/test/ui/regions/regions-infer-call-3.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-call-3.rs:8:24
-   |
-LL |     let z = with(|y| { select(x, y) });
-   |                   --   ^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'2`
-   |                   ||
-   |                   |return type of closure is &'2 isize
-   |                   has type `&'1 isize`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-call.rs b/src/test/ui/regions/regions-infer-call.rs
deleted file mode 100644
index 248f9e923d3..00000000000
--- a/src/test/ui/regions/regions-infer-call.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// run-pass
-
-fn takes_two(x: &isize, y: &isize) -> isize { *x + *y }
-
-fn has_two<'a,'b>(x: &'a isize, y: &'b isize) -> isize {
-    takes_two(x, y)
-}
-
-pub fn main() {
-    assert_eq!(has_two(&20, &2), 22);
-}
diff --git a/src/test/ui/regions/regions-infer-contravariance-due-to-decl.rs b/src/test/ui/regions/regions-infer-contravariance-due-to-decl.rs
deleted file mode 100644
index fbc0cec562f..00000000000
--- a/src/test/ui/regions/regions-infer-contravariance-due-to-decl.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// Test that a type which is contravariant with respect to its region
-// parameter yields an error when used in a covariant way.
-//
-// Note: see variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-use std::marker;
-
-// This is contravariant with respect to 'a, meaning that
-// Contravariant<'foo> <: Contravariant<'static> because
-// 'foo <= 'static
-struct Contravariant<'a> {
-    marker: marker::PhantomData<&'a()>
-}
-
-fn use_<'short,'long>(c: Contravariant<'short>,
-                      s: &'short isize,
-                      l: &'long isize,
-                      _where:Option<&'short &'long ()>) {
-
-    // Test whether Contravariant<'short> <: Contravariant<'long>.  Since
-    // 'short <= 'long, this would be true if the Contravariant type were
-    // covariant with respect to its parameter 'a.
-
-    let _: Contravariant<'long> = c;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-infer-contravariance-due-to-decl.stderr b/src/test/ui/regions/regions-infer-contravariance-due-to-decl.stderr
deleted file mode 100644
index 94b80852d01..00000000000
--- a/src/test/ui/regions/regions-infer-contravariance-due-to-decl.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-contravariance-due-to-decl.rs:25:12
-   |
-LL | fn use_<'short,'long>(c: Contravariant<'short>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Contravariant<'long> = c;
-   |            ^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-   |
-   = help: consider adding the following bound: `'short: 'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-contravariance-due-to-ret.rs b/src/test/ui/regions/regions-infer-contravariance-due-to-ret.rs
deleted file mode 100644
index fbd89501559..00000000000
--- a/src/test/ui/regions/regions-infer-contravariance-due-to-ret.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// run-pass
-#![allow(non_camel_case_types)]
-
-
-struct boxed_int<'a> {
-    f: &'a isize,
-}
-
-fn max<'r>(bi: &'r boxed_int, f: &'r isize) -> isize {
-    if *bi.f > *f {*bi.f} else {*f}
-}
-
-fn with(bi: &boxed_int) -> isize {
-    let i = 22;
-    max(bi, &i)
-}
-
-pub fn main() {
-    let g = 21;
-    let foo = boxed_int { f: &g };
-    assert_eq!(with(&foo), 22);
-}
diff --git a/src/test/ui/regions/regions-infer-covariance-due-to-decl.rs b/src/test/ui/regions/regions-infer-covariance-due-to-decl.rs
deleted file mode 100644
index 03c0e436e31..00000000000
--- a/src/test/ui/regions/regions-infer-covariance-due-to-decl.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// Test that a type which is covariant with respect to its region
-// parameter yields an error when used in a contravariant way.
-//
-// Note: see variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-use std::marker;
-
-struct Covariant<'a> {
-    marker: marker::PhantomData<fn(&'a ())>
-}
-
-fn use_<'short,'long>(c: Covariant<'long>,
-                      s: &'short isize,
-                      l: &'long isize,
-                      _where:Option<&'short &'long ()>) {
-
-    // Test whether Covariant<'long> <: Covariant<'short>.  Since
-    // 'short <= 'long, this would be true if the Covariant type were
-    // contravariant with respect to its parameter 'a.
-
-    let _: Covariant<'short> = c;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-infer-covariance-due-to-decl.stderr b/src/test/ui/regions/regions-infer-covariance-due-to-decl.stderr
deleted file mode 100644
index f44a0fad59b..00000000000
--- a/src/test/ui/regions/regions-infer-covariance-due-to-decl.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-covariance-due-to-decl.rs:22:12
-   |
-LL | fn use_<'short,'long>(c: Covariant<'long>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Covariant<'short> = c;
-   |            ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-   |
-   = help: consider adding the following bound: `'short: 'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-decl.rs b/src/test/ui/regions/regions-infer-invariance-due-to-decl.rs
deleted file mode 100644
index 102abc0e0d8..00000000000
--- a/src/test/ui/regions/regions-infer-invariance-due-to-decl.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-use std::marker;
-
-struct Invariant<'a> {
-    marker: marker::PhantomData<*mut &'a()>
-}
-
-fn to_same_lifetime<'r>(b_isize: Invariant<'r>) {
-    let bj: Invariant<'r> = b_isize;
-}
-
-fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
-    b_isize
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-decl.stderr b/src/test/ui/regions/regions-infer-invariance-due-to-decl.stderr
deleted file mode 100644
index c8c7808e06c..00000000000
--- a/src/test/ui/regions/regions-infer-invariance-due-to-decl.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-invariance-due-to-decl.rs:12:5
-   |
-LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
-   |                       -- lifetime `'r` defined here
-LL |     b_isize
-   |     ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-   |
-   = note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Invariant<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.rs b/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.rs
deleted file mode 100644
index c1fb41bd917..00000000000
--- a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-struct Invariant<'a> {
-    f: Box<dyn FnOnce(&mut &'a isize) + 'static>,
-}
-
-fn to_same_lifetime<'r>(b_isize: Invariant<'r>) {
-    let bj: Invariant<'r> = b_isize;
-}
-
-fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
-    b_isize
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr b/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr
deleted file mode 100644
index 1165011c1f4..00000000000
--- a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-invariance-due-to-mutability-3.rs:10:5
-   |
-LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
-   |                       -- lifetime `'r` defined here
-LL |     b_isize
-   |     ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-   |
-   = note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Invariant<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.rs b/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.rs
deleted file mode 100644
index 1078f77a04e..00000000000
--- a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-struct Invariant<'a> {
-    f: Box<dyn FnOnce() -> *mut &'a isize + 'static>,
-}
-
-fn to_same_lifetime<'r>(b_isize: Invariant<'r>) {
-    let bj: Invariant<'r> = b_isize;
-}
-
-fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
-    b_isize
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr b/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr
deleted file mode 100644
index f3973a93bad..00000000000
--- a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-invariance-due-to-mutability-4.rs:10:5
-   |
-LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
-   |                       -- lifetime `'r` defined here
-LL |     b_isize
-   |     ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-   |
-   = note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Invariant<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-not-param.rs b/src/test/ui/regions/regions-infer-not-param.rs
deleted file mode 100644
index c3766bce18a..00000000000
--- a/src/test/ui/regions/regions-infer-not-param.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-struct Direct<'a> {
-    f: &'a isize
-}
-
-struct Indirect1 {
-    // Here the lifetime parameter of direct is bound by the fn()
-    g: Box<dyn FnOnce(Direct) + 'static>
-}
-
-struct Indirect2<'a> {
-    // But here it is set to 'a
-    g: Box<dyn FnOnce(Direct<'a>) + 'static>
-}
-
-fn take_direct<'a,'b>(p: Direct<'a>) -> Direct<'b> { p }
-//~^ ERROR lifetime may not live long enough
-
-fn take_indirect1(p: Indirect1) -> Indirect1 { p }
-
-fn take_indirect2<'a,'b>(p: Indirect2<'a>) -> Indirect2<'b> { p }
-//~^ ERROR lifetime may not live long enough
-//~| ERROR lifetime may not live long enough
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-infer-not-param.stderr b/src/test/ui/regions/regions-infer-not-param.stderr
deleted file mode 100644
index d12f07a7728..00000000000
--- a/src/test/ui/regions/regions-infer-not-param.stderr
+++ /dev/null
@@ -1,40 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-not-param.rs:15:54
-   |
-LL | fn take_direct<'a,'b>(p: Direct<'a>) -> Direct<'b> { p }
-   |                -- -- lifetime `'b` defined here      ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |                |
-   |                lifetime `'a` defined here
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-not-param.rs:20:63
-   |
-LL | fn take_indirect2<'a,'b>(p: Indirect2<'a>) -> Indirect2<'b> { p }
-   |                   -- -- lifetime `'b` defined here            ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-   |                   |
-   |                   lifetime `'a` defined here
-   |
-   = help: consider adding the following bound: `'b: 'a`
-   = note: requirement occurs because of the type `Indirect2<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Indirect2<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-not-param.rs:20:63
-   |
-LL | fn take_indirect2<'a,'b>(p: Indirect2<'a>) -> Indirect2<'b> { p }
-   |                   -- -- lifetime `'b` defined here            ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |                   |
-   |                   lifetime `'a` defined here
-   |
-   = help: consider adding the following bound: `'a: 'b`
-   = note: requirement occurs because of the type `Indirect2<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Indirect2<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-help: `'b` and `'a` must be the same: replace one with the other
-
-error: aborting due to 3 previous errors
-
diff --git a/src/test/ui/regions/regions-infer-paramd-indirect.rs b/src/test/ui/regions/regions-infer-paramd-indirect.rs
deleted file mode 100644
index 978c84e5374..00000000000
--- a/src/test/ui/regions/regions-infer-paramd-indirect.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// Check that we correctly infer that b and c must be region
-// parameterized because they reference a which requires a region.
-
-type A<'a> = &'a isize;
-type B<'a> = Box<A<'a>>;
-
-struct C<'a> {
-    f: Box<B<'a>>
-}
-
-trait SetF<'a> {
-    fn set_f_ok(&mut self, b: Box<B<'a>>);
-    fn set_f_bad(&mut self, b: Box<B>);
-}
-
-impl<'a> SetF<'a> for C<'a> {
-    fn set_f_ok(&mut self, b: Box<B<'a>>) {
-        self.f = b;
-    }
-
-    fn set_f_bad(&mut self, b: Box<B>) {
-        self.f = b;
-        //~^ ERROR lifetime may not live long enough
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-infer-paramd-indirect.stderr b/src/test/ui/regions/regions-infer-paramd-indirect.stderr
deleted file mode 100644
index afabdc1de1c..00000000000
--- a/src/test/ui/regions/regions-infer-paramd-indirect.stderr
+++ /dev/null
@@ -1,13 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-infer-paramd-indirect.rs:22:9
-   |
-LL | impl<'a> SetF<'a> for C<'a> {
-   |      -- lifetime `'a` defined here
-...
-LL |     fn set_f_bad(&mut self, b: Box<B>) {
-   |                             - has type `Box<Box<&'1 isize>>`
-LL |         self.f = b;
-   |         ^^^^^^ assignment requires that `'1` must outlive `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-proc-static-upvar.rs b/src/test/ui/regions/regions-infer-proc-static-upvar.rs
deleted file mode 100644
index 5a64aa73450..00000000000
--- a/src/test/ui/regions/regions-infer-proc-static-upvar.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// Test that, when a variable of type `&T` is captured inside a proc,
-// we correctly infer/require that its lifetime is 'static.
-
-fn foo<F:FnOnce()+'static>(_p: F) { }
-
-static i: isize = 3;
-
-fn capture_local() {
-    let x = 3;
-    let y = &x; //~ ERROR `x` does not live long enough
-    foo(move|| {
-        let _a = *y;
-    });
-}
-
-fn capture_static() {
-    // Legal because &i can have static lifetime:
-    let y = &i;
-    foo(move|| {
-        let _a = *y;
-    });
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-infer-proc-static-upvar.stderr b/src/test/ui/regions/regions-infer-proc-static-upvar.stderr
deleted file mode 100644
index 803d0d74491..00000000000
--- a/src/test/ui/regions/regions-infer-proc-static-upvar.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0597]: `x` does not live long enough
-  --> $DIR/regions-infer-proc-static-upvar.rs:10:13
-   |
-LL |       let y = &x;
-   |               ^^ borrowed value does not live long enough
-LL | /     foo(move|| {
-LL | |         let _a = *y;
-LL | |     });
-   | |______- argument requires that `x` is borrowed for `'static`
-LL |   }
-   |   - `x` dropped here while still borrowed
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs b/src/test/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs
deleted file mode 100644
index 31a48b4adcf..00000000000
--- a/src/test/ui/regions/regions-infer-reborrow-ref-mut-recurse.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test an edge case in region inference: the lifetime of the borrow
-// of `*x` must be extended to at least 'a.
-
-// pretty-expanded FIXME #23616
-
-fn foo<'a,'b>(x: &'a &'b mut isize) -> &'a isize {
-    let y = &*x; // should be inferred to have type &'a &'b mut isize...
-
-    // ...because if we inferred, say, &'x &'b mut isize where 'x <= 'a,
-    // this reborrow would be illegal:
-    &**y
-}
-
-pub fn main() {
-    /* Just want to know that it compiles. */
-}
diff --git a/src/test/ui/regions/regions-infer-region-in-fn-but-not-type.rs b/src/test/ui/regions/regions-infer-region-in-fn-but-not-type.rs
deleted file mode 100644
index 6aa5d8217a4..00000000000
--- a/src/test/ui/regions/regions-infer-region-in-fn-but-not-type.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-#![allow(non_camel_case_types)]
-
-
-// check that the &isize here does not cause us to think that `foo`
-// contains region pointers
-// pretty-expanded FIXME #23616
-
-struct foo(Box<dyn FnMut(&isize)+'static>);
-
-fn take_foo<T:'static>(x: T) {}
-
-fn have_foo(f: foo) {
-    take_foo(f);
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-infer-static-from-proc.rs b/src/test/ui/regions/regions-infer-static-from-proc.rs
deleted file mode 100644
index 39501e2d697..00000000000
--- a/src/test/ui/regions/regions-infer-static-from-proc.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-#![allow(non_upper_case_globals)]
-
-// Check that the 'static bound on a proc influences lifetimes of
-// region variables contained within (otherwise, region inference will
-// give `x` a very short lifetime).
-
-// pretty-expanded FIXME #23616
-
-static i: usize = 3;
-fn foo<F:FnOnce()+'static>(_: F) {}
-fn read(_: usize) { }
-pub fn main() {
-    let x = &i;
-    foo(move|| {
-        read(*x);
-    });
-}
diff --git a/src/test/ui/regions/regions-issue-21422.rs b/src/test/ui/regions/regions-issue-21422.rs
deleted file mode 100644
index 198b7146647..00000000000
--- a/src/test/ui/regions/regions-issue-21422.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-// Regression test for issue #21422, which was related to failing to
-// add inference constraints that the operands of a binary operator
-// should outlive the binary operation itself.
-
-// pretty-expanded FIXME #23616
-
-pub struct P<'a> {
-    _ptr: *const &'a u8,
-}
-
-impl <'a> PartialEq for P<'a> {
-    fn eq(&self, other: &P<'a>) -> bool {
-        (self as *const _) == (other as *const _)
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-issue-22246.rs b/src/test/ui/regions/regions-issue-22246.rs
deleted file mode 100644
index 0858833678b..00000000000
--- a/src/test/ui/regions/regions-issue-22246.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// run-pass
-#![allow(unused_imports)]
-// Regression test for issue #22246 -- we should be able to deduce
-// that `&'a B::Owned` implies that `B::Owned : 'a`.
-
-// pretty-expanded FIXME #23616
-
-#![allow(dead_code)]
-
-use std::ops::Deref;
-
-pub trait ToOwned: Sized {
-    type Owned: Borrow<Self>;
-    fn to_owned(&self) -> Self::Owned;
-}
-
-pub trait Borrow<Borrowed> {
-    fn borrow(&self) -> &Borrowed;
-}
-
-pub struct Foo<B:ToOwned> {
-    owned: B::Owned
-}
-
-fn foo<B:ToOwned>(this: &Foo<B>) -> &B {
-    this.owned.borrow()
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-lifetime-bounds-on-fns.rs b/src/test/ui/regions/regions-lifetime-bounds-on-fns.rs
deleted file mode 100644
index 177f52fa72d..00000000000
--- a/src/test/ui/regions/regions-lifetime-bounds-on-fns.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-fn a<'a, 'b:'a>(x: &mut &'a isize, y: &mut &'b isize) {
-    // Note: this is legal because of the `'b:'a` declaration.
-    *x = *y;
-}
-
-fn b<'a, 'b>(x: &mut &'a isize, y: &mut &'b isize) {
-    // Illegal now because there is no `'b:'a` declaration.
-    *x = *y;
-}
-
-fn c<'a,'b>(x: &mut &'a isize, y: &mut &'b isize) {
-    // Here we try to call `foo` but do not know that `'a` and `'b` are
-    // related as required.
-    a(x, y);
-}
-
-fn d() {
-    // 'a and 'b are early bound in the function `a` because they appear
-    // inconstraints:
-    let _: fn(&mut &isize, &mut &isize) = a;
-    //~^ ERROR mismatched types [E0308]
-}
-
-fn e() {
-    // 'a and 'b are late bound in the function `b` because there are
-    // no constraints:
-    let _: fn(&mut &isize, &mut &isize) = b;
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-lifetime-bounds-on-fns.stderr b/src/test/ui/regions/regions-lifetime-bounds-on-fns.stderr
deleted file mode 100644
index 17a9019436a..00000000000
--- a/src/test/ui/regions/regions-lifetime-bounds-on-fns.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/regions-lifetime-bounds-on-fns.rs:20:43
-   |
-LL |     let _: fn(&mut &isize, &mut &isize) = a;
-   |                                           ^ one type is more general than the other
-   |
-   = note: expected fn pointer `for<'a, 'b, 'c, 'd> fn(&'a mut &'b isize, &'c mut &'d isize)`
-                 found fn item `for<'a, 'b> fn(&'a mut &isize, &'b mut &isize) {a::<'_, '_>}`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/regions/regions-lifetime-nonfree-late-bound.rs b/src/test/ui/regions/regions-lifetime-nonfree-late-bound.rs
deleted file mode 100644
index 3852a14d9f9..00000000000
--- a/src/test/ui/regions/regions-lifetime-nonfree-late-bound.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-// run-pass
-// This is a regression test for the ICE from issue #10846.
-//
-// The original issue causing the ICE: the LUB-computations during
-// type inference were encountering late-bound lifetimes, and
-// asserting that such lifetimes should have already been substituted
-// with a concrete lifetime.
-//
-// However, those encounters were occurring within the lexical scope
-// of the binding for the late-bound lifetime; that is, the late-bound
-// lifetimes were perfectly valid.  The core problem was that the type
-// folding code was over-zealously passing back all lifetimes when
-// doing region-folding, when really all clients of the region-folding
-// case only want to see FREE lifetime variables, not bound ones.
-
-// pretty-expanded FIXME #23616
-
-pub fn main() {
-    fn explicit() {
-        fn test<F>(_x: Option<Box<F>>) where F: FnMut(Box<dyn for<'a> FnMut(&'a isize)>) {}
-        test(Some(Box::new(|_f: Box<dyn for<'a> FnMut(&'a isize)>| {})));
-    }
-
-    // The code below is shorthand for the code above (and more likely
-    // to represent what one encounters in practice).
-    fn implicit() {
-        fn test<F>(_x: Option<Box<F>>) where F: FnMut(Box<dyn        FnMut(&   isize)>) {}
-        test(Some(Box::new(|_f: Box<dyn        FnMut(&   isize)>| {})));
-    }
-
-    explicit();
-    implicit();
-}
diff --git a/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs b/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs
deleted file mode 100644
index 1b25294c7e1..00000000000
--- a/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// This tests verifies that unary structs and enum variants
-// are treated as rvalues and their lifetime is not bounded to
-// the static scope.
-
-fn id<T>(x: T) -> T { x }
-
-struct Test;
-
-enum MyEnum {
-    Variant1
-}
-
-fn structLifetime<'a>() -> &'a Test {
-  let testValue = &id(Test);
-  testValue
-  //~^ ERROR cannot return value referencing temporary value
-}
-
-fn variantLifetime<'a>() -> &'a MyEnum {
-  let testValue = &id(MyEnum::Variant1);
-  testValue
-  //~^ ERROR cannot return value referencing temporary value
-}
-
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr b/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr
deleted file mode 100644
index b4bf2ab312d..00000000000
--- a/src/test/ui/regions/regions-lifetime-of-struct-or-enum-variant.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0515]: cannot return value referencing temporary value
-  --> $DIR/regions-lifetime-of-struct-or-enum-variant.rs:15:3
-   |
-LL |   let testValue = &id(Test);
-   |                    -------- temporary value created here
-LL |   testValue
-   |   ^^^^^^^^^ returns a value referencing data owned by the current function
-
-error[E0515]: cannot return value referencing temporary value
-  --> $DIR/regions-lifetime-of-struct-or-enum-variant.rs:21:3
-   |
-LL |   let testValue = &id(MyEnum::Variant1);
-   |                    -------------------- temporary value created here
-LL |   testValue
-   |   ^^^^^^^^^ returns a value referencing data owned by the current function
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs b/src/test/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs
deleted file mode 100644
index b6a89e29ecc..00000000000
--- a/src/test/ui/regions/regions-lifetime-static-items-enclosing-scopes.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// This test verifies that temporary lifetime is correctly computed
-// for static objects in enclosing scopes.
-
-
-use std::cmp::PartialEq;
-
-fn f<T:PartialEq+std::fmt::Debug>(o: &mut Option<T>) {
-    assert_eq!(*o, None);
-}
-
-pub fn main() {
-    mod t {
-        enum E {V=1, A=0}
-        static C: E = E::V;
-    }
-
-    f::<isize>(&mut None);
-}
diff --git a/src/test/ui/regions/regions-link-fn-args.rs b/src/test/ui/regions/regions-link-fn-args.rs
deleted file mode 100644
index 231407b226e..00000000000
--- a/src/test/ui/regions/regions-link-fn-args.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-// Test that region inference correctly links up the regions when a
-// `ref` borrow occurs inside a fn argument.
-
-// pretty-expanded FIXME #23616
-
-#![allow(dead_code)]
-
-fn with<'a, F>(_: F) where F: FnOnce(&'a Vec<isize>) -> &'a Vec<isize> { }
-
-fn foo() {
-    with(|&ref ints| ints);
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-lub-ref-ref-rc.rs b/src/test/ui/regions/regions-lub-ref-ref-rc.rs
deleted file mode 100644
index 96c71b084b1..00000000000
--- a/src/test/ui/regions/regions-lub-ref-ref-rc.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test a corner case of LUB coercion. In this case, one arm of the
-// match requires a deref coercion and the other doesn't, and there
-// is an extra `&` on the `rc`. We want to be sure that the lifetime
-// assigned to this `&rc` value is not `'a` but something smaller.  In
-// other words, the type from `rc` is `&'a Rc<String>` and the type
-// from `&rc` should be `&'x &'a Rc<String>`, where `'x` is something
-// small.
-
-use std::rc::Rc;
-
-#[derive(Clone)]
-enum Cached<'mir> {
-    Ref(&'mir String),
-    Owned(Rc<String>),
-}
-
-impl<'mir> Cached<'mir> {
-    fn get_ref<'a>(&'a self) -> &'a String {
-        match *self {
-            Cached::Ref(r) => r,
-            Cached::Owned(ref rc) => &rc,
-        }
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-mock-codegen.rs b/src/test/ui/regions/regions-mock-codegen.rs
deleted file mode 100644
index 9d0ca76e409..00000000000
--- a/src/test/ui/regions/regions-mock-codegen.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(non_camel_case_types)]
-// pretty-expanded FIXME #23616
-#![feature(allocator_api)]
-
-use std::alloc::{handle_alloc_error, Allocator, Global, Layout};
-use std::ptr::NonNull;
-
-struct arena(());
-
-struct Bcx<'a> {
-    fcx: &'a Fcx<'a>,
-}
-
-struct Fcx<'a> {
-    arena: &'a arena,
-    ccx: &'a Ccx,
-}
-
-struct Ccx {
-    x: isize,
-}
-
-fn allocate(_bcx: &arena) -> &Bcx<'_> {
-    unsafe {
-        let layout = Layout::new::<Bcx>();
-        let ptr = Global.allocate(layout).unwrap_or_else(|_| handle_alloc_error(layout));
-        &*(ptr.as_ptr() as *const _)
-    }
-}
-
-fn h<'a>(bcx: &'a Bcx<'a>) -> &'a Bcx<'a> {
-    return allocate(bcx.fcx.arena);
-}
-
-fn g(fcx: &Fcx) {
-    let bcx = Bcx { fcx };
-    let bcx2 = h(&bcx);
-    unsafe {
-        Global.deallocate(NonNull::new_unchecked(bcx2 as *const _ as *mut _), Layout::new::<Bcx>());
-    }
-}
-
-fn f(ccx: &Ccx) {
-    let a = arena(());
-    let fcx = Fcx { arena: &a, ccx };
-    return g(&fcx);
-}
-
-pub fn main() {
-    let ccx = Ccx { x: 0 };
-    f(&ccx);
-}
diff --git a/src/test/ui/regions/regions-name-duplicated.rs b/src/test/ui/regions/regions-name-duplicated.rs
deleted file mode 100644
index f6616591a3d..00000000000
--- a/src/test/ui/regions/regions-name-duplicated.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-struct Foo<'a, 'a> {
-    //~^ ERROR the name `'a` is already used for a generic parameter
-    x: &'a isize,
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-name-duplicated.stderr b/src/test/ui/regions/regions-name-duplicated.stderr
deleted file mode 100644
index cef73c18d37..00000000000
--- a/src/test/ui/regions/regions-name-duplicated.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0403]: the name `'a` is already used for a generic parameter in this item's generic parameters
-  --> $DIR/regions-name-duplicated.rs:1:16
-   |
-LL | struct Foo<'a, 'a> {
-   |            --  ^^ already used
-   |            |
-   |            first use of `'a`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0403`.
diff --git a/src/test/ui/regions/regions-name-static.rs b/src/test/ui/regions/regions-name-static.rs
deleted file mode 100644
index da316c6ef5e..00000000000
--- a/src/test/ui/regions/regions-name-static.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-struct Foo<'static> {
-    //~^ ERROR invalid lifetime parameter name: `'static`
-    x: &'static isize,
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-name-static.stderr b/src/test/ui/regions/regions-name-static.stderr
deleted file mode 100644
index 4b7026e65ea..00000000000
--- a/src/test/ui/regions/regions-name-static.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0262]: invalid lifetime parameter name: `'static`
-  --> $DIR/regions-name-static.rs:1:12
-   |
-LL | struct Foo<'static> {
-   |            ^^^^^^^ 'static is a reserved lifetime name
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0262`.
diff --git a/src/test/ui/regions/regions-name-undeclared.rs b/src/test/ui/regions/regions-name-undeclared.rs
deleted file mode 100644
index 7b6ede19341..00000000000
--- a/src/test/ui/regions/regions-name-undeclared.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-// edition:2018
-// Check that lifetime resolver enforces the lifetime name scoping
-// rules correctly in various scenarios.
-
-struct Foo<'a> {
-    x: &'a isize
-}
-
-impl<'a> Foo<'a> {
-    // &'a is inherited:
-    fn m1(&self, arg: &'a isize) { }
-    fn m2(&'a self) { }
-    fn m3(&self, arg: Foo<'a>) { }
-
-    // &'b is not:
-    fn m4(&self, arg: &'b isize) { } //~ ERROR undeclared lifetime
-    fn m5(&'b self) { } //~ ERROR undeclared lifetime
-    fn m6(&self, arg: Foo<'b>) { } //~ ERROR undeclared lifetime
-}
-
-fn bar<'a>(x: &'a isize) {
-    // &'a is visible to code:
-    let y: &'a isize = x;
-
-    // &'a is not visible to *items*:
-    type X = Option<&'a isize>; //~ ERROR can't use generic parameters from outer item
-    enum E {
-        E1(&'a isize) //~ ERROR can't use generic parameters from outer item
-    }
-    struct S {
-        f: &'a isize //~ ERROR can't use generic parameters from outer item
-    }
-    fn f(a: &'a isize) { } //~ ERROR can't use generic parameters from outer item
-
-    // &'a CAN be declared on functions and used then:
-    fn g<'a>(a: &'a isize) { } // OK
-    fn h(a: Box<dyn for<'a> FnOnce(&'a isize)>) { } // OK
-}
-
-// Test nesting of lifetimes in fn type declarations
-fn fn_types(a: &'a isize, //~ ERROR undeclared lifetime
-            b: Box<dyn for<'a> FnOnce(&'a isize,
-                                  &'b isize, //~ ERROR undeclared lifetime
-                                  Box<dyn for<'b> FnOnce(&'a isize,
-                                                     &'b isize)>,
-                                  &'b isize)>, //~ ERROR undeclared lifetime
-            c: &'a isize) //~ ERROR undeclared lifetime
-{
-}
-
-struct Bug {}
-impl Bug {
-    async fn buggy(&self) -> &'a str { //~ ERROR use of undeclared lifetime name `'a`
-        todo!()
-    }
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-name-undeclared.stderr b/src/test/ui/regions/regions-name-undeclared.stderr
deleted file mode 100644
index 532603de5f7..00000000000
--- a/src/test/ui/regions/regions-name-undeclared.stderr
+++ /dev/null
@@ -1,156 +0,0 @@
-error[E0261]: use of undeclared lifetime name `'b`
-  --> $DIR/regions-name-undeclared.rs:16:24
-   |
-LL |     fn m4(&self, arg: &'b isize) { }
-   |                        ^^ undeclared lifetime
-   |
-help: consider introducing lifetime `'b` here
-   |
-LL |     fn m4<'b>(&self, arg: &'b isize) { }
-   |          ++++
-help: consider introducing lifetime `'b` here
-   |
-LL | impl<'b, 'a> Foo<'a> {
-   |      +++
-
-error[E0261]: use of undeclared lifetime name `'b`
-  --> $DIR/regions-name-undeclared.rs:17:12
-   |
-LL |     fn m5(&'b self) { }
-   |            ^^ undeclared lifetime
-   |
-help: consider introducing lifetime `'b` here
-   |
-LL |     fn m5<'b>(&'b self) { }
-   |          ++++
-help: consider introducing lifetime `'b` here
-   |
-LL | impl<'b, 'a> Foo<'a> {
-   |      +++
-
-error[E0261]: use of undeclared lifetime name `'b`
-  --> $DIR/regions-name-undeclared.rs:18:27
-   |
-LL |     fn m6(&self, arg: Foo<'b>) { }
-   |                           ^^ undeclared lifetime
-   |
-help: consider introducing lifetime `'b` here
-   |
-LL |     fn m6<'b>(&self, arg: Foo<'b>) { }
-   |          ++++
-help: consider introducing lifetime `'b` here
-   |
-LL | impl<'b, 'a> Foo<'a> {
-   |      +++
-
-error[E0401]: can't use generic parameters from outer item
-  --> $DIR/regions-name-undeclared.rs:26:22
-   |
-LL | fn bar<'a>(x: &'a isize) {
-   |        -- lifetime parameter from outer item
-...
-LL |     type X = Option<&'a isize>;
-   |           -          ^^ use of generic parameter from outer item
-   |           |
-   |           help: consider introducing lifetime `'a` here: `<'a>`
-
-error[E0401]: can't use generic parameters from outer item
-  --> $DIR/regions-name-undeclared.rs:28:13
-   |
-LL | fn bar<'a>(x: &'a isize) {
-   |        -- lifetime parameter from outer item
-...
-LL |     enum E {
-   |           - help: consider introducing lifetime `'a` here: `<'a>`
-LL |         E1(&'a isize)
-   |             ^^ use of generic parameter from outer item
-
-error[E0401]: can't use generic parameters from outer item
-  --> $DIR/regions-name-undeclared.rs:31:13
-   |
-LL | fn bar<'a>(x: &'a isize) {
-   |        -- lifetime parameter from outer item
-...
-LL |     struct S {
-   |             - help: consider introducing lifetime `'a` here: `<'a>`
-LL |         f: &'a isize
-   |             ^^ use of generic parameter from outer item
-
-error[E0401]: can't use generic parameters from outer item
-  --> $DIR/regions-name-undeclared.rs:33:14
-   |
-LL | fn bar<'a>(x: &'a isize) {
-   |        -- lifetime parameter from outer item
-...
-LL |     fn f(a: &'a isize) { }
-   |         -    ^^ use of generic parameter from outer item
-   |         |
-   |         help: consider introducing lifetime `'a` here: `<'a>`
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-name-undeclared.rs:41:17
-   |
-LL | fn fn_types(a: &'a isize,
-   |            -    ^^ undeclared lifetime
-   |            |
-   |            help: consider introducing lifetime `'a` here: `<'a>`
-
-error[E0261]: use of undeclared lifetime name `'b`
-  --> $DIR/regions-name-undeclared.rs:43:36
-   |
-LL | ...                   &'b isize,
-   |                        ^^ undeclared lifetime
-   |
-   = note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
-help: consider making the bound lifetime-generic with a new `'b` lifetime
-   |
-LL |             b: Box<dyn for<'b, 'a> FnOnce(&'a isize,
-   |                            +++
-help: consider introducing lifetime `'b` here
-   |
-LL | fn fn_types<'b>(a: &'a isize,
-   |            ++++
-
-error[E0261]: use of undeclared lifetime name `'b`
-  --> $DIR/regions-name-undeclared.rs:46:36
-   |
-LL | ...                   &'b isize)>,
-   |                        ^^ undeclared lifetime
-   |
-help: consider making the bound lifetime-generic with a new `'b` lifetime
-   |
-LL |             b: Box<dyn for<'b, 'a> FnOnce(&'a isize,
-   |                            +++
-help: consider introducing lifetime `'b` here
-   |
-LL | fn fn_types<'b>(a: &'a isize,
-   |            ++++
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-name-undeclared.rs:47:17
-   |
-LL | fn fn_types(a: &'a isize,
-   |            - help: consider introducing lifetime `'a` here: `<'a>`
-...
-LL |             c: &'a isize)
-   |                 ^^ undeclared lifetime
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-name-undeclared.rs:53:31
-   |
-LL |     async fn buggy(&self) -> &'a str {
-   |                               ^^ undeclared lifetime
-   |
-help: consider introducing lifetime `'a` here
-   |
-LL |     async fn buggy<'a>(&self) -> &'a str {
-   |                   ++++
-help: consider introducing lifetime `'a` here
-   |
-LL | impl<'a> Bug {
-   |     ++++
-
-error: aborting due to 12 previous errors
-
-Some errors have detailed explanations: E0261, E0401.
-For more information about an error, try `rustc --explain E0261`.
diff --git a/src/test/ui/regions/regions-nested-fns-2.rs b/src/test/ui/regions/regions-nested-fns-2.rs
deleted file mode 100644
index 3b3e26c4503..00000000000
--- a/src/test/ui/regions/regions-nested-fns-2.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-fn ignore<F>(_f: F) where F: for<'z> FnOnce(&'z isize) -> &'z isize {}
-
-fn nested() {
-    let y = 3;
-    ignore(
-        |z| {
-            if false { &y } else { z }
-            //~^ ERROR `y` does not live long enough
-        });
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-nested-fns-2.stderr b/src/test/ui/regions/regions-nested-fns-2.stderr
deleted file mode 100644
index 43c8d1272c7..00000000000
--- a/src/test/ui/regions/regions-nested-fns-2.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error[E0597]: `y` does not live long enough
-  --> $DIR/regions-nested-fns-2.rs:7:25
-   |
-LL |         |z| {
-   |         --- value captured here
-LL |             if false { &y } else { z }
-   |                        -^
-   |                        ||
-   |                        |borrowed value does not live long enough
-   |                        returning this value requires that `y` is borrowed for `'static`
-...
-LL | }
-   | - `y` dropped here while still borrowed
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-nested-fns.rs b/src/test/ui/regions/regions-nested-fns.rs
deleted file mode 100644
index d9698ced3de..00000000000
--- a/src/test/ui/regions/regions-nested-fns.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-fn ignore<T>(t: T) {}
-
-fn nested<'x>(x: &'x isize) {
-    let y = 3;
-    let mut ay = &y;
-    //~^ ERROR `y` does not live long enough [E0597]
-
-    ignore::<Box<dyn for<'z> FnMut(&'z isize)>>(Box::new(|z| {
-        ay = x;
-        ay = &y;
-        //~^ ERROR `y` does not live long enough
-        ay = z;
-        //~^ ERROR borrowed data escapes outside of closure [E0521]
-    }));
-
-    ignore::< Box<dyn for<'z> FnMut(&'z isize) -> &'z isize>>(Box::new(|z| {
-        if false { return x; }
-        //~^ ERROR lifetime may not live long enough
-        if false { return ay; }
-        return z;
-    }));
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-nested-fns.stderr b/src/test/ui/regions/regions-nested-fns.stderr
deleted file mode 100644
index bb2740310f6..00000000000
--- a/src/test/ui/regions/regions-nested-fns.stderr
+++ /dev/null
@@ -1,52 +0,0 @@
-error[E0521]: borrowed data escapes outside of closure
-  --> $DIR/regions-nested-fns.rs:12:9
-   |
-LL |     let mut ay = &y;
-   |         ------ `ay` declared here, outside of the closure body
-...
-LL |     ignore::<Box<dyn for<'z> FnMut(&'z isize)>>(Box::new(|z| {
-   |                                                           - `z` is a reference that is only valid in the closure body
-...
-LL |         ay = z;
-   |         ^^^^^^ `z` escapes the closure body here
-
-error[E0597]: `y` does not live long enough
-  --> $DIR/regions-nested-fns.rs:5:18
-   |
-LL |     let mut ay = &y;
-   |                  ^^ borrowed value does not live long enough
-...
-LL |         if false { return ay; }
-   |                           -- returning this value requires that `y` is borrowed for `'static`
-...
-LL | }
-   | - `y` dropped here while still borrowed
-
-error[E0597]: `y` does not live long enough
-  --> $DIR/regions-nested-fns.rs:10:15
-   |
-LL |     ignore::<Box<dyn for<'z> FnMut(&'z isize)>>(Box::new(|z| {
-   |                                                          --- value captured here
-LL |         ay = x;
-LL |         ay = &y;
-   |               ^ borrowed value does not live long enough
-...
-LL |         if false { return ay; }
-   |                           -- returning this value requires that `y` is borrowed for `'static`
-...
-LL | }
-   | - `y` dropped here while still borrowed
-
-error: lifetime may not live long enough
-  --> $DIR/regions-nested-fns.rs:17:27
-   |
-LL | fn nested<'x>(x: &'x isize) {
-   |           -- lifetime `'x` defined here
-...
-LL |         if false { return x; }
-   |                           ^ returning this value requires that `'x` must outlive `'static`
-
-error: aborting due to 4 previous errors
-
-Some errors have detailed explanations: E0521, E0597.
-For more information about an error, try `rustc --explain E0521`.
diff --git a/src/test/ui/regions/regions-no-bound-in-argument-cleanup.rs b/src/test/ui/regions/regions-no-bound-in-argument-cleanup.rs
deleted file mode 100644
index aafab5d86b8..00000000000
--- a/src/test/ui/regions/regions-no-bound-in-argument-cleanup.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// run-pass
-// pretty-expanded FIXME #23616
-
-use std::marker;
-
-pub struct Foo<T>(marker::PhantomData<T>);
-
-impl<T> Iterator for Foo<T> {
-    type Item = T;
-
-    fn next(&mut self) -> Option<T> {
-        None
-    }
-}
-
-impl<T> Drop for Foo<T> {
-    fn drop(&mut self) {
-        self.next();
-    }
-}
-
-pub fn foo<'a>(_: Foo<&'a ()>) {}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-no-variance-from-fn-generics.rs b/src/test/ui/regions/regions-no-variance-from-fn-generics.rs
deleted file mode 100644
index 76706a82781..00000000000
--- a/src/test/ui/regions/regions-no-variance-from-fn-generics.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// run-pass
-#![allow(unused_variables)]
-// Issue #12856: a lifetime formal binding introduced by a generic fn
-// should not upset the variance inference for actual occurrences of
-// that lifetime in type expressions.
-
-
-pub trait HasLife<'a> {
-    fn dummy(&'a self) { } // just to induce a variance on 'a
-}
-
-trait UseLife01 {
-    fn refs<'a, H: HasLife<'a>>(&'a self) -> H;
-}
-
-trait UseLife02 {
-    fn refs<'a, T: 'a, H: HasType<&'a T>>(&'a self) -> H;
-}
-
-
-pub trait HasType<T>
-{
-    fn dummy(&self, t: T) -> T { panic!() }
-}
-
-
-trait UseLife03<T> {
-    fn refs<'a, H: HasType<&'a T>>(&'a self) -> H where T: 'a;
-}
-
-
-// (The functions below were not actually a problem observed during
-// fixing of #12856; they just seem like natural tests to put in to
-// cover a couple more points in the testing space)
-
-pub fn top_refs_1<'a, H: HasLife<'a>>(_s: &'a ()) -> H {
-    unimplemented!()
-}
-
-pub fn top_refs_2<'a, T: 'a, H: HasType<&'a T>>(_s: &'a ()) -> H {
-    unimplemented!()
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-normalize-in-where-clause-list.rs b/src/test/ui/regions/regions-normalize-in-where-clause-list.rs
deleted file mode 100644
index 389f82e794b..00000000000
--- a/src/test/ui/regions/regions-normalize-in-where-clause-list.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-// Test that we are able to normalize in the list of where-clauses,
-// even if `'a: 'b` is required.
-
-trait Project<'a, 'b> {
-    type Item;
-}
-
-impl<'a, 'b> Project<'a, 'b> for ()
-where
-    'a: 'b,
-{
-    type Item = ();
-}
-
-// No error here, we have 'a: 'b. We used to report an error here
-// though, see https://github.com/rust-lang/rust/issues/45937.
-fn foo<'a: 'b, 'b>()
-where
-    <() as Project<'a, 'b>>::Item: Eq,
-{
-}
-
-// Here we get an error: we need `'a: 'b`.
-fn bar<'a, 'b>()
-//~^ ERROR cannot infer
-where
-    <() as Project<'a, 'b>>::Item: Eq,
-{
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-normalize-in-where-clause-list.stderr b/src/test/ui/regions/regions-normalize-in-where-clause-list.stderr
deleted file mode 100644
index 5672837290c..00000000000
--- a/src/test/ui/regions/regions-normalize-in-where-clause-list.stderr
+++ /dev/null
@@ -1,27 +0,0 @@
-error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'a` due to conflicting requirements
-  --> $DIR/regions-normalize-in-where-clause-list.rs:24:4
-   |
-LL | fn bar<'a, 'b>()
-   |    ^^^
-   |
-note: first, the lifetime cannot outlive the lifetime `'a` as defined here...
-  --> $DIR/regions-normalize-in-where-clause-list.rs:24:8
-   |
-LL | fn bar<'a, 'b>()
-   |        ^^
-note: ...but the lifetime must also be valid for the lifetime `'b` as defined here...
-  --> $DIR/regions-normalize-in-where-clause-list.rs:24:12
-   |
-LL | fn bar<'a, 'b>()
-   |            ^^
-note: ...so that the types are compatible
-  --> $DIR/regions-normalize-in-where-clause-list.rs:24:4
-   |
-LL | fn bar<'a, 'b>()
-   |    ^^^
-   = note: expected `Project<'a, 'b>`
-              found `Project<'_, '_>`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0495`.
diff --git a/src/test/ui/regions/regions-nullary-variant.rs b/src/test/ui/regions/regions-nullary-variant.rs
deleted file mode 100644
index 82470af82fa..00000000000
--- a/src/test/ui/regions/regions-nullary-variant.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(non_camel_case_types)]
-
-// pretty-expanded FIXME #23616
-
-enum roption<'a> {
-    a, b(&'a usize)
-}
-
-fn mk(cond: bool, ptr: &usize) -> roption {
-    if cond {roption::a} else {roption::b(ptr)}
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs b/src/test/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs
deleted file mode 100644
index 15deaba5638..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-enum-region-rev.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod rev_variant_struct_region {
-    struct Foo<'a> {
-        x: fn(&'a i32),
-    }
-    enum Bar<'a,'b> {
-        V(&'a Foo<'b>)
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-region.rs b/src/test/ui/regions/regions-outlives-nominal-type-enum-region.rs
deleted file mode 100644
index 7767c13c825..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-enum-region.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod variant_struct_region {
-    struct Foo<'a> {
-        x: &'a i32,
-    }
-    enum Bar<'a,'b> {
-        V(&'a Foo<'b>)
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs b/src/test/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs
deleted file mode 100644
index 37415994210..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-enum-type-rev.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod variant_struct_type {
-    struct Foo<T> {
-        x: fn(T)
-    }
-    enum Bar<'a,'b> {
-        V(&'a Foo<&'b i32>)
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-enum-type.rs b/src/test/ui/regions/regions-outlives-nominal-type-enum-type.rs
deleted file mode 100644
index 2e7f198d8c7..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-enum-type.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod variant_struct_type {
-    struct Foo<T> {
-        x: T
-    }
-    enum Bar<'a,'b> {
-        V(&'a Foo<&'b i32>)
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs b/src/test/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs
deleted file mode 100644
index 45155c72166..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-struct-region-rev.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod rev_variant_struct_region {
-    struct Foo<'a> {
-        x: fn(&'a i32),
-    }
-    struct Bar<'a,'b> {
-        f: &'a Foo<'b>
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-region.rs b/src/test/ui/regions/regions-outlives-nominal-type-struct-region.rs
deleted file mode 100644
index bba8b244524..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-struct-region.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod variant_struct_region {
-    struct Foo<'a> {
-        x: &'a i32,
-    }
-    struct Bar<'a,'b> {
-        f: &'a Foo<'b>
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs b/src/test/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs
deleted file mode 100644
index 220d2e83cc0..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-struct-type-rev.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod rev_variant_struct_type {
-    struct Foo<T> {
-        x: fn(T)
-    }
-    struct Bar<'a,'b> {
-        f: &'a Foo<&'b i32>
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-nominal-type-struct-type.rs b/src/test/ui/regions/regions-outlives-nominal-type-struct-type.rs
deleted file mode 100644
index 9ddcdb649d8..00000000000
--- a/src/test/ui/regions/regions-outlives-nominal-type-struct-type.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test that a nominal type (like `Foo<'a>`) outlives `'b` if its
-// arguments (like `'a`) outlive `'b`.
-//
-// Rule OutlivesNominalType from RFC 1214.
-
-// check-pass
-
-#![feature(rustc_attrs)]
-#![allow(dead_code)]
-
-mod variant_struct_type {
-    struct Foo<T> {
-        x: T
-    }
-    struct Bar<'a,'b> {
-        f: &'a Foo<&'b i32>
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-projection-container-hrtb.rs b/src/test/ui/regions/regions-outlives-projection-container-hrtb.rs
deleted file mode 100644
index 152eed5ac1d..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-container-hrtb.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-// Test that structs with higher-ranked where clauses don't generate
-// "outlives" requirements. Issue #22246.
-
-#![allow(dead_code)]
-
-pub trait TheTrait<'b> {
-    type TheAssocType;
-}
-
-pub struct TheType<'b> {
-    m: [fn(&'b()); 0]
-}
-
-impl<'a,'b> TheTrait<'a> for TheType<'b> {
-    type TheAssocType = &'b ();
-}
-
-pub struct WithHrAssoc<T>
-    where for<'a> T : TheTrait<'a>
-{
-    m: [T; 0]
-}
-
-fn with_assoc<'a,'b>() {
-    // We get an error because 'b:'a does not hold:
-
-    let _: &'a WithHrAssoc<TheType<'b>> = loop { };
-    //~^ ERROR lifetime may not live long enough
-}
-
-pub trait TheSubTrait : for<'a> TheTrait<'a> {
-}
-
-impl<'b> TheSubTrait for TheType<'b> { }
-
-pub struct WithHrAssocSub<T>
-    where T : TheSubTrait
-{
-    m: [T; 0]
-}
-
-fn with_assoc_sub<'a,'b>() {
-    // The error here is just because `'b:'a` must hold for the type
-    // below to be well-formed, it is not related to the HR relation.
-
-    let _: &'a WithHrAssocSub<TheType<'b>> = loop { };
-    //~^ ERROR lifetime may not live long enough
-}
-
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr b/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr
deleted file mode 100644
index 6a7c908fa40..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-container-hrtb.stderr
+++ /dev/null
@@ -1,28 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-outlives-projection-container-hrtb.rs:27:12
-   |
-LL | fn with_assoc<'a,'b>() {
-   |               -- -- lifetime `'b` defined here
-   |               |
-   |               lifetime `'a` defined here
-...
-LL |     let _: &'a WithHrAssoc<TheType<'b>> = loop { };
-   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-outlives-projection-container-hrtb.rs:46:12
-   |
-LL | fn with_assoc_sub<'a,'b>() {
-   |                   -- -- lifetime `'b` defined here
-   |                   |
-   |                   lifetime `'a` defined here
-...
-LL |     let _: &'a WithHrAssocSub<TheType<'b>> = loop { };
-   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/regions-outlives-projection-container-wc.rs b/src/test/ui/regions/regions-outlives-projection-container-wc.rs
deleted file mode 100644
index 4fda7774b5b..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-container-wc.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// Test that we are imposing the requirement that every associated
-// type of a bound that appears in the where clause on a struct must
-// outlive the location in which the type appears, even when the
-// constraint is in a where clause not a bound. Issue #22246.
-
-#![allow(dead_code)]
-
-pub trait TheTrait {
-    type TheAssocType;
-}
-
-pub struct TheType<'b> {
-    m: [fn(&'b()); 0]
-}
-
-impl<'b> TheTrait for TheType<'b> {
-    type TheAssocType = &'b ();
-}
-
-pub struct WithAssoc<T> where T : TheTrait {
-    m: [T; 0]
-}
-
-fn with_assoc<'a,'b>() {
-    // For this type to be valid, the rules require that all
-    // associated types of traits that appear in `WithAssoc` must
-    // outlive 'a. In this case, that means TheType<'b>::TheAssocType,
-    // which is &'b (), must outlive 'a.
-
-    let _: &'a WithAssoc<TheType<'b>> = loop { };
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-outlives-projection-container-wc.stderr b/src/test/ui/regions/regions-outlives-projection-container-wc.stderr
deleted file mode 100644
index eba2a0d5853..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-container-wc.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-outlives-projection-container-wc.rs:30:12
-   |
-LL | fn with_assoc<'a,'b>() {
-   |               -- -- lifetime `'b` defined here
-   |               |
-   |               lifetime `'a` defined here
-...
-LL |     let _: &'a WithAssoc<TheType<'b>> = loop { };
-   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-outlives-projection-container.rs b/src/test/ui/regions/regions-outlives-projection-container.rs
deleted file mode 100644
index 7b9829cf8ef..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-container.rs
+++ /dev/null
@@ -1,77 +0,0 @@
-// Test that we are imposing the requirement that every associated
-// type of a bound that appears in the where clause on a struct must
-// outlive the location in which the type appears. Issue #22246.
-
-#![allow(dead_code)]
-#![feature(rustc_attrs)]
-
-pub trait TheTrait {
-    type TheAssocType;
-}
-
-pub struct TheType<'b> {
-    m: [fn(&'b()); 0]
-}
-
-impl<'b> TheTrait for TheType<'b> {
-    type TheAssocType = &'b ();
-}
-
-pub struct WithAssoc<T:TheTrait> {
-    m: [T; 0]
-}
-
-pub struct WithoutAssoc<T> {
-    m: [T; 0]
-}
-
-fn with_assoc<'a,'b>() {
-    // For this type to be valid, the rules require that all
-    // associated types of traits that appear in `WithAssoc` must
-    // outlive 'a. In this case, that means TheType<'b>::TheAssocType,
-    // which is &'b (), must outlive 'a.
-
-    // FIXME (#54943) NLL doesn't enforce WF condition in unreachable code if
-    // `_x` is changed to `_`
-    let _x: &'a WithAssoc<TheType<'b>> = loop { };
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn with_assoc1<'a,'b>() where 'b : 'a {
-    // For this type to be valid, the rules require that all
-    // associated types of traits that appear in `WithAssoc` must
-    // outlive 'a. In this case, that means TheType<'b>::TheAssocType,
-    // which is &'b (), must outlive 'a, so 'b : 'a must hold, and
-    // that is in the where clauses, so we're fine.
-
-    let _x: &'a WithAssoc<TheType<'b>> = loop { };
-}
-
-fn without_assoc<'a,'b>() {
-    // Here there are no associated types but there is a requirement
-    // that `'b:'a` holds because the `'b` appears in `TheType<'b>`.
-
-    let _x: &'a WithoutAssoc<TheType<'b>> = loop { };
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn call_with_assoc<'a,'b>() {
-    // As `with_assoc`, but just checking that we impose the same rule
-    // on the value supplied for the type argument, even when there is
-    // no data.
-
-    call::<&'a WithAssoc<TheType<'b>>>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn call_without_assoc<'a,'b>() {
-    // As `without_assoc`, but in a distinct scenario.
-
-    call::<&'a WithoutAssoc<TheType<'b>>>();
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn call<T>() { }
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-outlives-projection-container.stderr b/src/test/ui/regions/regions-outlives-projection-container.stderr
deleted file mode 100644
index d20a2f06adf..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-container.stderr
+++ /dev/null
@@ -1,54 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-outlives-projection-container.rs:36:13
-   |
-LL | fn with_assoc<'a,'b>() {
-   |               -- -- lifetime `'b` defined here
-   |               |
-   |               lifetime `'a` defined here
-...
-LL |     let _x: &'a WithAssoc<TheType<'b>> = loop { };
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-outlives-projection-container.rs:54:13
-   |
-LL | fn without_assoc<'a,'b>() {
-   |                  -- -- lifetime `'b` defined here
-   |                  |
-   |                  lifetime `'a` defined here
-...
-LL |     let _x: &'a WithoutAssoc<TheType<'b>> = loop { };
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-outlives-projection-container.rs:63:5
-   |
-LL | fn call_with_assoc<'a,'b>() {
-   |                    -- -- lifetime `'b` defined here
-   |                    |
-   |                    lifetime `'a` defined here
-...
-LL |     call::<&'a WithAssoc<TheType<'b>>>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-outlives-projection-container.rs:70:5
-   |
-LL | fn call_without_assoc<'a,'b>() {
-   |                       -- -- lifetime `'b` defined here
-   |                       |
-   |                       lifetime `'a` defined here
-...
-LL |     call::<&'a WithoutAssoc<TheType<'b>>>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-
-error: aborting due to 4 previous errors
-
diff --git a/src/test/ui/regions/regions-outlives-projection-hrtype.rs b/src/test/ui/regions/regions-outlives-projection-hrtype.rs
deleted file mode 100644
index 5f9700df1cb..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-hrtype.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// Test for the outlives relation when applied to a projection on a
-// type with bound regions. In this case, we are checking that
-// `<for<'r> fn(&'r T) as TheTrait>::TheType: 'a` If we're not
-// careful, we could wind up with a constraint that `'r:'a`, but since
-// `'r` is bound, that leads to badness. This test checks that
-// everything works.
-
-// check-pass
-#![allow(dead_code)]
-
-trait TheTrait {
-    type TheType;
-}
-
-fn wf<T>() { }
-
-type FnType<T> = for<'r> fn(&'r T);
-
-fn foo<'a,'b,T>()
-    where FnType<T>: TheTrait
-{
-    wf::< <FnType<T> as TheTrait>::TheType >();
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-projection-trait-def.rs b/src/test/ui/regions/regions-outlives-projection-trait-def.rs
deleted file mode 100644
index 5c37a585a40..00000000000
--- a/src/test/ui/regions/regions-outlives-projection-trait-def.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Test that `<F as Foo<'a>>::Type: 'b`, where `trait Foo<'a> { Type:
-// 'a; }`, does not require that `F: 'b`.
-
-// check-pass
-#![allow(dead_code)]
-
-trait SomeTrait<'a> {
-    type Type: 'a;
-}
-
-impl<'a: 'c, 'c, T> SomeTrait<'a> for &'c T where T: SomeTrait<'a> {
-    type Type = <T as SomeTrait<'a>>::Type;
-    //          ~~~~~~~~~~~~~~~~~~~~~~~~~~
-    //                       |
-    // Note that this type must outlive 'a, due to the trait
-    // definition.  If we fall back to OutlivesProjectionComponents
-    // here, then we would require that `T:'a`, which is too strong.
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-outlives-scalar.rs b/src/test/ui/regions/regions-outlives-scalar.rs
deleted file mode 100644
index ce34ffcc858..00000000000
--- a/src/test/ui/regions/regions-outlives-scalar.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// Test that scalar values outlive all regions.
-// Rule OutlivesScalar from RFC 1214.
-
-// check-pass
-#![allow(dead_code)]
-
-struct Foo<'a> {
-    x: &'a i32,
-    y: &'static i32
-}
-
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-params.rs b/src/test/ui/regions/regions-params.rs
deleted file mode 100644
index 04f3b8eaf57..00000000000
--- a/src/test/ui/regions/regions-params.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// run-pass
-#![allow(unused_parens)]
-
-
-fn region_identity(x: &usize) -> &usize { x }
-
-fn apply<T, F>(t: T, f: F) -> T where F: FnOnce(T) -> T { f(t) }
-
-fn parameterized(x: &usize) -> usize {
-    let z = apply(x, ({|y|
-        region_identity(y)
-    }));
-    *z
-}
-
-pub fn main() {
-    let x = 3;
-    assert_eq!(parameterized(&x), 3);
-}
diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19552.rs b/src/test/ui/regions/regions-pattern-typing-issue-19552.rs
deleted file mode 100644
index a64ab1c85e3..00000000000
--- a/src/test/ui/regions/regions-pattern-typing-issue-19552.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-fn assert_static<T: 'static>(_t: T) {}
-
-fn main() {
-    let line = String::new();
-    match [&*line] { //~ ERROR `line` does not live long enough
-        [ word ] => { assert_static(word); }
-    }
-}
diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19552.stderr b/src/test/ui/regions/regions-pattern-typing-issue-19552.stderr
deleted file mode 100644
index f77d94a24b8..00000000000
--- a/src/test/ui/regions/regions-pattern-typing-issue-19552.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0597]: `line` does not live long enough
-  --> $DIR/regions-pattern-typing-issue-19552.rs:5:14
-   |
-LL |     match [&*line] {
-   |              ^^^^ borrowed value does not live long enough
-LL |         [ word ] => { assert_static(word); }
-   |                       ------------------- argument requires that `line` is borrowed for `'static`
-LL |     }
-LL | }
-   | - `line` dropped here while still borrowed
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19997.rs b/src/test/ui/regions/regions-pattern-typing-issue-19997.rs
deleted file mode 100644
index 39190697fe7..00000000000
--- a/src/test/ui/regions/regions-pattern-typing-issue-19997.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-fn main() {
-    let a0 = 0;
-    let f = 1;
-    let mut a1 = &a0;
-    match (&a1,) {
-        (&ref b0,) => {
-            a1 = &f; //~ ERROR cannot assign to `a1` because it is borrowed
-            drop(b0);
-        }
-    }
-}
diff --git a/src/test/ui/regions/regions-pattern-typing-issue-19997.stderr b/src/test/ui/regions/regions-pattern-typing-issue-19997.stderr
deleted file mode 100644
index ae60e3c0d5d..00000000000
--- a/src/test/ui/regions/regions-pattern-typing-issue-19997.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0506]: cannot assign to `a1` because it is borrowed
-  --> $DIR/regions-pattern-typing-issue-19997.rs:7:13
-   |
-LL |     match (&a1,) {
-   |            --- borrow of `a1` occurs here
-LL |         (&ref b0,) => {
-LL |             a1 = &f;
-   |             ^^^^^^^ assignment to borrowed `a1` occurs here
-LL |             drop(b0);
-   |                  -- borrow later used here
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0506`.
diff --git a/src/test/ui/regions/regions-proc-bound-capture.rs b/src/test/ui/regions/regions-proc-bound-capture.rs
deleted file mode 100644
index f79d9dc909f..00000000000
--- a/src/test/ui/regions/regions-proc-bound-capture.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-fn borrowed_proc<'a>(x: &'a isize) -> Box<dyn FnMut()->(isize) + 'a> {
-    // This is legal, because the region bound on `proc`
-    // states that it captures `x`.
-    Box::new(move|| { *x })
-}
-
-fn static_proc(x: &isize) -> Box<dyn FnMut() -> (isize) + 'static> {
-    // This is illegal, because the region bound on `proc` is 'static.
-    Box::new(move || { *x })
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-proc-bound-capture.stderr b/src/test/ui/regions/regions-proc-bound-capture.stderr
deleted file mode 100644
index 60c5246e240..00000000000
--- a/src/test/ui/regions/regions-proc-bound-capture.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-proc-bound-capture.rs:9:5
-   |
-LL | fn static_proc(x: &isize) -> Box<dyn FnMut() -> (isize) + 'static> {
-   |                   - let's call the lifetime of this reference `'1`
-LL |     // This is illegal, because the region bound on `proc` is 'static.
-LL |     Box::new(move || { *x })
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static`
-   |
-help: consider changing the trait object's explicit `'static` bound to the lifetime of argument `x`
-   |
-LL | fn static_proc(x: &isize) -> Box<dyn FnMut() -> (isize) + '_> {
-   |                                                           ~~
-help: alternatively, add an explicit `'static` bound to this reference
-   |
-LL | fn static_proc(x: &'static isize) -> Box<dyn FnMut() -> (isize) + 'static> {
-   |                   ~~~~~~~~~~~~~~
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-reassign-let-bound-pointer.rs b/src/test/ui/regions/regions-reassign-let-bound-pointer.rs
deleted file mode 100644
index 948b11e0f30..00000000000
--- a/src/test/ui/regions/regions-reassign-let-bound-pointer.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-#![allow(unused_assignments)]
-#![allow(unused_variables)]
-// Check that the type checker permits us to reassign `z` which
-// started out with a longer lifetime and was reassigned to a shorter
-// one (it should infer to be the intersection).
-
-// pretty-expanded FIXME #23616
-
-fn foo(x: &isize) {
-    let a = 1;
-    let mut z = x;
-    z = &a;
-}
-
-pub fn main() {
-    foo(&1);
-}
diff --git a/src/test/ui/regions/regions-reassign-match-bound-pointer.rs b/src/test/ui/regions/regions-reassign-match-bound-pointer.rs
deleted file mode 100644
index ca52659c4db..00000000000
--- a/src/test/ui/regions/regions-reassign-match-bound-pointer.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// run-pass
-#![allow(unused_assignments)]
-#![allow(unused_variables)]
-// Check that the type checker permits us to reassign `z` which
-// started out with a longer lifetime and was reassigned to a shorter
-// one (it should infer to be the intersection).
-
-// pretty-expanded FIXME #23616
-
-fn foo(x: &isize) {
-    let a = 1;
-    match x {
-        mut z => {
-            z = &a;
-        }
-    }
-}
-
-pub fn main() {
-    foo(&1);
-}
diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs b/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs
deleted file mode 100644
index 57871b09837..00000000000
--- a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// Issue #8624. Test for reborrowing with 3 levels, not just two.
-
-fn copy_borrowed_ptr<'a, 'b, 'c>(p: &'a mut &'b mut &'c mut isize) -> &'b mut isize {
-    &mut ***p
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr b/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr
deleted file mode 100644
index dc905d076bb..00000000000
--- a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-reborrow-from-shorter-mut-ref-mut-ref.rs:4:5
-   |
-LL | fn copy_borrowed_ptr<'a, 'b, 'c>(p: &'a mut &'b mut &'c mut isize) -> &'b mut isize {
-   |                      --  -- lifetime `'b` defined here
-   |                      |
-   |                      lifetime `'a` defined here
-LL |     &mut ***p
-   |     ^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.rs b/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.rs
deleted file mode 100644
index 88cc5465003..00000000000
--- a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Issue #8624. Tests that reborrowing the contents of an `&'b mut`
-// pointer which is backed by another `&'a mut` can only be done
-// for `'a` (which must be a sublifetime of `'b`).
-
-fn copy_borrowed_ptr<'a, 'b>(p: &'a mut &'b mut isize) -> &'b mut isize {
-    &mut **p
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-    let mut x = 1;
-    let mut y = &mut x;
-    let z = copy_borrowed_ptr(&mut y);
-    *y += 1;
-    *z += 1;
-}
diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr b/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr
deleted file mode 100644
index c98ec477417..00000000000
--- a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-reborrow-from-shorter-mut-ref.rs:6:5
-   |
-LL | fn copy_borrowed_ptr<'a, 'b>(p: &'a mut &'b mut isize) -> &'b mut isize {
-   |                      --  -- lifetime `'b` defined here
-   |                      |
-   |                      lifetime `'a` defined here
-LL |     &mut **p
-   |     ^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-ref-in-fn-arg.rs b/src/test/ui/regions/regions-ref-in-fn-arg.rs
deleted file mode 100644
index 3df529c9f0d..00000000000
--- a/src/test/ui/regions/regions-ref-in-fn-arg.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-#![feature(box_patterns)]
-
-
-fn arg_item(box ref x: Box<isize>) -> &'static isize {
-    x //~ ERROR cannot return value referencing function parameter
-}
-
-fn with<R, F>(f: F) -> R where F: FnOnce(Box<isize>) -> R { f(Box::new(3)) }
-
-fn arg_closure() -> &'static isize {
-    with(|box ref x| x) //~ ERROR cannot return value referencing function parameter
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-ref-in-fn-arg.stderr b/src/test/ui/regions/regions-ref-in-fn-arg.stderr
deleted file mode 100644
index ccba6c59b61..00000000000
--- a/src/test/ui/regions/regions-ref-in-fn-arg.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0515]: cannot return value referencing function parameter
-  --> $DIR/regions-ref-in-fn-arg.rs:5:5
-   |
-LL | fn arg_item(box ref x: Box<isize>) -> &'static isize {
-   |             --------- function parameter borrowed here
-LL |     x
-   |     ^ returns a value referencing data owned by the current function
-
-error[E0515]: cannot return value referencing function parameter
-  --> $DIR/regions-ref-in-fn-arg.rs:11:22
-   |
-LL |     with(|box ref x| x)
-   |           ---------  ^ returns a value referencing data owned by the current function
-   |           |
-   |           function parameter borrowed here
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-refcell.rs b/src/test/ui/regions/regions-refcell.rs
deleted file mode 100644
index 39ad0c53f1e..00000000000
--- a/src/test/ui/regions/regions-refcell.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-// run-pass
-// This is a regression test for something that only came up while
-// attempting to bootstrap librustc with new destructor lifetime
-// semantics.
-
-
-use std::collections::HashMap;
-use std::cell::RefCell;
-
-// This version does not yet work (associated type issues)...
-#[cfg(cannot_use_this_yet)]
-fn foo<'a>(map: RefCell<HashMap<&'static str, &'a [u8]>>) {
-    let one = [1];
-    assert_eq!(map.borrow().get("one"), Some(&one[..]));
-}
-
-#[cfg(cannot_use_this_yet_either)]
-// ... and this version does not work (the lifetime of `one` is
-// supposed to match the lifetime `'a`) ...
-fn foo<'a>(map: RefCell<HashMap<&'static str, &'a [u8]>>) {
-    let one = [1];
-    assert_eq!(map.borrow().get("one"), Some(&&one[..]));
-}
-
-#[cfg(all(not(cannot_use_this_yet),not(cannot_use_this_yet_either)))]
-fn foo<'a>(map: RefCell<HashMap<&'static str, &'a [u8]>>) {
-    // ...so instead we walk through the trivial slice and make sure
-    // it contains the element we expect.
-
-    for (i, &x) in map.borrow().get("one").unwrap().iter().enumerate() {
-        assert_eq!((i, x), (0, 1));
-    }
-}
-
-fn main() {
-    let zer = [0];
-    let one = [1];
-    let two = [2];
-    let mut map = HashMap::new();
-    map.insert("zero", &zer[..]);
-    map.insert("one",  &one[..]);
-    map.insert("two",  &two[..]);
-    let map = RefCell::new(map);
-    foo(map);
-}
diff --git a/src/test/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs b/src/test/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs
deleted file mode 100644
index b1bdb813ac6..00000000000
--- a/src/test/ui/regions/regions-relate-bound-regions-on-closures-to-inference-variables.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test that this fairly specialized, but also reasonable, pattern
-// typechecks. The pattern involves regions bound in closures that
-// wind up related to inference variables.
-//
-// NB. Changes to the region implementations have broken this pattern
-// a few times, but it happens to be used in the compiler so those
-// changes were caught. However, those uses in the compiler could
-// easily get changed or refactored away in the future.
-
-struct Ctxt<'tcx> {
-    x: &'tcx Vec<isize>
-}
-
-struct Foo<'a,'tcx:'a> {
-    cx: &'a Ctxt<'tcx>,
-}
-
-impl<'a,'tcx> Foo<'a,'tcx> {
-    fn bother(&mut self) -> isize {
-        self.elaborate_bounds(Box::new(|this| {
-            // (*) Here: type of `this` is `&'f0 Foo<&'f1, '_2>`,
-            // where `'f0` and `'f1` are fresh, free regions that
-            // result from the bound regions on the closure, and `'2`
-            // is a region inference variable created by the call. Due
-            // to the constraints on the type, we find that `'_2 : 'f1
-            // + 'f2` must hold (and can be assumed by the callee).
-            // Region inference has to do some clever stuff to avoid
-            // inferring `'_2` to be `'static` in this case, because
-            // it is created outside the closure but then related to
-            // regions bound by the closure itself. See the
-            // `region_constraints.rs` file (and the `givens` field, in
-            // particular) for more details.
-            this.foo()
-        }))
-    }
-
-    fn foo(&mut self) -> isize {
-        22
-    }
-
-    fn elaborate_bounds(
-        &mut self,
-        mut mk_cand: Box<dyn for<'b> FnMut(&mut Foo<'b, 'tcx>) -> isize>)
-        -> isize
-    {
-        mk_cand(self)
-    }
-}
-
-fn main() {
-    let v = vec![];
-    let cx = Ctxt { x: &v };
-    let mut foo = Foo { cx: &cx };
-    assert_eq!(foo.bother(), 22); // just so the code is not dead, basically
-}
diff --git a/src/test/ui/regions/regions-ret-borrowed-1.rs b/src/test/ui/regions/regions-ret-borrowed-1.rs
deleted file mode 100644
index 54630caffb4..00000000000
--- a/src/test/ui/regions/regions-ret-borrowed-1.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Similar to regions-ret-borrowed.rs, but using a named lifetime.  At
-// some point regions-ret-borrowed reported an error but this file did
-// not, due to special hardcoding around the anonymous region.
-
-fn with<R, F>(f: F) -> R where F: for<'a> FnOnce(&'a isize) -> R {
-    f(&3)
-}
-
-fn return_it<'a>() -> &'a isize {
-    with(|o| o)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-    let x = return_it();
-    println!("foo={}", *x);
-}
diff --git a/src/test/ui/regions/regions-ret-borrowed-1.stderr b/src/test/ui/regions/regions-ret-borrowed-1.stderr
deleted file mode 100644
index 0784e894ea9..00000000000
--- a/src/test/ui/regions/regions-ret-borrowed-1.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-ret-borrowed-1.rs:10:14
-   |
-LL |     with(|o| o)
-   |           -- ^ returning this value requires that `'1` must outlive `'2`
-   |           ||
-   |           |return type of closure is &'2 isize
-   |           has type `&'1 isize`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-ret-borrowed.rs b/src/test/ui/regions/regions-ret-borrowed.rs
deleted file mode 100644
index bdb0341c97c..00000000000
--- a/src/test/ui/regions/regions-ret-borrowed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Ensure that you cannot use generic types to return a region outside
-// of its bound.  Here, in the `return_it()` fn, we call with() but
-// with R bound to &isize from the return_it.  Meanwhile, with()
-// provides a value that is only good within its own stack frame. This
-// used to successfully compile because we failed to account for the
-// fact that fn(x: &isize) rebound the region &.
-
-fn with<R, F>(f: F) -> R where F: FnOnce(&isize) -> R {
-    f(&3)
-}
-
-fn return_it<'a>() -> &'a isize {
-    with(|o| o)
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {
-    let x = return_it();
-    println!("foo={}", *x);
-}
diff --git a/src/test/ui/regions/regions-ret-borrowed.stderr b/src/test/ui/regions/regions-ret-borrowed.stderr
deleted file mode 100644
index d9be5ef89cc..00000000000
--- a/src/test/ui/regions/regions-ret-borrowed.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-ret-borrowed.rs:13:14
-   |
-LL |     with(|o| o)
-   |           -- ^ returning this value requires that `'1` must outlive `'2`
-   |           ||
-   |           |return type of closure is &'2 isize
-   |           has type `&'1 isize`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-ret.rs b/src/test/ui/regions/regions-ret.rs
deleted file mode 100644
index 580545ef856..00000000000
--- a/src/test/ui/regions/regions-ret.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-fn id<T>(x: T) -> T { x }
-
-fn f(_x: &isize) -> &isize {
-    return &id(3); //~ ERROR cannot return reference to temporary value
-}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-ret.stderr b/src/test/ui/regions/regions-ret.stderr
deleted file mode 100644
index 0e4875ac985..00000000000
--- a/src/test/ui/regions/regions-ret.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0515]: cannot return reference to temporary value
-  --> $DIR/regions-ret.rs:4:12
-   |
-LL |     return &id(3);
-   |            ^-----
-   |            ||
-   |            |temporary value created here
-   |            returns a reference to data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-return-interior-of-option.rs b/src/test/ui/regions/regions-return-interior-of-option.rs
deleted file mode 100644
index 2dc91ec84f5..00000000000
--- a/src/test/ui/regions/regions-return-interior-of-option.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// run-pass
-
-fn get<T>(opt: &Option<T>) -> &T {
-    match *opt {
-      Some(ref v) => v,
-      None => panic!("none")
-    }
-}
-
-pub fn main() {
-    let mut x = Some(23);
-
-    {
-        let y = get(&x);
-        assert_eq!(*y, 23);
-    }
-
-    x = Some(24);
-
-    {
-        let y = get(&x);
-        assert_eq!(*y, 24);
-    }
-}
diff --git a/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.rs b/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.rs
deleted file mode 100644
index 86e759f088a..00000000000
--- a/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// Test that closures cannot subvert aliasing restrictions
-
-fn main() {
-    // Unboxed closure case
-    {
-        let mut x = 0;
-        let mut f = || &mut x; //~ ERROR captured variable cannot escape `FnMut` closure body
-        let x = f();
-        let y = f();
-    }
-}
diff --git a/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr b/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr
deleted file mode 100644
index b087e03b464..00000000000
--- a/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error: captured variable cannot escape `FnMut` closure body
-  --> $DIR/regions-return-ref-to-upvar-issue-17403.rs:7:24
-   |
-LL |         let mut x = 0;
-   |             ----- variable defined here
-LL |         let mut f = || &mut x;
-   |                      - ^^^^^-
-   |                      | |    |
-   |                      | |    variable captured here
-   |                      | returns a reference to a captured variable which escapes the closure body
-   |                      inferred to be a `FnMut` closure
-   |
-   = note: `FnMut` closures only have access to their captured variables while they are executing...
-   = note: ...therefore, they cannot allow references to captured variables to escape
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-return-stack-allocated-vec.rs b/src/test/ui/regions/regions-return-stack-allocated-vec.rs
deleted file mode 100644
index 97fbdbf4685..00000000000
--- a/src/test/ui/regions/regions-return-stack-allocated-vec.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-// Test that we cannot return a stack allocated slice
-
-fn function(x: isize) -> &'static [isize] {
-    &[x] //~ ERROR cannot return reference to temporary value
-}
-
-fn main() {
-    let x = function(1);
-    let y = x[0];
-}
diff --git a/src/test/ui/regions/regions-return-stack-allocated-vec.stderr b/src/test/ui/regions/regions-return-stack-allocated-vec.stderr
deleted file mode 100644
index 9d87fe266b1..00000000000
--- a/src/test/ui/regions/regions-return-stack-allocated-vec.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0515]: cannot return reference to temporary value
-  --> $DIR/regions-return-stack-allocated-vec.rs:4:5
-   |
-LL |     &[x]
-   |     ^---
-   |     ||
-   |     |temporary value created here
-   |     returns a reference to data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-scope-chain-example.rs b/src/test/ui/regions/regions-scope-chain-example.rs
deleted file mode 100644
index 2beb20add32..00000000000
--- a/src/test/ui/regions/regions-scope-chain-example.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-// This is an example where the older inference algorithm failed. The
-// specifics of why it failed are somewhat, but not entirely, tailed
-// to the algorithm. Ultimately the problem is that when computing the
-// mutual supertype of both sides of the `if` it would be faced with a
-// choice of tightening bounds or unifying variables and it took the
-// wrong path. The new algorithm avoids this problem and hence this
-// example typechecks correctly.
-
-// pretty-expanded FIXME #23616
-
-enum ScopeChain<'a> {
-    Link(Scope<'a>),
-    End
-}
-
-type Scope<'a> = &'a ScopeChain<'a>;
-
-struct OuterContext;
-
-struct Context<'a> {
-    foo: &'a OuterContext
-}
-
-impl<'a> Context<'a> {
-    fn foo(&mut self, scope: Scope) {
-        let link = if 1 < 2 {
-            let l = ScopeChain::Link(scope);
-            self.take_scope(&l);
-            l
-        } else {
-            ScopeChain::Link(scope)
-        };
-        self.take_scope(&link);
-    }
-
-    fn take_scope(&mut self, x: Scope) {
-    }
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-self-impls.rs b/src/test/ui/regions/regions-self-impls.rs
deleted file mode 100644
index 80b88568e42..00000000000
--- a/src/test/ui/regions/regions-self-impls.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// run-pass
-#![allow(non_camel_case_types)]
-
-struct Clam<'a> {
-    chowder: &'a isize
-}
-
-trait get_chowder<'a> {
-    fn get_chowder(&self) -> &'a isize;
-}
-
-impl<'a> get_chowder<'a> for Clam<'a> {
-    fn get_chowder(&self) -> &'a isize { return self.chowder; }
-}
-
-pub fn main() {
-    let clam = Clam { chowder: &3 };
-    println!("{}", *clam.get_chowder());
-    clam.get_chowder();
-}
diff --git a/src/test/ui/regions/regions-self-in-enums.rs b/src/test/ui/regions/regions-self-in-enums.rs
deleted file mode 100644
index c2e4b2ff10d..00000000000
--- a/src/test/ui/regions/regions-self-in-enums.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-#![allow(unused_mut)]
-#![allow(non_camel_case_types)]
-
-enum int_wrapper<'a> {
-    int_wrapper_ctor(&'a isize)
-}
-
-pub fn main() {
-    let x = 3;
-    let y = int_wrapper::int_wrapper_ctor(&x);
-    let mut z : &isize;
-    match y {
-        int_wrapper::int_wrapper_ctor(zz) => { z = zz; }
-    }
-    println!("{}", *z);
-}
diff --git a/src/test/ui/regions/regions-simple.rs b/src/test/ui/regions/regions-simple.rs
deleted file mode 100644
index fff1b47f53f..00000000000
--- a/src/test/ui/regions/regions-simple.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// run-pass
-pub fn main() {
-    let mut x: isize = 3;
-    let y: &mut isize = &mut x;
-    *y = 5;
-    println!("{}", *y);
-}
diff --git a/src/test/ui/regions/regions-static-bound-rpass.rs b/src/test/ui/regions/regions-static-bound-rpass.rs
deleted file mode 100644
index 25232b455b6..00000000000
--- a/src/test/ui/regions/regions-static-bound-rpass.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// run-pass
-
-fn invariant_id<'a,'b>(t: &'b mut &'static ()) -> &'b mut &'a ()
-    where 'a: 'static { t }
-//~^ WARN unnecessary lifetime parameter `'a`
-
-fn static_id<'a>(t: &'a ()) -> &'static ()
-    where 'a: 'static { t }
-//~^ WARN unnecessary lifetime parameter `'a`
-
-fn static_id_indirect<'a,'b>(t: &'a ()) -> &'static ()
-    where 'a: 'b, 'b: 'static { t }
-//~^ WARN unnecessary lifetime parameter `'b`
-
-fn ref_id<'a>(t: &'a ()) -> &'a () where 'static: 'a { t }
-
-static UNIT: () = ();
-
-fn main()
-{
-    let mut val : &'static () = &UNIT;
-    invariant_id(&mut val);
-    static_id(val);
-    static_id_indirect(val);
-    ref_id(val);
-}
diff --git a/src/test/ui/regions/regions-static-bound-rpass.stderr b/src/test/ui/regions/regions-static-bound-rpass.stderr
deleted file mode 100644
index 9355a409d50..00000000000
--- a/src/test/ui/regions/regions-static-bound-rpass.stderr
+++ /dev/null
@@ -1,26 +0,0 @@
-warning: unnecessary lifetime parameter `'a`
-  --> $DIR/regions-static-bound-rpass.rs:4:11
-   |
-LL |     where 'a: 'static { t }
-   |           ^^
-   |
-   = help: you can use the `'static` lifetime directly, in place of `'a`
-
-warning: unnecessary lifetime parameter `'a`
-  --> $DIR/regions-static-bound-rpass.rs:8:11
-   |
-LL |     where 'a: 'static { t }
-   |           ^^
-   |
-   = help: you can use the `'static` lifetime directly, in place of `'a`
-
-warning: unnecessary lifetime parameter `'b`
-  --> $DIR/regions-static-bound-rpass.rs:12:19
-   |
-LL |     where 'a: 'b, 'b: 'static { t }
-   |                   ^^
-   |
-   = help: you can use the `'static` lifetime directly, in place of `'b`
-
-warning: 3 warnings emitted
-
diff --git a/src/test/ui/regions/regions-static-bound.rs b/src/test/ui/regions/regions-static-bound.rs
deleted file mode 100644
index 4d2455470e2..00000000000
--- a/src/test/ui/regions/regions-static-bound.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-fn static_id<'a,'b>(t: &'a ()) -> &'static ()
-    where 'a: 'static { t }
-//~^ WARN unnecessary lifetime parameter `'a`
-
-fn static_id_indirect<'a,'b>(t: &'a ()) -> &'static ()
-    where 'a: 'b, 'b: 'static { t }
-//~^ WARN unnecessary lifetime parameter `'b`
-
-fn static_id_wrong_way<'a>(t: &'a ()) -> &'static () where 'static: 'a {
-    t
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn error(u: &(), v: &()) {
-    static_id(&u);
-    //~^ ERROR borrowed data escapes outside of function [E0521]
-    static_id_indirect(&v);
-    //~^ ERROR borrowed data escapes outside of function [E0521]
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-static-bound.stderr b/src/test/ui/regions/regions-static-bound.stderr
deleted file mode 100644
index 2886ec3ead5..00000000000
--- a/src/test/ui/regions/regions-static-bound.stderr
+++ /dev/null
@@ -1,54 +0,0 @@
-warning: unnecessary lifetime parameter `'a`
-  --> $DIR/regions-static-bound.rs:2:11
-   |
-LL |     where 'a: 'static { t }
-   |           ^^
-   |
-   = help: you can use the `'static` lifetime directly, in place of `'a`
-
-warning: unnecessary lifetime parameter `'b`
-  --> $DIR/regions-static-bound.rs:6:19
-   |
-LL |     where 'a: 'b, 'b: 'static { t }
-   |                   ^^
-   |
-   = help: you can use the `'static` lifetime directly, in place of `'b`
-
-error: lifetime may not live long enough
-  --> $DIR/regions-static-bound.rs:10:5
-   |
-LL | fn static_id_wrong_way<'a>(t: &'a ()) -> &'static () where 'static: 'a {
-   |                        -- lifetime `'a` defined here
-LL |     t
-   |     ^ returning this value requires that `'a` must outlive `'static`
-
-error[E0521]: borrowed data escapes outside of function
-  --> $DIR/regions-static-bound.rs:15:5
-   |
-LL | fn error(u: &(), v: &()) {
-   |          -  - let's call the lifetime of this reference `'1`
-   |          |
-   |          `u` is a reference that is only valid in the function body
-LL |     static_id(&u);
-   |     ^^^^^^^^^^^^^
-   |     |
-   |     `u` escapes the function body here
-   |     argument requires that `'1` must outlive `'static`
-
-error[E0521]: borrowed data escapes outside of function
-  --> $DIR/regions-static-bound.rs:17:5
-   |
-LL | fn error(u: &(), v: &()) {
-   |                  -  - let's call the lifetime of this reference `'2`
-   |                  |
-   |                  `v` is a reference that is only valid in the function body
-...
-LL |     static_id_indirect(&v);
-   |     ^^^^^^^^^^^^^^^^^^^^^^
-   |     |
-   |     `v` escapes the function body here
-   |     argument requires that `'2` must outlive `'static`
-
-error: aborting due to 3 previous errors; 2 warnings emitted
-
-For more information about this error, try `rustc --explain E0521`.
diff --git a/src/test/ui/regions/regions-static-closure.rs b/src/test/ui/regions/regions-static-closure.rs
deleted file mode 100644
index 09cd5622032..00000000000
--- a/src/test/ui/regions/regions-static-closure.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// run-pass
-#![allow(non_camel_case_types)]
-
-struct closure_box<'a> {
-    cl: Box<dyn FnMut() + 'a>,
-}
-
-fn box_it<'a>(x: Box<dyn FnMut() + 'a>) -> closure_box<'a> {
-    closure_box {cl: x}
-}
-
-fn call_static_closure(mut cl: closure_box<'static>) {
-    (cl.cl)();
-}
-
-pub fn main() {
-    let cl_box = box_it(Box::new(|| println!("Hello, world!")));
-    call_static_closure(cl_box);
-}
diff --git a/src/test/ui/regions/regions-steal-closure.rs b/src/test/ui/regions/regions-steal-closure.rs
deleted file mode 100644
index 83e93522c94..00000000000
--- a/src/test/ui/regions/regions-steal-closure.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-#![feature(fn_traits)]
-
-struct ClosureBox<'a> {
-    cl: Box<dyn FnMut() + 'a>,
-}
-
-fn box_it<'r>(x: Box<dyn FnMut() + 'r>) -> ClosureBox<'r> {
-    ClosureBox {cl: x}
-}
-
-fn main() {
-    let mut cl_box = {
-        let mut i = 3;
-        box_it(Box::new(|| i += 1)) //~ ERROR `i` does not live long enough
-    };
-    cl_box.cl.call_mut(());
-}
diff --git a/src/test/ui/regions/regions-steal-closure.stderr b/src/test/ui/regions/regions-steal-closure.stderr
deleted file mode 100644
index 5b0efaf9559..00000000000
--- a/src/test/ui/regions/regions-steal-closure.stderr
+++ /dev/null
@@ -1,16 +0,0 @@
-error[E0597]: `i` does not live long enough
-  --> $DIR/regions-steal-closure.rs:14:28
-   |
-LL |     let mut cl_box = {
-   |         ---------- borrow later stored here
-LL |         let mut i = 3;
-LL |         box_it(Box::new(|| i += 1))
-   |                         -- ^ borrowed value does not live long enough
-   |                         |
-   |                         value captured here
-LL |     };
-   |     - `i` dropped here while still borrowed
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-trait-1.rs b/src/test/ui/regions/regions-trait-1.rs
deleted file mode 100644
index b6dab1c32e8..00000000000
--- a/src/test/ui/regions/regions-trait-1.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-// check-pass
-
-struct Ctxt {
-    v: usize,
-}
-
-trait GetCtxt {
-    // Here the `&` is bound in the method definition:
-    fn get_ctxt(&self) -> &Ctxt;
-}
-
-struct HasCtxt<'a> {
-    c: &'a Ctxt,
-}
-
-impl<'a> GetCtxt for HasCtxt<'a> {
-    // Ok: Have implied bound of WF(&'b HasCtxt<'a>)
-    // so know 'a: 'b
-    // so know &'a Ctxt <: &'b Ctxt
-    fn get_ctxt<'b>(&'b self) -> &'a Ctxt {
-        self.c
-    }
-}
-
-fn get_v(gc: Box<dyn GetCtxt + '_>) -> usize {
-    gc.get_ctxt().v
-}
-
-fn main() {
-    let ctxt = Ctxt { v: 22 };
-    let hc = HasCtxt { c: &ctxt };
-    assert_eq!(get_v(Box::new(hc) as Box<dyn GetCtxt>), 22);
-}
diff --git a/src/test/ui/regions/regions-trait-object-1.rs b/src/test/ui/regions/regions-trait-object-1.rs
deleted file mode 100644
index e2520d97890..00000000000
--- a/src/test/ui/regions/regions-trait-object-1.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// run-pass
-// This is a regression test for something that only came up while
-// attempting to bootstrap librustc_ast; it is adapted from
-// `rustc_ast::ext::tt::generic_extension`.
-
-
-pub struct E<'a> {
-    pub f: &'a u8,
-}
-impl<'b> E<'b> {
-    pub fn m(&self) -> &'b u8 { self.f }
-}
-
-pub struct P<'c> {
-    pub g: &'c u8,
-}
-pub trait M {
-    fn n(&self) -> u8;
-}
-impl<'d> M for P<'d> {
-    fn n(&self) -> u8 { *self.g }
-}
-
-fn extension<'e>(x: &'e E<'e>) -> Box<dyn M+'e> {
-    loop {
-        let p = P { g: x.m() };
-        return Box::new(p) as Box<dyn M+'e>;
-    }
-}
-
-fn main() {
-    let w = E { f: &10 };
-    let o = extension(&w);
-    assert_eq!(o.n(), 10);
-}
diff --git a/src/test/ui/regions/regions-trait-object-subtyping.rs b/src/test/ui/regions/regions-trait-object-subtyping.rs
deleted file mode 100644
index 1d7a766de30..00000000000
--- a/src/test/ui/regions/regions-trait-object-subtyping.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-trait Dummy { fn dummy(&self); }
-
-fn foo1<'a:'b,'b>(x: &'a mut (dyn Dummy+'a)) -> &'b mut (dyn Dummy+'b) {
-    // Here, we are able to coerce
-    x
-}
-
-fn foo2<'a:'b,'b>(x: &'b mut (dyn Dummy+'a)) -> &'b mut (dyn Dummy+'b) {
-    // Here, we are able to coerce
-    x
-}
-
-fn foo3<'a,'b>(x: &'a mut dyn Dummy) -> &'b mut dyn Dummy {
-    // Without knowing 'a:'b, we can't coerce
-    x
-    //~^ ERROR lifetime may not live long enough
-}
-
-struct Wrapper<T>(T);
-fn foo4<'a:'b,'b>(x: Wrapper<&'a mut dyn Dummy>) -> Wrapper<&'b mut dyn Dummy> {
-    // We can't coerce because it is packed in `Wrapper`
-    x
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-trait-object-subtyping.stderr b/src/test/ui/regions/regions-trait-object-subtyping.stderr
deleted file mode 100644
index 1b3a116d508..00000000000
--- a/src/test/ui/regions/regions-trait-object-subtyping.stderr
+++ /dev/null
@@ -1,34 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-trait-object-subtyping.rs:15:5
-   |
-LL | fn foo3<'a,'b>(x: &'a mut dyn Dummy) -> &'b mut dyn Dummy {
-   |         -- -- lifetime `'b` defined here
-   |         |
-   |         lifetime `'a` defined here
-LL |     // Without knowing 'a:'b, we can't coerce
-LL |     x
-   |     ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-   |
-   = help: consider adding the following bound: `'a: 'b`
-   = note: requirement occurs because of a mutable reference to `dyn Dummy`
-   = note: mutable references are invariant over their type parameter
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: lifetime may not live long enough
-  --> $DIR/regions-trait-object-subtyping.rs:22:5
-   |
-LL | fn foo4<'a:'b,'b>(x: Wrapper<&'a mut dyn Dummy>) -> Wrapper<&'b mut dyn Dummy> {
-   |         --    -- lifetime `'b` defined here
-   |         |
-   |         lifetime `'a` defined here
-LL |     // We can't coerce because it is packed in `Wrapper`
-LL |     x
-   |     ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-   |
-   = help: consider adding the following bound: `'b: 'a`
-   = note: requirement occurs because of a mutable reference to `dyn Dummy`
-   = note: mutable references are invariant over their type parameter
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/regions-trait-variance.rs b/src/test/ui/regions/regions-trait-variance.rs
deleted file mode 100644
index 94ffb85c9c9..00000000000
--- a/src/test/ui/regions/regions-trait-variance.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// Issue #12470.
-
-trait X {
-    fn get_i(&self) -> isize;
-}
-
-struct B {
-    i: isize
-}
-
-impl X for B {
-    fn get_i(&self) -> isize {
-        self.i
-    }
-}
-
-impl Drop for B {
-    fn drop(&mut self) {
-        println!("drop");
-    }
-}
-
-struct A<'r> {
-    p: &'r (dyn X + 'r)
-}
-
-fn make_a(p: &dyn X) -> A {
-    A{p:p}
-}
-
-fn make_make_a<'a>() -> A<'a> {
-
-    let b: Box<B> = Box::new(B {
-        i: 1,
-    });
-
-    let bb: &B = &*b;
-    make_a(bb) //~ ERROR cannot return value referencing local data `*b`
-}
-
-fn main() {
-    let a = make_make_a();
-    println!("{}", a.p.get_i());
-}
diff --git a/src/test/ui/regions/regions-trait-variance.stderr b/src/test/ui/regions/regions-trait-variance.stderr
deleted file mode 100644
index 56c9f89e1f5..00000000000
--- a/src/test/ui/regions/regions-trait-variance.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0515]: cannot return value referencing local data `*b`
-  --> $DIR/regions-trait-variance.rs:38:5
-   |
-LL |     let bb: &B = &*b;
-   |                  --- `*b` is borrowed here
-LL |     make_a(bb)
-   |     ^^^^^^^^^^ returns a value referencing data owned by the current function
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0515`.
diff --git a/src/test/ui/regions/regions-undeclared.rs b/src/test/ui/regions/regions-undeclared.rs
deleted file mode 100644
index 1edd998aa0e..00000000000
--- a/src/test/ui/regions/regions-undeclared.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-static c_x: &'blk isize = &22; //~ ERROR use of undeclared lifetime name `'blk`
-
-enum EnumDecl {
-    Foo(&'a isize), //~ ERROR use of undeclared lifetime name `'a`
-    Bar(&'a isize), //~ ERROR use of undeclared lifetime name `'a`
-}
-
-fn fnDecl(x: &'a isize, //~ ERROR use of undeclared lifetime name `'a`
-          y: &'a isize) //~ ERROR use of undeclared lifetime name `'a`
-{}
-
-fn main() {
-}
diff --git a/src/test/ui/regions/regions-undeclared.stderr b/src/test/ui/regions/regions-undeclared.stderr
deleted file mode 100644
index 6bfde5524ac..00000000000
--- a/src/test/ui/regions/regions-undeclared.stderr
+++ /dev/null
@@ -1,42 +0,0 @@
-error[E0261]: use of undeclared lifetime name `'blk`
-  --> $DIR/regions-undeclared.rs:1:14
-   |
-LL | static c_x: &'blk isize = &22;
-   |              ^^^^ undeclared lifetime
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-undeclared.rs:4:10
-   |
-LL | enum EnumDecl {
-   |              - help: consider introducing lifetime `'a` here: `<'a>`
-LL |     Foo(&'a isize),
-   |          ^^ undeclared lifetime
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-undeclared.rs:5:10
-   |
-LL | enum EnumDecl {
-   |              - help: consider introducing lifetime `'a` here: `<'a>`
-LL |     Foo(&'a isize),
-LL |     Bar(&'a isize),
-   |          ^^ undeclared lifetime
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-undeclared.rs:8:15
-   |
-LL | fn fnDecl(x: &'a isize,
-   |          -    ^^ undeclared lifetime
-   |          |
-   |          help: consider introducing lifetime `'a` here: `<'a>`
-
-error[E0261]: use of undeclared lifetime name `'a`
-  --> $DIR/regions-undeclared.rs:9:15
-   |
-LL | fn fnDecl(x: &'a isize,
-   |          - help: consider introducing lifetime `'a` here: `<'a>`
-LL |           y: &'a isize)
-   |               ^^ undeclared lifetime
-
-error: aborting due to 5 previous errors
-
-For more information about this error, try `rustc --explain E0261`.
diff --git a/src/test/ui/regions/regions-var-type-out-of-scope.rs b/src/test/ui/regions/regions-var-type-out-of-scope.rs
deleted file mode 100644
index aba55e9df6a..00000000000
--- a/src/test/ui/regions/regions-var-type-out-of-scope.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-fn id<T>(x: T) -> T { x }
-
-fn foo(cond: bool) {
-    // Here we will infer a type that uses the
-    // region of the if stmt then block:
-    let mut x;
-
-    if cond {
-        x = &id(3); //~ ERROR temporary value dropped while borrowed
-        assert_eq!(*x, 3);
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-var-type-out-of-scope.stderr b/src/test/ui/regions/regions-var-type-out-of-scope.stderr
deleted file mode 100644
index c32bbe0ee1f..00000000000
--- a/src/test/ui/regions/regions-var-type-out-of-scope.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0716]: temporary value dropped while borrowed
-  --> $DIR/regions-var-type-out-of-scope.rs:9:14
-   |
-LL |         x = &id(3);
-   |              ^^^^^- temporary value is freed at the end of this statement
-   |              |
-   |              creates a temporary value which is freed while still in use
-LL |         assert_eq!(*x, 3);
-   |         ----------------- borrow later used here
-   |
-   = note: consider using a `let` binding to create a longer lived value
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0716`.
diff --git a/src/test/ui/regions/regions-variance-contravariant-use-contravariant.rs b/src/test/ui/regions/regions-variance-contravariant-use-contravariant.rs
deleted file mode 100644
index e6377867018..00000000000
--- a/src/test/ui/regions/regions-variance-contravariant-use-contravariant.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-// Test that a type which is contravariant with respect to its region
-// parameter compiles successfully when used in a contravariant way.
-//
-// Note: see ui/variance/variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-// pretty-expanded FIXME #23616
-
-struct Contravariant<'a> {
-    f: &'a isize
-}
-
-fn use_<'a>(c: Contravariant<'a>) {
-    let x = 3;
-
-    // 'b winds up being inferred to this call.
-    // Contravariant<'a> <: Contravariant<'call> is true
-    // if 'call <= 'a, which is true, so no error.
-    collapse(&x, c);
-
-    fn collapse<'b>(x: &'b isize, c: Contravariant<'b>) { }
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs b/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs
deleted file mode 100644
index f23ca537fa8..00000000000
--- a/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// Test that a type which is covariant with respect to its region
-// parameter yields an error when used in a contravariant way.
-//
-// Note: see variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-// `S` is contravariant with respect to both parameters.
-struct S<'a, 'b> {
-    f: &'a isize,
-    g: &'b isize,
-}
-
-fn use_<'short,'long>(c: S<'long, 'short>,
-                      s: &'short isize,
-                      l: &'long isize,
-                      _where:Option<&'short &'long ()>) {
-
-    let _: S<'long, 'short> = c; // OK
-    let _: S<'short, 'short> = c; // OK
-
-    // Test whether S<_,'short> <: S<_,'long>.  Since
-    // 'short <= 'long, this would be true if the Contravariant type were
-    // covariant with respect to its parameter 'a.
-
-    let _: S<'long, 'long> = c;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr b/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr
deleted file mode 100644
index 5352be430fb..00000000000
--- a/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-variance-contravariant-use-covariant-in-second-position.rs:25:12
-   |
-LL | fn use_<'short,'long>(c: S<'long, 'short>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: S<'long, 'long> = c;
-   |            ^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-   |
-   = help: consider adding the following bound: `'short: 'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant.rs b/src/test/ui/regions/regions-variance-contravariant-use-covariant.rs
deleted file mode 100644
index c73577cb350..00000000000
--- a/src/test/ui/regions/regions-variance-contravariant-use-covariant.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// Test that a type which is covariant with respect to its region
-// parameter yields an error when used in a contravariant way.
-//
-// Note: see variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-// This is contravariant with respect to 'a, meaning that
-// Contravariant<'long> <: Contravariant<'short> iff
-// 'short <= 'long
-struct Contravariant<'a> {
-    f: &'a isize
-}
-
-fn use_<'short,'long>(c: Contravariant<'short>,
-                      s: &'short isize,
-                      l: &'long isize,
-                      _where:Option<&'short &'long ()>) {
-
-    // Test whether Contravariant<'short> <: Contravariant<'long>.  Since
-    // 'short <= 'long, this would be true if the Contravariant type were
-    // covariant with respect to its parameter 'a.
-
-    let _: Contravariant<'long> = c;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant.stderr b/src/test/ui/regions/regions-variance-contravariant-use-covariant.stderr
deleted file mode 100644
index 22c9b915bb9..00000000000
--- a/src/test/ui/regions/regions-variance-contravariant-use-covariant.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-variance-contravariant-use-covariant.rs:23:12
-   |
-LL | fn use_<'short,'long>(c: Contravariant<'short>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Contravariant<'long> = c;
-   |            ^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-   |
-   = help: consider adding the following bound: `'short: 'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-covariant-use-contravariant.rs b/src/test/ui/regions/regions-variance-covariant-use-contravariant.rs
deleted file mode 100644
index a2183b491ed..00000000000
--- a/src/test/ui/regions/regions-variance-covariant-use-contravariant.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// Test that a type which is covariant with respect to its region
-// parameter yields an error when used in a contravariant way.
-//
-// Note: see variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-// This is covariant with respect to 'a, meaning that
-// Covariant<'foo> <: Covariant<'static> because
-// 'foo <= 'static
-struct Covariant<'a> {
-    f: extern "Rust" fn(&'a isize)
-}
-
-fn use_<'short,'long>(c: Covariant<'long>,
-                      s: &'short isize,
-                      l: &'long isize,
-                      _where:Option<&'short &'long ()>) {
-
-    // Test whether Covariant<'long> <: Covariant<'short>.  Since
-    // 'short <= 'long, this would be true if the Covariant type were
-    // contravariant with respect to its parameter 'a.
-
-    let _: Covariant<'short> = c;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/regions-variance-covariant-use-contravariant.stderr b/src/test/ui/regions/regions-variance-covariant-use-contravariant.stderr
deleted file mode 100644
index a07181ad553..00000000000
--- a/src/test/ui/regions/regions-variance-covariant-use-contravariant.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-variance-covariant-use-contravariant.rs:23:12
-   |
-LL | fn use_<'short,'long>(c: Covariant<'long>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Covariant<'short> = c;
-   |            ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-   |
-   = help: consider adding the following bound: `'short: 'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-covariant-use-covariant.rs b/src/test/ui/regions/regions-variance-covariant-use-covariant.rs
deleted file mode 100644
index c5c80ce54f1..00000000000
--- a/src/test/ui/regions/regions-variance-covariant-use-covariant.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// Test that a type which is covariant with respect to its region
-// parameter is successful when used in a covariant way.
-//
-// Note: see ui/variance/variance-regions-*.rs for the tests that
-// check that the variance inference works in the first place.
-
-// This is covariant with respect to 'a, meaning that
-// Covariant<'foo> <: Covariant<'static> because
-// 'foo <= 'static
-// pretty-expanded FIXME #23616
-
-struct Covariant<'a> {
-    f: extern "Rust" fn(&'a isize)
-}
-
-fn use_<'a>(c: Covariant<'a>) {
-    // OK Because Covariant<'a> <: Covariant<'static> iff 'a <= 'static
-    let _: Covariant<'static> = c;
-}
-
-pub fn main() {}
diff --git a/src/test/ui/regions/regions-variance-invariant-use-contravariant.rs b/src/test/ui/regions/regions-variance-invariant-use-contravariant.rs
deleted file mode 100644
index a81aaa9c776..00000000000
--- a/src/test/ui/regions/regions-variance-invariant-use-contravariant.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// Test that an invariant region parameter used in a contravariant way
-// yields an error.
-//
-// Note: see variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-struct Invariant<'a> {
-    f: &'a mut &'a isize
-}
-
-fn use_<'short,'long>(c: Invariant<'long>,
-                      s: &'short isize,
-                      l: &'long isize,
-                      _where:Option<&'short &'long ()>) {
-
-    // Test whether Invariant<'long> <: Invariant<'short>.  Since
-    // 'short <= 'long, this would be true if the Invariant type were
-    // contravariant with respect to its parameter 'a.
-
-    let _: Invariant<'short> = c;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-variance-invariant-use-contravariant.stderr b/src/test/ui/regions/regions-variance-invariant-use-contravariant.stderr
deleted file mode 100644
index b35a2cb905d..00000000000
--- a/src/test/ui/regions/regions-variance-invariant-use-contravariant.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-variance-invariant-use-contravariant.rs:20:12
-   |
-LL | fn use_<'short,'long>(c: Invariant<'long>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Invariant<'short> = c;
-   |            ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-   |
-   = help: consider adding the following bound: `'short: 'long`
-   = note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Invariant<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-invariant-use-covariant.rs b/src/test/ui/regions/regions-variance-invariant-use-covariant.rs
deleted file mode 100644
index ab6a82ee7c7..00000000000
--- a/src/test/ui/regions/regions-variance-invariant-use-covariant.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Test that a type which is invariant with respect to its region
-// parameter used in a covariant way yields an error.
-//
-// Note: see variance-regions-*.rs for the tests that check that the
-// variance inference works in the first place.
-
-struct Invariant<'a> {
-    f: &'a mut &'a isize
-}
-
-fn use_<'b>(c: Invariant<'b>) {
-
-    // For this assignment to be legal, Invariant<'b> <: Invariant<'static>.
-    // Since 'b <= 'static, this would be true if Invariant were covariant
-    // with respect to its parameter 'a.
-
-    let _: Invariant<'static> = c;
-    //~^ ERROR lifetime may not live long enough
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-variance-invariant-use-covariant.stderr b/src/test/ui/regions/regions-variance-invariant-use-covariant.stderr
deleted file mode 100644
index 761e78d179e..00000000000
--- a/src/test/ui/regions/regions-variance-invariant-use-covariant.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: lifetime may not live long enough
-  --> $DIR/regions-variance-invariant-use-covariant.rs:17:12
-   |
-LL | fn use_<'b>(c: Invariant<'b>) {
-   |         -- lifetime `'b` defined here
-...
-LL |     let _: Invariant<'static> = c;
-   |            ^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'static`
-   |
-   = note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
-   = note: the struct `Invariant<'a>` is invariant over the parameter `'a`
-   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-wf-trait-object.rs b/src/test/ui/regions/regions-wf-trait-object.rs
deleted file mode 100644
index d0053b20234..00000000000
--- a/src/test/ui/regions/regions-wf-trait-object.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-// Check that the explicit lifetime bound (`'b`, in this example) must
-// outlive all the superbound from the trait (`'a`, in this example).
-
-trait TheTrait<'t>: 't { }
-
-struct Foo<'a,'b> {
-    x: Box<dyn TheTrait<'a>+'b> //~ ERROR E0478
-}
-
-fn main() { }
diff --git a/src/test/ui/regions/regions-wf-trait-object.stderr b/src/test/ui/regions/regions-wf-trait-object.stderr
deleted file mode 100644
index f6006ca046a..00000000000
--- a/src/test/ui/regions/regions-wf-trait-object.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0478]: lifetime bound not satisfied
-  --> $DIR/regions-wf-trait-object.rs:7:8
-   |
-LL |     x: Box<dyn TheTrait<'a>+'b>
-   |        ^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-note: lifetime parameter instantiated with the lifetime `'b` as defined here
-  --> $DIR/regions-wf-trait-object.rs:6:15
-   |
-LL | struct Foo<'a,'b> {
-   |               ^^
-note: but lifetime parameter must outlive the lifetime `'a` as defined here
-  --> $DIR/regions-wf-trait-object.rs:6:12
-   |
-LL | struct Foo<'a,'b> {
-   |            ^^
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0478`.
diff --git a/src/test/ui/regions/type-param-outlives-reempty-issue-74429-2.rs b/src/test/ui/regions/type-param-outlives-reempty-issue-74429-2.rs
deleted file mode 100644
index a65c17e0efc..00000000000
--- a/src/test/ui/regions/type-param-outlives-reempty-issue-74429-2.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-// Regression test for #74429, where we didn't think that a type parameter
-// outlived `ReEmpty`.
-
-// check-pass
-
-use std::marker::PhantomData;
-use std::ptr::NonNull;
-
-pub unsafe trait RawData {
-    type Elem;
-}
-
-unsafe impl<A> RawData for OwnedRepr<A> {
-    type Elem = A;
-}
-
-unsafe impl<'a, A> RawData for ViewRepr<&'a A> {
-    type Elem = A;
-}
-
-pub struct OwnedRepr<A> {
-    ptr: PhantomData<A>,
-}
-
-// these Copy impls are not necessary for the repro, but allow the code to compile without error
-// on 1.44.1
-#[derive(Copy, Clone)]
-pub struct ViewRepr<A> {
-    life: PhantomData<A>,
-}
-
-#[derive(Copy, Clone)]
-pub struct ArrayBase<S>
-where
-    S: RawData,
-{
-    ptr: NonNull<S::Elem>,
-}
-
-pub type Array<A> = ArrayBase<OwnedRepr<A>>;
-
-pub type ArrayView<'a, A> = ArrayBase<ViewRepr<&'a A>>;
-
-impl<A, S> ArrayBase<S>
-where
-    S: RawData<Elem = A>,
-{
-    pub fn index_axis(&self) -> ArrayView<'_, A> {
-        unimplemented!()
-    }
-
-    pub fn axis_iter<'a>(&'a self) -> std::iter::Empty<&'a A> {
-        unimplemented!()
-    }
-}
-
-pub fn x<T: Copy>(a: Array<T>) {
-    // drop just avoids a must_use warning
-    drop((0..1).filter(|_| true));
-    let y = a.index_axis();
-    a.axis_iter().for_each(|_| {
-        drop(y);
-    });
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/type-param-outlives-reempty-issue-74429.rs b/src/test/ui/regions/type-param-outlives-reempty-issue-74429.rs
deleted file mode 100644
index d463f311c34..00000000000
--- a/src/test/ui/regions/type-param-outlives-reempty-issue-74429.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// Regression test for #74429, where we didn't think that a type parameter
-// outlived `ReEmpty`.
-
-// check-pass
-
-use std::marker::PhantomData;
-
-fn apply<T, F: FnOnce(T)>(_: T, _: F) {}
-
-#[derive(Clone, Copy)]
-struct Invariant<T> {
-    t: T,
-    p: PhantomData<fn(T) -> T>,
-}
-
-fn verify_reempty<T>(x: T) {
-    // r is inferred to have type `Invariant<&ReEmpty(U0) T>`
-    let r = Invariant { t: &x, p: PhantomData };
-    // Creates a new universe, all variables from now on are in `U1`, say.
-    let _: fn(&()) = |_| {};
-    // Closure parameter is of type `&ReEmpty(U1) T`, so the closure has an implied
-    // bound of `T: ReEmpty(U1)`
-    apply(&x, |_| {
-        // Requires `typeof(r)` is well-formed, i.e. `T: ReEmpty(U0)`. If we
-        // only have the implied bound from the closure parameter to use this
-        // requires `ReEmpty(U1): ReEmpty(U0)`, which isn't true so we reported
-        // an error.
-        //
-        // This doesn't happen any more because we ensure that `T: ReEmpty(U0)`
-        // is an implicit bound for all type parameters.
-        drop(r);
-    });
-}
-
-fn main() {}
diff --git a/src/test/ui/regions/wf-bound-region-in-object-type.rs b/src/test/ui/regions/wf-bound-region-in-object-type.rs
deleted file mode 100644
index 7c4dd3ec84f..00000000000
--- a/src/test/ui/regions/wf-bound-region-in-object-type.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// run-pass
-
-#![allow(dead_code)]
-#![allow(unused_variables)]
-// Test that the `wf` checker properly handles bound regions in object
-// types. Compiling this code used to trigger an ICE.
-
-// pretty-expanded FIXME #23616
-
-pub struct Context<'tcx> {
-    vec: &'tcx Vec<isize>
-}
-
-pub type Cmd<'a> = &'a isize;
-
-pub type DecodeInlinedItem<'a> =
-    Box<dyn for<'tcx> FnMut(Cmd, &Context<'tcx>) -> Result<&'tcx isize, ()> + 'a>;
-
-fn foo(d: DecodeInlinedItem) {
-}
-
-fn main() { }