]> git.lizzy.rs Git - rust.git/commitdiff
Auto merge of #55134 - davidtwco:issue-55118, r=pnkfelix
authorbors <bors@rust-lang.org>
Wed, 17 Oct 2018 23:16:10 +0000 (23:16 +0000)
committerbors <bors@rust-lang.org>
Wed, 17 Oct 2018 23:16:10 +0000 (23:16 +0000)
NLL: change compare-mode=nll to use borrowck=migrate

Fixes #55118.

This PR is split into two parts:

The first commit is a minor change that fixes a flaw in the existing `borrowck=migrate` implementation whereby a lint that was promoted to an error in the AST borrow checker would result in the same lint from the NLL borrow checker being downgraded to a warning in migrate mode. This PR fixes this by ensuring lints are exempt from buffering in the NLL borrow checker.

The second commit updates `compiletest` to make the NLL compare mode use `-Z borrowck=migrate` rather than `-Z borrowck=mir`. The third commit shows all the test output changes that result from this.

r? @pnkfelix

206 files changed:
src/librustc_mir/borrow_check/mod.rs
src/test/ui/access-mode-in-closures.nll.stderr
src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.nll.stderr [deleted file]
src/test/ui/associated-types/associated-types-subtyping-1.nll.stderr [deleted file]
src/test/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.nll.stderr [deleted file]
src/test/ui/associated-types/cache/project-fn-ret-contravariant.transmute.nll.stderr [deleted file]
src/test/ui/associated-types/cache/project-fn-ret-invariant.krisskross.nll.stderr [deleted file]
src/test/ui/associated-types/cache/project-fn-ret-invariant.oneuse.nll.stderr [deleted file]
src/test/ui/associated-types/cache/project-fn-ret-invariant.transmute.nll.stderr [deleted file]
src/test/ui/binop/binop-move-semantics.nll.stderr
src/test/ui/borrowck/borrowck-closures-unique.nll.stderr
src/test/ui/borrowck/borrowck-describe-lvalue.ast.nll.stderr
src/test/ui/borrowck/borrowck-fn-in-const-a.ast.nll.stderr [new file with mode: 0644]
src/test/ui/borrowck/borrowck-for-loop-correct-cmt-for-pattern.nll.stderr
src/test/ui/borrowck/borrowck-in-static.nll.stderr
src/test/ui/borrowck/borrowck-issue-2657-2.nll.stderr
src/test/ui/borrowck/borrowck-move-error-with-note.nll.stderr
src/test/ui/borrowck/borrowck-move-from-unsafe-ptr.nll.stderr
src/test/ui/borrowck/borrowck-move-in-irrefut-pat.ast.nll.stderr
src/test/ui/borrowck/borrowck-move-out-of-overloaded-auto-deref.ast.nll.stderr
src/test/ui/borrowck/borrowck-move-out-of-overloaded-deref.nll.stderr
src/test/ui/borrowck/borrowck-move-out-of-static-item.ast.nll.stderr [new file with mode: 0644]
src/test/ui/borrowck/borrowck-move-out-of-vec-tail.nll.stderr
src/test/ui/borrowck/borrowck-overloaded-index-move-from-vec.nll.stderr
src/test/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.nll.stderr [deleted file]
src/test/ui/borrowck/issue-51415.nll.stderr
src/test/ui/borrowck/issue-7573.nll.stderr [deleted file]
src/test/ui/borrowck/move-in-static-initializer-issue-38520.ast.nll.stderr [new file with mode: 0644]
src/test/ui/borrowck/mutability-errors.nll.stderr
src/test/ui/borrowck/regions-escape-bound-fn-2.nll.stderr [deleted file]
src/test/ui/borrowck/regions-escape-bound-fn.nll.stderr [deleted file]
src/test/ui/borrowck/regions-escape-unboxed-closure.nll.stderr [deleted file]
src/test/ui/borrowck/unboxed-closures-move-upvar-from-non-once-ref-closure.nll.stderr
src/test/ui/by-move-pattern-binding.nll.stderr
src/test/ui/check-static-values-constraints.nll.stderr
src/test/ui/closure-expected-type/expect-fn-supply-fn.nll.stderr [deleted file]
src/test/ui/closures/closure-bounds-static-cant-capture-borrowed.nll.stderr [deleted file]
src/test/ui/closures/closure-expected-type/expect-region-supply-region.nll.stderr [deleted file]
src/test/ui/consts/min_const_fn/min_const_fn.nll.stderr
src/test/ui/consts/min_const_fn/min_const_fn_dyn.nll.stderr
src/test/ui/dst/dst-index.nll.stderr
src/test/ui/dst/dst-rvalue.nll.stderr
src/test/ui/error-codes/E0507.nll.stderr [new file with mode: 0644]
src/test/ui/error-codes/E0621-does-not-trigger-for-closures.nll.stderr [deleted file]
src/test/ui/existential_types/generic_type_does_not_live_long_enough.nll.stderr [deleted file]
src/test/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.nll.stderr [deleted file]
src/test/ui/hr-subtype/hr-subtype.free_x_vs_free_y.nll.stderr [deleted file]
src/test/ui/impl-header-lifetime-elision/dyn-trait.nll.stderr [deleted file]
src/test/ui/impl-trait/must_outlive_least_region_or_bound.nll.stderr [deleted file]
src/test/ui/impl-trait/static-return-lifetime-infered.nll.stderr [deleted file]
src/test/ui/impl-trait/type_parameters_captured.nll.stderr [deleted file]
src/test/ui/in-band-lifetimes/mismatched.nll.stderr [deleted file]
src/test/ui/issues/issue-10291.nll.stderr [deleted file]
src/test/ui/issues/issue-12567.nll.stderr
src/test/ui/issues/issue-13058.nll.stderr [deleted file]
src/test/ui/issues/issue-15034.nll.stderr [deleted file]
src/test/ui/issues/issue-16683.nll.stderr [deleted file]
src/test/ui/issues/issue-17718-static-move.nll.stderr
src/test/ui/issues/issue-17728.nll.stderr [deleted file]
src/test/ui/issues/issue-17758.nll.stderr [deleted file]
src/test/ui/issues/issue-20801.nll.stderr
src/test/ui/issues/issue-2590.nll.stderr
src/test/ui/issues/issue-26217.nll.stderr [deleted file]
src/test/ui/issues/issue-30355.nll.stderr
src/test/ui/issues/issue-40288-2.nll.stderr [deleted file]
src/test/ui/issues/issue-40402-ref-hints/issue-40402-1.nll.stderr
src/test/ui/issues/issue-40402-ref-hints/issue-40402-2.nll.stderr
src/test/ui/issues/issue-40510-1.nll.stderr
src/test/ui/issues/issue-40510-3.nll.stderr
src/test/ui/issues/issue-4335.nll.stderr
src/test/ui/issues/issue-49824.nll.stderr
src/test/ui/issues/issue-52213.nll.stderr [deleted file]
src/test/ui/issues/issue-52533-1.nll.stderr [deleted file]
src/test/ui/issues/issue-52533.nll.stderr [deleted file]
src/test/ui/kindck/kindck-impl-type-params.nll.stderr [deleted file]
src/test/ui/kindck/kindck-send-object1.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-bound-will-change-warning.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.nll.stderr [deleted file]
src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.nll.stderr [deleted file]
src/test/ui/lub-if.nll.stderr [deleted file]
src/test/ui/lub-match.nll.stderr [deleted file]
src/test/ui/match/match-ref-mut-invariance.nll.stderr [deleted file]
src/test/ui/match/match-ref-mut-let-invariance.nll.stderr [deleted file]
src/test/ui/moves/moves-based-on-type-block-bad.nll.stderr
src/test/ui/moves/moves-based-on-type-move-out-of-closure-env-issue-1965.nll.stderr
src/test/ui/nll/cannot-move-block-spans.nll.stderr
src/test/ui/nll/match-guards-always-borrow.ast.nll.stderr
src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.nll.stderr [deleted file]
src/test/ui/object-lifetime/object-lifetime-default-elision.nll.stderr [deleted file]
src/test/ui/object-lifetime/object-lifetime-default-from-box-error.nll.stderr [deleted file]
src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.nll.stderr [deleted file]
src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.nll.stderr [deleted file]
src/test/ui/object-lifetime/object-lifetime-default-mybox.nll.stderr [deleted file]
src/test/ui/regions/region-invariant-static-error-reporting.nll.stderr [deleted file]
src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.nll.stderr [deleted file]
src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.nll.stderr [deleted file]
src/test/ui/regions/region-object-lifetime-2.nll.stderr [deleted file]
src/test/ui/regions/region-object-lifetime-4.nll.stderr [deleted file]
src/test/ui/regions/region-object-lifetime-in-coercion.nll.stderr [deleted file]
src/test/ui/regions/regions-addr-of-self.nll.stderr [deleted file]
src/test/ui/regions/regions-addr-of-upvar-self.nll.stderr [deleted file]
src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.nll.stderr [deleted file]
src/test/ui/regions/regions-bounded-by-trait-requiring-static.nll.stderr [deleted file]
src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.nll.stderr [deleted file]
src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.nll.stderr [deleted file]
src/test/ui/regions/regions-bounded-method-type-parameters.nll.stderr [deleted file]
src/test/ui/regions/regions-bounds.nll.stderr [deleted file]
src/test/ui/regions/regions-close-associated-type-into-object.nll.stderr [deleted file]
src/test/ui/regions/regions-close-object-into-object-2.nll.stderr [deleted file]
src/test/ui/regions/regions-close-object-into-object-4.nll.stderr [deleted file]
src/test/ui/regions/regions-close-object-into-object-5.nll.stderr [deleted file]
src/test/ui/regions/regions-close-over-type-parameter-1.nll.stderr [deleted file]
src/test/ui/regions/regions-close-over-type-parameter-multiple.nll.stderr [deleted file]
src/test/ui/regions/regions-close-param-into-object.nll.stderr [deleted file]
src/test/ui/regions/regions-creating-enums3.nll.stderr [deleted file]
src/test/ui/regions/regions-creating-enums4.nll.stderr [deleted file]
src/test/ui/regions/regions-early-bound-error-method.nll.stderr [deleted file]
src/test/ui/regions/regions-early-bound-error.nll.stderr [deleted file]
src/test/ui/regions/regions-escape-method.nll.stderr [deleted file]
src/test/ui/regions/regions-escape-via-trait-or-not.nll.stderr [deleted file]
src/test/ui/regions/regions-free-region-ordering-callee.nll.stderr [deleted file]
src/test/ui/regions/regions-free-region-ordering-caller.nll.stderr [deleted file]
src/test/ui/regions/regions-free-region-ordering-incorrect.nll.stderr [deleted file]
src/test/ui/regions/regions-implied-bounds-projection-gap-1.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-bound-from-trait-self.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-bound-from-trait.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-call-3.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-contravariance-due-to-decl.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-covariance-due-to-decl.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-invariance-due-to-decl.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-not-param.nll.stderr [deleted file]
src/test/ui/regions/regions-infer-paramd-indirect.nll.stderr [deleted file]
src/test/ui/regions/regions-lifetime-bounds-on-fns.nll.stderr [deleted file]
src/test/ui/regions/regions-nested-fns.nll.stderr [deleted file]
src/test/ui/regions/regions-outlives-projection-container-hrtb.nll.stderr [deleted file]
src/test/ui/regions/regions-outlives-projection-container-wc.nll.stderr [deleted file]
src/test/ui/regions/regions-outlives-projection-container.nll.stderr [deleted file]
src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.nll.stderr [deleted file]
src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.nll.stderr [deleted file]
src/test/ui/regions/regions-ret-borrowed-1.nll.stderr [deleted file]
src/test/ui/regions/regions-ret-borrowed.nll.stderr [deleted file]
src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.nll.stderr [deleted file]
src/test/ui/regions/regions-static-bound.ll.nll.stderr [deleted file]
src/test/ui/regions/regions-trait-object-subtyping.nll.stderr [deleted file]
src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.nll.stderr [deleted file]
src/test/ui/regions/regions-variance-contravariant-use-covariant.nll.stderr [deleted file]
src/test/ui/regions/regions-variance-covariant-use-contravariant.nll.stderr [deleted file]
src/test/ui/regions/regions-variance-invariant-use-contravariant.nll.stderr [deleted file]
src/test/ui/regions/regions-variance-invariant-use-covariant.nll.stderr [deleted file]
src/test/ui/static/static-items-cant-move.nll.stderr [new file with mode: 0644]
src/test/ui/std-uncopyable-atomics.nll.stderr
src/test/ui/thread-local-in-ctfe.nll.stderr
src/test/ui/trivial-bounds/trivial-bounds-leak-copy.nll.stderr [new file with mode: 0644]
src/test/ui/unboxed-closures/unboxed-closure-illegal-move.nll.stderr
src/test/ui/unboxed-closures/unboxed-closure-immutable-capture.nll.stderr
src/test/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.nll.stderr [deleted file]
src/test/ui/unboxed-closures/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.nll.stderr
src/test/ui/unboxed-closures/unboxed-closures-mutate-upvar.nll.stderr
src/test/ui/underscore-lifetime/dyn-trait-underscore.nll.stderr [deleted file]
src/test/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.nll.stderr [deleted file]
src/test/ui/unop-move-semantics.nll.stderr
src/test/ui/variance/variance-btree-invariant-types.nll.stderr [deleted file]
src/test/ui/variance/variance-cell-is-invariant.nll.stderr [deleted file]
src/test/ui/variance/variance-contravariant-arg-object.nll.stderr [deleted file]
src/test/ui/variance/variance-contravariant-arg-trait-match.nll.stderr [deleted file]
src/test/ui/variance/variance-contravariant-self-trait-match.nll.stderr [deleted file]
src/test/ui/variance/variance-covariant-arg-object.nll.stderr [deleted file]
src/test/ui/variance/variance-covariant-arg-trait-match.nll.stderr [deleted file]
src/test/ui/variance/variance-covariant-self-trait-match.nll.stderr [deleted file]
src/test/ui/variance/variance-invariant-arg-object.nll.stderr [deleted file]
src/test/ui/variance/variance-invariant-arg-trait-match.nll.stderr [deleted file]
src/test/ui/variance/variance-invariant-self-trait-match.nll.stderr [deleted file]
src/test/ui/variance/variance-trait-matching.nll.stderr [deleted file]
src/test/ui/variance/variance-use-contravariant-struct-1.nll.stderr [deleted file]
src/test/ui/variance/variance-use-covariant-struct-1.nll.stderr [deleted file]
src/test/ui/variance/variance-use-invariant-struct-1.nll.stderr [deleted file]
src/test/ui/wf/wf-static-method.nll.stderr [deleted file]
src/tools/compiletest/src/runtest.rs

index 1f8d077fb69045119859b56ad1e5dc032b85f49f..98663270882af031482153f10840b5e83cf28b17 100644 (file)
@@ -320,20 +320,20 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>(
                 continue;
             }
 
-            let mut err = tcx.struct_span_lint_node(
+            let mut_span = tcx.sess.source_map().span_until_non_whitespace(span);
+            tcx.struct_span_lint_node(
                 UNUSED_MUT,
                 vsi[local_decl.source_info.scope].lint_root,
                 span,
                 "variable does not need to be mutable",
-            );
-            let mut_span = tcx.sess.source_map().span_until_non_whitespace(span);
-            err.span_suggestion_short_with_applicability(
+            )
+            .span_suggestion_short_with_applicability(
                 mut_span,
                 "remove this `mut`",
                 String::new(),
-                Applicability::MachineApplicable);
-
-            err.buffer(&mut mbcx.errors_buffer);
+                Applicability::MachineApplicable,
+            )
+            .emit();
         }
     }
 
index b9de60f43f703f72c82096ffa92e995bea3c211d..3366f0639caa5cadfe22e00ad1f276c29affa313 100644 (file)
@@ -13,6 +13,18 @@ note: move occurs because `v` has type `std::vec::Vec<isize>`, which does not im
 LL |         match *s { sty(v) => v } //~ ERROR cannot move out
    |                        ^
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `s.0` which is behind a `&` reference
+  --> $DIR/access-mode-in-closures.rs:19:24
+   |
+LL |     let _foo = unpack(|s| {
+   |                        - help: consider changing this to be a mutable reference: `&mut sty`
+LL |         // Test that `s` is moved here.
+LL |         match *s { sty(v) => v } //~ ERROR cannot move out
+   |                        ^
+   |                        |
+   |                        cannot move out of `s.0` which is behind a `&` reference
+   |                        `s` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.nll.stderr b/src/test/ui/associated-types/associated-types-project-from-hrtb-in-fn-body.nll.stderr
deleted file mode 100644 (file)
index 674d85d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/associated-types-project-from-hrtb-in-fn-body.rs:32:29
-   |
-LL | fn bar<'a, 'b, I : for<'x> Foo<&'x isize>>(
-   |        --  -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-...
-LL |     let z: I::A = if cond { x } else { y };
-   |                             ^ assignment requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/associated-types-project-from-hrtb-in-fn-body.rs:32:40
-   |
-LL | fn bar<'a, 'b, I : for<'x> Foo<&'x isize>>(
-   |        --  -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-...
-LL |     let z: I::A = if cond { x } else { y };
-   |                                        ^ assignment requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/associated-types/associated-types-subtyping-1.nll.stderr b/src/test/ui/associated-types/associated-types-subtyping-1.nll.stderr
deleted file mode 100644 (file)
index 1156c77..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/associated-types-subtyping-1.rs:36:13
-   |
-LL | fn method2<'a,'b,T>(x: &'a T, y: &'b T)
-   |            -- -- lifetime `'b` defined here
-   |            |
-   |            lifetime `'a` defined here
-...
-LL |     let _c: <T as Trait<'b>>::Type = a; //~ ERROR E0623
-   |             ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/associated-types-subtyping-1.rs:44:12
-   |
-LL | fn method3<'a,'b,T>(x: &'a T, y: &'b T)
-   |            -- -- lifetime `'b` defined here
-   |            |
-   |            lifetime `'a` defined here
-...
-LL |     let b: <T as Trait<'b>>::Type = make_any();
-   |            ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.nll.stderr b/src/test/ui/associated-types/cache/project-fn-ret-contravariant.krisskross.nll.stderr
deleted file mode 100644 (file)
index 044a3f7..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-contravariant.rs:55:4
-   |
-LL | fn transmute<'a,'b>(x: &'a u32, y: &'b u32) -> (&'a u32, &'b u32) {
-   |              -- -- lifetime `'b` defined here
-   |              |
-   |              lifetime `'a` defined here
-...
-LL |    (a, b) //[krisskross]~ ERROR 55:5: 55:6: lifetime mismatch [E0623]
-   |    ^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-contravariant.rs:55:4
-   |
-LL | fn transmute<'a,'b>(x: &'a u32, y: &'b u32) -> (&'a u32, &'b u32) {
-   |              -- -- lifetime `'b` defined here
-   |              |
-   |              lifetime `'a` defined here
-...
-LL |    (a, b) //[krisskross]~ ERROR 55:5: 55:6: lifetime mismatch [E0623]
-   |    ^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/associated-types/cache/project-fn-ret-contravariant.transmute.nll.stderr b/src/test/ui/associated-types/cache/project-fn-ret-contravariant.transmute.nll.stderr
deleted file mode 100644 (file)
index 10f70b5..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-contravariant.rs:48:4
-   |
-LL | fn baz<'a,'b>(x: &'a u32) -> &'static u32 {
-   |        -- lifetime `'a` defined here
-LL |    bar(foo, x) //[transmute]~ ERROR E0495
-   |    ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-contravariant.rs:48:4
-   |
-LL | fn baz<'a,'b>(x: &'a u32) -> &'static u32 {
-   |        -- -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-LL |    bar(foo, x) //[transmute]~ ERROR E0495
-   |    ^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/associated-types/cache/project-fn-ret-invariant.krisskross.nll.stderr b/src/test/ui/associated-types/cache/project-fn-ret-invariant.krisskross.nll.stderr
deleted file mode 100644 (file)
index 1cb6878..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-invariant.rs:65:4
-   |
-LL | fn transmute<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
-   |              -- -- lifetime `'b` defined here
-   |              |
-   |              lifetime `'a` defined here
-...
-LL |    (a, b) //[krisskross]~ ERROR E0623
-   |    ^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-invariant.rs:65:4
-   |
-LL | fn transmute<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
-   |              -- -- lifetime `'b` defined here
-   |              |
-   |              lifetime `'a` defined here
-...
-LL |    (a, b) //[krisskross]~ ERROR E0623
-   |    ^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/associated-types/cache/project-fn-ret-invariant.oneuse.nll.stderr b/src/test/ui/associated-types/cache/project-fn-ret-invariant.oneuse.nll.stderr
deleted file mode 100644 (file)
index a9c2bb3..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-invariant.rs:48:12
-   |
-LL | fn baz<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
-   |        -- -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-LL |    let f = foo; // <-- No consistent type can be inferred for `f` here.
-LL |    let a = bar(f, x);
-   |            ^^^^^^^^^ argument requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-invariant.rs:49:12
-   |
-LL | fn baz<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
-   |        -- -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-...
-LL |    let b = bar(f, y); //[oneuse]~ ERROR 49:19: 49:20: lifetime mismatch [E0623]
-   |            ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/associated-types/cache/project-fn-ret-invariant.transmute.nll.stderr b/src/test/ui/associated-types/cache/project-fn-ret-invariant.transmute.nll.stderr
deleted file mode 100644 (file)
index 2329adb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-invariant.rs:58:4
-   |
-LL | fn baz<'a,'b>(x: Type<'a>) -> Type<'static> {
-   |        -- lifetime `'a` defined here
-...
-LL |    bar(foo, x) //[transmute]~ ERROR E0495
-   |    ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/project-fn-ret-invariant.rs:58:4
-   |
-LL | fn baz<'a,'b>(x: Type<'a>) -> Type<'static> {
-   |        -- -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-...
-LL |    bar(foo, x) //[transmute]~ ERROR E0495
-   |    ^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to 2 previous errors
-
index 545a60f6770d9471d24ffd0230fc4c8c0de8c17a..94676f0e5ad77e0f76ac6a702d6dbbbdd1565312 100644 (file)
@@ -32,6 +32,18 @@ error[E0507]: cannot move out of borrowed content
 LL |     *n;  //~ ERROR: cannot move out of borrowed content
    |     ^^ cannot move out of borrowed content
 
+error[E0507]: cannot move out of `*n` which is behind a `&` reference
+  --> $DIR/binop-move-semantics.rs:42:5
+   |
+LL |     let n = &y;
+   |             -- help: consider changing this to be a mutable reference: `&mut y`
+...
+LL |     *n;  //~ ERROR: cannot move out of borrowed content
+   |     ^^
+   |     |
+   |     cannot move out of `*n` which is behind a `&` reference
+   |     `n` is a `&` reference, so the data it refers to cannot be moved
+
 error[E0502]: cannot borrow `f` as immutable because it is also borrowed as mutable
   --> $DIR/binop-move-semantics.rs:64:5
    |
@@ -62,7 +74,7 @@ LL | |     &mut f;  //~ ERROR: cannot borrow `f` as mutable because it is also b
    |       |    immutable borrow later used here
    |       mutable borrow occurs here
 
-error: aborting due to 6 previous errors
+error: aborting due to 7 previous errors
 
 Some errors occurred: E0382, E0502, E0507.
 For more information about an error, try `rustc --explain E0382`.
index 231ae53fe82bf97484dfbf112c1372e557d6b38a..771ef88a662b1ebfcc3af54028f5032b0874d6af 100644 (file)
@@ -40,15 +40,19 @@ LL |     let c2 = || set(x); //~ ERROR two closures require unique access to `x`
 LL |     c1;
    |     -- first borrow later used here
 
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
   --> $DIR/borrowck-closures-unique.rs:57:38
    |
 LL | fn e(x: &'static mut isize) {
    |      - help: consider changing this to be mutable: `mut x`
 LL |     let c1 = |y: &'static mut isize| x = y; //~ ERROR closure cannot assign to immutable argument
    |                                      ^^^^^ cannot assign
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error: aborting due to 4 previous errors
+error: aborting due to 3 previous errors
 
 Some errors occurred: E0500, E0524, E0594.
 For more information about an error, try `rustc --explain E0500`.
index 5721c52ba217287063d75333f8032ff8ae8567e0..88ae73b6368e7162d3ce9aa58ef1bad2e2503804 100644 (file)
@@ -20,7 +20,7 @@ LL |                    //[mir]~^ ERROR cannot borrow `x` as mutable more than o
 LL |                    *y = 1;
    |                    ------ first borrow later used here
 
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
   --> $DIR/borrowck-describe-lvalue.rs:305:16
    |
 LL |              || {
@@ -36,6 +36,9 @@ LL | |                 }
    |
    = 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
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error[E0503]: cannot use `f.x` because it was mutably borrowed
   --> $DIR/borrowck-describe-lvalue.rs:53:9
@@ -339,7 +342,7 @@ LL |             &[_, F {x: ref xf, ..}] => println!("{}", xf),
 LL |         drop(x);
    |              - mutable borrow later used here
 
-error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
+warning[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:245:29
    |
 LL |             let x = &mut block;
@@ -349,8 +352,12 @@ LL |             let p: &'a u8 = &*block.current;
 ...
 LL |             drop(x);
    |                  - mutable borrow later used here
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
+warning[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:260:33
    |
 LL |             let x = &mut block;
@@ -360,6 +367,10 @@ LL |             let p : *const u8 = &*(*block).current;
 ...
 LL |             drop(x);
    |                  - mutable borrow later used here
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error[E0382]: use of moved value: `x`
   --> $DIR/borrowck-describe-lvalue.rs:318:22
@@ -371,7 +382,7 @@ LL |                 drop(x); //[ast]~ ERROR use of moved value: `x`
    |
    = note: move occurs because `x` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
 
-error: aborting due to 32 previous errors
+error: aborting due to 29 previous errors
 
 Some errors occurred: E0382, E0499, E0502, E0503.
 For more information about an error, try `rustc --explain E0382`.
diff --git a/src/test/ui/borrowck/borrowck-fn-in-const-a.ast.nll.stderr b/src/test/ui/borrowck/borrowck-fn-in-const-a.ast.nll.stderr
new file mode 100644 (file)
index 0000000..b171a48
--- /dev/null
@@ -0,0 +1,20 @@
+error[E0507]: cannot move out of borrowed content
+  --> $DIR/borrowck-fn-in-const-a.rs:19:16
+   |
+LL |         return *x //[ast]~ ERROR cannot move out of borrowed content [E0507]
+   |                ^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of `*x` which is behind a `&` reference
+  --> $DIR/borrowck-fn-in-const-a.rs:19:16
+   |
+LL |     fn broken(x: &String) -> String {
+   |                  ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL |         return *x //[ast]~ ERROR cannot move out of borrowed content [E0507]
+   |                ^^
+   |                |
+   |                cannot move out of `*x` which is behind a `&` reference
+   |                `x` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
index 25eb69ad9377dfe21b260a35ad50463847956d75..0ab3d3ea5cdfea15c158258e48501d7fcb9860c7 100644 (file)
@@ -1,3 +1,13 @@
+error[E0507]: cannot move out of `*__next` which is behind a `&` reference
+  --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:22:10
+   |
+LL |     for &a in x.iter() {    //~ ERROR cannot move out
+   |         -^
+   |         ||
+   |         |cannot move out of `*__next` which is behind a `&` reference
+   |         |`__next` is a `&` reference, so the data it refers to cannot be moved
+   |         help: consider changing this to be a mutable reference: `&mut a`
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:22:15
    |
@@ -13,6 +23,16 @@ note: move occurs because `a` has type `&mut i32`, which does not implement the
 LL |     for &a in x.iter() {    //~ ERROR cannot move out
    |          ^
 
+error[E0507]: cannot move out of `*__next` which is behind a `&` reference
+  --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:28:10
+   |
+LL |     for &a in &f.a {  //~ ERROR cannot move out
+   |         -^
+   |         ||
+   |         |cannot move out of `*__next` which is behind a `&` reference
+   |         |`__next` is a `&` reference, so the data it refers to cannot be moved
+   |         help: consider changing this to be a mutable reference: `&mut a`
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:28:15
    |
@@ -28,6 +48,16 @@ note: move occurs because `a` has type `std::boxed::Box<isize>`, which does not
 LL |     for &a in &f.a {  //~ ERROR cannot move out
    |          ^
 
+error[E0507]: cannot move out of `*__next` which is behind a `&` reference
+  --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:32:10
+   |
+LL |     for &a in x.iter() {    //~ ERROR cannot move out
+   |         -^
+   |         ||
+   |         |cannot move out of `*__next` which is behind a `&` reference
+   |         |`__next` is a `&` reference, so the data it refers to cannot be moved
+   |         help: consider changing this to be a mutable reference: `&mut a`
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:32:15
    |
@@ -43,6 +73,6 @@ note: move occurs because `a` has type `std::boxed::Box<i32>`, which does not im
 LL |     for &a in x.iter() {    //~ ERROR cannot move out
    |          ^
 
-error: aborting due to 3 previous errors
+error: aborting due to 6 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 45fa1764f7027230af918979f7648d00e8a418cb..ba42dc2436377c3792f917f890c39e9ea9c8f43c 100644 (file)
@@ -6,6 +6,21 @@ LL |     let x = Box::new(0);
 LL |     Box::new(|| x) //~ ERROR cannot move out of captured outer variable
    |                 ^ cannot move out of captured variable in an `Fn` closure
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `x`, as it is a captured variable in a `Fn` closure
+  --> $DIR/borrowck-in-static.rs:15:17
+   |
+LL |     Box::new(|| x) //~ ERROR cannot move out of captured outer variable
+   |                 ^
+   |                 |
+   |                 cannot move out of `x`, as it is a captured variable in a `Fn` closure
+   |                 cannot move
+   |
+help: consider changing this to accept closures that implement `FnMut`
+  --> $DIR/borrowck-in-static.rs:15:14
+   |
+LL |     Box::new(|| x) //~ ERROR cannot move out of captured outer variable
+   |              ^^^^
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index cdbfab8bd054a1903c2d53ce953bc577d7f9faeb..0445a75d61a9daccd504a45e061d9b685cd022e2 100644 (file)
@@ -7,6 +7,17 @@ LL |         let _b = *y; //~ ERROR cannot move out
    |                  cannot move out of borrowed content
    |                  help: consider removing the `*`: `y`
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `*y` which is behind a `&` reference
+  --> $DIR/borrowck-issue-2657-2.rs:17:18
+   |
+LL |       Some(ref y) => {
+   |            ----- help: consider changing this to be a mutable reference: `ref mut y`
+LL |         let _b = *y; //~ ERROR cannot move out
+   |                  ^^
+   |                  |
+   |                  cannot move out of `*y` which is behind a `&` reference
+   |                  `y` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 2df520a936c9d4a9975563d5eb6221917fda2853..99f69515a473210c326fbecd5b78c74fb2bd89db 100644 (file)
@@ -24,6 +24,42 @@ LL |                   num2) => (),
 LL |         Foo::Foo2(num) => (),
    |                   ^^^
 
+error[E0507]: cannot move out of `f.0` which is behind a `&` reference
+  --> $DIR/borrowck-move-error-with-note.rs:23:19
+   |
+LL |     let f = &Foo::Foo1(box 1, box 2);
+   |             ------------------------ help: consider changing this to be a mutable reference: `&mut Foo::Foo1(box 1, box 2)`
+...
+LL |         Foo::Foo1(num1,
+   |                   ^^^^
+   |                   |
+   |                   cannot move out of `f.0` which is behind a `&` reference
+   |                   `f` is a `&` reference, so the data it refers to cannot be moved
+
+error[E0507]: cannot move out of `f.1` which is behind a `&` reference
+  --> $DIR/borrowck-move-error-with-note.rs:24:19
+   |
+LL |     let f = &Foo::Foo1(box 1, box 2);
+   |             ------------------------ help: consider changing this to be a mutable reference: `&mut Foo::Foo1(box 1, box 2)`
+...
+LL |                   num2) => (),
+   |                   ^^^^
+   |                   |
+   |                   cannot move out of `f.1` which is behind a `&` reference
+   |                   `f` is a `&` reference, so the data it refers to cannot be moved
+
+error[E0507]: cannot move out of `f.0` which is behind a `&` reference
+  --> $DIR/borrowck-move-error-with-note.rs:25:19
+   |
+LL |     let f = &Foo::Foo1(box 1, box 2);
+   |             ------------------------ help: consider changing this to be a mutable reference: `&mut Foo::Foo1(box 1, box 2)`
+...
+LL |         Foo::Foo2(num) => (),
+   |                   ^^^
+   |                   |
+   |                   cannot move out of `f.0` which is behind a `&` reference
+   |                   `f` is a `&` reference, so the data it refers to cannot be moved
+
 error[E0509]: cannot move out of type `S`, which implements the `Drop` trait
   --> $DIR/borrowck-move-error-with-note.rs:39:11
    |
@@ -61,7 +97,19 @@ note: move occurs because `n` has type `std::boxed::Box<isize>`, which does not
 LL |         n => {
    |         ^
 
-error: aborting due to 3 previous errors
+error[E0507]: cannot move out of `a.a` which is behind a `&` reference
+  --> $DIR/borrowck-move-error-with-note.rs:59:9
+   |
+LL |     let a = &A { a: box 1 };
+   |             --------------- help: consider changing this to be a mutable reference: `&mut A { a: box 1 }`
+...
+LL |         n => {
+   |         ^
+   |         |
+   |         cannot move out of `a.a` which is behind a `&` reference
+   |         `a` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 7 previous errors
 
 Some errors occurred: E0507, E0509.
 For more information about an error, try `rustc --explain E0507`.
index c3a2180b9f082e062f9afab0ede465a7511ac8f3..83c5b82957deaf85738174d3342fb31a68430c59 100644 (file)
@@ -7,6 +7,17 @@ LL |     let y = *x; //~ ERROR cannot move out of dereference of raw pointer
    |             cannot move out of dereference of raw pointer
    |             help: consider removing the `*`: `x`
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `*x` which is behind a `*const` pointer
+  --> $DIR/borrowck-move-from-unsafe-ptr.rs:13:13
+   |
+LL | unsafe fn foo(x: *const Box<isize>) -> Box<isize> {
+   |                  ----------------- help: consider changing this to be a mutable pointer: `*mut std::boxed::Box<isize>`
+LL |     let y = *x; //~ ERROR cannot move out of dereference of raw pointer
+   |             ^^
+   |             |
+   |             cannot move out of `*x` which is behind a `*const` pointer
+   |             `x` is a `*const` pointer, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 49c2ec0dcf4e7c996e77b3f918f482664288f74f..f22aca9994986846585b8b30d3244e6b04df796d 100644 (file)
@@ -14,6 +14,15 @@ note: move occurs because `_x` has type `std::string::String`, which does not im
 LL | fn arg_item(&_x: &String) {}
    |              ^^
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/borrowck-move-in-irrefut-pat.rs:16:14
+   |
+LL | fn arg_item(&_x: &String) {}
+   |              ^^
+   |              |
+   |              cannot move out of data in a `&` reference
+   |              cannot move
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/borrowck-move-in-irrefut-pat.rs:21:11
    |
@@ -30,6 +39,24 @@ note: move occurs because `_x` has type `std::string::String`, which does not im
 LL |     with(|&_x| ())
    |            ^^
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/borrowck-move-in-irrefut-pat.rs:21:12
+   |
+LL |     with(|&_x| ())
+   |            ^^
+   |            |
+   |            cannot move out of data in a `&` reference
+   |            cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/borrowck-move-in-irrefut-pat.rs:27:10
+   |
+LL |     let &_x = &"hi".to_string();
+   |          ^^
+   |          |
+   |          cannot move out of data in a `&` reference
+   |          cannot move
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/borrowck-move-in-irrefut-pat.rs:27:15
    |
@@ -45,6 +72,6 @@ note: move occurs because `_x` has type `std::string::String`, which does not im
 LL |     let &_x = &"hi".to_string();
    |          ^^
 
-error: aborting due to 3 previous errors
+error: aborting due to 6 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index d58beabb3038af551493e03d3d7a35312c100b9f..ba74cd2514e1a244d84191c517ab4f681b80f959 100644 (file)
@@ -4,6 +4,15 @@ error[E0507]: cannot move out of an `Rc`
 LL |     let _x = Rc::new(vec![1, 2]).into_iter();
    |              ^^^^^^^^^^^^^^^^^^^ cannot move out of an `Rc`
 
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/borrowck-move-out-of-overloaded-auto-deref.rs:17:14
+   |
+LL |     let _x = Rc::new(vec![1, 2]).into_iter();
+   |              ^^^^^^^^^^^^^^^^^^^
+   |              |
+   |              cannot move out of data in a `&` reference
+   |              cannot move
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index c9c8cf104ce2e769fa4aa36749ce6b14f9c1894f..205044bb368851166a9d571ad260566b62d9908a 100644 (file)
@@ -7,6 +7,15 @@ LL |     let _x = *Rc::new("hi".to_string());
    |              cannot move out of an `Rc`
    |              help: consider removing the `*`: `Rc::new("hi".to_string())`
 
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/borrowck-move-out-of-overloaded-deref.rs:14:14
+   |
+LL |     let _x = *Rc::new("hi".to_string());
+   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |              |
+   |              cannot move out of data in a `&` reference
+   |              cannot move
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/borrowck/borrowck-move-out-of-static-item.ast.nll.stderr b/src/test/ui/borrowck/borrowck-move-out-of-static-item.ast.nll.stderr
new file mode 100644 (file)
index 0000000..675458d
--- /dev/null
@@ -0,0 +1,18 @@
+error[E0507]: cannot move out of static item
+  --> $DIR/borrowck-move-out-of-static-item.rs:28:10
+   |
+LL |     test(BAR); //[ast]~ ERROR cannot move out of static item [E0507]
+   |          ^^^ cannot move out of static item
+
+error[E0507]: cannot move out of immutable static item `BAR`
+  --> $DIR/borrowck-move-out-of-static-item.rs:28:10
+   |
+LL |     test(BAR); //[ast]~ ERROR cannot move out of static item [E0507]
+   |          ^^^
+   |          |
+   |          cannot move out of immutable static item `BAR`
+   |          cannot move
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
index f3430ba4e06c9038310a8f087594447e8b89dbce..dea42c53992b19bdabae96a6dd490d9f88c06a41 100644 (file)
@@ -26,6 +26,31 @@ LL |                 //~| to prevent move
 LL |                   Foo { string: b }] => {
    |
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `tail[..].string` which is behind a `&` reference
+  --> $DIR/borrowck-move-out-of-vec-tail.rs:30:33
+   |
+LL |         [_, ref tail..] => {
+   |             -------- help: consider changing this to be a mutable reference: `ref mut tail`
+LL |             match tail {
+LL |                 &[Foo { string: a },
+   |                                 ^
+   |                                 |
+   |                                 cannot move out of `tail[..].string` which is behind a `&` reference
+   |                                 `tail` is a `&` reference, so the data it refers to cannot be moved
+
+error[E0507]: cannot move out of `tail[..].string` which is behind a `&` reference
+  --> $DIR/borrowck-move-out-of-vec-tail.rs:34:33
+   |
+LL |         [_, ref tail..] => {
+   |             -------- help: consider changing this to be a mutable reference: `ref mut tail`
+...
+LL |                   Foo { string: b }] => {
+   |                                 ^
+   |                                 |
+   |                                 cannot move out of `tail[..].string` which is behind a `&` reference
+   |                                 `tail` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0508`.
+Some errors occurred: E0507, E0508.
+For more information about an error, try `rustc --explain E0507`.
index 92e10c258c269efbd9cca6855d1dcd0e351bf573..05fd6d71520c76c52a2b7b4c9839faa8fe8cd310 100644 (file)
@@ -7,6 +7,15 @@ LL |     let bad = v[0];
    |               cannot move out of borrowed content
    |               help: consider borrowing here: `&v[0]`
 
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/borrowck-overloaded-index-move-from-vec.rs:30:15
+   |
+LL |     let bad = v[0];
+   |               ^^^^
+   |               |
+   |               cannot move out of data in a `&` reference
+   |               cannot move
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.nll.stderr b/src/test/ui/borrowck/borrowck-reborrow-from-shorter-lived-andmut.nll.stderr
deleted file mode 100644 (file)
index e3211f8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/borrowck-reborrow-from-shorter-lived-andmut.rs:19:5
-   |
-LL | fn copy_borrowed_ptr<'a,'b>(p: &'a mut S<'b>) -> S<'b> {
-   |                      -- -- lifetime `'b` defined here
-   |                      |
-   |                      lifetime `'a` defined here
-LL |     S { pointer: &mut *p.pointer }
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
index d4340938eebc14880e7b4409021344c26f733c86..ee7e3e71962e8b38784b6e22332c2a1f5161370b 100644 (file)
@@ -13,6 +13,15 @@ note: move occurs because `s` has type `std::string::String`, which does not imp
 LL |     let opt = a.iter().enumerate().find(|(_, &s)| {
    |                                               ^
 
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-51415.rs:16:47
+   |
+LL |     let opt = a.iter().enumerate().find(|(_, &s)| {
+   |                                               ^
+   |                                               |
+   |                                               cannot move out of data in a `&` reference
+   |                                               cannot move
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/borrowck/issue-7573.nll.stderr b/src/test/ui/borrowck/issue-7573.nll.stderr
deleted file mode 100644 (file)
index 372df61..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-error: borrowed data escapes outside of closure
-  --> $DIR/issue-7573.rs:32:9
-   |
-LL |     let mut lines_to_use: Vec<&CrateId> = Vec::new();
-   |         ---------------- `lines_to_use` is declared here, outside of the closure body
-LL |         //~^ NOTE cannot infer an appropriate lifetime
-LL |     let push_id = |installed_id: &CrateId| {
-   |                    ------------ `installed_id` is a reference that is only valid in the closure body
-...
-LL |         lines_to_use.push(installed_id);
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `installed_id` escapes the closure body here
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/borrowck/move-in-static-initializer-issue-38520.ast.nll.stderr b/src/test/ui/borrowck/move-in-static-initializer-issue-38520.ast.nll.stderr
new file mode 100644 (file)
index 0000000..d25fc75
--- /dev/null
@@ -0,0 +1,33 @@
+error[E0507]: cannot move out of borrowed content
+  --> $DIR/move-in-static-initializer-issue-38520.rs:25:23
+   |
+LL | static Y: usize = get(*&X); //[ast]~ ERROR E0507
+   |                       ^^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/move-in-static-initializer-issue-38520.rs:25:23
+   |
+LL | static Y: usize = get(*&X); //[ast]~ ERROR E0507
+   |                       ^^^
+   |                       |
+   |                       cannot move out of data in a `&` reference
+   |                       cannot move
+
+error[E0507]: cannot move out of borrowed content
+  --> $DIR/move-in-static-initializer-issue-38520.rs:27:22
+   |
+LL | const Z: usize = get(*&X); //[ast]~ ERROR E0507
+   |                      ^^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/move-in-static-initializer-issue-38520.rs:27:22
+   |
+LL | const Z: usize = get(*&X); //[ast]~ ERROR E0507
+   |                      ^^^
+   |                      |
+   |                      cannot move out of data in a `&` reference
+   |                      cannot move
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
index 14c41bb81b2c65594af40320298f4e157a95e47b..bb45fe2da81174d5605bb85e3f81ef64346ff471 100644 (file)
@@ -277,7 +277,7 @@ LL |     &mut x; //~ ERROR
 LL |     &mut x.0; //~ ERROR
    |     ^^^^^^^^ cannot borrow as mutable
 
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
   --> $DIR/mutability-errors.rs:70:9
    |
 LL | fn imm_capture(x: (i32,)) {
@@ -285,8 +285,12 @@ LL | fn imm_capture(x: (i32,)) {
 LL |     || { //~ ERROR
 LL |         x = (1,);
    |         ^^^^^^^^ cannot assign
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error[E0594]: cannot assign to `x.0`, as `x` is not declared as mutable
+warning[E0594]: cannot assign to `x.0`, as `x` is not declared as mutable
   --> $DIR/mutability-errors.rs:71:9
    |
 LL | fn imm_capture(x: (i32,)) {
@@ -294,8 +298,12 @@ LL | fn imm_capture(x: (i32,)) {
 ...
 LL |         x.0 = 1;
    |         ^^^^^^^ cannot assign
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
   --> $DIR/mutability-errors.rs:72:9
    |
 LL | fn imm_capture(x: (i32,)) {
@@ -303,8 +311,12 @@ LL | fn imm_capture(x: (i32,)) {
 ...
 LL |         &mut x;
    |         ^^^^^^ cannot borrow as mutable
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error[E0596]: cannot borrow `x.0` as mutable, as `x` is not declared as mutable
+warning[E0596]: cannot borrow `x.0` as mutable, as `x` is not declared as mutable
   --> $DIR/mutability-errors.rs:73:9
    |
 LL | fn imm_capture(x: (i32,)) {
@@ -312,6 +324,10 @@ LL | fn imm_capture(x: (i32,)) {
 ...
 LL |         &mut x.0;
    |         ^^^^^^^^ cannot borrow as mutable
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error[E0594]: cannot assign to `x`, as it is not declared as mutable
   --> $DIR/mutability-errors.rs:76:9
@@ -373,7 +389,7 @@ error[E0596]: cannot borrow `X.0` as mutable, as `X` is an immutable static item
 LL |     &mut X.0; //~ ERROR
    |     ^^^^^^^^ cannot borrow as mutable
 
-error: aborting due to 38 previous errors
+error: aborting due to 34 previous errors
 
 Some errors occurred: E0594, E0596.
 For more information about an error, try `rustc --explain E0594`.
diff --git a/src/test/ui/borrowck/regions-escape-bound-fn-2.nll.stderr b/src/test/ui/borrowck/regions-escape-bound-fn-2.nll.stderr
deleted file mode 100644 (file)
index 787fc4d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: borrowed data escapes outside of closure
-  --> $DIR/regions-escape-bound-fn-2.rs:18:18
-   |
-LL |     let mut x = None;
-   |         ----- `x` is declared here, outside of the closure body
-LL |     with_int(|y| x = Some(y));
-   |               -  ^^^^^^^^^^^ `y` escapes the closure body here
-   |               |
-   |               `y` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/borrowck/regions-escape-bound-fn.nll.stderr b/src/test/ui/borrowck/regions-escape-bound-fn.nll.stderr
deleted file mode 100644 (file)
index 91f1f00..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: borrowed data escapes outside of closure
-  --> $DIR/regions-escape-bound-fn.rs:18:18
-   |
-LL |     let mut x: Option<&isize> = None;
-   |         ----- `x` is declared here, outside of the closure body
-LL |     with_int(|y| x = Some(y));
-   |               -  ^^^^^^^^^^^ `y` escapes the closure body here
-   |               |
-   |               `y` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/borrowck/regions-escape-unboxed-closure.nll.stderr b/src/test/ui/borrowck/regions-escape-unboxed-closure.nll.stderr
deleted file mode 100644 (file)
index 44e7018..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: borrowed data escapes outside of closure
-  --> $DIR/regions-escape-unboxed-closure.rs:16:23
-   |
-LL |     let mut x: Option<&isize> = None;
-   |         ----- `x` is declared here, outside of the closure body
-LL |     with_int(&mut |y| x = Some(y));
-   |                    -  ^^^^^^^^^^^ `y` escapes the closure body here
-   |                    |
-   |                    `y` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
index 0eb5fc8c324356ad358fa2438ac9bb1c992834a0..0844ac32b8b60a37edf562e5e167c22b23e3a31f 100644 (file)
@@ -7,6 +7,25 @@ LL |     call(|| {
 LL |         y.into_iter();
    |         ^ cannot move out of captured variable in an `Fn` closure
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `y`, as it is a captured variable in a `Fn` closure
+  --> $DIR/unboxed-closures-move-upvar-from-non-once-ref-closure.rs:21:9
+   |
+LL |         y.into_iter();
+   |         ^
+   |         |
+   |         cannot move out of `y`, as it is a captured variable in a `Fn` closure
+   |         cannot move
+   |
+help: consider changing this to accept closures that implement `FnMut`
+  --> $DIR/unboxed-closures-move-upvar-from-non-once-ref-closure.rs:20:10
+   |
+LL |       call(|| {
+   |  __________^
+LL | |         y.into_iter();
+LL | |         //~^ ERROR cannot move out of captured outer variable in an `Fn` closure
+LL | |     });
+   | |_____^
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 491b5b5bd74abef53a40f7b6d0e963f9c0683bd5..40987958115895deb46cf043e85040f6516de69d 100644 (file)
@@ -16,6 +16,15 @@ note: move occurs because `identifier` has type `std::string::String`, which doe
 LL |         &E::Bar(identifier) => f(identifier.clone())  //~ ERROR cannot move
    |                 ^^^^^^^^^^
 
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/by-move-pattern-binding.rs:26:17
+   |
+LL |         &E::Bar(identifier) => f(identifier.clone())  //~ ERROR cannot move
+   |                 ^^^^^^^^^^
+   |                 |
+   |                 cannot move out of data in a `&` reference
+   |                 cannot move
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 5522e22fb1fa28089a33a6c8851a39b7b52cf70a..576322ff5c1953d2087d5d88f19bdb19b9c20574 100644 (file)
@@ -58,13 +58,22 @@ LL |     let y = { static x: Box<isize> = box 3; x };
    |                                             cannot move out of static item
    |                                             help: consider borrowing here: `&x`
 
+error[E0507]: cannot move out of immutable static item `x`
+  --> $DIR/check-static-values-constraints.rs:120:45
+   |
+LL |     let y = { static x: Box<isize> = box 3; x };
+   |                                             ^
+   |                                             |
+   |                                             cannot move out of immutable static item `x`
+   |                                             cannot move
+
 error[E0010]: allocations are not allowed in statics
   --> $DIR/check-static-values-constraints.rs:120:38
    |
 LL |     let y = { static x: Box<isize> = box 3; x };
    |                                      ^^^^^ allocation not allowed in statics
 
-error: aborting due to 10 previous errors
+error: aborting due to 11 previous errors
 
 Some errors occurred: E0010, E0015, E0493, E0507.
 For more information about an error, try `rustc --explain E0010`.
diff --git a/src/test/ui/closure-expected-type/expect-fn-supply-fn.nll.stderr b/src/test/ui/closure-expected-type/expect-fn-supply-fn.nll.stderr
deleted file mode 100644 (file)
index ae3e3a2..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-error[E0631]: type mismatch in closure arguments
-  --> $DIR/expect-fn-supply-fn.rs:40:5
-   |
-LL |     with_closure_expecting_fn_with_free_region(|x: fn(&u32), y| {});
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------- found signature of `fn(for<'r> fn(&'r u32), _) -> _`
-   |     |
-   |     expected signature of `for<'a, 'r> fn(fn(&'a u32), &'r i32) -> _`
-   |
-note: required by `with_closure_expecting_fn_with_free_region`
-  --> $DIR/expect-fn-supply-fn.rs:11:1
-   |
-LL | / fn with_closure_expecting_fn_with_free_region<F>(_: F)
-LL | |     where F: for<'a> FnOnce(fn(&'a u32), &i32)
-LL | | {
-LL | | }
-   | |_^
-
-error[E0631]: type mismatch in closure arguments
-  --> $DIR/expect-fn-supply-fn.rs:47:5
-   |
-LL |     with_closure_expecting_fn_with_bound_region(|x: fn(&'x u32), y| {});
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------- found signature of `fn(fn(&'x u32), _) -> _`
-   |     |
-   |     expected signature of `for<'r> fn(for<'s> fn(&'s u32), &'r i32) -> _`
-   |
-note: required by `with_closure_expecting_fn_with_bound_region`
-  --> $DIR/expect-fn-supply-fn.rs:16:1
-   |
-LL | / fn with_closure_expecting_fn_with_bound_region<F>(_: F)
-LL | |     where F: FnOnce(fn(&u32), &i32)
-LL | | {
-LL | | }
-   | |_^
-
-error[E0631]: type mismatch in closure arguments
-  --> $DIR/expect-fn-supply-fn.rs:56:5
-   |
-LL |     with_closure_expecting_fn_with_bound_region(|_x: Foo<'_>, y| {});
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------- found signature of `for<'r> fn(fn(&'r u32), _) -> _`
-   |     |
-   |     expected signature of `for<'r> fn(for<'s> fn(&'s u32), &'r i32) -> _`
-   |
-note: required by `with_closure_expecting_fn_with_bound_region`
-  --> $DIR/expect-fn-supply-fn.rs:16:1
-   |
-LL | / fn with_closure_expecting_fn_with_bound_region<F>(_: F)
-LL | |     where F: FnOnce(fn(&u32), &i32)
-LL | | {
-LL | | }
-   | |_^
-
-error: aborting due to 3 previous errors
-
-For more information about this error, try `rustc --explain E0631`.
diff --git a/src/test/ui/closures/closure-bounds-static-cant-capture-borrowed.nll.stderr b/src/test/ui/closures/closure-bounds-static-cant-capture-borrowed.nll.stderr
deleted file mode 100644 (file)
index 4bc5034..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `x`
-  --> $DIR/closure-bounds-static-cant-capture-borrowed.rs:15:5
-   |
-LL |   fn foo(x: &()) {
-   |             --- help: add explicit lifetime `'static` to the type of `x`: `&'static ()`
-LL | /     bar(|| {
-LL | |         //~^ ERROR explicit lifetime required in the type of `x` [E0621]
-LL | |         let _ = x;
-LL | |     })
-   | |______^ lifetime `'static` required
-
-error[E0597]: `x` does not live long enough
-  --> $DIR/closure-bounds-static-cant-capture-borrowed.rs:17:17
-   |
-LL |     bar(|| {
-   |         -- value captured here
-LL |         //~^ ERROR explicit lifetime required in the type of `x` [E0621]
-LL |         let _ = x;
-   |                 ^ borrowed value does not live long enough
-LL |     })
-LL | }
-   | - `x` dropped here while still borrowed
-   |
-   = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 2 previous errors
-
-Some errors occurred: E0597, E0621.
-For more information about an error, try `rustc --explain E0597`.
diff --git a/src/test/ui/closures/closure-expected-type/expect-region-supply-region.nll.stderr b/src/test/ui/closures/closure-expected-type/expect-region-supply-region.nll.stderr
deleted file mode 100644 (file)
index 7f842c4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-error: borrowed data escapes outside of closure
-  --> $DIR/expect-region-supply-region.rs:28:9
-   |
-LL |     let mut f: Option<&u32> = None;
-   |         ----- `f` is declared here, outside of the closure body
-LL |     closure_expecting_bound(|x| {
-   |                              - `x` is a reference that is only valid in the closure body
-LL |         f = Some(x); //~ ERROR borrowed data cannot be stored outside of its closure
-   |         ^^^^^^^^^^^ `x` escapes the closure body here
-
-error: borrowed data escapes outside of closure
-  --> $DIR/expect-region-supply-region.rs:38:9
-   |
-LL |     let mut f: Option<&u32> = None;
-   |         ----- `f` is declared here, outside of the closure body
-LL |     closure_expecting_bound(|x: &u32| {
-   |                              - `x` is a reference that is only valid in the closure body
-LL |         f = Some(x); //~ ERROR borrowed data cannot be stored outside of its closure
-   |         ^^^^^^^^^^^ `x` escapes the closure body here
-
-error: borrowed data escapes outside of closure
-  --> $DIR/expect-region-supply-region.rs:52:9
-   |
-LL |     let mut f: Option<&u32> = None;
-   |         ----- `f` is declared here, outside of the closure body
-...
-LL |     closure_expecting_bound(|x: &'x u32| {
-   |                              - `x` is a reference that is only valid in the closure body
-...
-LL |         f = Some(x);
-   |         ^^^^^^^^^^^ `x` escapes the closure body here
-
-error: aborting due to 3 previous errors
-
index a03c5168367db8874d283267fe0d16e4164bbca6..38937904f47d6f402454d863fbd8f8b1e6666aef 100644 (file)
@@ -190,7 +190,7 @@ error: trait bounds other than `Sized` on const fn parameters are unstable
 LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error[E0716]: temporary value dropped while borrowed
+warning[E0716]: temporary value dropped while borrowed
   --> $DIR/min_const_fn.rs:142:64
    |
 LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
@@ -199,6 +199,9 @@ LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
    |                                                                creates a temporary which is freed while still in use
    |
    = note: borrowed value must be valid for the static lifetime...
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error: trait bounds other than `Sized` on const fn parameters are unstable
   --> $DIR/min_const_fn.rs:147:41
@@ -218,7 +221,7 @@ error: function pointers in const fn are unstable
 LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo }
    |                           ^^^^
 
-error: aborting due to 36 previous errors
+error: aborting due to 35 previous errors
 
 Some errors occurred: E0493, E0716.
 For more information about an error, try `rustc --explain E0493`.
index 5d071a0fe24057f7330b7def8adf09483211df88..a1d40cbfd46ad335f0a66069d9438cd9b45050e6 100644 (file)
@@ -10,7 +10,7 @@ error: trait bounds other than `Sized` on const fn parameters are unstable
 LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
    |                                                                  ^^
 
-error[E0716]: temporary value dropped while borrowed
+warning[E0716]: temporary value dropped while borrowed
   --> $DIR/min_const_fn_dyn.rs:22:67
    |
 LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
@@ -19,7 +19,10 @@ LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
    |                                                                   creates a temporary which is freed while still in use
    |
    = note: borrowed value must be valid for the static lifetime...
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0716`.
index 0aa85d3ed7a3d36f248e6d25c10b99f68c55adbd..d14760b707db2875b2a50e6b0391265912bfa661 100644 (file)
@@ -16,13 +16,31 @@ error[E0507]: cannot move out of borrowed content
 LL |     S[0];
    |     ^^^^ cannot move out of borrowed content
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/dst-index.rs:41:5
+   |
+LL |     S[0];
+   |     ^^^^
+   |     |
+   |     cannot move out of data in a `&` reference
+   |     cannot move
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/dst-index.rs:44:5
    |
 LL |     T[0];
    |     ^^^^ cannot move out of borrowed content
 
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/dst-index.rs:44:5
+   |
+LL |     T[0];
+   |     ^^^^
+   |     |
+   |     cannot move out of data in a `&` reference
+   |     cannot move
+
+error: aborting due to 6 previous errors
 
 Some errors occurred: E0161, E0507.
 For more information about an error, try `rustc --explain E0161`.
index b120da773a24a3448d80882dfaf46fa498d4be5d..537ece48e012c63eb9983500b0a6ac3f83b73dcc 100644 (file)
@@ -16,13 +16,33 @@ error[E0507]: cannot move out of borrowed content
 LL |     let _x: Box<str> = box *"hello world";
    |                            ^^^^^^^^^^^^^^ cannot move out of borrowed content
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/dst-rvalue.rs:16:28
+   |
+LL |     let _x: Box<str> = box *"hello world";
+   |                            ^^^^^^^^^^^^^^
+   |                            |
+   |                            cannot move out of data in a `&` reference
+   |                            cannot move
+
 error[E0508]: cannot move out of type `[isize]`, a non-copy slice
   --> $DIR/dst-rvalue.rs:21:32
    |
 LL |     let _x: Box<[isize]> = box *array;
    |                                ^^^^^^ cannot move out of here
 
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of `*array` which is behind a `&` reference
+  --> $DIR/dst-rvalue.rs:21:32
+   |
+LL |     let array: &[isize] = &[1, 2, 3];
+   |                           ---------- help: consider changing this to be a mutable reference: `&mut [1, 2, 3]`
+LL |     let _x: Box<[isize]> = box *array;
+   |                                ^^^^^^
+   |                                |
+   |                                cannot move out of `*array` which is behind a `&` reference
+   |                                `array` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 6 previous errors
 
 Some errors occurred: E0161, E0507, E0508.
 For more information about an error, try `rustc --explain E0161`.
diff --git a/src/test/ui/error-codes/E0507.nll.stderr b/src/test/ui/error-codes/E0507.nll.stderr
new file mode 100644 (file)
index 0000000..43795e5
--- /dev/null
@@ -0,0 +1,18 @@
+error[E0507]: cannot move out of borrowed content
+  --> $DIR/E0507.rs:22:5
+   |
+LL |     x.borrow().nothing_is_true(); //~ ERROR E0507
+   |     ^^^^^^^^^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/E0507.rs:22:5
+   |
+LL |     x.borrow().nothing_is_true(); //~ ERROR E0507
+   |     ^^^^^^^^^^
+   |     |
+   |     cannot move out of data in a `&` reference
+   |     cannot move
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/error-codes/E0621-does-not-trigger-for-closures.nll.stderr b/src/test/ui/error-codes/E0621-does-not-trigger-for-closures.nll.stderr
deleted file mode 100644 (file)
index 6500838..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/E0621-does-not-trigger-for-closures.rs:25:45
-   |
-LL |     invoke(&x, |a, b| if a > b { a } else { b }); //~ ERROR E0495
-   |                    --                       ^ 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/existential_types/generic_type_does_not_live_long_enough.nll.stderr b/src/test/ui/existential_types/generic_type_does_not_live_long_enough.nll.stderr
deleted file mode 100644 (file)
index 471eda4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/generic_type_does_not_live_long_enough.rs:16:18
-   |
-LL |     let z: i32 = x; //~ ERROR mismatched types
-   |                  ^ expected i32, found opaque type
-   |
-   = note: expected type `i32`
-              found type `WrongGeneric::<&{integer}>`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.nll.stderr b/src/test/ui/hr-subtype/hr-subtype.free_inv_x_vs_free_inv_y.nll.stderr
deleted file mode 100644 (file)
index cadb552..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/hr-subtype.rs:43:13
-   |
-LL |           fn subtype<'x,'y:'x,'z:'y>() {
-   |                      -- -- lifetime `'y` defined here
-   |                      |
-   |                      lifetime `'x` defined here
-LL |               gimme::<$t2>(None::<$t1>);
-   |               ^^^^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'x` must outlive `'y`
-...
-LL | / check! { free_inv_x_vs_free_inv_y: (fn(Inv<'x>),
-LL | |                                     fn(Inv<'y>)) }
-   | |__________________________________________________- in this macro invocation
-
-error: unsatisfied lifetime constraints
-  --> $DIR/hr-subtype.rs:49:13
-   |
-LL |           fn supertype<'x,'y:'x,'z:'y>() {
-   |                        -- -- lifetime `'y` defined here
-   |                        |
-   |                        lifetime `'x` defined here
-LL |               gimme::<$t1>(None::<$t2>);
-   |               ^^^^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'x` must outlive `'y`
-...
-LL | / check! { free_inv_x_vs_free_inv_y: (fn(Inv<'x>),
-LL | |                                     fn(Inv<'y>)) }
-   | |__________________________________________________- in this macro invocation
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/hr-subtype/hr-subtype.free_x_vs_free_y.nll.stderr b/src/test/ui/hr-subtype/hr-subtype.free_x_vs_free_y.nll.stderr
deleted file mode 100644 (file)
index c1bcd14..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/hr-subtype.rs:49:13
-   |
-LL |           fn supertype<'x,'y:'x,'z:'y>() {
-   |                        -- -- lifetime `'y` defined here
-   |                        |
-   |                        lifetime `'x` defined here
-LL |               gimme::<$t1>(None::<$t2>);
-   |               ^^^^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'x` must outlive `'y`
-...
-LL | / check! { free_x_vs_free_y: (fn(&'x u32),
-LL | |                             fn(&'y u32)) }
-   | |__________________________________________- in this macro invocation
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/impl-header-lifetime-elision/dyn-trait.nll.stderr b/src/test/ui/impl-header-lifetime-elision/dyn-trait.nll.stderr
deleted file mode 100644 (file)
index 45ee808..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: borrowed data escapes outside of function
-  --> $DIR/dyn-trait.rs:32:5
-   |
-LL | fn with_dyn_debug_static<'a>(x: Box<dyn Debug + 'a>) {
-   |                              - `x` is a reference that is only valid in the function body
-LL |     static_val(x); //~ ERROR cannot infer
-   |     ^^^^^^^^^^^^^ `x` escapes the function body here
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/impl-trait/must_outlive_least_region_or_bound.nll.stderr b/src/test/ui/impl-trait/must_outlive_least_region_or_bound.nll.stderr
deleted file mode 100644 (file)
index 485d356..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `x`
-  --> $DIR/must_outlive_least_region_or_bound.rs:13:35
-   |
-LL | fn elided(x: &i32) -> impl Copy { x }
-   |              ----                 ^ lifetime `'static` required
-   |              |
-   |              help: add explicit lifetime `'static` to the type of `x`: `&'static i32`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/must_outlive_least_region_or_bound.rs:16:44
-   |
-LL | fn explicit<'a>(x: &'a i32) -> impl Copy { x }
-   |             -- lifetime `'a` defined here  ^ returning this value requires that `'a` must outlive `'static`
-help: to allow this impl Trait to capture borrowed data with lifetime `'a`, add `'a` as a constraint
-   |
-LL | fn explicit<'a>(x: &'a i32) -> impl Copy + 'a { x }
-   |                                ^^^^^^^^^^^^^^
-
-error: unsatisfied lifetime constraints
-  --> $DIR/must_outlive_least_region_or_bound.rs:22:69
-   |
-LL | fn with_bound<'a>(x: &'a i32) -> impl LifetimeTrait<'a> + 'static { x }
-   |               -- lifetime `'a` defined here                         ^ returning this value requires that `'a` must outlive `'static`
-   |
-   = help: consider replacing `'a` with `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/must_outlive_least_region_or_bound.rs:29:5
-   |
-LL | fn move_lifetime_into_fn<'a, 'b>(x: &'a u32, y: &'b u32) -> impl Fn(&'a u32) {
-   |                          --  -- lifetime `'b` defined here
-   |                          |
-   |                          lifetime `'a` defined here
-LL |     //~^ ERROR lifetime mismatch
-LL |     move |_| println!("{}", y)
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/must_outlive_least_region_or_bound.rs:32:51
-   |
-LL | fn ty_param_wont_outlive_static<T:Debug>(x: T) -> impl Debug + 'static {
-   |                                                   ^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error: aborting due to 5 previous errors
-
-Some errors occurred: E0310, E0621.
-For more information about an error, try `rustc --explain E0310`.
diff --git a/src/test/ui/impl-trait/static-return-lifetime-infered.nll.stderr b/src/test/ui/impl-trait/static-return-lifetime-infered.nll.stderr
deleted file mode 100644 (file)
index 7e9aa90..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/static-return-lifetime-infered.rs:17:9
-   |
-LL |     fn iter_values_anon(&self) -> impl Iterator<Item=u32> {
-   |                         - let's call the lifetime of this reference `'1`
-LL |         self.x.iter().map(|a| a.0)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static`
-help: to allow this impl Trait to capture borrowed data with lifetime `'1`, add `'_` as a constraint
-   |
-LL |     fn iter_values_anon(&self) -> impl Iterator<Item=u32> + '_ {
-   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: unsatisfied lifetime constraints
-  --> $DIR/static-return-lifetime-infered.rs:21:9
-   |
-LL |     fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> {
-   |                    -- lifetime `'a` defined here
-LL |         self.x.iter().map(|a| a.0)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-help: to allow this impl Trait to capture borrowed data with lifetime `'a`, add `'a` as a constraint
-   |
-LL |     fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> + 'a {
-   |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/impl-trait/type_parameters_captured.nll.stderr b/src/test/ui/impl-trait/type_parameters_captured.nll.stderr
deleted file mode 100644 (file)
index 18258ef..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/type_parameters_captured.rs:17:20
-   |
-LL | fn foo<T>(x: T) -> impl Any + 'static {
-   |                    ^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0310`.
diff --git a/src/test/ui/in-band-lifetimes/mismatched.nll.stderr b/src/test/ui/in-band-lifetimes/mismatched.nll.stderr
deleted file mode 100644 (file)
index c8b2f84..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `y`
-  --> $DIR/mismatched.rs:14:42
-   |
-LL | fn foo(x: &'a u32, y: &u32) -> &'a u32 { y } //~ ERROR explicit lifetime required
-   |                       ----               ^ lifetime `'a` required
-   |                       |
-   |                       help: add explicit lifetime `'a` to the type of `y`: `&'a u32`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/mismatched.rs:16:46
-   |
-LL | fn foo2(x: &'a u32, y: &'b u32) -> &'a u32 { y } //~ ERROR lifetime mismatch
-   |             --          --                   ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-   |             |           |
-   |             |           lifetime `'b` defined here
-   |             lifetime `'a` defined here
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/issues/issue-10291.nll.stderr b/src/test/ui/issues/issue-10291.nll.stderr
deleted file mode 100644 (file)
index a213366..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/issue-10291.rs:13:9
-   |
-LL | fn test<'x>(x: &'x isize) {
-   |         -- lifetime `'x` defined here
-LL |     drop::<Box<for<'z> FnMut(&'z isize) -> &'z isize>>(Box::new(|z| {
-LL |         x //~ ERROR E0312
-   |         ^ returning this value requires that `'x` must outlive `'static`
-
-error: aborting due to previous error
-
index 72d21d47d86fa765985da974e0b8b2664837d7fa..bb844c4a69f22096775807aff91292c82f34764f 100644 (file)
@@ -40,6 +40,43 @@ LL |         (&[], &[hd, ..]) | (&[hd, ..], &[])
 LL |         (&[hd1, ..], &[hd2, ..])
    |            ^^^
 
-error: aborting due to 2 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-12567.rs:16:17
+   |
+LL |         (&[], &[hd, ..]) | (&[hd, ..], &[])
+   |                 ^^
+   |                 |
+   |                 cannot move out of data in a `&` reference
+   |                 cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-12567.rs:16:31
+   |
+LL |         (&[], &[hd, ..]) | (&[hd, ..], &[])
+   |                               ^^
+   |                               |
+   |                               cannot move out of data in a `&` reference
+   |                               cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-12567.rs:20:12
+   |
+LL |         (&[hd1, ..], &[hd2, ..])
+   |            ^^^
+   |            |
+   |            cannot move out of data in a `&` reference
+   |            cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-12567.rs:20:24
+   |
+LL |         (&[hd1, ..], &[hd2, ..])
+   |                        ^^^
+   |                        |
+   |                        cannot move out of data in a `&` reference
+   |                        cannot move
+
+error: aborting due to 6 previous errors
 
-For more information about this error, try `rustc --explain E0508`.
+Some errors occurred: E0507, E0508.
+For more information about an error, try `rustc --explain E0507`.
diff --git a/src/test/ui/issues/issue-13058.nll.stderr b/src/test/ui/issues/issue-13058.nll.stderr
deleted file mode 100644 (file)
index 0d641ec..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `cont`
-  --> $DIR/issue-13058.rs:24:21
-   |
-LL | fn check<'r, I: Iterator<Item=usize>, T: Itble<'r, usize, I>>(cont: &T) -> bool
-   |                                                                     -- help: add explicit lifetime `'r` to the type of `cont`: `&'r T`
-LL | {
-LL |     let cont_iter = cont.iter();
-   |                     ^^^^^^^^^^^ lifetime `'r` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/issues/issue-15034.nll.stderr b/src/test/ui/issues/issue-15034.nll.stderr
deleted file mode 100644 (file)
index aa5ceab..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `lexer`
-  --> $DIR/issue-15034.rs:27:9
-   |
-LL |     pub fn new(lexer: &'a mut Lexer) -> Parser<'a> {
-   |                       ------------- help: add explicit lifetime `'a` to the type of `lexer`: `&'a mut Lexer<'a>`
-LL |         Parser { lexer: lexer }
-   |         ^^^^^^^^^^^^^^^^^^^^^^^ 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/issues/issue-16683.nll.stderr b/src/test/ui/issues/issue-16683.nll.stderr
deleted file mode 100644 (file)
index 29d9948..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: borrowed data escapes outside of function
-  --> $DIR/issue-16683.rs:14:9
-   |
-LL |     fn b(&self) {
-   |          ----- `self` is a reference that is only valid in the function body
-LL |         self.a(); //~ ERROR cannot infer
-   |         ^^^^^^^^ `self` escapes the function body here
-
-error: aborting due to previous error
-
index f8da3c3d5989eceb45282da4c0f45502ba96354c..66fba7749f4791544665507456c64fc834beb17a 100644 (file)
@@ -7,6 +7,15 @@ LL |     let _a = FOO; //~ ERROR: cannot move out of static item
    |              cannot move out of static item
    |              help: consider borrowing here: `&FOO`
 
-error: aborting due to previous error
+error[E0507]: cannot move out of immutable static item `FOO`
+  --> $DIR/issue-17718-static-move.rs:16:14
+   |
+LL |     let _a = FOO; //~ ERROR: cannot move out of static item
+   |              ^^^
+   |              |
+   |              cannot move out of immutable static item `FOO`
+   |              cannot move
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/issues/issue-17728.nll.stderr b/src/test/ui/issues/issue-17728.nll.stderr
deleted file mode 100644 (file)
index 2cb6f83..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0308]: match arms have incompatible types
-  --> $DIR/issue-17728.rs:110:5
-   |
-LL | /     match to_parse { //~ ERROR match arms have incompatible types
-LL | |         "w" | "west" => RoomDirection::West,
-LL | |         "e" | "east" => RoomDirection::East,
-LL | |         "n" | "north" => RoomDirection::North,
-...  |
-LL | |         _ => None
-   | |              ---- match arm with an incompatible type
-LL | |     }
-   | |_____^ expected enum `RoomDirection`, found enum `std::option::Option`
-   |
-   = note: expected type `RoomDirection`
-              found type `std::option::Option<_>`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/issues/issue-17758.nll.stderr b/src/test/ui/issues/issue-17758.nll.stderr
deleted file mode 100644 (file)
index 87e01ac..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: borrowed data escapes outside of function
-  --> $DIR/issue-17758.rs:17:9
-   |
-LL |     fn bar(&self) {
-   |            ----- `self` is a reference that is only valid in the function body
-LL |         self.foo();
-   |         ^^^^^^^^^^ `self` escapes the function body here
-
-error: aborting due to previous error
-
index 362778b26c861911d2624046c87cd15c65d575ea..60e3056b8c4d4a15af495563f838ba8a2a895bcc 100644 (file)
@@ -16,6 +16,15 @@ LL |     let b = unsafe { *imm_ref() };
    |                      cannot move out of borrowed content
    |                      help: consider removing the `*`: `imm_ref()`
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-20801.rs:39:22
+   |
+LL |     let b = unsafe { *imm_ref() };
+   |                      ^^^^^^^^^^
+   |                      |
+   |                      cannot move out of data in a `&` reference
+   |                      cannot move
+
 error[E0507]: cannot move out of dereference of raw pointer
   --> $DIR/issue-20801.rs:42:22
    |
@@ -34,6 +43,15 @@ LL |     let d = unsafe { *const_ptr() };
    |                      cannot move out of dereference of raw pointer
    |                      help: consider removing the `*`: `const_ptr()`
 
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of data in a `*const` pointer
+  --> $DIR/issue-20801.rs:45:22
+   |
+LL |     let d = unsafe { *const_ptr() };
+   |                      ^^^^^^^^^^^^
+   |                      |
+   |                      cannot move out of data in a `*const` pointer
+   |                      cannot move
+
+error: aborting due to 6 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index fa2df26498a061dc0fa0ac12d94550dcb349c01f..ae726d26d072b80203d31f10cb28fc6eb1cd7b5e 100644 (file)
@@ -4,6 +4,17 @@ error[E0507]: cannot move out of borrowed content
 LL |         self.tokens //~ ERROR cannot move out of borrowed content
    |         ^^^^^^^^^^^ cannot move out of borrowed content
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `self.tokens` which is behind a `&` reference
+  --> $DIR/issue-2590.rs:22:9
+   |
+LL |     fn parse(&self) -> Vec<isize> {
+   |              ----- help: consider changing this to be a mutable reference: `&mut self`
+LL |         self.tokens //~ ERROR cannot move out of borrowed content
+   |         ^^^^^^^^^^^
+   |         |
+   |         cannot move out of `self.tokens` which is behind a `&` reference
+   |         `self` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/issues/issue-26217.nll.stderr b/src/test/ui/issues/issue-26217.nll.stderr
deleted file mode 100644 (file)
index f28b065..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0131]: `main` function is not allowed to have generic parameters
-  --> $DIR/issue-26217.rs:13:8
-   |
-LL | fn main<'a>() {
-   |        ^^^^ `main` cannot have generic parameters
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0131`.
index fdf8157dcf833918233aacc1107973455570d2df..78cf3661bb76338d365291dd99fe67944a4e8833 100644 (file)
@@ -16,7 +16,16 @@ error[E0508]: cannot move out of type `[u8]`, a non-copy slice
 LL |     &X(*Y)
    |        ^^ cannot move out of here
 
-error: aborting due to 3 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-30355.rs:15:8
+   |
+LL |     &X(*Y)
+   |        ^^
+   |        |
+   |        cannot move out of data in a `&` reference
+   |        cannot move
+
+error: aborting due to 4 previous errors
 
-Some errors occurred: E0161, E0508.
+Some errors occurred: E0161, E0507, E0508.
 For more information about an error, try `rustc --explain E0161`.
diff --git a/src/test/ui/issues/issue-40288-2.nll.stderr b/src/test/ui/issues/issue-40288-2.nll.stderr
deleted file mode 100644 (file)
index e15e4e8..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `y`
-  --> $DIR/issue-40288-2.rs:17:9
-   |
-LL | fn lifetime_transmute_slice<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T {
-   |                                                         -- help: add explicit lifetime `'a` to the type of `y`: `&'a T`
-...
-LL |         slice[0] = y;
-   |         ^^^^^^^^^^^^ lifetime `'a` required
-
-error[E0621]: explicit lifetime required in the type of `y`
-  --> $DIR/issue-40288-2.rs:32:9
-   |
-LL | fn lifetime_transmute_struct<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T {
-   |                                                          -- help: add explicit lifetime `'a` to the type of `y`: `&'a T`
-...
-LL |         dst.head = y;
-   |         ^^^^^^^^^^^^ lifetime `'a` required
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
index 9020d3778c3730820347651be4554a9b7d9c1f0b..22fcffb9527a4b651c54fea1bb424bfdb2770301 100644 (file)
@@ -7,6 +7,15 @@ LL |     let e = f.v[0]; //~ ERROR cannot move out of indexed content
    |             cannot move out of borrowed content
    |             help: consider borrowing here: `&f.v[0]`
 
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-40402-1.rs:19:13
+   |
+LL |     let e = f.v[0]; //~ ERROR cannot move out of indexed content
+   |             ^^^^^^
+   |             |
+   |             cannot move out of data in a `&` reference
+   |             cannot move
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index a80e9a5fe091f70343247033078fb2881a09d61d..cdb547ad10064f8b2734400d3d32c1f58d4705f2 100644 (file)
@@ -1,3 +1,21 @@
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-40402-2.rs:15:10
+   |
+LL |     let (a, b) = x[0]; //~ ERROR cannot move out of indexed content
+   |          ^
+   |          |
+   |          cannot move out of data in a `&` reference
+   |          cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/issue-40402-2.rs:15:13
+   |
+LL |     let (a, b) = x[0]; //~ ERROR cannot move out of indexed content
+   |             ^
+   |             |
+   |             cannot move out of data in a `&` reference
+   |             cannot move
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/issue-40402-2.rs:15:18
    |
@@ -15,6 +33,6 @@ note: move occurs because these variables have types that don't implement the `C
 LL |     let (a, b) = x[0]; //~ ERROR cannot move out of indexed content
    |          ^  ^
 
-error: aborting due to previous error
+error: aborting due to 3 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 1aeb1a89ead94f3789bf472efd709b136d98bc3f..ee8fdc16a06f421d550ea3deb01b3c2c7ea01a08 100644 (file)
@@ -1,4 +1,4 @@
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
   --> $DIR/issue-40510-1.rs:18:9
    |
 LL |     || {
@@ -8,6 +8,15 @@ LL |         &mut x
    |
    = 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
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
+
+error: compilation successful
+  --> $DIR/issue-40510-1.rs:23:1
+   |
+LL | fn main() {} //~ ERROR compilation successful
+   | ^^^^^^^^^^^^
 
 error: aborting due to previous error
 
index c334e592fbc2bb0be5c0fb5ea0d77f364bbf1128..37a00746a88c23704ab76f44910c3f6353e11ad2 100644 (file)
@@ -1,4 +1,4 @@
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
   --> $DIR/issue-40510-3.rs:18:9
    |
 LL |       || {
@@ -10,6 +10,15 @@ LL | |         }
    |
    = 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
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
+
+error: compilation successful
+  --> $DIR/issue-40510-3.rs:25:1
+   |
+LL | fn main() {} //~ ERROR compilation successful
+   | ^^^^^^^^^^^^
 
 error: aborting due to previous error
 
index a9345e86f724817652892986419e26b313268195..fb123de2139283cc4900fe876ceae59677f37793 100644 (file)
@@ -6,6 +6,15 @@ LL | fn f<'r, T>(v: &'r T) -> Box<FnMut() -> T + 'r> {
 LL |     id(Box::new(|| *v))
    |                    ^^ cannot move out of captured variable in an `FnMut` closure
 
+error[E0507]: cannot move out of `*v` which is behind a `&` reference
+  --> $DIR/issue-4335.rs:16:20
+   |
+LL |     id(Box::new(|| *v))
+   |                    ^^
+   |                    |
+   |                    cannot move out of `*v` which is behind a `&` reference
+   |                    cannot move
+
 error[E0597]: `v` does not live long enough
   --> $DIR/issue-4335.rs:16:21
    |
@@ -23,7 +32,7 @@ note: borrowed value must be valid for the lifetime 'r as defined on the functio
 LL | fn f<'r, T>(v: &'r T) -> Box<FnMut() -> T + 'r> {
    |      ^^
 
-error: aborting due to 2 previous errors
+error: aborting due to 3 previous errors
 
 Some errors occurred: E0507, E0597.
 For more information about an error, try `rustc --explain E0507`.
index 2e0463fdd1d860b7e2cf72952e6a681a4c43d357..555558c99d933b1d435a4b8f846f45a8d0a83c04 100644 (file)
@@ -1,4 +1,4 @@
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
   --> $DIR/issue-49824.rs:22:9
    |
 LL |       || {
@@ -10,6 +10,21 @@ LL | |         }
    |
    = 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
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
+
+error: compilation successful
+  --> $DIR/issue-49824.rs:18:1
+   |
+LL | / fn main() {
+LL | |     //~^ compilation successful
+LL | |     let mut x = 0;
+LL | |     || {
+...  |
+LL | |     };
+LL | | }
+   | |_^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-52213.nll.stderr b/src/test/ui/issues/issue-52213.nll.stderr
deleted file mode 100644 (file)
index dab3fd8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/issue-52213.rs:13:20
-   |
-LL | fn transmute_lifetime<'a, 'b, T>(t: &'a (T,)) -> &'b T {
-   |                       --  -- lifetime `'b` defined here
-   |                       |
-   |                       lifetime `'a` defined here
-LL |     match (&t,) { //~ ERROR cannot infer an appropriate lifetime
-LL |         ((u,),) => u,
-   |                    ^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/issues/issue-52533-1.nll.stderr b/src/test/ui/issues/issue-52533-1.nll.stderr
deleted file mode 100644 (file)
index cc5f4df..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/issue-52533-1.rs:19:18
-   |
-LL |     gimme(|x, y| y)
-   |            -  -  ^ closure was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
-   |            |  |
-   |            |  has type `&Foo<'_, '1, u32>`
-   |            has type `&Foo<'_, '2, u32>`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/issues/issue-52533.nll.stderr b/src/test/ui/issues/issue-52533.nll.stderr
deleted file mode 100644 (file)
index 37ab2a3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/issue-52533.rs:15:16
-   |
-LL |     foo(|a, b| b)
-   |          -  -  ^ closure was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
-   |          |  |
-   |          |  has type `&'1 u32`
-   |          has type `&'2 u32`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/kindck/kindck-impl-type-params.nll.stderr b/src/test/ui/kindck/kindck-impl-type-params.nll.stderr
deleted file mode 100644 (file)
index d484632..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-error[E0277]: `T` cannot be sent between threads safely
-  --> $DIR/kindck-impl-type-params.rs:28:13
-   |
-LL |     let a = &t as &Gettable<T>;
-   |             ^^ `T` cannot be sent between threads safely
-   |
-   = help: the trait `std::marker::Send` is not implemented for `T`
-   = help: consider adding a `where T: std::marker::Send` bound
-   = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
-   = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied
-  --> $DIR/kindck-impl-type-params.rs:28:13
-   |
-LL |     let a = &t as &Gettable<T>;
-   |             ^^ the trait `std::marker::Copy` is not implemented for `T`
-   |
-   = help: consider adding a `where T: std::marker::Copy` bound
-   = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
-   = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: `T` cannot be sent between threads safely
-  --> $DIR/kindck-impl-type-params.rs:35:27
-   |
-LL |     let a: &Gettable<T> = &t;
-   |                           ^^ `T` cannot be sent between threads safely
-   |
-   = help: the trait `std::marker::Send` is not implemented for `T`
-   = help: consider adding a `where T: std::marker::Send` bound
-   = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
-   = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied
-  --> $DIR/kindck-impl-type-params.rs:35:27
-   |
-LL |     let a: &Gettable<T> = &t;
-   |                           ^^ the trait `std::marker::Copy` is not implemented for `T`
-   |
-   = help: consider adding a `where T: std::marker::Copy` bound
-   = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
-   = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied
-  --> $DIR/kindck-impl-type-params.rs:48:13
-   |
-LL |     let a = t as Box<Gettable<String>>;
-   |             ^ the trait `std::marker::Copy` is not implemented for `std::string::String`
-   |
-   = note: required because of the requirements on the impl of `Gettable<std::string::String>` for `S<std::string::String>`
-   = note: required for the cast to the object type `dyn Gettable<std::string::String>`
-
-error[E0277]: the trait bound `foo3::Foo: std::marker::Copy` is not satisfied
-  --> $DIR/kindck-impl-type-params.rs:56:33
-   |
-LL |     let a: Box<Gettable<Foo>> = t;
-   |                                 ^ the trait `std::marker::Copy` is not implemented for `foo3::Foo`
-   |
-   = note: required because of the requirements on the impl of `Gettable<foo3::Foo>` for `S<foo3::Foo>`
-   = note: required for the cast to the object type `dyn Gettable<foo3::Foo>`
-
-error: aborting due to 6 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/kindck/kindck-send-object1.nll.stderr b/src/test/ui/kindck/kindck-send-object1.nll.stderr
deleted file mode 100644 (file)
index a45ba15..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-error[E0277]: `(dyn Dummy + 'a)` cannot be shared between threads safely
-  --> $DIR/kindck-send-object1.rs:20:5
-   |
-LL |     assert_send::<&'a Dummy>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Dummy + 'a)` cannot be shared between threads safely
-   |
-   = help: the trait `std::marker::Sync` is not implemented for `(dyn Dummy + 'a)`
-   = note: required because of the requirements on the impl of `std::marker::Send` for `&'a (dyn Dummy + 'a)`
-note: required by `assert_send`
-  --> $DIR/kindck-send-object1.rs:15:1
-   |
-LL | fn assert_send<T:Send+'static>() { }
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error[E0277]: `(dyn Dummy + 'a)` cannot be sent between threads safely
-  --> $DIR/kindck-send-object1.rs:39:5
-   |
-LL |     assert_send::<Box<Dummy+'a>>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Dummy + 'a)` cannot be sent between threads safely
-   |
-   = help: the trait `std::marker::Send` is not implemented for `(dyn Dummy + 'a)`
-   = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn Dummy + 'a)>`
-   = note: required because it appears within the type `std::boxed::Box<(dyn Dummy + 'a)>`
-note: required by `assert_send`
-  --> $DIR/kindck-send-object1.rs:15:1
-   |
-LL | fn assert_send<T:Send+'static>() { }
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/lifetimes/lifetime-bound-will-change-warning.nll.stderr b/src/test/ui/lifetimes/lifetime-bound-will-change-warning.nll.stderr
deleted file mode 100644 (file)
index bc15df2..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-error: borrowed data escapes outside of function
-  --> $DIR/lifetime-bound-will-change-warning.rs:44:5
-   |
-LL | fn test2<'a>(x: &'a Box<Fn()+'a>) {
-   |              - `x` is a reference that is only valid in the function body
-LL |     // but ref_obj will not, so warn.
-LL |     ref_obj(x) //~ ERROR mismatched types
-   |     ^^^^^^^^^^ `x` escapes the function body here
-
-error: borrowed data escapes outside of function
-  --> $DIR/lifetime-bound-will-change-warning.rs:49:5
-   |
-LL | fn test2cc<'a>(x: &'a Box<Fn()+'a>) {
-   |                - `x` is a reference that is only valid in the function body
-LL |     // same as test2, but cross crate
-LL |     lib::ref_obj(x) //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^ `x` escapes the function body here
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-if-else-using-impl.nll.stderr
deleted file mode 100644 (file)
index 4e3193c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex1-return-one-existing-name-if-else-using-impl.rs:21:20
-   |
-LL |     fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 {
-   |            --     - let's call the lifetime of this reference `'1`
-   |            |
-   |            lifetime `'a` defined here
-LL | 
-LL |         if x > y { x } else { y } //~ ERROR lifetime mismatch
-   |                    ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-return-type-is-anon.nll.stderr
deleted file mode 100644 (file)
index 3413203..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex1-return-one-existing-name-return-type-is-anon.rs:18:5
-   |
-LL |   fn foo<'a>(&self, x: &'a i32) -> &i32 {
-   |          --  - let's call the lifetime of this reference `'1`
-   |          |
-   |          lifetime `'a` defined here
-LL | 
-LL |     x //~ ERROR lifetime mismatch
-   |     ^ function was supposed to return data with lifetime `'1` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex1-return-one-existing-name-self-is-anon.nll.stderr
deleted file mode 100644 (file)
index 2394199..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex1-return-one-existing-name-self-is-anon.rs:18:30
-   |
-LL |     fn foo<'a>(&self, x: &'a Foo) -> &'a Foo {
-   |            --  - let's call the lifetime of this reference `'1`
-   |            |
-   |            lifetime `'a` defined here
-LL | 
-LL |         if true { x } else { self } //~ ERROR lifetime mismatch
-   |                              ^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-2.nll.stderr
deleted file mode 100644 (file)
index 709d9f8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `x`
-  --> $DIR/ex2a-push-one-existing-name-2.rs:16:5
-   |
-LL | fn foo<'a>(x: Ref<i32>, y: &mut Vec<Ref<'a, i32>>) {
-   |               -------- help: add explicit lifetime `'a` to the type of `x`: `Ref<'a, i32>`
-LL |     y.push(x); //~ ERROR explicit lifetime
-   |     ^^^^^^^^^ 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/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name-early-bound.nll.stderr
deleted file mode 100644 (file)
index 1e608fe..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `y`
-  --> $DIR/ex2a-push-one-existing-name-early-bound.rs:17:5
-   |
-LL | fn baz<'a, 'b, T>(x: &mut Vec<&'a T>, y: &T)
-   |                                          -- help: add explicit lifetime `'a` to the type of `y`: `&'a T`
-...
-LL |     x.push(y); //~ ERROR explicit lifetime required
-   |     ^^^^^^^^^ 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/lifetimes/lifetime-errors/ex2a-push-one-existing-name.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex2a-push-one-existing-name.nll.stderr
deleted file mode 100644 (file)
index 1419435..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `y`
-  --> $DIR/ex2a-push-one-existing-name.rs:16:5
-   |
-LL | fn foo<'a>(x: &mut Vec<Ref<'a, i32>>, y: Ref<i32>) {
-   |                                          -------- help: add explicit lifetime `'a` to the type of `y`: `Ref<'a, i32>`
-LL |     x.push(y); //~ ERROR explicit lifetime
-   |     ^^^^^^^^^ 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/lifetimes/lifetime-errors/ex2b-push-no-existing-names.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex2b-push-no-existing-names.nll.stderr
deleted file mode 100644 (file)
index fc5f02f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex2b-push-no-existing-names.rs:16:5
-   |
-LL | fn foo(x: &mut Vec<Ref<i32>>, y: Ref<i32>) {
-   |        -                      - has type `Ref<'1, i32>`
-   |        |
-   |        has type `&mut std::vec::Vec<Ref<'2, i32>>`
-LL |     x.push(y); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex2c-push-inference-variable.nll.stderr
deleted file mode 100644 (file)
index a505324..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex2c-push-inference-variable.rs:17:5
-   |
-LL | fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
-   |            --  -- lifetime `'c` defined here
-   |            |
-   |            lifetime `'b` defined here
-LL |     let z = Ref { data: y.data };
-LL |     x.push(z); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ argument requires that `'c` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex2d-push-inference-variable-2.nll.stderr
deleted file mode 100644 (file)
index 361fb70..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex2d-push-inference-variable-2.rs:18:5
-   |
-LL | fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
-   |            --  -- lifetime `'c` defined here
-   |            |
-   |            lifetime `'b` defined here
-...
-LL |     a.push(b);
-   |     ^^^^^^^^^ argument requires that `'c` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex2e-push-inference-variable-3.nll.stderr
deleted file mode 100644 (file)
index 5d0f070..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex2e-push-inference-variable-3.rs:18:5
-   |
-LL | fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
-   |            --  -- lifetime `'c` defined here
-   |            |
-   |            lifetime `'b` defined here
-...
-LL |     Vec::push(a, b);
-   |     ^^^^^^^^^^^^^^^ argument requires that `'c` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-2.nll.stderr
deleted file mode 100644 (file)
index e4aafd7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-2.rs:12:5
-   |
-LL | fn foo(&mut (ref mut v, w): &mut (&u8, &u8), x: &u8) {
-   |                                   -             - let's call the lifetime of this reference `'1`
-   |                                   |
-   |                                   let's call the lifetime of this reference `'2`
-LL |     *v = x; //~ ERROR lifetime mismatch
-   |     ^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-3.nll.stderr
deleted file mode 100644 (file)
index e1872dc..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-3.rs:12:5
-   |
-LL | fn foo(z: &mut Vec<(&u8,&u8)>, (x, y): (&u8, &u8)) {
-   |                     -                   - let's call the lifetime of this reference `'1`
-   |                     |
-   |                     let's call the lifetime of this reference `'2`
-LL |     z.push((x,y)); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-3.rs:12:5
-   |
-LL | fn foo(z: &mut Vec<(&u8,&u8)>, (x, y): (&u8, &u8)) {
-   |                         -                    - let's call the lifetime of this reference `'1`
-   |                         |
-   |                         let's call the lifetime of this reference `'2`
-LL |     z.push((x,y)); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-2.nll.stderr
deleted file mode 100644 (file)
index 934cdcd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-both-are-structs-2.rs:16:5
-   |
-LL | fn foo(mut x: Ref, y: Ref) {
-   |        -----       - has type `Ref<'_, '1>`
-   |        |
-   |        has type `Ref<'_, '2>`
-LL |     x.b = y.b; //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.nll.stderr
deleted file mode 100644 (file)
index cbfd9d4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-both-are-structs-3.rs:16:5
-   |
-LL | fn foo(mut x: Ref) {
-   |        -----
-   |        |
-   |        has type `Ref<'_, '1>`
-   |        has type `Ref<'2, '_>`
-LL |     x.a = x.b; //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-earlybound-regions.nll.stderr
deleted file mode 100644 (file)
index 7f814b7..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-both-are-structs-earlybound-regions.rs:18:5
-   |
-LL | fn foo<'a, 'b>(mut x: Vec<Ref<'a>>, y: Ref<'b>)
-   |        --  -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-...
-LL |     x.push(y); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-latebound-regions.nll.stderr
deleted file mode 100644 (file)
index f38dceb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-both-are-structs-latebound-regions.rs:15:5
-   |
-LL | fn foo<'a, 'b>(mut x: Vec<Ref<'a>>, y: Ref<'b>) {
-   |        --  -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-LL |     x.push(y); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs.nll.stderr
deleted file mode 100644 (file)
index 39a7154..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-both-are-structs.rs:15:5
-   |
-LL | fn foo(mut x: Vec<Ref>, y: Ref) {
-   |        -----            - has type `Ref<'1>`
-   |        |
-   |        has type `std::vec::Vec<Ref<'2>>`
-LL |     x.push(y); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-latebound-regions.nll.stderr
deleted file mode 100644 (file)
index d59480c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-latebound-regions.rs:12:5
-   |
-LL | fn foo<'a,'b>(x: &mut Vec<&'a u8>, y: &'b u8) {
-   |        -- -- lifetime `'b` defined here
-   |        |
-   |        lifetime `'a` defined here
-LL |     x.push(y); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-2.nll.stderr
deleted file mode 100644 (file)
index fc1fab7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-one-is-struct-2.rs:14:5
-   |
-LL | fn foo(mut x: Ref, y: &u32) {
-   |        -----          - let's call the lifetime of this reference `'2`
-   |        |
-   |        has type `Ref<'_, '1>`
-LL |     y = x.b; //~ ERROR lifetime mismatch
-   |     ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error[E0384]: cannot assign to immutable argument `y`
-  --> $DIR/ex3-both-anon-regions-one-is-struct-2.rs:14:5
-   |
-LL | fn foo(mut x: Ref, y: &u32) {
-   |                    - help: make this binding mutable: `mut y`
-LL |     y = x.b; //~ ERROR lifetime mismatch
-   |     ^^^^^^^ cannot assign to immutable argument
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0384`.
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-3.nll.stderr
deleted file mode 100644 (file)
index 8100fa8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-one-is-struct-3.rs:14:5
-   |
-LL | fn foo(mut y: Ref, x: &u32) {
-   |        -----          - let's call the lifetime of this reference `'1`
-   |        |
-   |        has type `Ref<'_, '2>`
-LL |     y.b = x; //~ ERROR lifetime mismatch
-   |     ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct-4.nll.stderr
deleted file mode 100644 (file)
index 1c4a8b6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-one-is-struct-4.rs:14:5
-   |
-LL | fn foo(mut y: Ref, x: &u32) {
-   |        -----          - let's call the lifetime of this reference `'1`
-   |        |
-   |        has type `Ref<'_, '2>`
-LL |     y.b = x; //~ ERROR lifetime mismatch
-   |     ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-one-is-struct.nll.stderr
deleted file mode 100644 (file)
index 2a4c5a6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-one-is-struct.rs:17:5
-   |
-LL | fn foo(mut x: Ref, y: &u32) {
-   |        -----          - let's call the lifetime of this reference `'1`
-   |        |
-   |        has type `Ref<'_, '2>`
-LL |     x.b = y; //~ ERROR lifetime mismatch
-   |     ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-return-type-is-anon.nll.stderr
deleted file mode 100644 (file)
index 898f997..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-return-type-is-anon.rs:17:5
-   |
-LL |   fn foo<'a>(&self, x: &i32) -> &i32 {
-   |              -         - let's call the lifetime of this reference `'1`
-   |              |
-   |              let's call the lifetime of this reference `'2`
-LL |     x //~ ERROR lifetime mismatch
-   |     ^ function was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.nll.stderr
deleted file mode 100644 (file)
index bdb9b30..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-self-is-anon.rs:17:19
-   |
-LL |     fn foo<'a>(&self, x: &Foo) -> &Foo {
-   |                -         - let's call the lifetime of this reference `'1`
-   |                |
-   |                let's call the lifetime of this reference `'2`
-LL |         if true { x } else { self } //~ ERROR lifetime mismatch
-   |                   ^ function was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-fn-items.nll.stderr
deleted file mode 100644 (file)
index 2e4df17..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable
-  --> $DIR/ex3-both-anon-regions-using-fn-items.rs:11:3
-   |
-LL | fn foo(x:fn(&u8, &u8), y: Vec<&u8>, z: &u8) {
-   |                        - help: consider changing this to be mutable: `mut y`
-LL |   y.push(z); //~ ERROR lifetime mismatch
-   |   ^ cannot borrow as mutable
-
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-using-fn-items.rs:11:3
-   |
-LL | fn foo(x:fn(&u8, &u8), y: Vec<&u8>, z: &u8) {
-   |                               -        - let's call the lifetime of this reference `'1`
-   |                               |
-   |                               let's call the lifetime of this reference `'2`
-LL |   y.push(z); //~ ERROR lifetime mismatch
-   |   ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0596`.
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-impl-items.nll.stderr
deleted file mode 100644 (file)
index 8d74360..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-using-impl-items.rs:15:9
-   |
-LL |     fn foo(x: &mut Vec<&u8>, y: &u8) {
-   |                        -        - let's call the lifetime of this reference `'1`
-   |                        |
-   |                        let's call the lifetime of this reference `'2`
-LL |         x.push(y); //~ ERROR lifetime mismatch
-   |         ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-using-trait-objects.nll.stderr
deleted file mode 100644 (file)
index a2dc0e4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable
-  --> $DIR/ex3-both-anon-regions-using-trait-objects.rs:11:3
-   |
-LL | fn foo(x:Box<Fn(&u8, &u8)> , y: Vec<&u8>, z: &u8) {
-   |                              - help: consider changing this to be mutable: `mut y`
-LL |   y.push(z); //~ ERROR lifetime mismatch
-   |   ^ cannot borrow as mutable
-
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions-using-trait-objects.rs:11:3
-   |
-LL | fn foo(x:Box<Fn(&u8, &u8)> , y: Vec<&u8>, z: &u8) {
-   |                                     -        - let's call the lifetime of this reference `'1`
-   |                                     |
-   |                                     let's call the lifetime of this reference `'2`
-LL |   y.push(z); //~ ERROR lifetime mismatch
-   |   ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0596`.
diff --git a/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.nll.stderr b/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions.nll.stderr
deleted file mode 100644 (file)
index 0d67416..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/ex3-both-anon-regions.rs:12:5
-   |
-LL | fn foo(x: &mut Vec<&u8>, y: &u8) {
-   |                    -        - let's call the lifetime of this reference `'1`
-   |                    |
-   |                    let's call the lifetime of this reference `'2`
-LL |     x.push(y); //~ ERROR lifetime mismatch
-   |     ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/lub-if.nll.stderr b/src/test/ui/lub-if.nll.stderr
deleted file mode 100644 (file)
index 2405e30..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/lub-if.rs:38:9
-   |
-LL | pub fn opt_str2<'a>(maybestr: &'a Option<String>) -> &'static str {
-   |                 -- lifetime `'a` defined here
-...
-LL |         s  //~ ERROR E0312
-   |         ^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/lub-if.rs:45:9
-   |
-LL | pub fn opt_str3<'a>(maybestr: &'a Option<String>) -> &'static str {
-   |                 -- lifetime `'a` defined here
-...
-LL |         s  //~ ERROR E0312
-   |         ^ returning this value requires that `'a` must outlive `'static`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/lub-match.nll.stderr b/src/test/ui/lub-match.nll.stderr
deleted file mode 100644 (file)
index 5a39dd1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/lub-match.rs:40:13
-   |
-LL | pub fn opt_str2<'a>(maybestr: &'a Option<String>) -> &'static str {
-   |                 -- lifetime `'a` defined here
-...
-LL |             s //~ ERROR E0312
-   |             ^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/lub-match.rs:49:13
-   |
-LL | pub fn opt_str3<'a>(maybestr: &'a Option<String>) -> &'static str {
-   |                 -- lifetime `'a` defined here
-...
-LL |             s //~ ERROR E0312
-   |             ^ returning this value requires that `'a` must outlive `'static`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/match/match-ref-mut-invariance.nll.stderr b/src/test/ui/match/match-ref-mut-invariance.nll.stderr
deleted file mode 100644 (file)
index d5167bb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/match-ref-mut-invariance.rs:20:9
-   |
-LL | impl<'b> S<'b> {
-   |      -- lifetime `'b` defined here
-LL |     fn bar<'a>(&'a mut self) -> &'a mut &'a i32 {
-   |            -- lifetime `'a` defined here
-LL |         match self.0 { ref mut x => x } //~ ERROR mismatched types
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/match/match-ref-mut-let-invariance.nll.stderr b/src/test/ui/match/match-ref-mut-let-invariance.nll.stderr
deleted file mode 100644 (file)
index 5491586..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/match-ref-mut-let-invariance.rs:21:9
-   |
-LL | impl<'b> S<'b> {
-   |      -- lifetime `'b` defined here
-LL |     fn bar<'a>(&'a mut self) -> &'a mut &'a i32 {
-   |            -- lifetime `'a` defined here
-LL |         let ref mut x = self.0;
-LL |         x //~ ERROR mismatched types
-   |         ^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
index 1f22ab148185296bbf3ca71abe0a75ca06630a3d..1ded703fd5a2f0bc49f3dbaf832a07fbf91492a1 100644 (file)
@@ -16,6 +16,18 @@ note: move occurs because `x` has type `std::boxed::Box<isize>`, which does not
 LL |                 box E::Bar(x) => println!("{}", x.to_string()),
    |                            ^
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `hellothere.x.0` which is behind a `&` reference
+  --> $DIR/moves-based-on-type-block-bad.rs:37:28
+   |
+LL |         f(&s, |hellothere| {
+   |                ---------- help: consider changing this to be a mutable reference: `&mut S`
+...
+LL |                 box E::Bar(x) => println!("{}", x.to_string()),
+   |                            ^
+   |                            |
+   |                            cannot move out of `hellothere.x.0` which is behind a `&` reference
+   |                            `hellothere` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 13a6fc15ce3185b7ebbbd5093d018c515fad9293..a34a9efab6bce413f317a557d9da135e6b17c453 100644 (file)
@@ -6,6 +6,21 @@ LL |     let i = box 3;
 LL |     let _f = to_fn(|| test(i)); //~ ERROR cannot move out
    |                            ^ cannot move out of captured variable in an `Fn` closure
 
-error: aborting due to previous error
+error[E0507]: cannot move out of `i`, as it is a captured variable in a `Fn` closure
+  --> $DIR/moves-based-on-type-move-out-of-closure-env-issue-1965.rs:21:28
+   |
+LL |     let _f = to_fn(|| test(i)); //~ ERROR cannot move out
+   |                            ^
+   |                            |
+   |                            cannot move out of `i`, as it is a captured variable in a `Fn` closure
+   |                            cannot move
+   |
+help: consider changing this to accept closures that implement `FnMut`
+  --> $DIR/moves-based-on-type-move-out-of-closure-env-issue-1965.rs:21:20
+   |
+LL |     let _f = to_fn(|| test(i)); //~ ERROR cannot move out
+   |                    ^^^^^^^^^^
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 6a4c8f2e8d81570161b7d251523acb9c6483235f..2d54ae0b81ec820c054aca57ec17a481432a9cea 100644 (file)
@@ -7,6 +7,17 @@ LL |     let x = { *r }; //~ ERROR
    |               cannot move out of borrowed content
    |               help: consider removing the `*`: `r`
 
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+  --> $DIR/cannot-move-block-spans.rs:15:15
+   |
+LL | pub fn deref(r: &String) {
+   |                 ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL |     let x = { *r }; //~ ERROR
+   |               ^^
+   |               |
+   |               cannot move out of `*r` which is behind a `&` reference
+   |               `r` is a `&` reference, so the data it refers to cannot be moved
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/cannot-move-block-spans.rs:16:22
    |
@@ -16,6 +27,18 @@ LL |     let y = unsafe { *r }; //~ ERROR
    |                      cannot move out of borrowed content
    |                      help: consider removing the `*`: `r`
 
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+  --> $DIR/cannot-move-block-spans.rs:16:22
+   |
+LL | pub fn deref(r: &String) {
+   |                 ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL |     let x = { *r }; //~ ERROR
+LL |     let y = unsafe { *r }; //~ ERROR
+   |                      ^^
+   |                      |
+   |                      cannot move out of `*r` which is behind a `&` reference
+   |                      `r` is a `&` reference, so the data it refers to cannot be moved
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/cannot-move-block-spans.rs:17:26
    |
@@ -25,6 +48,18 @@ LL |     let z = loop { break *r; }; //~ ERROR
    |                          cannot move out of borrowed content
    |                          help: consider removing the `*`: `r`
 
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+  --> $DIR/cannot-move-block-spans.rs:17:26
+   |
+LL | pub fn deref(r: &String) {
+   |                 ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+...
+LL |     let z = loop { break *r; }; //~ ERROR
+   |                          ^^
+   |                          |
+   |                          cannot move out of `*r` which is behind a `&` reference
+   |                          `r` is a `&` reference, so the data it refers to cannot be moved
+
 error[E0508]: cannot move out of type `[std::string::String; 2]`, a non-copy array
   --> $DIR/cannot-move-block-spans.rs:21:15
    |
@@ -61,6 +96,17 @@ LL |     let x = { let mut u = 0; u += 1; *r }; //~ ERROR
    |                                      cannot move out of borrowed content
    |                                      help: consider removing the `*`: `r`
 
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+  --> $DIR/cannot-move-block-spans.rs:27:38
+   |
+LL | pub fn additional_statement_cases(r: &String) {
+   |                                      ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL |     let x = { let mut u = 0; u += 1; *r }; //~ ERROR
+   |                                      ^^
+   |                                      |
+   |                                      cannot move out of `*r` which is behind a `&` reference
+   |                                      `r` is a `&` reference, so the data it refers to cannot be moved
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/cannot-move-block-spans.rs:28:45
    |
@@ -70,6 +116,18 @@ LL |     let y = unsafe { let mut u = 0; u += 1; *r }; //~ ERROR
    |                                             cannot move out of borrowed content
    |                                             help: consider removing the `*`: `r`
 
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+  --> $DIR/cannot-move-block-spans.rs:28:45
+   |
+LL | pub fn additional_statement_cases(r: &String) {
+   |                                      ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL |     let x = { let mut u = 0; u += 1; *r }; //~ ERROR
+LL |     let y = unsafe { let mut u = 0; u += 1; *r }; //~ ERROR
+   |                                             ^^
+   |                                             |
+   |                                             cannot move out of `*r` which is behind a `&` reference
+   |                                             `r` is a `&` reference, so the data it refers to cannot be moved
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/cannot-move-block-spans.rs:29:49
    |
@@ -79,7 +137,19 @@ LL |     let z = loop { let mut u = 0; u += 1; break *r; u += 2; }; //~ ERROR
    |                                                 cannot move out of borrowed content
    |                                                 help: consider removing the `*`: `r`
 
-error: aborting due to 9 previous errors
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+  --> $DIR/cannot-move-block-spans.rs:29:49
+   |
+LL | pub fn additional_statement_cases(r: &String) {
+   |                                      ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+...
+LL |     let z = loop { let mut u = 0; u += 1; break *r; u += 2; }; //~ ERROR
+   |                                                 ^^
+   |                                                 |
+   |                                                 cannot move out of `*r` which is behind a `&` reference
+   |                                                 `r` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 15 previous errors
 
 Some errors occurred: E0507, E0508.
 For more information about an error, try `rustc --explain E0507`.
index 54b1fcbd5bbf63c8735a66915bc8cbf2a466c44a..4fe01d472f50edac8829c1d09a3e89ca5b654258 100644 (file)
@@ -1,8 +1,36 @@
-error[E0507]: cannot move out of borrowed content
+warning[E0507]: cannot move out of borrowed content
   --> $DIR/match-guards-always-borrow.rs:23:13
    |
 LL |             (|| { let bar = foo; bar.take() })();
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot move out of borrowed content
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
+
+warning[E0507]: cannot move out of `foo`, as it is immutable for the pattern guard
+  --> $DIR/match-guards-always-borrow.rs:23:13
+   |
+LL |             (|| { let bar = foo; bar.take() })();
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |             |
+   |             cannot move out of `foo`, as it is immutable for the pattern guard
+   |             cannot move
+   |
+   = note: variables bound in patterns are immutable until the end of the pattern guard
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
+
+error: compilation successful
+  --> $DIR/match-guards-always-borrow.rs:57:1
+   |
+LL | / fn main() { //[ast]~ ERROR compilation successful
+LL | |     should_reject_destructive_mutate_in_guard();
+LL | |     allow_mutate_in_arm_body();
+LL | |     allow_move_into_arm_body();
+LL | | }
+   | |_^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.nll.stderr b/src/test/ui/nll/ty-outlives/projection-where-clause-env-wrong-lifetime.nll.stderr
deleted file mode 100644 (file)
index 1e953ec..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0309]: the associated type `<T as MyTrait<'_>>::Output` may not live long enough
-  --> $DIR/projection-where-clause-env-wrong-lifetime.rs:14:5
-   |
-LL |     bar::<<T as MyTrait<'a>>::Output>()
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as MyTrait<'_>>::Output: 'a`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
diff --git a/src/test/ui/object-lifetime/object-lifetime-default-elision.nll.stderr b/src/test/ui/object-lifetime/object-lifetime-default-elision.nll.stderr
deleted file mode 100644 (file)
index e132ec6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/object-lifetime-default-elision.rs:81:5
-   |
-LL | fn load3<'a,'b>(ss: &'a SomeTrait) -> &'b SomeTrait {
-   |          -- -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-...
-LL |     ss
-   |     ^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-box-error.nll.stderr b/src/test/ui/object-lifetime/object-lifetime-default-from-box-error.nll.stderr
deleted file mode 100644 (file)
index e0c2919..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `ss`
-  --> $DIR/object-lifetime-default-from-box-error.rs:28:5
-   |
-LL | fn load(ss: &mut SomeStruct) -> Box<SomeTrait> {
-   |             --------------- help: add explicit lifetime `'static` to the type of `ss`: `&mut SomeStruct<'static>`
-...
-LL |     ss.r //~ ERROR explicit lifetime required in the type of `ss` [E0621]
-   |     ^^^^ lifetime `'static` required
-
-error[E0507]: cannot move out of borrowed content
-  --> $DIR/object-lifetime-default-from-box-error.rs:28:5
-   |
-LL |     ss.r //~ ERROR explicit lifetime required in the type of `ss` [E0621]
-   |     ^^^^ cannot move out of borrowed content
-
-error[E0621]: explicit lifetime required in the type of `ss`
-  --> $DIR/object-lifetime-default-from-box-error.rs:41:5
-   |
-LL | fn store1<'b>(ss: &mut SomeStruct, b: Box<SomeTrait+'b>) {
-   |                   --------------- help: add explicit lifetime `'b` to the type of `ss`: `&mut SomeStruct<'b>`
-...
-LL |     ss.r = b; //~ ERROR 41:12: 41:13: explicit lifetime required in the type of `ss` [E0621]
-   |     ^^^^ lifetime `'b` required
-
-error: aborting due to 3 previous errors
-
-Some errors occurred: E0507, E0621.
-For more information about an error, try `rustc --explain E0507`.
diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.nll.stderr b/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-box-error.nll.stderr
deleted file mode 100644 (file)
index a6bfcf1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/object-lifetime-default-from-rptr-box-error.rs:25:5
-   |
-LL | fn c<'a>(t: &'a Box<Test+'a>, mut ss: SomeStruct<'a>) {
-   |      -- lifetime `'a` defined here
-LL |     ss.t = t; //~ ERROR mismatched types
-   |     ^^^^^^^^ assignment requires that `'a` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.nll.stderr b/src/test/ui/object-lifetime/object-lifetime-default-from-rptr-struct-error.nll.stderr
deleted file mode 100644 (file)
index 396ff13..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/object-lifetime-default-from-rptr-struct-error.rs:31:5
-   |
-LL | fn c<'a>(t: &'a MyBox<Test+'a>, mut ss: SomeStruct<'a>) {
-   |      -- lifetime `'a` defined here
-LL |     ss.t = t; //~ ERROR mismatched types
-   |     ^^^^^^^^ assignment requires that `'a` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/object-lifetime/object-lifetime-default-mybox.nll.stderr b/src/test/ui/object-lifetime/object-lifetime-default-mybox.nll.stderr
deleted file mode 100644 (file)
index 41988b3..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/object-lifetime-default-mybox.rs:37:5
-   |
-LL | fn load1<'a,'b>(a: &'a MyBox<SomeTrait>,
-   |          -- -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-...
-LL |     a //~ ERROR lifetime mismatch
-   |     ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: borrowed data escapes outside of function
-  --> $DIR/object-lifetime-default-mybox.rs:41:5
-   |
-LL | fn load2<'a>(ss: &MyBox<SomeTrait+'a>) -> MyBox<SomeTrait+'a> {
-   |              -- `ss` is a reference that is only valid in the function body
-LL |     load0(ss) //~ ERROR mismatched types
-   |     ^^^^^^^^^ `ss` escapes the function body here
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/region-invariant-static-error-reporting.nll.stderr b/src/test/ui/regions/region-invariant-static-error-reporting.nll.stderr
deleted file mode 100644 (file)
index c9714de..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: borrowed data escapes outside of function
-  --> $DIR/region-invariant-static-error-reporting.rs:25: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
-LL |     let bad = if x.is_some() {
-LL |         x.unwrap()
-   |         ^^^^^^^^^^ `x` escapes the function body here
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.nll.stderr b/src/test/ui/regions/region-lifetime-bounds-on-fns-where-clause.nll.stderr
deleted file mode 100644 (file)
index 01bc022..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/region-lifetime-bounds-on-fns-where-clause.rs:30:43
-   |
-LL |     let _: fn(&mut &isize, &mut &isize) = a; //~ ERROR mismatched types
-   |                                           ^ expected concrete lifetime, found bound lifetime parameter
-   |
-   = note: expected type `for<'r, 's, 't0, 't1> fn(&'r mut &'s isize, &'t0 mut &'t1 isize)`
-              found type `for<'r, 's> fn(&'r mut &isize, &'s 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.nll.stderr b/src/test/ui/regions/region-multiple-lifetime-bounds-on-fns-where-clause.nll.stderr
deleted file mode 100644 (file)
index 44f8f9e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/region-multiple-lifetime-bounds-on-fns-where-clause.rs:32:56
-   |
-LL |     let _: fn(&mut &isize, &mut &isize, &mut &isize) = a; //~ ERROR mismatched types
-   |                                                        ^ expected concrete lifetime, found bound lifetime parameter
-   |
-   = note: expected type `for<'r, 's, 't0, 't1, 't2, 't3> fn(&'r mut &'s isize, &'t0 mut &'t1 isize, &'t2 mut &'t3 isize)`
-              found type `for<'r, 's, 't0> fn(&'r mut &isize, &'s mut &isize, &'t0 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-2.nll.stderr b/src/test/ui/regions/region-object-lifetime-2.nll.stderr
deleted file mode 100644 (file)
index 4e1b8b7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/region-object-lifetime-2.rs:20:5
-   |
-LL | fn borrowed_receiver_different_lifetimes<'a,'b>(x: &'a Foo) -> &'b () {
-   |                                          -- -- lifetime `'b` defined here
-   |                                          |
-   |                                          lifetime `'a` defined here
-LL |     x.borrowed() //~ ERROR cannot infer
-   |     ^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/region-object-lifetime-4.nll.stderr b/src/test/ui/regions/region-object-lifetime-4.nll.stderr
deleted file mode 100644 (file)
index 5f1f70d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/region-object-lifetime-4.rs:22:5
-   |
-LL | fn borrowed_receiver_related_lifetimes2<'a,'b>(x: &'a (Foo+'b)) -> &'b () {
-   |                                         -- -- lifetime `'b` defined here
-   |                                         |
-   |                                         lifetime `'a` defined here
-LL |     x.borrowed() //~ ERROR cannot infer
-   |     ^^^^^^^^^^^^ argument requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/region-object-lifetime-in-coercion.nll.stderr b/src/test/ui/regions/region-object-lifetime-in-coercion.nll.stderr
deleted file mode 100644 (file)
index 8fd1956..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `v`
-  --> $DIR/region-object-lifetime-in-coercion.rs:18:12
-   |
-LL | fn a(v: &[u8]) -> Box<Foo + 'static> {
-   |         ----- help: add explicit lifetime `'static` to the type of `v`: `&'static [u8]`
-LL |     let x: Box<Foo + 'static> = Box::new(v);
-   |            ^^^^^^^^^^^^^^^^^^ lifetime `'static` required
-
-error[E0621]: explicit lifetime required in the type of `v`
-  --> $DIR/region-object-lifetime-in-coercion.rs:24:5
-   |
-LL | fn b(v: &[u8]) -> Box<Foo + 'static> {
-   |         ----- help: add explicit lifetime `'static` to the type of `v`: `&'static [u8]`
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ lifetime `'static` required
-
-error[E0621]: explicit lifetime required in the type of `v`
-  --> $DIR/region-object-lifetime-in-coercion.rs:31:5
-   |
-LL | fn c(v: &[u8]) -> Box<Foo> {
-   |         ----- help: add explicit lifetime `'static` to the type of `v`: `&'static [u8]`
-...
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ lifetime `'static` required
-
-error: unsatisfied lifetime constraints
-  --> $DIR/region-object-lifetime-in-coercion.rs:36:5
-   |
-LL | fn d<'a,'b>(v: &'a [u8]) -> Box<Foo+'b> {
-   |      -- -- lifetime `'b` defined here
-   |      |
-   |      lifetime `'a` defined here
-LL |     Box::new(v)
-   |     ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/regions/regions-addr-of-self.nll.stderr b/src/test/ui/regions/regions-addr-of-self.nll.stderr
deleted file mode 100644 (file)
index 1454c85..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-addr-of-self.rs:17: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; //~ ERROR cannot infer
-   |                ^^^^^^^^^^^^^^^^^^ 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.nll.stderr b/src/test/ui/regions/regions-addr-of-upvar-self.nll.stderr
deleted file mode 100644 (file)
index 0e48192..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-addr-of-upvar-self.rs:20:20
-   |
-LL |         let _f = || {
-   |                  -- lifetime `'1` represents this closure's body
-LL |             let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
-   |                    ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-   |
-   = note: closure implements `FnMut`, so references to captured variables can't escape the closure
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-addr-of-upvar-self.rs:20:20
-   |
-LL |     pub fn chase_cat(&mut self) {
-   |                      --------- lifetime `'2` appears in the type of `self`
-LL |         let _f = || {
-   |                  -- lifetime `'1` represents this closure's body
-LL |             let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
-   |                    ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'2`
-   |
-   = note: closure implements `FnMut`, so references to captured variables can't escape the closure
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-addr-of-upvar-self.rs:20: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; //~ ERROR cannot infer
-   |                    ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-
-error[E0597]: `self` does not live long enough
-  --> $DIR/regions-addr-of-upvar-self.rs:20:46
-   |
-LL |         let _f = || {
-   |                  -- value captured here
-LL |             let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
-   |                                              ^^^^ borrowed value does not live long enough
-...
-LL |     }
-   |      - `self` dropped here while still borrowed
-   |
-   = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.nll.stderr b/src/test/ui/regions/regions-assoc-type-in-supertrait-outlives-container.nll.stderr
deleted file mode 100644 (file)
index f711541..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-assoc-type-in-supertrait-outlives-container.rs:52:13
-   |
-LL | fn with_assoc<'a,'b>() {
-   |               -- -- lifetime `'b` defined here
-   |               |
-   |               lifetime `'a` defined here
-...
-LL |     let _x: &'a WithAssoc<TheType<'b>> = loop { };
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-bounded-by-trait-requiring-static.nll.stderr b/src/test/ui/regions/regions-bounded-by-trait-requiring-static.nll.stderr
deleted file mode 100644 (file)
index 654b2b9..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:32:5
-   |
-LL | fn param_not_ok<'a>(x: &'a isize) {
-   |                 -- lifetime `'a` defined here
-LL |     assert_send::<&'a isize>(); //~ ERROR does not fulfill the required lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:36:5
-   |
-LL | fn param_not_ok1<'a>(_: &'a isize) {
-   |                  -- lifetime `'a` defined here
-LL |     assert_send::<&'a str>(); //~ ERROR does not fulfill the required lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:40:5
-   |
-LL | fn param_not_ok2<'a>(_: &'a isize) {
-   |                  -- lifetime `'a` defined here
-LL |     assert_send::<&'a [isize]>(); //~ ERROR does not fulfill the required lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:54:5
-   |
-LL | fn box_with_region_not_ok<'a>() {
-   |                           -- lifetime `'a` defined here
-LL |     assert_send::<Box<&'a isize>>(); //~ ERROR does not fulfill the required lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:65:5
-   |
-LL | fn unsafe_ok2<'a>(_: &'a isize) {
-   |               -- lifetime `'a` defined here
-LL |     assert_send::<*const &'a isize>(); //~ ERROR does not fulfill the required lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-by-trait-requiring-static.rs:69:5
-   |
-LL | fn unsafe_ok3<'a>(_: &'a isize) {
-   |               -- lifetime `'a` defined here
-LL |     assert_send::<*mut &'a isize>(); //~ ERROR does not fulfill the required lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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.nll.stderr b/src/test/ui/regions/regions-bounded-method-type-parameters-cross-crate.nll.stderr
deleted file mode 100644 (file)
index a292bac..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-method-type-parameters-cross-crate.rs:30: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) //~ ERROR 30:7: 30:20: lifetime mismatch [E0623]
-   |     ^^^^^^^^^^^^^^^^^^ argument requires that `'y` must outlive `'x`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.nll.stderr b/src/test/ui/regions/regions-bounded-method-type-parameters-trait-bound.nll.stderr
deleted file mode 100644 (file)
index 99c3178..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: borrowed data escapes outside of function
-  --> $DIR/regions-bounded-method-type-parameters-trait-bound.rs:30:5
-   |
-LL | fn caller2<'a,'b,F:Foo<'a>>(a: Inv<'a>, b: Inv<'b>, f: F) {
-   |                             -           - `b` is a reference that is only valid in the function body
-   |                             |
-   |                             `a` is declared here, outside of the function body
-LL |     // Here the value provided for 'y is 'b, and hence 'b:'a does not hold.
-LL |     f.method(b); //~ ERROR 30:7: 30:13: lifetime mismatch [E0623]
-   |     ^^^^^^^^^^^ `b` escapes the function body here
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-bounded-method-type-parameters.nll.stderr b/src/test/ui/regions/regions-bounded-method-type-parameters.nll.stderr
deleted file mode 100644 (file)
index 91e0f7f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `x`
-  --> $DIR/regions-bounded-method-type-parameters.rs:22:5
-   |
-LL | fn caller<'a>(x: &isize) {
-   |                  ------ help: add explicit lifetime `'a` to the type of `x`: `&'a isize`
-LL |     Foo.some_method::<&'a isize>();
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime `'a` required
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounded-method-type-parameters.rs:22:5
-   |
-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 2 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/regions/regions-bounds.nll.stderr b/src/test/ui/regions/regions-bounds.nll.stderr
deleted file mode 100644 (file)
index e50e806..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounds.rs:19:12
-   |
-LL | fn a_fn1<'a,'b>(e: an_enum<'a>) -> an_enum<'b> {
-   |          -- -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-LL |     return e; //~ ERROR mismatched types
-   |            ^ returning this value requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-bounds.rs:23:12
-   |
-LL | fn a_fn3<'a,'b>(e: a_class<'a>) -> a_class<'b> {
-   |          -- -- lifetime `'b` defined here
-   |          |
-   |          lifetime `'a` defined here
-LL |     return e; //~ ERROR mismatched types
-   |            ^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/regions-close-associated-type-into-object.nll.stderr b/src/test/ui/regions/regions-close-associated-type-into-object.nll.stderr
deleted file mode 100644 (file)
index 90d38a4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-error[E0310]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:25:5
-   |
-LL |     Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'static`...
-
-error[E0310]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:32:5
-   |
-LL |     Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'static`...
-
-error[E0309]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:38:5
-   |
-LL |     Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'a`...
-
-error[E0309]: the associated type `<T as Iter>::Item` may not live long enough
-  --> $DIR/regions-close-associated-type-into-object.rs:45:5
-   |
-LL |     Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
-   |     ^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'a`...
-
-error: aborting due to 4 previous errors
-
-Some errors occurred: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-2.nll.stderr b/src/test/ui/regions/regions-close-object-into-object-2.nll.stderr
deleted file mode 100644 (file)
index c073e37..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-close-object-into-object-2.rs:20:5
-   |
-LL | fn g<'a, T: 'static>(v: Box<A<T>+'a>) -> Box<X+'static> {
-   |      -- lifetime `'a` defined here
-LL |     box B(&*v) as Box<X> //~ ERROR cannot infer
-   |     ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error[E0597]: `*v` does not live long enough
-  --> $DIR/regions-close-object-into-object-2.rs:20:11
-   |
-LL |     box B(&*v) as Box<X> //~ ERROR cannot infer
-   |           ^^^ borrowed value does not live long enough
-LL | }
-   | - `*v` dropped here while still borrowed
-   |
-   = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-4.nll.stderr b/src/test/ui/regions/regions-close-object-into-object-4.nll.stderr
deleted file mode 100644 (file)
index 4b47b95..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-error[E0310]: the parameter type `U` may not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:20:5
-   |
-LL |     box B(&*v) as Box<X> //~ ERROR cannot infer
-   |     ^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `U: 'static`...
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-close-object-into-object-4.rs:20:5
-   |
-LL | fn i<'a, T, U>(v: Box<A<U>+'a>) -> Box<X+'static> {
-   |      -- lifetime `'a` defined here
-LL |     box B(&*v) as Box<X> //~ ERROR cannot infer
-   |     ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error[E0310]: the parameter type `U` may not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:20:9
-   |
-LL |     box B(&*v) as Box<X> //~ ERROR cannot infer
-   |         ^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `U: 'static`...
-
-error[E0597]: `*v` does not live long enough
-  --> $DIR/regions-close-object-into-object-4.rs:20:11
-   |
-LL |     box B(&*v) as Box<X> //~ ERROR cannot infer
-   |           ^^^ borrowed value does not live long enough
-LL | }
-   | - `*v` dropped here while still borrowed
-   |
-   = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 4 previous errors
-
-Some errors occurred: E0310, E0597.
-For more information about an error, try `rustc --explain E0310`.
diff --git a/src/test/ui/regions/regions-close-object-into-object-5.nll.stderr b/src/test/ui/regions/regions-close-object-into-object-5.nll.stderr
deleted file mode 100644 (file)
index 8ef80fd..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-object-into-object-5.rs:27:5
-   |
-LL |     box B(&*v) as Box<X>
-   |     ^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-object-into-object-5.rs:27:9
-   |
-LL |     box B(&*v) as Box<X>
-   |         ^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0597]: `*v` does not live long enough
-  --> $DIR/regions-close-object-into-object-5.rs:27:11
-   |
-LL |     box B(&*v) as Box<X>
-   |           ^^^ borrowed value does not live long enough
-...
-LL | }
-   | - `*v` dropped here while still borrowed
-   |
-   = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 3 previous errors
-
-Some errors occurred: E0310, E0597.
-For more information about an error, try `rustc --explain E0310`.
diff --git a/src/test/ui/regions/regions-close-over-type-parameter-1.nll.stderr b/src/test/ui/regions/regions-close-over-type-parameter-1.nll.stderr
deleted file mode 100644 (file)
index 6b8406c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0310]: the parameter type `A` may not live long enough
-  --> $DIR/regions-close-over-type-parameter-1.rs:20:5
-   |
-LL |     box v as Box<SomeTrait+'static>
-   |     ^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `A: 'static`...
-
-error[E0309]: the parameter type `A` may not live long enough
-  --> $DIR/regions-close-over-type-parameter-1.rs:30:5
-   |
-LL |     box v as Box<SomeTrait+'b>
-   |     ^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `A: 'b`...
-
-error: aborting due to 2 previous errors
-
-Some errors occurred: 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.nll.stderr b/src/test/ui/regions/regions-close-over-type-parameter-multiple.nll.stderr
deleted file mode 100644 (file)
index 017e912..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0309]: the parameter type `A` may not live long enough
-  --> $DIR/regions-close-over-type-parameter-multiple.rs:30:5
-   |
-LL |     box v as Box<SomeTrait+'a> //~ ERROR cannot infer an appropriate lifetime
-   |     ^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `A: 'c`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-close-param-into-object.nll.stderr b/src/test/ui/regions/regions-close-param-into-object.nll.stderr
deleted file mode 100644 (file)
index c1c7e1b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:16:5
-   |
-LL |     Box::new(v) //~ ERROR parameter type `T` may not live long enough
-   |     ^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0310]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:22:5
-   |
-LL |     Box::new(v) //~ ERROR parameter type `T` may not live long enough
-   |     ^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0309]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:28:5
-   |
-LL |     Box::new(v) //~ ERROR parameter type `T` may not live long enough
-   |     ^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'a`...
-
-error[E0309]: the parameter type `T` may not live long enough
-  --> $DIR/regions-close-param-into-object.rs:34:5
-   |
-LL |     Box::new(v) //~ ERROR parameter type `T` may not live long enough
-   |     ^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'a`...
-
-error: aborting due to 4 previous errors
-
-Some errors occurred: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
diff --git a/src/test/ui/regions/regions-creating-enums3.nll.stderr b/src/test/ui/regions/regions-creating-enums3.nll.stderr
deleted file mode 100644 (file)
index aeb4fc6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-creating-enums3.rs:17: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) //~ ERROR 17:5: 17:19: lifetime mismatch [E0623]
-   |     ^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-creating-enums4.nll.stderr b/src/test/ui/regions/regions-creating-enums4.nll.stderr
deleted file mode 100644 (file)
index 9c68c9b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-creating-enums4.rs:17: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) //~ ERROR cannot infer
-   |     ^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-early-bound-error-method.nll.stderr b/src/test/ui/regions/regions-early-bound-error-method.nll.stderr
deleted file mode 100644 (file)
index e6c60b3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-early-bound-error-method.rs:30: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()
-   |         ^^^^^^^^ returning this value requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-early-bound-error.nll.stderr b/src/test/ui/regions/regions-early-bound-error.nll.stderr
deleted file mode 100644 (file)
index 3c95e97..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-early-bound-error.rs:29: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`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-escape-method.nll.stderr b/src/test/ui/regions/regions-escape-method.nll.stderr
deleted file mode 100644 (file)
index ffcd1b6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-escape-method.rs:25:13
-   |
-LL |     s.f(|p| p) //~ ERROR cannot infer
-   |          -- ^ 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.nll.stderr b/src/test/ui/regions/regions-escape-via-trait-or-not.nll.stderr
deleted file mode 100644 (file)
index 36a79d5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-escape-via-trait-or-not.rs:28:14
-   |
-LL |     with(|o| o) //~ ERROR cannot infer
-   |           -- ^ 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-free-region-ordering-callee.nll.stderr b/src/test/ui/regions/regions-free-region-ordering-callee.nll.stderr
deleted file mode 100644 (file)
index d060629..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-free-region-ordering-callee.rs:23: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 //~ ERROR 23:5: 23:8: lifetime mismatch [E0623]
-   |     ^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-free-region-ordering-callee.rs:28:24
-   |
-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;
-   |                        ^^^ assignment requires that `'a` must outlive `'b`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/regions-free-region-ordering-caller.nll.stderr b/src/test/ui/regions/regions-free-region-ordering-caller.nll.stderr
deleted file mode 100644 (file)
index 8d4f3d1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-free-region-ordering-caller.rs:18: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;//~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-free-region-ordering-caller.rs:23: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;//~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-free-region-ordering-caller.rs:27: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;//~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to 3 previous errors
-
diff --git a/src/test/ui/regions/regions-free-region-ordering-incorrect.nll.stderr b/src/test/ui/regions/regions-free-region-ordering-incorrect.nll.stderr
deleted file mode 100644 (file)
index 10259cc..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-free-region-ordering-incorrect.rs:25:5
-   |
-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 //~ ERROR cannot infer
-LL | |     }
-   | |_____^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-implied-bounds-projection-gap-1.nll.stderr b/src/test/ui/regions/regions-implied-bounds-projection-gap-1.nll.stderr
deleted file mode 100644 (file)
index 2eb4ccf..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0309]: the parameter type `T` may not live long enough
-  --> $DIR/regions-implied-bounds-projection-gap-1.rs:26:5
-   |
-LL |     wf::<&'x T>();
-   |     ^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `T: 'x`...
-
-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-self.nll.stderr b/src/test/ui/regions/regions-infer-bound-from-trait-self.nll.stderr
deleted file mode 100644 (file)
index 9fc5827..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0309]: the parameter type `Self` may not live long enough
-  --> $DIR/regions-infer-bound-from-trait-self.rs:56:9
-   |
-LL |         check_bound(x, self)
-   |         ^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `Self: 'a`...
-
-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.nll.stderr b/src/test/ui/regions/regions-infer-bound-from-trait.nll.stderr
deleted file mode 100644 (file)
index ace8f14..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0309]: the parameter type `A` may not live long enough
-  --> $DIR/regions-infer-bound-from-trait.rs:43:5
-   |
-LL |     check_bound(x, a) //~ ERROR parameter type `A` may not live long enough
-   |     ^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `A: 'a`...
-
-error[E0309]: the parameter type `A` may not live long enough
-  --> $DIR/regions-infer-bound-from-trait.rs:47:5
-   |
-LL |     check_bound(x, a) //~ ERROR parameter type `A` may not live long enough
-   |     ^^^^^^^^^^^^^^^^^
-   |
-   = help: consider adding an explicit lifetime bound `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-3.nll.stderr b/src/test/ui/regions/regions-infer-call-3.nll.stderr
deleted file mode 100644 (file)
index 30b892d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-call-3.rs:18: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-contravariance-due-to-decl.nll.stderr b/src/test/ui/regions/regions-infer-contravariance-due-to-decl.nll.stderr
deleted file mode 100644 (file)
index aba285d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-contravariance-due-to-decl.rs:35:12
-   |
-LL | fn use_<'short,'long>(c: Contravariant<'short>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Contravariant<'long> = c; //~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-covariance-due-to-decl.nll.stderr b/src/test/ui/regions/regions-infer-covariance-due-to-decl.nll.stderr
deleted file mode 100644 (file)
index 8bc6d56..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-covariance-due-to-decl.rs:32:12
-   |
-LL | fn use_<'short,'long>(c: Covariant<'long>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Covariant<'short> = c; //~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-decl.nll.stderr b/src/test/ui/regions/regions-infer-invariance-due-to-decl.nll.stderr
deleted file mode 100644 (file)
index 23a719e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-invariance-due-to-decl.rs:22:5
-   |
-LL | fn to_longer_lifetime<'r>(b_isize: invariant<'r>) -> invariant<'static> {
-   |                       -- lifetime `'r` defined here
-LL |     b_isize //~ ERROR mismatched types
-   |     ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.nll.stderr b/src/test/ui/regions/regions-infer-invariance-due-to-mutability-3.nll.stderr
deleted file mode 100644 (file)
index ff0a6ad..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-invariance-due-to-mutability-3.rs:21:5
-   |
-LL | fn to_longer_lifetime<'r>(b_isize: invariant<'r>) -> invariant<'static> {
-   |                       -- lifetime `'r` defined here
-LL |     b_isize //~ ERROR mismatched types
-   |     ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.nll.stderr b/src/test/ui/regions/regions-infer-invariance-due-to-mutability-4.nll.stderr
deleted file mode 100644 (file)
index c296397..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-invariance-due-to-mutability-4.rs:21:5
-   |
-LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
-   |                       -- lifetime `'r` defined here
-LL |     b_isize //~ ERROR mismatched types
-   |     ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-infer-not-param.nll.stderr b/src/test/ui/regions/regions-infer-not-param.nll.stderr
deleted file mode 100644 (file)
index faeaa5e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-not-param.rs:25:54
-   |
-LL | fn take_direct<'a,'b>(p: direct<'a>) -> direct<'b> { p } //~ ERROR mismatched types
-   |                -- -- lifetime `'b` defined here      ^ returning this value requires that `'a` must outlive `'b`
-   |                |
-   |                lifetime `'a` defined here
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-not-param.rs:29:63
-   |
-LL | fn take_indirect2<'a,'b>(p: indirect2<'a>) -> indirect2<'b> { p } //~ ERROR mismatched types
-   |                   -- -- 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
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-not-param.rs:29:63
-   |
-LL | fn take_indirect2<'a,'b>(p: indirect2<'a>) -> indirect2<'b> { p } //~ ERROR mismatched types
-   |                   -- -- lifetime `'b` defined here            ^ returning this value requires that `'a` must outlive `'b`
-   |                   |
-   |                   lifetime `'a` defined here
-
-error: aborting due to 3 previous errors
-
diff --git a/src/test/ui/regions/regions-infer-paramd-indirect.nll.stderr b/src/test/ui/regions/regions-infer-paramd-indirect.nll.stderr
deleted file mode 100644 (file)
index 7558c5c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-infer-paramd-indirect.rs:33:9
-   |
-LL | impl<'a> set_f<'a> for c<'a> {
-   |      -- lifetime `'a` defined here
-...
-LL |     fn set_f_bad(&mut self, b: Box<b>) {
-   |                             - has type `std::boxed::Box<std::boxed::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-lifetime-bounds-on-fns.nll.stderr b/src/test/ui/regions/regions-lifetime-bounds-on-fns.nll.stderr
deleted file mode 100644 (file)
index d1d98a2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/regions-lifetime-bounds-on-fns.rs:30:43
-   |
-LL |     let _: fn(&mut &isize, &mut &isize) = a; //~ ERROR mismatched types
-   |                                           ^ expected concrete lifetime, found bound lifetime parameter
-   |
-   = note: expected type `for<'r, 's, 't0, 't1> fn(&'r mut &'s isize, &'t0 mut &'t1 isize)`
-              found type `for<'r, 's> fn(&'r mut &isize, &'s 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-nested-fns.nll.stderr b/src/test/ui/regions/regions-nested-fns.nll.stderr
deleted file mode 100644 (file)
index cbc1e6b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-error: borrowed data escapes outside of closure
-  --> $DIR/regions-nested-fns.rs:20:9
-   |
-LL |     let mut ay = &y; //~ ERROR E0495
-   |         ------ `ay` is declared here, outside of the closure body
-LL | 
-LL |     ignore::<Box<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:15:18
-   |
-LL |     let mut ay = &y; //~ ERROR E0495
-   |                  ^^ borrowed value does not live long enough
-...
-LL | }
-   | - `y` dropped here while still borrowed
-   |
-   = note: borrowed value must be valid for the static lifetime...
-
-error[E0597]: `y` does not live long enough
-  --> $DIR/regions-nested-fns.rs:19:15
-   |
-LL |     ignore::<Box<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 | }
-   | - `y` dropped here while still borrowed
-   |
-   = note: borrowed value must be valid for the static lifetime...
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-nested-fns.rs:24:27
-   |
-LL | fn nested<'x>(x: &'x isize) {
-   |           -- lifetime `'x` defined here
-...
-LL |         if false { return x; } //~ ERROR E0312
-   |                           ^ returning this value requires that `'x` must outlive `'static`
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/regions/regions-outlives-projection-container-hrtb.nll.stderr b/src/test/ui/regions/regions-outlives-projection-container-hrtb.nll.stderr
deleted file mode 100644 (file)
index 6db1f6f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-error: compilation successful
-  --> $DIR/regions-outlives-projection-container-hrtb.rs:68:1
-   |
-LL | / fn main() {
-LL | | }
-   | |_^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-outlives-projection-container-wc.nll.stderr b/src/test/ui/regions/regions-outlives-projection-container-wc.nll.stderr
deleted file mode 100644 (file)
index 836f8c2..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-outlives-projection-container-wc.rs:46:13
-   |
-LL | fn with_assoc<'a,'b>() {
-   |               -- -- lifetime `'b` defined here
-   |               |
-   |               lifetime `'a` defined here
-...
-LL |     let _x: &'a WithAssoc<TheType<'b>> = loop { };
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-outlives-projection-container.nll.stderr b/src/test/ui/regions/regions-outlives-projection-container.nll.stderr
deleted file mode 100644 (file)
index 126f505..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-outlives-projection-container.rs:50:13
-   |
-LL | fn with_assoc<'a,'b>() {
-   |               -- -- lifetime `'b` defined here
-   |               |
-   |               lifetime `'a` defined here
-...
-LL |     let _x: &'a WithAssoc<TheType<'b>> = loop { };
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-outlives-projection-container.rs:68:13
-   |
-LL | fn without_assoc<'a,'b>() {
-   |                  -- -- lifetime `'b` defined here
-   |                  |
-   |                  lifetime `'a` defined here
-...
-LL |     let _x: &'a WithoutAssoc<TheType<'b>> = loop { };
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-outlives-projection-container.rs:77: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`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-outlives-projection-container.rs:84:5
-   |
-LL | fn call_without_assoc<'a,'b>() {
-   |                       -- -- lifetime `'b` defined here
-   |                       |
-   |                       lifetime `'a` defined here
-...
-LL |     call::<&'a WithoutAssoc<TheType<'b>>>(); //~ ERROR reference has a longer lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-
-error: aborting due to 4 previous errors
-
diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.nll.stderr b/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref-mut-ref.nll.stderr
deleted file mode 100644 (file)
index 48cd2d5..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-reborrow-from-shorter-mut-ref-mut-ref.rs:14: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 //~ ERROR 14:5: 14:14: lifetime mismatch [E0623]
-   |     ^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.nll.stderr b/src/test/ui/regions/regions-reborrow-from-shorter-mut-ref.nll.stderr
deleted file mode 100644 (file)
index 02c7ce3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-reborrow-from-shorter-mut-ref.rs:16: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 //~ ERROR 16:5: 16:13: lifetime mismatch [E0623]
-   |     ^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-ret-borrowed-1.nll.stderr b/src/test/ui/regions/regions-ret-borrowed-1.nll.stderr
deleted file mode 100644 (file)
index 5df6bca..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-ret-borrowed-1.rs:20: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.nll.stderr b/src/test/ui/regions/regions-ret-borrowed.nll.stderr
deleted file mode 100644 (file)
index b36191a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-ret-borrowed.rs:23: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-return-ref-to-upvar-issue-17403.nll.stderr b/src/test/ui/regions/regions-return-ref-to-upvar-issue-17403.nll.stderr
deleted file mode 100644 (file)
index 300a563..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: captured variable cannot escape `FnMut` closure body
-  --> $DIR/regions-return-ref-to-upvar-issue-17403.rs:17:24
-   |
-LL |         let mut f = || &mut x; //~ ERROR cannot infer
-   |                      - ^^^^^^ 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-static-bound.ll.nll.stderr b/src/test/ui/regions/regions-static-bound.ll.nll.stderr
deleted file mode 100644 (file)
index dc3a32c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-static-bound.rs:19:5
-   |
-LL | fn static_id_wrong_way<'a>(t: &'a ()) -> &'static () where 'static: 'a {
-   |                        -- lifetime `'a` defined here
-LL |     t //[ll]~ ERROR E0312
-   |     ^ returning this value requires that `'a` must outlive `'static`
-
-error[E0621]: explicit lifetime required in the type of `u`
-  --> $DIR/regions-static-bound.rs:24:5
-   |
-LL | fn error(u: &(), v: &()) {
-   |             --- help: add explicit lifetime `'static` to the type of `u`: `&'static ()`
-LL |     static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621]
-   |     ^^^^^^^^^^^^^ lifetime `'static` required
-
-error[E0621]: explicit lifetime required in the type of `v`
-  --> $DIR/regions-static-bound.rs:27:5
-   |
-LL | fn error(u: &(), v: &()) {
-   |                     --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()`
-...
-LL |     static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
-   |     ^^^^^^^^^^^^^^^^^^^^^^ lifetime `'static` required
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-static-bound.rs:24:5
-   |
-LL | fn error(u: &(), v: &()) {
-   |             -       - let's call the lifetime of this reference `'2`
-   |             |
-   |             let's call the lifetime of this reference `'1`
-LL |     static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621]
-   |     ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-static-bound.rs:27:5
-   |
-LL | fn error(u: &(), v: &()) {
-   |             -       - let's call the lifetime of this reference `'1`
-   |             |
-   |             let's call the lifetime of this reference `'2`
-...
-LL |     static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
-   |     ^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 5 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
diff --git a/src/test/ui/regions/regions-trait-object-subtyping.nll.stderr b/src/test/ui/regions/regions-trait-object-subtyping.nll.stderr
deleted file mode 100644 (file)
index 0a9bcee..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-trait-object-subtyping.rs:25:5
-   |
-LL | fn foo3<'a,'b>(x: &'a mut Dummy) -> &'b mut Dummy {
-   |         -- -- lifetime `'b` defined here
-   |         |
-   |         lifetime `'a` defined here
-LL |     // Without knowing 'a:'b, we can't coerce
-LL |     x //~ ERROR lifetime bound not satisfied
-   |     ^ cast requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-trait-object-subtyping.rs:32:5
-   |
-LL | fn foo4<'a:'b,'b>(x: Wrapper<&'a mut Dummy>) -> Wrapper<&'b mut Dummy> {
-   |         --    -- lifetime `'b` defined here
-   |         |
-   |         lifetime `'a` defined here
-LL |     // We can't coerce because it is packed in `Wrapper`
-LL |     x //~ ERROR mismatched types
-   |     ^ returning this value requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.nll.stderr b/src/test/ui/regions/regions-variance-contravariant-use-covariant-in-second-position.nll.stderr
deleted file mode 100644 (file)
index 668b75f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-variance-contravariant-use-covariant-in-second-position.rs:35:12
-   |
-LL | fn use_<'short,'long>(c: S<'long, 'short>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: S<'long, 'long> = c; //~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-contravariant-use-covariant.nll.stderr b/src/test/ui/regions/regions-variance-contravariant-use-covariant.nll.stderr
deleted file mode 100644 (file)
index 5d787e6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-variance-contravariant-use-covariant.rs:33:12
-   |
-LL | fn use_<'short,'long>(c: Contravariant<'short>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Contravariant<'long> = c; //~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-covariant-use-contravariant.nll.stderr b/src/test/ui/regions/regions-variance-covariant-use-contravariant.nll.stderr
deleted file mode 100644 (file)
index 3fb2900..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-variance-covariant-use-contravariant.rs:33:12
-   |
-LL | fn use_<'short,'long>(c: Covariant<'long>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Covariant<'short> = c; //~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-invariant-use-contravariant.nll.stderr b/src/test/ui/regions/regions-variance-invariant-use-contravariant.nll.stderr
deleted file mode 100644 (file)
index fb59ec1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-variance-invariant-use-contravariant.rs:30:12
-   |
-LL | fn use_<'short,'long>(c: Invariant<'long>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Invariant<'short> = c; //~ ERROR E0623
-   |            ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/regions/regions-variance-invariant-use-covariant.nll.stderr b/src/test/ui/regions/regions-variance-invariant-use-covariant.nll.stderr
deleted file mode 100644 (file)
index daf6a79..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/regions-variance-invariant-use-covariant.rs:27:12
-   |
-LL | fn use_<'b>(c: Invariant<'b>) {
-   |         -- lifetime `'b` defined here
-...
-LL |     let _: Invariant<'static> = c; //~ ERROR mismatched types
-   |            ^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/static/static-items-cant-move.nll.stderr b/src/test/ui/static/static-items-cant-move.nll.stderr
new file mode 100644 (file)
index 0000000..35a400b
--- /dev/null
@@ -0,0 +1,18 @@
+error[E0507]: cannot move out of static item
+  --> $DIR/static-items-cant-move.rs:28:10
+   |
+LL |     test(BAR); //~ ERROR cannot move out of static item
+   |          ^^^ cannot move out of static item
+
+error[E0507]: cannot move out of immutable static item `BAR`
+  --> $DIR/static-items-cant-move.rs:28:10
+   |
+LL |     test(BAR); //~ ERROR cannot move out of static item
+   |          ^^^
+   |          |
+   |          cannot move out of immutable static item `BAR`
+   |          cannot move
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
index e6b612fed85885c1a24cae4ce2bfc59e0b3b87f3..d2576a4baf369ab657e287a0e4b3f71f37beeb33 100644 (file)
@@ -7,6 +7,15 @@ LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
    |             cannot move out of borrowed content
    |             help: consider removing the `*`: `&x`
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/std-uncopyable-atomics.rs:19:13
+   |
+LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
+   |             ^^^
+   |             |
+   |             cannot move out of data in a `&` reference
+   |             cannot move
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/std-uncopyable-atomics.rs:21:13
    |
@@ -16,6 +25,15 @@ LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
    |             cannot move out of borrowed content
    |             help: consider removing the `*`: `&x`
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/std-uncopyable-atomics.rs:21:13
+   |
+LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
+   |             ^^^
+   |             |
+   |             cannot move out of data in a `&` reference
+   |             cannot move
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/std-uncopyable-atomics.rs:23:13
    |
@@ -25,6 +43,15 @@ LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
    |             cannot move out of borrowed content
    |             help: consider removing the `*`: `&x`
 
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/std-uncopyable-atomics.rs:23:13
+   |
+LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
+   |             ^^^
+   |             |
+   |             cannot move out of data in a `&` reference
+   |             cannot move
+
 error[E0507]: cannot move out of borrowed content
   --> $DIR/std-uncopyable-atomics.rs:25:13
    |
@@ -34,6 +61,15 @@ LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
    |             cannot move out of borrowed content
    |             help: consider removing the `*`: `&x`
 
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+  --> $DIR/std-uncopyable-atomics.rs:25:13
+   |
+LL |     let x = *&x; //~ ERROR: cannot move out of borrowed content
+   |             ^^^
+   |             |
+   |             cannot move out of data in a `&` reference
+   |             cannot move
+
+error: aborting due to 8 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index c9c0ac2b2d94b677a1a2ecf56c3770a75cf498d7..05f8f343380036d3f16deb9072f1c6c6546e79fb 100644 (file)
@@ -10,13 +10,17 @@ error[E0625]: thread-local statics cannot be accessed at compile-time
 LL | static C: &u32 = &A;
    |                  ^^
 
-error[E0712]: thread-local variable borrowed past end of function
+warning[E0712]: thread-local variable borrowed past end of function
   --> $DIR/thread-local-in-ctfe.rs:19:18
    |
 LL | static C: &u32 = &A;
    |                  ^^- end of enclosing function is here
    |                  |
    |                  thread-local variables cannot be borrowed beyond the end of the function
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error[E0625]: thread-local statics cannot be accessed at compile-time
   --> $DIR/thread-local-in-ctfe.rs:22:16
@@ -30,13 +34,17 @@ error[E0625]: thread-local statics cannot be accessed at compile-time
 LL | const E: &u32 = &A;
    |                 ^^
 
-error[E0712]: thread-local variable borrowed past end of function
+warning[E0712]: thread-local variable borrowed past end of function
   --> $DIR/thread-local-in-ctfe.rs:25:17
    |
 LL | const E: &u32 = &A;
    |                 ^^- end of enclosing function is here
    |                 |
    |                 thread-local variables cannot be borrowed beyond the end of the function
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error[E0625]: thread-local statics cannot be accessed at compile-time
   --> $DIR/thread-local-in-ctfe.rs:29:5
@@ -44,7 +52,7 @@ error[E0625]: thread-local statics cannot be accessed at compile-time
 LL |     A
    |     ^
 
-error: aborting due to 7 previous errors
+error: aborting due to 5 previous errors
 
 Some errors occurred: E0625, E0712.
 For more information about an error, try `rustc --explain E0625`.
diff --git a/src/test/ui/trivial-bounds/trivial-bounds-leak-copy.nll.stderr b/src/test/ui/trivial-bounds/trivial-bounds-leak-copy.nll.stderr
new file mode 100644 (file)
index 0000000..9f56bf0
--- /dev/null
@@ -0,0 +1,20 @@
+error[E0507]: cannot move out of borrowed content
+  --> $DIR/trivial-bounds-leak-copy.rs:19:5
+   |
+LL |     *t //~ ERROR
+   |     ^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of `*t` which is behind a `&` reference
+  --> $DIR/trivial-bounds-leak-copy.rs:19:5
+   |
+LL | fn move_out_string(t: &String) -> String {
+   |                       ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL |     *t //~ ERROR
+   |     ^^
+   |     |
+   |     cannot move out of `*t` which is behind a `&` reference
+   |     `t` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
index 4baa54e34c75532750ffba07c939ae627e9639c8..625084efec2ff38002627fb1ac27da748bab7e31 100644 (file)
@@ -6,6 +6,21 @@ LL |         let x = Box::new(0);
 LL |         let f = to_fn(|| drop(x)); //~ ERROR cannot move
    |                               ^ cannot move out of captured variable in an `Fn` closure
 
+error[E0507]: cannot move out of `x`, as it is a captured variable in a `Fn` closure
+  --> $DIR/unboxed-closure-illegal-move.rs:25:31
+   |
+LL |         let f = to_fn(|| drop(x)); //~ ERROR cannot move
+   |                               ^
+   |                               |
+   |                               cannot move out of `x`, as it is a captured variable in a `Fn` closure
+   |                               cannot move
+   |
+help: consider changing this to accept closures that implement `FnMut`
+  --> $DIR/unboxed-closure-illegal-move.rs:25:23
+   |
+LL |         let f = to_fn(|| drop(x)); //~ ERROR cannot move
+   |                       ^^^^^^^^^^
+
 error[E0507]: cannot move out of captured variable in an `FnMut` closure
   --> $DIR/unboxed-closure-illegal-move.rs:29:35
    |
@@ -22,6 +37,21 @@ LL |         let x = Box::new(0);
 LL |         let f = to_fn(move || drop(x)); //~ ERROR cannot move
    |                                    ^ cannot move out of captured variable in an `Fn` closure
 
+error[E0507]: cannot move out of `x`, as it is a captured variable in a `Fn` closure
+  --> $DIR/unboxed-closure-illegal-move.rs:38:36
+   |
+LL |         let f = to_fn(move || drop(x)); //~ ERROR cannot move
+   |                                    ^
+   |                                    |
+   |                                    cannot move out of `x`, as it is a captured variable in a `Fn` closure
+   |                                    cannot move
+   |
+help: consider changing this to accept closures that implement `FnMut`
+  --> $DIR/unboxed-closure-illegal-move.rs:38:23
+   |
+LL |         let f = to_fn(move || drop(x)); //~ ERROR cannot move
+   |                       ^^^^^^^^^^^^^^^
+
 error[E0507]: cannot move out of captured variable in an `FnMut` closure
   --> $DIR/unboxed-closure-illegal-move.rs:42:40
    |
@@ -30,6 +60,6 @@ LL |         let x = Box::new(0);
 LL |         let f = to_fn_mut(move || drop(x)); //~ ERROR cannot move
    |                                        ^ cannot move out of captured variable in an `FnMut` closure
 
-error: aborting due to 4 previous errors
+error: aborting due to 6 previous errors
 
 For more information about this error, try `rustc --explain E0507`.
index 084d7ff3bcd61f85d26f3db6a4c7bc4c87908e32..ee91ea3b66f304e61d41fc7073ddb4cb0fa0f759 100644 (file)
@@ -33,7 +33,7 @@ LL |     let x = 0;
 LL |     move || set(&mut x); //~ ERROR cannot borrow
    |                 ^^^^^^ cannot borrow as mutable
 
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
   --> $DIR/unboxed-closure-immutable-capture.rs:23:8
    |
 LL |     let x = 0;
@@ -41,8 +41,12 @@ LL |     let x = 0;
 ...
 LL |     || x = 1; //~ ERROR cannot assign
    |        ^^^^^ cannot assign
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
   --> $DIR/unboxed-closure-immutable-capture.rs:25:12
    |
 LL |     let x = 0;
@@ -50,8 +54,12 @@ LL |     let x = 0;
 ...
 LL |     || set(&mut x); //~ ERROR cannot assign
    |            ^^^^^^ cannot borrow as mutable
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
   --> $DIR/unboxed-closure-immutable-capture.rs:26:8
    |
 LL |     let x = 0;
@@ -59,8 +67,12 @@ LL |     let x = 0;
 ...
 LL |     || x = 1; //~ ERROR cannot assign
    |        ^^^^^ cannot assign
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
   --> $DIR/unboxed-closure-immutable-capture.rs:28:12
    |
 LL |     let x = 0;
@@ -68,8 +80,12 @@ LL |     let x = 0;
 ...
 LL |     || set(&mut x); //~ ERROR cannot assign
    |            ^^^^^^ cannot borrow as mutable
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
-error: aborting due to 8 previous errors
+error: aborting due to 4 previous errors
 
 Some errors occurred: E0594, E0596.
 For more information about an error, try `rustc --explain E0594`.
diff --git a/src/test/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.nll.stderr b/src/test/ui/unboxed-closures/unboxed-closures-infer-argument-types-two-region-pointers.nll.stderr
deleted file mode 100644 (file)
index a350129..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/unboxed-closures-infer-argument-types-two-region-pointers.rs:27:9
-   |
-LL |     doit(0, &|x, y| {
-   |               -  - has type `&'1 i32`
-   |               |
-   |               has type `&std::cell::Cell<&'2 i32>`
-LL |         x.set(y); //~ ERROR E0312
-   |         ^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
index 718c3a19938c4a8735ea1cffe8f973501520884d..fa0aba96e18be314935d4c93d5622ee3735b026c 100644 (file)
@@ -1,4 +1,4 @@
-error[E0596]: cannot borrow `tick1` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `tick1` as mutable, as it is not declared as mutable
   --> $DIR/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs:27:9
    |
 LL |     let tick1 = || {
@@ -6,6 +6,10 @@ LL |     let tick1 = || {
 ...
 LL |         tick1();
    |         ^^^^^ cannot borrow as mutable
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error[E0596]: cannot borrow `tick2` as mutable, as it is not declared as mutable
   --> $DIR/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs:30:5
@@ -16,6 +20,6 @@ LL |     let tick2 = || { //~ ERROR closure cannot assign to immutable local var
 LL |     tick2(); //~ ERROR cannot borrow
    |     ^^^^^ cannot borrow as mutable
 
-error: aborting due to 2 previous errors
+error: aborting due to previous error
 
 For more information about this error, try `rustc --explain E0596`.
index f765f207303d2dd1b9bc74ee926c75820baf9469..9858b8db2112d1ae6a819e985c8ec0626821934d 100644 (file)
@@ -1,4 +1,4 @@
-error[E0594]: cannot assign to `n`, as it is not declared as mutable
+warning[E0594]: cannot assign to `n`, as it is not declared as mutable
   --> $DIR/unboxed-closures-mutate-upvar.rs:25:9
    |
 LL |     let n = 0;
@@ -6,6 +6,10 @@ LL |     let n = 0;
 LL |     let mut f = to_fn_mut(|| { //~ ERROR closure cannot assign
 LL |         n += 1;
    |         ^^^^^^ cannot assign
+   |
+   = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+           It represents potential unsoundness in your code.
+           This warning will become a hard error in the future.
 
 error[E0594]: cannot assign to `n`, as it is not declared as mutable
   --> $DIR/unboxed-closures-mutate-upvar.rs:42:9
@@ -40,6 +44,6 @@ LL | |         n += 1; //~ ERROR cannot assign
 LL | |     });
    | |_____^
 
-error: aborting due to 4 previous errors
+error: aborting due to 3 previous errors
 
 For more information about this error, try `rustc --explain E0594`.
diff --git a/src/test/ui/underscore-lifetime/dyn-trait-underscore.nll.stderr b/src/test/ui/underscore-lifetime/dyn-trait-underscore.nll.stderr
deleted file mode 100644 (file)
index 7adb195..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/dyn-trait-underscore.rs:18:5
-   |
-LL | fn a<T>(items: &[T]) -> Box<dyn Iterator<Item=&T>> {
-   |                - let's call the lifetime of this reference `'1`
-LL |     //                      ^^^^^^^^^^^^^^^^^^^^^ bound *here* defaults to `'static`
-LL |     Box::new(items.iter()) //~ ERROR cannot infer an appropriate lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.nll.stderr b/src/test/ui/underscore-lifetime/underscore-lifetime-elison-mismatch.nll.stderr
deleted file mode 100644 (file)
index eedbfbf..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/underscore-lifetime-elison-mismatch.rs:11:42
-   |
-LL | fn foo(x: &mut Vec<&'_ u8>, y: &'_ u8) { x.push(y); } //~ ERROR lifetime mismatch
-   |                    -           -         ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-   |                    |           |
-   |                    |           let's call the lifetime of this reference `'1`
-   |                    let's call the lifetime of this reference `'2`
-
-error: aborting due to previous error
-
index 111940aab2c322764150b4a5be8539b966a6a6ad..8112ddbe2f16e8db858080f795c9fa8daca7bcfb 100644 (file)
@@ -21,7 +21,19 @@ error[E0507]: cannot move out of borrowed content
 LL |     !*n;  //~ ERROR: cannot move out of borrowed content
    |      ^^ cannot move out of borrowed content
 
-error: aborting due to 3 previous errors
+error[E0507]: cannot move out of `*n` which is behind a `&` reference
+  --> $DIR/unop-move-semantics.rs:36:6
+   |
+LL |     let n = &y;
+   |             -- help: consider changing this to be a mutable reference: `&mut y`
+...
+LL |     !*n;  //~ ERROR: cannot move out of borrowed content
+   |      ^^
+   |      |
+   |      cannot move out of `*n` which is behind a `&` reference
+   |      `n` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 4 previous errors
 
 Some errors occurred: E0382, E0507.
 For more information about an error, try `rustc --explain E0382`.
diff --git a/src/test/ui/variance/variance-btree-invariant-types.nll.stderr b/src/test/ui/variance/variance-btree-invariant-types.nll.stderr
deleted file mode 100644 (file)
index f09dcdf..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:16:5
-   |
-LL | fn iter_cov_key<'a, 'new>(v: IterMut<'a, &'static (), ()>) -> IterMut<'a, &'new (), ()> {
-   |                     ---- lifetime `'new` defined here
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:19:5
-   |
-LL | fn iter_cov_val<'a, 'new>(v: IterMut<'a, (), &'static ()>) -> IterMut<'a, (), &'new ()> {
-   |                     ---- lifetime `'new` defined here
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:22:5
-   |
-LL | fn iter_contra_key<'a, 'new>(v: IterMut<'a, &'new (), ()>) -> IterMut<'a, &'static (), ()> {
-   |                        ---- lifetime `'new` defined here
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:25:5
-   |
-LL | fn iter_contra_val<'a, 'new>(v: IterMut<'a, (), &'new ()>) -> IterMut<'a, (), &'static ()> {
-   |                        ---- lifetime `'new` defined here
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:30:5
-   |
-LL | fn occ_cov_key<'a, 'new>(v: OccupiedEntry<'a, &'static (), ()>)
-   |                    ---- lifetime `'new` defined here
-LL |                          -> OccupiedEntry<'a, &'new (), ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:34:5
-   |
-LL | fn occ_cov_val<'a, 'new>(v: OccupiedEntry<'a, (), &'static ()>)
-   |                    ---- lifetime `'new` defined here
-LL |                          -> OccupiedEntry<'a, (), &'new ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:38:5
-   |
-LL | fn occ_contra_key<'a, 'new>(v: OccupiedEntry<'a, &'new (), ()>)
-   |                       ---- lifetime `'new` defined here
-LL |                             -> OccupiedEntry<'a, &'static (), ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:42:5
-   |
-LL | fn occ_contra_val<'a, 'new>(v: OccupiedEntry<'a, (), &'new ()>)
-   |                       ---- lifetime `'new` defined here
-LL |                             -> OccupiedEntry<'a, (), &'static ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:47:5
-   |
-LL | fn vac_cov_key<'a, 'new>(v: VacantEntry<'a, &'static (), ()>)
-   |                    ---- lifetime `'new` defined here
-LL |                          -> VacantEntry<'a, &'new (), ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:51:5
-   |
-LL | fn vac_cov_val<'a, 'new>(v: VacantEntry<'a, (), &'static ()>)
-   |                    ---- lifetime `'new` defined here
-LL |                          -> VacantEntry<'a, (), &'new ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:55:5
-   |
-LL | fn vac_contra_key<'a, 'new>(v: VacantEntry<'a, &'new (), ()>)
-   |                       ---- lifetime `'new` defined here
-LL |                             -> VacantEntry<'a, &'static (), ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-btree-invariant-types.rs:59:5
-   |
-LL | fn vac_contra_val<'a, 'new>(v: VacantEntry<'a, (), &'new ()>)
-   |                       ---- lifetime `'new` defined here
-LL |                             -> VacantEntry<'a, (), &'static ()> {
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'new` must outlive `'static`
-
-error: aborting due to 12 previous errors
-
diff --git a/src/test/ui/variance/variance-cell-is-invariant.nll.stderr b/src/test/ui/variance/variance-cell-is-invariant.nll.stderr
deleted file mode 100644 (file)
index eb01c2b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-cell-is-invariant.rs:24:12
-   |
-LL | fn use_<'short,'long>(c: Foo<'short>,
-   |         ------ ----- lifetime `'long` defined here
-   |         |
-   |         lifetime `'short` defined here
-...
-LL |     let _: Foo<'long> = c; //~ ERROR E0623
-   |            ^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/variance/variance-contravariant-arg-object.nll.stderr b/src/test/ui/variance/variance-contravariant-arg-object.nll.stderr
deleted file mode 100644 (file)
index a30720d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-contravariant-arg-object.rs:24:5
-   |
-LL | fn get_min_from_max<'min, 'max>(v: Box<Get<&'max i32>>)
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-contravariant-arg-object.rs:32:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>(v: Box<Get<&'min i32>>)
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-contravariant-arg-trait-match.nll.stderr b/src/test/ui/variance/variance-contravariant-arg-trait-match.nll.stderr
deleted file mode 100644 (file)
index 6998169..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-contravariant-arg-trait-match.rs:23:5
-   |
-LL | fn get_min_from_max<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<G,&'min i32>() //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-contravariant-arg-trait-match.rs:31:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<G,&'max i32>() //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-contravariant-self-trait-match.nll.stderr b/src/test/ui/variance/variance-contravariant-self-trait-match.nll.stderr
deleted file mode 100644 (file)
index a856681..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-contravariant-self-trait-match.rs:23:5
-   |
-LL | fn get_min_from_max<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<&'min G>(); //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-contravariant-self-trait-match.rs:32:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<&'max G>(); //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-covariant-arg-object.nll.stderr b/src/test/ui/variance/variance-covariant-arg-object.nll.stderr
deleted file mode 100644 (file)
index 26699a5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-covariant-arg-object.rs:25:5
-   |
-LL | fn get_min_from_max<'min, 'max>(v: Box<Get<&'max i32>>)
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-covariant-arg-object.rs:32:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>(v: Box<Get<&'min i32>>)
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-covariant-arg-trait-match.nll.stderr b/src/test/ui/variance/variance-covariant-arg-trait-match.nll.stderr
deleted file mode 100644 (file)
index bb3f5f5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-covariant-arg-trait-match.rs:24:5
-   |
-LL | fn get_min_from_max<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<G,&'min i32>() //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-covariant-arg-trait-match.rs:30:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<G,&'max i32>() //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-covariant-self-trait-match.nll.stderr b/src/test/ui/variance/variance-covariant-self-trait-match.nll.stderr
deleted file mode 100644 (file)
index 3bbf9c0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-covariant-self-trait-match.rs:24:5
-   |
-LL | fn get_min_from_max<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<&'min G>(); //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-covariant-self-trait-match.rs:30:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<&'max G>(); //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-invariant-arg-object.nll.stderr b/src/test/ui/variance/variance-invariant-arg-object.nll.stderr
deleted file mode 100644 (file)
index 20ab648..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-invariant-arg-object.rs:21:5
-   |
-LL | fn get_min_from_max<'min, 'max>(v: Box<Get<&'max i32>>)
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-invariant-arg-object.rs:28:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>(v: Box<Get<&'min i32>>)
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-invariant-arg-trait-match.nll.stderr b/src/test/ui/variance/variance-invariant-arg-trait-match.nll.stderr
deleted file mode 100644 (file)
index be9f5a6..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-invariant-arg-trait-match.rs:20:5
-   |
-LL | fn get_min_from_max<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<G,&'min i32>() //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-invariant-arg-trait-match.rs:26:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<G,&'max i32>() //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-invariant-self-trait-match.nll.stderr b/src/test/ui/variance/variance-invariant-self-trait-match.nll.stderr
deleted file mode 100644 (file)
index f582785..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-invariant-self-trait-match.rs:20:5
-   |
-LL | fn get_min_from_max<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<&'min G>(); //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-invariant-self-trait-match.rs:26:5
-   |
-LL | fn get_max_from_min<'min, 'max, G>()
-   |                     ----  ---- lifetime `'max` defined here
-   |                     |
-   |                     lifetime `'min` defined here
-...
-LL |     impls_get::<&'max G>(); //~ ERROR mismatched types
-   |     ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/variance/variance-trait-matching.nll.stderr b/src/test/ui/variance/variance-trait-matching.nll.stderr
deleted file mode 100644 (file)
index 14b4258..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0621]: explicit lifetime required in the type of `get`
-  --> $DIR/variance-trait-matching.rs:34:5
-   |
-LL | fn get<'a, G>(get: &G) -> i32
-   |                    -- help: add explicit lifetime `'a` to the type of `get`: `&'a G`
-...
-LL |     pick(get, &22) //~ ERROR 34:5: 34:9: explicit lifetime required in the type of `get` [E0621]
-   |     ^^^^^^^^^^^^^^ 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/variance/variance-use-contravariant-struct-1.nll.stderr b/src/test/ui/variance/variance-use-contravariant-struct-1.nll.stderr
deleted file mode 100644 (file)
index 37604af..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-use-contravariant-struct-1.rs:22:5
-   |
-LL | fn foo<'min,'max>(v: SomeStruct<&'max ()>)
-   |        ---- ---- lifetime `'max` defined here
-   |        |
-   |        lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/variance/variance-use-covariant-struct-1.nll.stderr b/src/test/ui/variance/variance-use-covariant-struct-1.nll.stderr
deleted file mode 100644 (file)
index c7fd603..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-use-covariant-struct-1.rs:20:5
-   |
-LL | fn foo<'min,'max>(v: SomeStruct<&'min ()>)
-   |        ---- ---- lifetime `'max` defined here
-   |        |
-   |        lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/variance/variance-use-invariant-struct-1.nll.stderr b/src/test/ui/variance/variance-use-invariant-struct-1.nll.stderr
deleted file mode 100644 (file)
index 1638d5e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-use-invariant-struct-1.rs:22:5
-   |
-LL | fn foo<'min,'max>(v: SomeStruct<&'max ()>)
-   |        ---- ---- lifetime `'max` defined here
-   |        |
-   |        lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/variance-use-invariant-struct-1.rs:29:5
-   |
-LL | fn bar<'min,'max>(v: SomeStruct<&'min ()>)
-   |        ---- ---- lifetime `'max` defined here
-   |        |
-   |        lifetime `'min` defined here
-...
-LL |     v //~ ERROR mismatched types
-   |     ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/wf/wf-static-method.nll.stderr b/src/test/ui/wf/wf-static-method.nll.stderr
deleted file mode 100644 (file)
index bfcb16c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-error: unsatisfied lifetime constraints
-  --> $DIR/wf-static-method.rs:27:9
-   |
-LL | impl<'a, 'b> Foo<'a, 'b, Evil<'a, 'b>> for () {
-   |      --  -- lifetime `'b` defined here
-   |      |
-   |      lifetime `'a` defined here
-...
-LL |         u //~ ERROR E0312
-   |         ^ returning this value requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/wf-static-method.rs:36:18
-   |
-LL | impl<'a, 'b> Foo<'a, 'b, ()> for IndirectEvil<'a, 'b> {
-   |      --  -- lifetime `'b` defined here
-   |      |
-   |      lifetime `'a` defined here
-...
-LL |         let me = Self::make_me(); //~ ERROR lifetime bound not satisfied
-   |                  ^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/wf-static-method.rs:43:9
-   |
-LL | impl<'a, 'b> Evil<'a, 'b> {
-   |      --  -- lifetime `'b` defined here
-   |      |
-   |      lifetime `'a` defined here
-LL |     fn inherent_evil(u: &'b u32) -> &'a u32 {
-LL |         u //~ ERROR E0312
-   |         ^ returning this value requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/wf-static-method.rs:51:5
-   |
-LL | fn evil<'a, 'b>(b: &'b u32) -> &'a u32 {
-   |         --  -- lifetime `'b` defined here
-   |         |
-   |         lifetime `'a` defined here
-LL |     <()>::static_evil(b) //~ ERROR cannot infer an appropriate lifetime
-   |     ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
-  --> $DIR/wf-static-method.rs:55:5
-   |
-LL | fn indirect_evil<'a, 'b>(b: &'b u32) -> &'a u32 {
-   |                  --  -- lifetime `'b` defined here
-   |                  |
-   |                  lifetime `'a` defined here
-LL |     <IndirectEvil>::static_evil(b)
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'b` must outlive `'a`
-
-error: aborting due to 5 previous errors
-
index 4cb6f6b83bdd10e40a1ce0f576acdf109e85688f..c69956030c0b3ba6678cb817ff44bb54cc99e654 100644 (file)
@@ -1810,7 +1810,7 @@ fn make_compile_args(&self, input_file: &Path, output_file: TargetLocation) -> C
 
         match self.config.compare_mode {
             Some(CompareMode::Nll) => {
-                rustc.args(&["-Zborrowck=mir", "-Ztwo-phase-borrows"]);
+                rustc.args(&["-Zborrowck=migrate", "-Ztwo-phase-borrows"]);
             }
             Some(CompareMode::Polonius) => {
                 rustc.args(&["-Zpolonius", "-Zborrowck=mir", "-Ztwo-phase-borrows"]);