about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorMatthew Jasper <mjjasper1@gmail.com>2018-09-29 11:47:47 +0100
committerMatthew Jasper <mjjasper1@gmail.com>2018-10-03 20:32:38 +0100
commitbc4f9b848d745022ededdfaa3099158a766e8faa (patch)
tree09130b6605ea1381a5ae0755323f5d7be6f6e120 /src/test
parentcc09cb5e5ad8c072441f2156aa9bcd1484e55b1c (diff)
downloadrust-bc4f9b848d745022ededdfaa3099158a766e8faa.tar.gz
rust-bc4f9b848d745022ededdfaa3099158a766e8faa.zip
Clearer later use messages for calls
Give a special message when the later use is from a call. Use the span
of the callee instead of the whole expression. For conflicting borrow
messages say that the later use is of the first borrow.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/E0501.ast.nll.stderr4
-rw-r--r--src/test/ui/E0501.mir.stderr4
-rw-r--r--src/test/ui/binop/binop-move-semantics.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrow-tuple-fields.nll.stderr8
-rw-r--r--src/test/ui/borrowck/borrowck-anon-fields-struct.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-anon-fields-tuple.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-anon-fields-variant.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-assign-comp-idx.nll.stderr18
-rw-r--r--src/test/ui/borrowck/borrowck-autoref-3261.nll.stderr24
-rw-r--r--src/test/ui/borrowck/borrowck-bad-nested-calls-free.nll.stderr26
-rw-r--r--src/test/ui/borrowck/borrowck-bad-nested-calls-move.nll.stderr26
-rw-r--r--src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.nll.stderr20
-rw-r--r--src/test/ui/borrowck/borrowck-borrow-from-stack-variable.nll.stderr20
-rw-r--r--src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-borrow-mut-object-twice.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-closures-mut-and-imm.ast.nll.stderr8
-rw-r--r--src/test/ui/borrowck/borrowck-closures-mut-and-imm.mir.stderr8
-rw-r--r--src/test/ui/borrowck/borrowck-closures-two-mut-fail.nll.stderr10
-rw-r--r--src/test/ui/borrowck/borrowck-closures-two-mut.stderr10
-rw-r--r--src/test/ui/borrowck/borrowck-closures-unique-imm.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-closures-unique.nll.stderr6
-rw-r--r--src/test/ui/borrowck/borrowck-closures-use-after-free.nll.stderr7
-rw-r--r--src/test/ui/borrowck/borrowck-describe-lvalue.ast.nll.stderr18
-rw-r--r--src/test/ui/borrowck/borrowck-describe-lvalue.mir.stderr18
-rw-r--r--src/test/ui/borrowck/borrowck-field-sensitivity.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-for-loop-head-linkage.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-insert-during-each.nll.stderr40
-rw-r--r--src/test/ui/borrowck/borrowck-lend-flow-if.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-lend-flow-loop.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-lend-flow.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.nll.stderr20
-rw-r--r--src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-loan-rcvr.nll.stderr18
-rw-r--r--src/test/ui/borrowck/borrowck-loan-vec-content.nll.stderr17
-rw-r--r--src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.ast.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.mir.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-object-lifetime.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-overloaded-index-autoderef.nll.stderr8
-rw-r--r--src/test/ui/borrowck/borrowck-overloaded-index-ref-index.ast.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-overloaded-index-ref-index.mir.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.nll.stderr6
-rw-r--r--src/test/ui/borrowck/borrowck-slice-pattern-element-loan.stderr22
-rw-r--r--src/test/ui/borrowck/borrowck-swap-mut-base-ptr.nll.stderr2
-rw-r--r--src/test/ui/borrowck/borrowck-union-borrow.ast.nll.stderr12
-rw-r--r--src/test/ui/borrowck/borrowck-union-borrow.mir.stderr12
-rw-r--r--src/test/ui/borrowck/borrowck-uniq-via-lend.nll.stderr4
-rw-r--r--src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.nll.stderr2
-rw-r--r--src/test/ui/borrowck/issue-51117.nll.stderr2
-rw-r--r--src/test/ui/borrowck/mut-borrow-in-loop.nll.stderr6
-rw-r--r--src/test/ui/borrowck/mut-borrow-outside-loop.nll.stderr4
-rw-r--r--src/test/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr8
-rw-r--r--src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr20
-rw-r--r--src/test/ui/borrowck/two-phase-multi-mut.stderr15
-rw-r--r--src/test/ui/borrowck/two-phase-nonrecv-autoref.ast.nll.stderr25
-rw-r--r--src/test/ui/borrowck/two-phase-nonrecv-autoref.nll.stderr25
-rw-r--r--src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr2
-rw-r--r--src/test/ui/borrowck/two-phase-sneaky.nll.stderr20
-rw-r--r--src/test/ui/borrowck/two-phase-surprise-no-conflict.nll.stderr93
-rw-r--r--src/test/ui/borrowck/two-phase-surprise-no-conflict.no2pb.stderr112
-rw-r--r--src/test/ui/codemap_tests/issue-11715.nll.stderr2
-rw-r--r--src/test/ui/codemap_tests/one_line.nll.stderr7
-rw-r--r--src/test/ui/coercion/coerce-overloaded-autoderef.ast.nll.stderr13
-rw-r--r--src/test/ui/coercion/coerce-overloaded-autoderef.mir.nll.stderr13
-rw-r--r--src/test/ui/coercion/coerce-overloaded-autoderef.mir.stderr16
-rw-r--r--src/test/ui/did_you_mean/issue-34126.nll.stderr7
-rw-r--r--src/test/ui/error-codes/E0499.nll.stderr2
-rw-r--r--src/test/ui/error-codes/E0502.nll.stderr2
-rw-r--r--src/test/ui/generator/yield-while-iterating.nll.stderr2
-rw-r--r--src/test/ui/generator/yield-while-ref-reborrowed.nll.stderr2
-rw-r--r--src/test/ui/hashmap-iter-value-lifetime.nll.stderr2
-rw-r--r--src/test/ui/hashmap-lifetimes.nll.stderr2
-rw-r--r--src/test/ui/hrtb/hrtb-debruijn-in-receiver.nll.stderr2
-rw-r--r--src/test/ui/hygiene/fields-numeric-borrowck.nll.stderr2
-rw-r--r--src/test/ui/issues/issue-11192.nll.stderr7
-rw-r--r--src/test/ui/issues/issue-18566.nll.stderr9
-rw-r--r--src/test/ui/issues/issue-18783.nll.stderr4
-rw-r--r--src/test/ui/issues/issue-25793.nll.stderr7
-rw-r--r--src/test/ui/issues/issue-42106.nll.stderr2
-rw-r--r--src/test/ui/issues/issue-45157.stderr2
-rw-r--r--src/test/ui/methods/method-self-arg-2.nll.stderr4
-rw-r--r--src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.nll.stderr7
-rw-r--r--src/test/ui/mut/mut-cant-alias.nll.stderr2
-rw-r--r--src/test/ui/nll/borrowed-local-error.stderr18
-rw-r--r--src/test/ui/nll/borrowed-referent-issue-38899.stderr2
-rw-r--r--src/test/ui/nll/closure-access-spans.stderr6
-rw-r--r--src/test/ui/nll/closure-borrow-spans.stderr10
-rw-r--r--src/test/ui/nll/get_default.nll.stderr6
-rw-r--r--src/test/ui/nll/get_default.stderr6
-rw-r--r--src/test/ui/nll/issue-51268.stderr23
-rw-r--r--src/test/ui/nll/loan_ends_mid_block_vec.stderr6
-rw-r--r--src/test/ui/nll/region-ends-after-if-condition.nll.stderr2
-rw-r--r--src/test/ui/nll/region-ends-after-if-condition.stderr2
-rw-r--r--src/test/ui/nll/return_from_loop.stderr2
-rw-r--r--src/test/ui/regions/region-bound-on-closure-outlives-call.nll.stderr7
-rw-r--r--src/test/ui/regions/regions-adjusted-lvalue-op.nll.stderr16
-rw-r--r--src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.nll.stderr2
-rw-r--r--src/test/ui/span/borrowck-call-is-borrow-issue-12224.nll.stderr36
-rw-r--r--src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.nll.stderr7
-rw-r--r--src/test/ui/vec/vec-mut-iter-borrow.nll.stderr2
100 files changed, 483 insertions, 574 deletions
diff --git a/src/test/ui/E0501.ast.nll.stderr b/src/test/ui/E0501.ast.nll.stderr
index a9abc79400e..72fda9079d6 100644
--- a/src/test/ui/E0501.ast.nll.stderr
+++ b/src/test/ui/E0501.ast.nll.stderr
@@ -10,7 +10,7 @@ LL |     outside_closure_1(a); //[ast]~ ERROR cannot borrow `*a` as mutable beca
    |                       ^ borrow occurs here
 ...
 LL |     drop(bar);
-   |          --- borrow later used here
+   |          --- first borrow later used here
 
 error[E0501]: cannot borrow `*a` as immutable because previous closure requires unique access
   --> $DIR/E0501.rs:31:23
@@ -24,7 +24,7 @@ LL |     outside_closure_2(a); //[ast]~ ERROR cannot borrow `*a` as immutable be
    |                       ^ borrow occurs here
 ...
 LL |     drop(bar);
-   |          --- borrow later used here
+   |          --- first borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/E0501.mir.stderr b/src/test/ui/E0501.mir.stderr
index a9abc79400e..72fda9079d6 100644
--- a/src/test/ui/E0501.mir.stderr
+++ b/src/test/ui/E0501.mir.stderr
@@ -10,7 +10,7 @@ LL |     outside_closure_1(a); //[ast]~ ERROR cannot borrow `*a` as mutable beca
    |                       ^ borrow occurs here
 ...
 LL |     drop(bar);
-   |          --- borrow later used here
+   |          --- first borrow later used here
 
 error[E0501]: cannot borrow `*a` as immutable because previous closure requires unique access
   --> $DIR/E0501.rs:31:23
@@ -24,7 +24,7 @@ LL |     outside_closure_2(a); //[ast]~ ERROR cannot borrow `*a` as immutable be
    |                       ^ borrow occurs here
 ...
 LL |     drop(bar);
-   |          --- borrow later used here
+   |          --- first borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/binop/binop-move-semantics.nll.stderr b/src/test/ui/binop/binop-move-semantics.nll.stderr
index 98762a0f6cf..545a60f6770 100644
--- a/src/test/ui/binop/binop-move-semantics.nll.stderr
+++ b/src/test/ui/binop/binop-move-semantics.nll.stderr
@@ -44,7 +44,7 @@ LL | |     +
 LL | |     &f;  //~ ERROR: cannot borrow `f` as immutable because it is also borrowed as mutable
    | |     ^-
    | |_____||
-   |       |borrow later used here
+   |       |mutable borrow later used here
    |       immutable borrow occurs here
 
 error[E0502]: cannot borrow `f` as mutable because it is also borrowed as immutable
@@ -59,7 +59,7 @@ LL | |     +
 LL | |     &mut f;  //~ ERROR: cannot borrow `f` as mutable because it is also borrowed as immutable
    | |     ^^^^^-
    | |_____|____|
-   |       |    borrow later used here
+   |       |    immutable borrow later used here
    |       mutable borrow occurs here
 
 error: aborting due to 6 previous errors
diff --git a/src/test/ui/borrowck/borrow-tuple-fields.nll.stderr b/src/test/ui/borrowck/borrow-tuple-fields.nll.stderr
index 855488e1eef..873581d9105 100644
--- a/src/test/ui/borrowck/borrow-tuple-fields.nll.stderr
+++ b/src/test/ui/borrowck/borrow-tuple-fields.nll.stderr
@@ -17,7 +17,7 @@ LL |     let a = &x.0;
 LL |     let b = &mut x.0; //~ ERROR cannot borrow `x.0` as mutable because it is also borrowed as
    |             ^^^^^^^^ mutable borrow occurs here
 LL |     a.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error[E0499]: cannot borrow `x.0` as mutable more than once at a time
   --> $DIR/borrow-tuple-fields.rs:33:13
@@ -27,7 +27,7 @@ LL |     let a = &mut x.0;
 LL |     let b = &mut x.0; //~ ERROR cannot borrow `x.0` as mutable more than once at a time
    |             ^^^^^^^^ second mutable borrow occurs here
 LL |     a.use_ref();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0505]: cannot move out of `x` because it is borrowed
   --> $DIR/borrow-tuple-fields.rs:38:13
@@ -47,7 +47,7 @@ LL |     let a = &x.0;
 LL |     let b = &mut x.0; //~ ERROR cannot borrow `x.0` as mutable because it is also borrowed as
    |             ^^^^^^^^ mutable borrow occurs here
 LL |     a.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error[E0499]: cannot borrow `x.0` as mutable more than once at a time
   --> $DIR/borrow-tuple-fields.rs:48:13
@@ -57,7 +57,7 @@ LL |     let a = &mut x.0;
 LL |     let b = &mut x.0; //~ ERROR cannot borrow `x.0` as mutable more than once at a time
    |             ^^^^^^^^ second mutable borrow occurs here
 LL |     a.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error: aborting due to 6 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-anon-fields-struct.nll.stderr b/src/test/ui/borrowck/borrowck-anon-fields-struct.nll.stderr
index 963a89ed44d..4d61840d9e8 100644
--- a/src/test/ui/borrowck/borrowck-anon-fields-struct.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-anon-fields-struct.nll.stderr
@@ -8,7 +8,7 @@ LL |         Y(ref mut b, _) => b //~ ERROR cannot borrow
    |           ^^^^^^^^^ second mutable borrow occurs here
 ...
 LL |     *a += 1;
-   |     ------- borrow later used here
+   |     ------- first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-anon-fields-tuple.nll.stderr b/src/test/ui/borrowck/borrowck-anon-fields-tuple.nll.stderr
index f06822f7bb6..f36741e9a02 100644
--- a/src/test/ui/borrowck/borrowck-anon-fields-tuple.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-anon-fields-tuple.nll.stderr
@@ -8,7 +8,7 @@ LL |         (ref mut b, _) => b //~ ERROR cannot borrow
    |          ^^^^^^^^^ second mutable borrow occurs here
 ...
 LL |     *a += 1;
-   |     ------- borrow later used here
+   |     ------- first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-anon-fields-variant.nll.stderr b/src/test/ui/borrowck/borrowck-anon-fields-variant.nll.stderr
index 05197205e81..17722bf226d 100644
--- a/src/test/ui/borrowck/borrowck-anon-fields-variant.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-anon-fields-variant.nll.stderr
@@ -8,7 +8,7 @@ LL |       Foo::Y(ref mut b, _) => b, //~ ERROR cannot borrow
    |              ^^^^^^^^^ second mutable borrow occurs here
 ...
 LL |     *a += 1;
-   |     ------- borrow later used here
+   |     ------- first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-assign-comp-idx.nll.stderr b/src/test/ui/borrowck/borrowck-assign-comp-idx.nll.stderr
index f4568d7c9eb..2dda17b38bb 100644
--- a/src/test/ui/borrowck/borrowck-assign-comp-idx.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-assign-comp-idx.nll.stderr
@@ -8,19 +8,19 @@ LL |     p[0] = 5; //~ ERROR cannot borrow
    |     ^ mutable borrow occurs here
 LL | 
 LL |     println!("{}", *q);
-   |                    -- borrow later used here
+   |                    -- immutable borrow later used here
 
 error[E0502]: cannot borrow `p` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-assign-comp-idx.rs:37:9
    |
-LL | /     borrow(
-LL | |         &p,
-   | |         -- immutable borrow occurs here
-LL | |         || p[0] = 5); //~ ERROR cannot borrow `p` as mutable
-   | |_________^^_-_______- borrow later used here
-   |           |  |
-   |           |  second borrow occurs due to use of `p` in closure
-   |           mutable borrow occurs here
+LL |     borrow(
+   |     ------ immutable borrow later used by call
+LL |         &p,
+   |         -- immutable borrow occurs here
+LL |         || p[0] = 5); //~ ERROR cannot borrow `p` as mutable
+   |         ^^ - second borrow occurs due to use of `p` in closure
+   |         |
+   |         mutable borrow occurs here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-autoref-3261.nll.stderr b/src/test/ui/borrowck/borrowck-autoref-3261.nll.stderr
index eb26676cde2..f4ae5eaba16 100644
--- a/src/test/ui/borrowck/borrowck-autoref-3261.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-autoref-3261.nll.stderr
@@ -1,21 +1,15 @@
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-autoref-3261.rs:25:9
    |
-LL |       (&mut x).with(
-   |       --------
-   |       |
-   |  _____first mutable borrow occurs here
-   | |
-LL | |         |opt| { //~ ERROR cannot borrow `x` as mutable more than once at a time
-   | |         ^^^^^ second mutable borrow occurs here
-LL | |             match opt {
-LL | |                 &Either::Right(ref f) => {
-LL | |                     x = X(Either::Left((0, 0)));
-   | |                     - second borrow occurs due to use of `x` in closure
-...  |
-LL | |             }
-LL | |         })
-   | |__________- borrow later used here
+LL |     (&mut x).with(
+   |     -------- ---- first borrow later used by call
+   |     |
+   |     first mutable borrow occurs here
+LL |         |opt| { //~ ERROR cannot borrow `x` as mutable more than once at a time
+   |         ^^^^^ second mutable borrow occurs here
+...
+LL |                     x = X(Either::Left((0, 0)));
+   |                     - second borrow occurs due to use of `x` in closure
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-bad-nested-calls-free.nll.stderr b/src/test/ui/borrowck/borrowck-bad-nested-calls-free.nll.stderr
index 73f533a6b96..77c637b7b4e 100644
--- a/src/test/ui/borrowck/borrowck-bad-nested-calls-free.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-bad-nested-calls-free.nll.stderr
@@ -1,24 +1,22 @@
 error[E0502]: cannot borrow `a` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-bad-nested-calls-free.rs:35:17
    |
-LL | /     add(
-LL | |         &*a,
-   | |         --- immutable borrow occurs here
-LL | |         rewrite(&mut a)); //~ ERROR cannot borrow
-   | |_________________^^^^^^_- borrow later used here
-   |                   |
-   |                   mutable borrow occurs here
+LL |     add(
+   |     --- immutable borrow later used by call
+LL |         &*a,
+   |         --- immutable borrow occurs here
+LL |         rewrite(&mut a)); //~ ERROR cannot borrow
+   |                 ^^^^^^ mutable borrow occurs here
 
 error[E0502]: cannot borrow `a` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-bad-nested-calls-free.rs:42:17
    |
-LL | /     add(
-LL | |         &*a,
-   | |         --- immutable borrow occurs here
-LL | |         rewrite(&mut a)); //~ ERROR cannot borrow
-   | |_________________^^^^^^_- borrow later used here
-   |                   |
-   |                   mutable borrow occurs here
+LL |     add(
+   |     --- immutable borrow later used by call
+LL |         &*a,
+   |         --- immutable borrow occurs here
+LL |         rewrite(&mut a)); //~ ERROR cannot borrow
+   |                 ^^^^^^ mutable borrow occurs here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-bad-nested-calls-move.nll.stderr b/src/test/ui/borrowck/borrowck-bad-nested-calls-move.nll.stderr
index ecb70068fed..d3ee9b2b2b2 100644
--- a/src/test/ui/borrowck/borrowck-bad-nested-calls-move.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-bad-nested-calls-move.nll.stderr
@@ -1,24 +1,22 @@
 error[E0505]: cannot move out of `a` because it is borrowed
   --> $DIR/borrowck-bad-nested-calls-move.rs:35:9
    |
-LL | /     add(
-LL | |         &*a,
-   | |         --- borrow of `*a` occurs here
-LL | |         a); //~ ERROR cannot move
-   | |_________^- borrow later used here
-   |           |
-   |           move out of `a` occurs here
+LL |     add(
+   |     --- borrow later used by call
+LL |         &*a,
+   |         --- borrow of `*a` occurs here
+LL |         a); //~ ERROR cannot move
+   |         ^ move out of `a` occurs here
 
 error[E0505]: cannot move out of `a` because it is borrowed
   --> $DIR/borrowck-bad-nested-calls-move.rs:42:9
    |
-LL | /     add(
-LL | |         &*a,
-   | |         --- borrow of `*a` occurs here
-LL | |         a); //~ ERROR cannot move
-   | |_________^- borrow later used here
-   |           |
-   |           move out of `a` occurs here
+LL |     add(
+   |     --- borrow later used by call
+LL |         &*a,
+   |         --- borrow of `*a` occurs here
+LL |         a); //~ ERROR cannot move
+   |         ^ move out of `a` occurs here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.nll.stderr b/src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.nll.stderr
index 603f4d63f7f..a368ef5b254 100644
--- a/src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-borrow-from-owned-ptr.nll.stderr
@@ -6,7 +6,7 @@ LL |     let bar1 = &mut foo.bar1;
 LL |     let _bar2 = &mut foo.bar1;  //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ second mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:36:17
@@ -16,7 +16,7 @@ LL |     let bar1 = &mut foo.bar1;
 LL |     let _bar2 = &foo.bar1;  //~ ERROR cannot borrow
    |                 ^^^^^^^^^ immutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- mutable borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:43:17
@@ -26,7 +26,7 @@ LL |     let bar1 = &foo.bar1;
 LL |     let _bar2 = &mut foo.bar1;  //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- immutable borrow later used here
 
 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:73:21
@@ -38,7 +38,7 @@ LL |         Foo { bar1: ref mut _bar1, bar2: _ } => {}
    |                     ^^^^^^^^^^^^^ second mutable borrow occurs here
 ...
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:82:17
@@ -49,7 +49,7 @@ LL |     let _foo1 = &foo.bar1; //~ ERROR cannot borrow
    |                 ^^^^^^^^^ immutable borrow occurs here
 LL |     let _foo2 = &*foo; //~ ERROR cannot borrow
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- mutable borrow later used here
 
 error[E0502]: cannot borrow `*foo` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:83:17
@@ -60,7 +60,7 @@ LL |     let _foo1 = &foo.bar1; //~ ERROR cannot borrow
 LL |     let _foo2 = &*foo; //~ ERROR cannot borrow
    |                 ^^^^^ immutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- mutable borrow later used here
 
 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:90:17
@@ -70,7 +70,7 @@ LL |     let bar1 = &mut foo.bar1.int1;
 LL |     let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ second mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0499]: cannot borrow `*foo` as mutable more than once at a time
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:97:17
@@ -80,7 +80,7 @@ LL |     let bar1 = &mut foo.bar1.int1;
 LL |     let _foo2 = &mut *foo; //~ ERROR cannot borrow
    |                 ^^^^^^^^^ second mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:104:17
@@ -90,7 +90,7 @@ LL |     let bar1 = &foo.bar1.int1;
 LL |     let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- immutable borrow later used here
 
 error[E0502]: cannot borrow `*foo` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:111:17
@@ -100,7 +100,7 @@ LL |     let bar1 = &foo.bar1.int1;
 LL |     let _foo2 = &mut *foo; //~ ERROR cannot borrow
    |                 ^^^^^^^^^ mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- immutable borrow later used here
 
 error[E0596]: cannot borrow `foo.bar1` as mutable, as `foo` is not declared as mutable
   --> $DIR/borrowck-borrow-from-owned-ptr.rs:132:16
diff --git a/src/test/ui/borrowck/borrowck-borrow-from-stack-variable.nll.stderr b/src/test/ui/borrowck/borrowck-borrow-from-stack-variable.nll.stderr
index 3a215f2336a..d02cf6381d2 100644
--- a/src/test/ui/borrowck/borrowck-borrow-from-stack-variable.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-borrow-from-stack-variable.nll.stderr
@@ -6,7 +6,7 @@ LL |     let bar1 = &mut foo.bar1;
 LL |     let _bar2 = &mut foo.bar1;  //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ second mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-borrow-from-stack-variable.rs:35:17
@@ -16,7 +16,7 @@ LL |     let bar1 = &mut foo.bar1;
 LL |     let _bar2 = &foo.bar1;  //~ ERROR cannot borrow
    |                 ^^^^^^^^^ immutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- mutable borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-borrow-from-stack-variable.rs:42:17
@@ -26,7 +26,7 @@ LL |     let bar1 = &foo.bar1;
 LL |     let _bar2 = &mut foo.bar1;  //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- immutable borrow later used here
 
 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
   --> $DIR/borrowck-borrow-from-stack-variable.rs:71:21
@@ -38,7 +38,7 @@ LL |         Foo { bar1: ref mut _bar1, bar2: _ } => {} //
    |                     ^^^^^^^^^^^^^ second mutable borrow occurs here
 ...
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-borrow-from-stack-variable.rs:80:17
@@ -49,7 +49,7 @@ LL |     let _foo1 = &foo.bar1; //~ ERROR cannot borrow
    |                 ^^^^^^^^^ immutable borrow occurs here
 LL |     let _foo2 = &foo; //~ ERROR cannot borrow
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- mutable borrow later used here
 
 error[E0502]: cannot borrow `foo` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-borrow-from-stack-variable.rs:81:17
@@ -60,7 +60,7 @@ LL |     let _foo1 = &foo.bar1; //~ ERROR cannot borrow
 LL |     let _foo2 = &foo; //~ ERROR cannot borrow
    |                 ^^^^ immutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- mutable borrow later used here
 
 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
   --> $DIR/borrowck-borrow-from-stack-variable.rs:88:17
@@ -70,7 +70,7 @@ LL |     let bar1 = &mut foo.bar1.int1;
 LL |     let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ second mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0499]: cannot borrow `foo` as mutable more than once at a time
   --> $DIR/borrowck-borrow-from-stack-variable.rs:95:17
@@ -80,7 +80,7 @@ LL |     let bar1 = &mut foo.bar1.int1;
 LL |     let _foo2 = &mut foo; //~ ERROR cannot borrow
    |                 ^^^^^^^^ second mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0502]: cannot borrow `foo.bar1` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-borrow-from-stack-variable.rs:102:17
@@ -90,7 +90,7 @@ LL |     let bar1 = &foo.bar1.int1;
 LL |     let _foo1 = &mut foo.bar1; //~ ERROR cannot borrow
    |                 ^^^^^^^^^^^^^ mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- immutable borrow later used here
 
 error[E0502]: cannot borrow `foo` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-borrow-from-stack-variable.rs:109:17
@@ -100,7 +100,7 @@ LL |     let bar1 = &foo.bar1.int1;
 LL |     let _foo2 = &mut foo; //~ ERROR cannot borrow
    |                 ^^^^^^^^ mutable borrow occurs here
 LL |     *bar1;
-   |     ----- borrow later used here
+   |     ----- immutable borrow later used here
 
 error[E0596]: cannot borrow `foo.bar1` as mutable, as `foo` is not declared as mutable
   --> $DIR/borrowck-borrow-from-stack-variable.rs:130:16
diff --git a/src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.nll.stderr b/src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.nll.stderr
index 8c30e6ac002..fb04b3b93dc 100644
--- a/src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.nll.stderr
@@ -15,7 +15,7 @@ LL |     let t1 = &mut *t0;
 LL |     let p: &isize = &**t0; //~ ERROR cannot borrow
    |                     ^^^^^ immutable borrow occurs here
 LL |     **t1 = 22;
-   |     --------- borrow later used here
+   |     --------- mutable borrow later used here
 
 error[E0596]: cannot borrow `**t0` as mutable, as it is behind a `&` reference
   --> $DIR/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs:29:26
diff --git a/src/test/ui/borrowck/borrowck-borrow-mut-object-twice.nll.stderr b/src/test/ui/borrowck/borrowck-borrow-mut-object-twice.nll.stderr
index 9c3d0b170d9..65c4a392887 100644
--- a/src/test/ui/borrowck/borrowck-borrow-mut-object-twice.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-borrow-mut-object-twice.nll.stderr
@@ -6,7 +6,7 @@ LL |     let y = x.f1();
 LL |     x.f2(); //~ ERROR cannot borrow `*x` as mutable
    |     ^ second mutable borrow occurs here
 LL |     y.use_ref();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-closures-mut-and-imm.ast.nll.stderr b/src/test/ui/borrowck/borrowck-closures-mut-and-imm.ast.nll.stderr
index f24d0ed046a..814fb7bbedc 100644
--- a/src/test/ui/borrowck/borrowck-closures-mut-and-imm.ast.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-closures-mut-and-imm.ast.nll.stderr
@@ -11,7 +11,7 @@ LL |     let c2 = || x * 5; //[ast]~ ERROR cannot borrow `x`
    |              immutable borrow occurs here
 LL |     //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-closures-mut-and-imm.rs:39:14
@@ -26,7 +26,7 @@ LL |     let c2 = || get(&x); //[ast]~ ERROR cannot borrow `x`
    |              immutable borrow occurs here
 LL |                          //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-closures-mut-and-imm.rs:47:14
@@ -41,7 +41,7 @@ LL |     let c2 = || x * 5; //[ast]~ ERROR cannot borrow `x`
    |              immutable borrow occurs here
 LL |                        //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0506]: cannot assign to `x` because it is borrowed
   --> $DIR/borrowck-closures-mut-and-imm.rs:55:5
@@ -108,7 +108,7 @@ LL |     let c2 = || *x.f = 5; //[ast]~ ERROR cannot borrow `x` as mutable
    |              mutable borrow occurs here
 LL |                           //[mir]~^ ERROR cannot borrow `x` as mutable because it is also borrowed as immutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- immutable borrow later used here
 
 error: aborting due to 8 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-closures-mut-and-imm.mir.stderr b/src/test/ui/borrowck/borrowck-closures-mut-and-imm.mir.stderr
index f24d0ed046a..814fb7bbedc 100644
--- a/src/test/ui/borrowck/borrowck-closures-mut-and-imm.mir.stderr
+++ b/src/test/ui/borrowck/borrowck-closures-mut-and-imm.mir.stderr
@@ -11,7 +11,7 @@ LL |     let c2 = || x * 5; //[ast]~ ERROR cannot borrow `x`
    |              immutable borrow occurs here
 LL |     //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-closures-mut-and-imm.rs:39:14
@@ -26,7 +26,7 @@ LL |     let c2 = || get(&x); //[ast]~ ERROR cannot borrow `x`
    |              immutable borrow occurs here
 LL |                          //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-closures-mut-and-imm.rs:47:14
@@ -41,7 +41,7 @@ LL |     let c2 = || x * 5; //[ast]~ ERROR cannot borrow `x`
    |              immutable borrow occurs here
 LL |                        //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0506]: cannot assign to `x` because it is borrowed
   --> $DIR/borrowck-closures-mut-and-imm.rs:55:5
@@ -108,7 +108,7 @@ LL |     let c2 = || *x.f = 5; //[ast]~ ERROR cannot borrow `x` as mutable
    |              mutable borrow occurs here
 LL |                           //[mir]~^ ERROR cannot borrow `x` as mutable because it is also borrowed as immutable
 LL |     drop(c1);
-   |          -- borrow later used here
+   |          -- immutable borrow later used here
 
 error: aborting due to 8 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut-fail.nll.stderr b/src/test/ui/borrowck/borrowck-closures-two-mut-fail.nll.stderr
index c96799c85f2..fea61420b19 100644
--- a/src/test/ui/borrowck/borrowck-closures-two-mut-fail.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-closures-two-mut-fail.nll.stderr
@@ -10,7 +10,7 @@ LL |     let c2 = to_fn_mut(|| x = 5); //~ ERROR cannot borrow `x` as mutable mo
    |                        |
    |                        second mutable borrow occurs here
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-closures-two-mut-fail.rs:37:24
@@ -24,7 +24,7 @@ LL |     let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta
    |                        |
    |                        second mutable borrow occurs here
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-closures-two-mut-fail.rs:44:24
@@ -38,7 +38,7 @@ LL |     let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta
    |                        |
    |                        second mutable borrow occurs here
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-closures-two-mut-fail.rs:51:24
@@ -53,7 +53,7 @@ LL |     let c2 = to_fn_mut(|| { let _y = to_fn_mut(|| set(&mut x)); }); // (nes
    |                        second mutable borrow occurs here
 LL |     //~^ ERROR cannot borrow `x` as mutable more than once
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-closures-two-mut-fail.rs:63:24
@@ -68,7 +68,7 @@ LL |     let c2 = to_fn_mut(|| set(&mut *x.f));
    |                        second mutable borrow occurs here
 LL |     //~^ ERROR cannot borrow `x` as mutable more than once
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error: aborting due to 5 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut.stderr b/src/test/ui/borrowck/borrowck-closures-two-mut.stderr
index 6186c383919..bbfe3770236 100644
--- a/src/test/ui/borrowck/borrowck-closures-two-mut.stderr
+++ b/src/test/ui/borrowck/borrowck-closures-two-mut.stderr
@@ -86,7 +86,7 @@ LL |     let c2 = to_fn_mut(|| x = 5); //~ ERROR cannot borrow `x` as mutable mo
    |                        second mutable borrow occurs here
 LL |     //~| ERROR cannot borrow `x` as mutable more than once
 LL |     drop((c1, c2));
-   |           -- borrow later used here
+   |           -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
   --> $DIR/borrowck-closures-two-mut.rs:36:24
@@ -101,7 +101,7 @@ LL |     let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta
    |                        second mutable borrow occurs here
 LL |     //~| ERROR cannot borrow `x` as mutable more than once
 LL |     drop((c1, c2));
-   |           -- borrow later used here
+   |           -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
   --> $DIR/borrowck-closures-two-mut.rs:44:24
@@ -116,7 +116,7 @@ LL |     let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta
    |                        second mutable borrow occurs here
 LL |     //~| ERROR cannot borrow `x` as mutable more than once
 LL |     drop((c1, c2));
-   |           -- borrow later used here
+   |           -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
   --> $DIR/borrowck-closures-two-mut.rs:52:24
@@ -131,7 +131,7 @@ LL |     let c2 = to_fn_mut(|| { let _y = to_fn_mut(|| set(&mut x)); }); // (nes
    |                        second mutable borrow occurs here
 ...
 LL |     drop((c1, c2));
-   |           -- borrow later used here
+   |           -- first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
   --> $DIR/borrowck-closures-two-mut.rs:65:24
@@ -146,7 +146,7 @@ LL |     let c2 = to_fn_mut(|| set(&mut *x.f));
    |                        second mutable borrow occurs here
 ...
 LL |     drop((c1, c2));
-   |           -- borrow later used here
+   |           -- first borrow later used here
 
 error: aborting due to 10 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-closures-unique-imm.nll.stderr b/src/test/ui/borrowck/borrowck-closures-unique-imm.nll.stderr
index b8f17570a64..aca4f309257 100644
--- a/src/test/ui/borrowck/borrowck-closures-unique-imm.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-closures-unique-imm.nll.stderr
@@ -6,7 +6,7 @@ LL |         let p = &this.x;
 LL |         &mut this.x; //~ ERROR cannot borrow
    |         ^^^^^^^^^^^ mutable borrow occurs here
 LL |         p.use_ref();
-   |         - borrow later used here
+   |         - immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-closures-unique.nll.stderr b/src/test/ui/borrowck/borrowck-closures-unique.nll.stderr
index 17519ccb143..231ae53fe82 100644
--- a/src/test/ui/borrowck/borrowck-closures-unique.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-closures-unique.nll.stderr
@@ -10,7 +10,7 @@ LL |     let c2 = || set(x); //~ ERROR closure requires unique access to `x`
    |              |
    |              closure construction occurs here
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error[E0500]: closure requires unique access to `x` but it is already borrowed
   --> $DIR/borrowck-closures-unique.rs:42:14
@@ -24,7 +24,7 @@ LL |     let c2 = || { get(x); set(x); }; //~ ERROR closure requires unique acce
    |              |
    |              closure construction occurs here
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error[E0524]: two closures require unique access to `x` at the same time
   --> $DIR/borrowck-closures-unique.rs:48:14
@@ -38,7 +38,7 @@ LL |     let c2 = || set(x); //~ ERROR two closures require unique access to `x`
    |              |
    |              second closure is constructed here
 LL |     c1;
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error[E0594]: cannot assign to `x`, as it is not declared as mutable
   --> $DIR/borrowck-closures-unique.rs:57:38
diff --git a/src/test/ui/borrowck/borrowck-closures-use-after-free.nll.stderr b/src/test/ui/borrowck/borrowck-closures-use-after-free.nll.stderr
index dc73929989c..90eb7fda026 100644
--- a/src/test/ui/borrowck/borrowck-closures-use-after-free.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-closures-use-after-free.nll.stderr
@@ -7,10 +7,9 @@ LL |     ptr = box Foo { x: ptr.x + 1 };
    |     --- first borrow occurs due to use of `ptr` in closure
 LL |   };
 LL |   test(&*ptr); //~ ERROR cannot borrow `*ptr`
-   |   -----^^^^^-
-   |   |    |
-   |   |    immutable borrow occurs here
-   |   borrow later used here
+   |   ---- ^^^^^ immutable borrow occurs here
+   |   |
+   |   mutable borrow later used by call
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-describe-lvalue.ast.nll.stderr b/src/test/ui/borrowck/borrowck-describe-lvalue.ast.nll.stderr
index e417dadf6df..ac6cfac2a16 100644
--- a/src/test/ui/borrowck/borrowck-describe-lvalue.ast.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-describe-lvalue.ast.nll.stderr
@@ -7,7 +7,7 @@ LL |             &mut x; //[ast]~ ERROR cannot borrow `**x` as mutable more than
    |             ^^^^^^ second mutable borrow occurs here
 LL |                     //[mir]~^ ERROR cannot borrow `x` as mutable more than once at a time
 LL |             *y = 1;
-   |             ------ borrow later used here
+   |             ------ first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-describe-lvalue.rs:307:20
@@ -18,7 +18,7 @@ LL |                    &mut x; //[ast]~ ERROR cannot borrow `**x` as mutable mo
    |                    ^^^^^^ second mutable borrow occurs here
 LL |                    //[mir]~^ ERROR cannot borrow `x` as mutable more than once at a time
 LL |                    *y = 1;
-   |                    ------ borrow later used here
+   |                    ------ first borrow later used here
 
 error: unsatisfied lifetime constraints
   --> $DIR/borrowck-describe-lvalue.rs:305:16
@@ -269,7 +269,7 @@ LL |             E::A(ref ax) =>
    |                  ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `e.x` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:207:23
@@ -281,7 +281,7 @@ LL |             E::B { x: ref bx } =>
    |                       ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `s.y.0` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:221:22
@@ -293,7 +293,7 @@ LL |             S  { y: (ref y0, _), .. } =>
    |                      ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `s.x.y` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:228:28
@@ -305,7 +305,7 @@ LL |             S  { x: F { y: ref x0, .. }, .. } =>
    |                            ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0503]: cannot use `*v` because it was mutably borrowed
   --> $DIR/borrowck-describe-lvalue.rs:271:9
@@ -339,7 +339,7 @@ LL |             &[_, F {x: ref xf, ..}] => println!("{}", xf),
    |                        ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:245:29
@@ -350,7 +350,7 @@ LL |             let p: &'a u8 = &*block.current;
    |                             ^^^^^^^^^^^^^^^ immutable borrow occurs here
 ...
 LL |             drop(x);
-   |                  - borrow later used here
+   |                  - mutable borrow later used here
 
 error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:260:33
@@ -361,7 +361,7 @@ LL |             let p : *const u8 = &*(*block).current;
    |                                 ^^^^^^^^^^^^^^^^^^ immutable borrow occurs here
 ...
 LL |             drop(x);
-   |                  - borrow later used here
+   |                  - mutable borrow later used here
 
 error[E0382]: use of moved value: `x`
   --> $DIR/borrowck-describe-lvalue.rs:318:22
diff --git a/src/test/ui/borrowck/borrowck-describe-lvalue.mir.stderr b/src/test/ui/borrowck/borrowck-describe-lvalue.mir.stderr
index e417dadf6df..ac6cfac2a16 100644
--- a/src/test/ui/borrowck/borrowck-describe-lvalue.mir.stderr
+++ b/src/test/ui/borrowck/borrowck-describe-lvalue.mir.stderr
@@ -7,7 +7,7 @@ LL |             &mut x; //[ast]~ ERROR cannot borrow `**x` as mutable more than
    |             ^^^^^^ second mutable borrow occurs here
 LL |                     //[mir]~^ ERROR cannot borrow `x` as mutable more than once at a time
 LL |             *y = 1;
-   |             ------ borrow later used here
+   |             ------ first borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-describe-lvalue.rs:307:20
@@ -18,7 +18,7 @@ LL |                    &mut x; //[ast]~ ERROR cannot borrow `**x` as mutable mo
    |                    ^^^^^^ second mutable borrow occurs here
 LL |                    //[mir]~^ ERROR cannot borrow `x` as mutable more than once at a time
 LL |                    *y = 1;
-   |                    ------ borrow later used here
+   |                    ------ first borrow later used here
 
 error: unsatisfied lifetime constraints
   --> $DIR/borrowck-describe-lvalue.rs:305:16
@@ -269,7 +269,7 @@ LL |             E::A(ref ax) =>
    |                  ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `e.x` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:207:23
@@ -281,7 +281,7 @@ LL |             E::B { x: ref bx } =>
    |                       ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `s.y.0` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:221:22
@@ -293,7 +293,7 @@ LL |             S  { y: (ref y0, _), .. } =>
    |                      ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `s.x.y` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:228:28
@@ -305,7 +305,7 @@ LL |             S  { x: F { y: ref x0, .. }, .. } =>
    |                            ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0503]: cannot use `*v` because it was mutably borrowed
   --> $DIR/borrowck-describe-lvalue.rs:271:9
@@ -339,7 +339,7 @@ LL |             &[_, F {x: ref xf, ..}] => println!("{}", xf),
    |                        ^^^^^^ immutable borrow occurs here
 ...
 LL |         drop(x);
-   |              - borrow later used here
+   |              - mutable borrow later used here
 
 error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:245:29
@@ -350,7 +350,7 @@ LL |             let p: &'a u8 = &*block.current;
    |                             ^^^^^^^^^^^^^^^ immutable borrow occurs here
 ...
 LL |             drop(x);
-   |                  - borrow later used here
+   |                  - mutable borrow later used here
 
 error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-describe-lvalue.rs:260:33
@@ -361,7 +361,7 @@ LL |             let p : *const u8 = &*(*block).current;
    |                                 ^^^^^^^^^^^^^^^^^^ immutable borrow occurs here
 ...
 LL |             drop(x);
-   |                  - borrow later used here
+   |                  - mutable borrow later used here
 
 error[E0382]: use of moved value: `x`
   --> $DIR/borrowck-describe-lvalue.rs:318:22
diff --git a/src/test/ui/borrowck/borrowck-field-sensitivity.nll.stderr b/src/test/ui/borrowck/borrowck-field-sensitivity.nll.stderr
index fb300d32b05..6ac5fef1416 100644
--- a/src/test/ui/borrowck/borrowck-field-sensitivity.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-field-sensitivity.nll.stderr
@@ -62,7 +62,7 @@ LL |     let p = &mut x.a;
 LL |     let q = &mut x.a; //~ ERROR cannot borrow `x.a` as mutable more than once at a time
    |             ^^^^^^^^ second mutable borrow occurs here
 LL |     drop(*p);
-   |          -- borrow later used here
+   |          -- first borrow later used here
 
 error[E0382]: use of moved value: `x.b`
   --> $DIR/borrowck-field-sensitivity.rs:66:10
diff --git a/src/test/ui/borrowck/borrowck-for-loop-head-linkage.nll.stderr b/src/test/ui/borrowck/borrowck-for-loop-head-linkage.nll.stderr
index b7803cbc804..a6487ede6f8 100644
--- a/src/test/ui/borrowck/borrowck-for-loop-head-linkage.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-for-loop-head-linkage.nll.stderr
@@ -5,7 +5,7 @@ LL |     for &x in &vector {
    |               -------
    |               |
    |               immutable borrow occurs here
-   |               borrow used here, in later iteration of loop
+   |               immutable borrow used here, in later iteration of loop
 LL |         let cap = vector.capacity();
 LL |         vector.extend(repeat(0));      //~ ERROR cannot borrow
    |         ^^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
@@ -17,7 +17,7 @@ LL |     for &x in &vector {
    |               -------
    |               |
    |               immutable borrow occurs here
-   |               borrow used here, in later iteration of loop
+   |               immutable borrow used here, in later iteration of loop
 ...
 LL |         vector[1] = 5;   //~ ERROR cannot borrow
    |         ^^^^^^ mutable borrow occurs here
diff --git a/src/test/ui/borrowck/borrowck-insert-during-each.nll.stderr b/src/test/ui/borrowck/borrowck-insert-during-each.nll.stderr
index e403b076ab4..123d475f1c0 100644
--- a/src/test/ui/borrowck/borrowck-insert-during-each.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-insert-during-each.nll.stderr
@@ -1,34 +1,28 @@
 error[E0501]: cannot borrow `*f` as mutable because previous closure requires unique access
   --> $DIR/borrowck-insert-during-each.rs:26:3
    |
-LL |      f.foo(
-   |   ___^
-   |  |___|
-   | ||
-LL | ||         |a| { //~ ERROR closure requires unique access to `f`
-   | ||         --- closure construction occurs here
-LL | ||             f.n.insert(*a);
-   | ||             - first borrow occurs due to use of `f` in closure
-LL | ||         })
-   | ||          ^
-   | ||__________|
-   | |___________borrow occurs here
-   |             borrow later used here
-
-error[E0500]: closure requires unique access to `f` but it is already borrowed
-  --> $DIR/borrowck-insert-during-each.rs:27:9
-   |
 LL |     f.foo(
-   |     -
-   |     |
-   |  ___borrow occurs here
+   |     ^ --- first borrow later used by call
+   |  ___|
    | |
 LL | |         |a| { //~ ERROR closure requires unique access to `f`
-   | |         ^^^ closure construction occurs here
+   | |         --- closure construction occurs here
 LL | |             f.n.insert(*a);
-   | |             - second borrow occurs due to use of `f` in closure
+   | |             - first borrow occurs due to use of `f` in closure
 LL | |         })
-   | |__________- borrow later used here
+   | |__________^ borrow occurs here
+
+error[E0500]: closure requires unique access to `f` but it is already borrowed
+  --> $DIR/borrowck-insert-during-each.rs:27:9
+   |
+LL |   f.foo(
+   |   - --- first borrow later used by call
+   |   |
+   |   borrow occurs here
+LL |         |a| { //~ ERROR closure requires unique access to `f`
+   |         ^^^ closure construction occurs here
+LL |             f.n.insert(*a);
+   |             - second borrow occurs due to use of `f` in closure
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-lend-flow-if.nll.stderr b/src/test/ui/borrowck/borrowck-lend-flow-if.nll.stderr
index 0f0eed4a051..f1c33a596cb 100644
--- a/src/test/ui/borrowck/borrowck-lend-flow-if.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-lend-flow-if.nll.stderr
@@ -7,7 +7,7 @@ LL |     }
 LL |     borrow_mut(&mut *v); //~ ERROR cannot borrow
    |                ^^^^^^^ mutable borrow occurs here
 LL |     _w.use_ref();
-   |     -- borrow later used here
+   |     -- immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-lend-flow-loop.nll.stderr b/src/test/ui/borrowck/borrowck-lend-flow-loop.nll.stderr
index 81aa1e2c960..388fc9c5fa8 100644
--- a/src/test/ui/borrowck/borrowck-lend-flow-loop.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-lend-flow-loop.nll.stderr
@@ -8,13 +8,13 @@ LL |         borrow(&*v); //~ ERROR cannot borrow
    |                ^^^ immutable borrow occurs here
 LL |     }
 LL |     *x = box 5;
-   |     -- borrow used here, in later iteration of loop
+   |     -- mutable borrow used here, in later iteration of loop
 
 error[E0502]: cannot borrow `*v` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-lend-flow-loop.rs:109:16
    |
 LL |         **x += 1;
-   |         -------- borrow used here, in later iteration of loop
+   |         -------- mutable borrow used here, in later iteration of loop
 LL |         borrow(&*v); //~ ERROR cannot borrow
    |                ^^^ immutable borrow occurs here
 LL |         if cond2 {
diff --git a/src/test/ui/borrowck/borrowck-lend-flow.nll.stderr b/src/test/ui/borrowck/borrowck-lend-flow.nll.stderr
index 7ebc2ce47cd..e97ba68cd5c 100644
--- a/src/test/ui/borrowck/borrowck-lend-flow.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-lend-flow.nll.stderr
@@ -6,7 +6,7 @@ LL |     let _w = &v;
 LL |     borrow_mut(&mut *v); //~ ERROR cannot borrow
    |                ^^^^^^^ mutable borrow occurs here
 LL |     _w.use_ref();
-   |     -- borrow later used here
+   |     -- immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.nll.stderr b/src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.nll.stderr
index 5c3cd46a87d..b181fcf8b54 100644
--- a/src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-loan-blocks-mut-uniq.nll.stderr
@@ -1,18 +1,14 @@
 error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-loan-blocks-mut-uniq.rs:20:12
    |
-LL |       borrow(&*v,
-   |       -      --- immutable borrow occurs here
-   |  _____|
-   | |
-LL | |            |w| { //~ ERROR cannot borrow `v` as mutable
-   | |            ^^^ mutable borrow occurs here
-LL | |             v = box 4;
-   | |             - second borrow occurs due to use of `v` in closure
-LL | |             assert_eq!(*v, 3);
-LL | |             assert_eq!(*w, 4);
-LL | |         })
-   | |__________- borrow later used here
+LL |     borrow(&*v,
+   |     ------ --- immutable borrow occurs here
+   |     |
+   |     immutable borrow later used by call
+LL |            |w| { //~ ERROR cannot borrow `v` as mutable
+   |            ^^^ mutable borrow occurs here
+LL |             v = box 4;
+   |             - second borrow occurs due to use of `v` in closure
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.nll.stderr b/src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.nll.stderr
index b7c87162587..6f08c13caa4 100644
--- a/src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-loan-rcvr-overloaded-op.nll.stderr
@@ -20,7 +20,7 @@ LL |     p.times(3); //~ ERROR cannot borrow `p`
    |     ^ immutable borrow occurs here
 LL | 
 LL |     *q + 3; // OK to use the new alias `q`
-   |     -- borrow later used here
+   |     -- mutable borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-loan-rcvr.nll.stderr b/src/test/ui/borrowck/borrowck-loan-rcvr.nll.stderr
index a5b81027c2f..18c2d67f6b0 100644
--- a/src/test/ui/borrowck/borrowck-loan-rcvr.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-loan-rcvr.nll.stderr
@@ -1,15 +1,13 @@
 error[E0502]: cannot borrow `p` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-loan-rcvr.rs:34:14
    |
-LL |       p.blockm(|| { //~ ERROR cannot borrow `p` as mutable
-   |       -        ^^ mutable borrow occurs here
-   |       |
-   |  _____immutable borrow occurs here
-   | |
-LL | |         p.x = 10;
-   | |         - second borrow occurs due to use of `p` in closure
-LL | |     })
-   | |______- borrow later used here
+LL |     p.blockm(|| { //~ ERROR cannot borrow `p` as mutable
+   |     - ------ ^^ mutable borrow occurs here
+   |     | |
+   |     | immutable borrow later used by call
+   |     immutable borrow occurs here
+LL |         p.x = 10;
+   |         - second borrow occurs due to use of `p` in closure
 
 error[E0502]: cannot borrow `p` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-loan-rcvr.rs:45:5
@@ -20,7 +18,7 @@ LL |     p.impurem(); //~ ERROR cannot borrow
    |     ^ immutable borrow occurs here
 LL | 
 LL |     l.x += 1;
-   |     -------- borrow later used here
+   |     -------- mutable borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-loan-vec-content.nll.stderr b/src/test/ui/borrowck/borrowck-loan-vec-content.nll.stderr
index 492e90914ea..2b22a125d3f 100644
--- a/src/test/ui/borrowck/borrowck-loan-vec-content.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-loan-vec-content.nll.stderr
@@ -1,15 +1,14 @@
 error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-loan-vec-content.rs:28:9
    |
-LL | /     takes_imm_elt(
-LL | |         &v[0],
-   | |          - immutable borrow occurs here
-LL | |         || { //~ ERROR cannot borrow `v` as mutable
-   | |         ^^ mutable borrow occurs here
-LL | |             v[1] = 4;
-   | |             - second borrow occurs due to use of `v` in closure
-LL | |         })
-   | |__________- borrow later used here
+LL |     takes_imm_elt(
+   |     ------------- immutable borrow later used by call
+LL |         &v[0],
+   |          - immutable borrow occurs here
+LL |         || { //~ ERROR cannot borrow `v` as mutable
+   |         ^^ mutable borrow occurs here
+LL |             v[1] = 4;
+   |             - second borrow occurs due to use of `v` in closure
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.ast.nll.stderr b/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.ast.nll.stderr
index 19ec9cf7ded..5301ee7a403 100644
--- a/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.ast.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.ast.nll.stderr
@@ -4,7 +4,7 @@ error[E0499]: cannot borrow `x` as mutable more than once at a time
 LL |             1 => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
    |                    ----      ^^^^^^ second mutable borrow occurs here
    |                    |
-   |                    borrow used here, in later iteration of loop
+   |                    first borrow used here, in later iteration of loop
 ...
 LL |             _ => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
    |                              ------ first mutable borrow occurs here
@@ -13,7 +13,7 @@ error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-mut-borrow-linear-errors.rs:25:30
    |
 LL |             1 => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
-   |                    ---- borrow used here, in later iteration of loop
+   |                    ---- first borrow used here, in later iteration of loop
 LL |             //[mir]~^ ERROR [E0499]
 LL |             2 => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
    |                              ^^^^^^ second mutable borrow occurs here
diff --git a/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.mir.stderr b/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.mir.stderr
index 19ec9cf7ded..5301ee7a403 100644
--- a/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.mir.stderr
+++ b/src/test/ui/borrowck/borrowck-mut-borrow-linear-errors.mir.stderr
@@ -4,7 +4,7 @@ error[E0499]: cannot borrow `x` as mutable more than once at a time
 LL |             1 => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
    |                    ----      ^^^^^^ second mutable borrow occurs here
    |                    |
-   |                    borrow used here, in later iteration of loop
+   |                    first borrow used here, in later iteration of loop
 ...
 LL |             _ => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
    |                              ------ first mutable borrow occurs here
@@ -13,7 +13,7 @@ error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-mut-borrow-linear-errors.rs:25:30
    |
 LL |             1 => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
-   |                    ---- borrow used here, in later iteration of loop
+   |                    ---- first borrow used here, in later iteration of loop
 LL |             //[mir]~^ ERROR [E0499]
 LL |             2 => { addr.push(&mut x); } //[ast]~ ERROR [E0499]
    |                              ^^^^^^ second mutable borrow occurs here
diff --git a/src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.nll.stderr b/src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.nll.stderr
index 0684e787bae..57f9a2c1778 100644
--- a/src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-mut-borrow-of-mut-base-ptr.nll.stderr
@@ -7,7 +7,7 @@ LL |     let mut t2 = &mut t0;   //~ ERROR cannot borrow `t0`
    |                  ^^^^^^^ mutable borrow occurs here
 LL |     **t2 += 1;              // Mutates `*t0`
 LL |     p.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error[E0499]: cannot borrow `t0` as mutable more than once at a time
   --> $DIR/borrowck-mut-borrow-of-mut-base-ptr.rs:29:18
@@ -18,7 +18,7 @@ LL |     let mut t2 = &mut t0;       //~ ERROR cannot borrow `t0`
    |                  ^^^^^^^ second mutable borrow occurs here
 LL |     **t2 += 1;                  // Mutates `*t0` but not through `*p`
 LL |     p.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-object-lifetime.nll.stderr b/src/test/ui/borrowck/borrowck-object-lifetime.nll.stderr
index e4e2dfe86bd..8a9aaa9d895 100644
--- a/src/test/ui/borrowck/borrowck-object-lifetime.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-object-lifetime.nll.stderr
@@ -6,7 +6,7 @@ LL |     let y = x.borrowed();
 LL |     let z = x.mut_borrowed(); //~ ERROR cannot borrow
    |             ^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |     y.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-object-lifetime.rs:36:13
@@ -16,7 +16,7 @@ LL |     let y = x.borrowed();
 LL |     let z = &mut x; //~ ERROR cannot borrow
    |             ^^^^^^ mutable borrow occurs here
 LL |     y.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-autoderef.nll.stderr b/src/test/ui/borrowck/borrowck-overloaded-index-autoderef.nll.stderr
index 994492d8575..fd4c380ea05 100644
--- a/src/test/ui/borrowck/borrowck-overloaded-index-autoderef.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-overloaded-index-autoderef.nll.stderr
@@ -6,7 +6,7 @@ LL |     let p = &mut f[&s];
 LL |     let q = &f[&s]; //~ ERROR cannot borrow
    |              ^ immutable borrow occurs here
 LL |     p.use_mut();
-   |     - borrow later used here
+   |     - mutable borrow later used here
 
 error[E0499]: cannot borrow `*f` as mutable more than once at a time
   --> $DIR/borrowck-overloaded-index-autoderef.rs:53:18
@@ -16,7 +16,7 @@ LL |     let p = &mut f[&s];
 LL |     let q = &mut f[&s]; //~ ERROR cannot borrow
    |                  ^ second mutable borrow occurs here
 LL |     p.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0499]: cannot borrow `f.foo` as mutable more than once at a time
   --> $DIR/borrowck-overloaded-index-autoderef.rs:63:18
@@ -26,7 +26,7 @@ LL |     let p = &mut f.foo[&s];
 LL |     let q = &mut f.foo[&s]; //~ ERROR cannot borrow
    |                  ^^^^^ second mutable borrow occurs here
 LL |     p.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0502]: cannot borrow `f.foo` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-overloaded-index-autoderef.rs:75:18
@@ -36,7 +36,7 @@ LL |     let p = &f.foo[&s];
 LL |     let q = &mut f.foo[&s]; //~ ERROR cannot borrow
    |                  ^^^^^ mutable borrow occurs here
 LL |     p.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error[E0506]: cannot assign to `f.foo` because it is borrowed
   --> $DIR/borrowck-overloaded-index-autoderef.rs:81:5
diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.ast.nll.stderr b/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.ast.nll.stderr
index 3a2bfb18cb9..7ff9285bcc0 100644
--- a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.ast.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.ast.nll.stderr
@@ -7,7 +7,7 @@ LL |     println!("{}", f[&s]);
    |                      ^^ immutable borrow occurs here
 ...
 LL |     drop(rs);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0502]: cannot borrow `s` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-overloaded-index-ref-index.rs:65:7
@@ -19,7 +19,7 @@ LL |     f[&s] = 10;
    |       ^^ immutable borrow occurs here
 ...
 LL |     drop(rs);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0594]: cannot assign to data in a `&` reference
   --> $DIR/borrowck-overloaded-index-ref-index.rs:71:5
diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.mir.stderr b/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.mir.stderr
index 3a2bfb18cb9..7ff9285bcc0 100644
--- a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.mir.stderr
+++ b/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.mir.stderr
@@ -7,7 +7,7 @@ LL |     println!("{}", f[&s]);
    |                      ^^ immutable borrow occurs here
 ...
 LL |     drop(rs);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0502]: cannot borrow `s` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-overloaded-index-ref-index.rs:65:7
@@ -19,7 +19,7 @@ LL |     f[&s] = 10;
    |       ^^ immutable borrow occurs here
 ...
 LL |     drop(rs);
-   |          -- borrow later used here
+   |          -- mutable borrow later used here
 
 error[E0594]: cannot assign to data in a `&` reference
   --> $DIR/borrowck-overloaded-index-ref-index.rs:71:5
diff --git a/src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.nll.stderr b/src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.nll.stderr
index fa600f0559f..a089f6d90f8 100644
--- a/src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-report-with-custom-diagnostic.nll.stderr
@@ -8,7 +8,7 @@ LL |     let z = &x; //~ ERROR cannot borrow
    |             ^^ immutable borrow occurs here
 ...
 LL |     y.use_mut();
-   |     - borrow later used here
+   |     - mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-report-with-custom-diagnostic.rs:30:21
@@ -20,7 +20,7 @@ LL |             let z = &mut x; //~ ERROR cannot borrow
    |                     ^^^^^^ mutable borrow occurs here
 ...
 LL |             y.use_ref();
-   |             - borrow later used here
+   |             - immutable borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/borrowck-report-with-custom-diagnostic.rs:45:17
@@ -32,7 +32,7 @@ LL |         let z = &mut x; //~ ERROR cannot borrow
    |                 ^^^^^^ second mutable borrow occurs here
 ...
 LL |         y.use_mut();
-   |         - borrow later used here
+   |         - first borrow later used here
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan.stderr b/src/test/ui/borrowck/borrowck-slice-pattern-element-loan.stderr
index 16d401ec7f9..7f260910ab8 100644
--- a/src/test/ui/borrowck/borrowck-slice-pattern-element-loan.stderr
+++ b/src/test/ui/borrowck/borrowck-slice-pattern-element-loan.stderr
@@ -6,7 +6,7 @@ LL |     if let [ref first, ref second, ..] = *s {
 LL |         if let [_, ref mut  second2, ref mut third, ..] = *s { //~ERROR
    |                    ^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[first, second, second2, third]);
-   |                          ------ borrow later used here
+   |                          ------ immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:44:21
@@ -16,7 +16,7 @@ LL |     if let [.., ref fourth, ref third, _, ref first] = *s {
 LL |         if let [.., ref mut third2, _, _] = *s { //~ERROR
    |                     ^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[first, third, third2, fourth]);
-   |                          ----- borrow later used here
+   |                          ----- immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:55:20
@@ -27,7 +27,7 @@ LL |     if let [.., _, ref from_end4, ref from_end3, _, ref from_end1] = *s {
 LL |         if let [_, ref mut from_begin1, ..] = *s { //~ERROR
    |                    ^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[from_begin1, from_end1, from_end3, from_end4]);
-   |                                                      --------- borrow later used here
+   |                                                      --------- immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:58:23
@@ -38,7 +38,7 @@ LL |     if let [.., _, ref from_end4, ref from_end3, _, ref from_end1] = *s {
 LL |         if let [_, _, ref mut from_begin2, ..] = *s { //~ERROR
    |                       ^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[from_begin2, from_end1, from_end3, from_end4]);
-   |                                           --------- borrow later used here
+   |                                           --------- immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:61:26
@@ -49,7 +49,7 @@ LL |     if let [.., _, ref from_end4, ref from_end3, _, ref from_end1] = *s {
 LL |         if let [_, _, _, ref mut from_begin3, ..] = *s { //~ERROR
    |                          ^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[from_begin3, from_end1, from_end3, from_end4]);
-   |                                           --------- borrow later used here
+   |                                           --------- immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:69:21
@@ -60,7 +60,7 @@ LL |     if let [ref from_begin0, ref from_begin1, _, ref from_begin3, _, ..] =
 LL |         if let [.., ref mut from_end2, _] = *s { //~ERROR
    |                     ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[from_begin0, from_begin1, from_begin3, from_end2]);
-   |                                             ----------- borrow later used here
+   |                                             ----------- immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:72:21
@@ -71,7 +71,7 @@ LL |     if let [ref from_begin0, ref from_begin1, _, ref from_begin3, _, ..] =
 LL |         if let [.., ref mut from_end3, _,  _] = *s { //~ERROR
    |                     ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[from_begin0, from_begin1, from_begin3, from_end3]);
-   |                                             ----------- borrow later used here
+   |                                             ----------- immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:75:21
@@ -82,7 +82,7 @@ LL |     if let [ref from_begin0, ref from_begin1, _, ref from_begin3, _, ..] =
 LL |         if let [.., ref mut from_end4, _, _, _] = *s { //~ERROR
    |                     ^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[from_begin0, from_begin1, from_begin3, from_end4]);
-   |                                ----------- borrow later used here
+   |                                ----------- immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:92:20
@@ -92,7 +92,7 @@ LL |     if let [ref first, ref second, ..] = *s {
 LL |         if let [_, ref mut tail..] = *s { //~ERROR
    |                    ^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[first, second]);
-   |                          ------ borrow later used here
+   |                          ------ immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:110:17
@@ -102,7 +102,7 @@ LL |     if let [.., ref second, ref first] = *s {
 LL |         if let [ref mut tail.., _] = *s { //~ERROR
    |                 ^^^^^^^^^^^^ mutable borrow occurs here
 LL |             nop(&[first, second]);
-   |                          ------ borrow later used here
+   |                          ------ immutable borrow later used here
 
 error[E0502]: cannot borrow `s[..]` as mutable because it is also borrowed as immutable
   --> $DIR/borrowck-slice-pattern-element-loan.rs:119:17
@@ -112,7 +112,7 @@ LL |     if let [_, _, _, ref s1..] = *s {
 LL |         if let [ref mut s2.., _, _, _] = *s { //~ERROR
    |                 ^^^^^^^^^^ mutable borrow occurs here
 LL |             nop_subslice(s1);
-   |                          -- borrow later used here
+   |                          -- immutable borrow later used here
 
 error: aborting due to 11 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-swap-mut-base-ptr.nll.stderr b/src/test/ui/borrowck/borrowck-swap-mut-base-ptr.nll.stderr
index 5f605694c5b..4fad30fd40d 100644
--- a/src/test/ui/borrowck/borrowck-swap-mut-base-ptr.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-swap-mut-base-ptr.nll.stderr
@@ -7,7 +7,7 @@ LL |     swap(&mut t0, &mut t1); //~ ERROR cannot borrow `t0`
    |          ^^^^^^^ mutable borrow occurs here
 LL |     *t1 = 22;
 LL |     p.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/borrowck-union-borrow.ast.nll.stderr b/src/test/ui/borrowck/borrowck-union-borrow.ast.nll.stderr
index 2f14826fa12..781d693d565 100644
--- a/src/test/ui/borrowck/borrowck-union-borrow.ast.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-union-borrow.ast.nll.stderr
@@ -7,7 +7,7 @@ LL |             let rma = &mut u.a; //[ast]~ ERROR cannot borrow `u.a` as mutab
    |                       ^^^^^^^^ mutable borrow occurs here
 LL |                                 //[mir]~^ ERROR cannot borrow `u.a` as mutable because it is also borrowed as immutable
 LL |             drop(ra);
-   |                  -- borrow later used here
+   |                  -- immutable borrow later used here
 
 error[E0506]: cannot assign to `u.a` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:43:13
@@ -29,7 +29,7 @@ LL |             let rmb = &mut u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b`
    |                       ^^^^^^^^ mutable borrow occurs here
 LL |                                 //[mir]~^ ERROR cannot borrow `u.b` as mutable because it is also borrowed as immutable
 LL |             drop(ra);
-   |                  -- borrow later used here
+   |                  -- immutable borrow later used here
 
 error[E0506]: cannot assign to `u.b` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:66:13
@@ -51,7 +51,7 @@ LL |             let ra = &u.a; //[ast]~ ERROR cannot borrow `u.a` as immutable
    |                      ^^^^ immutable borrow occurs here
 LL |                          //[mir]~^ ERROR cannot borrow `u.a` as immutable because it is also borrowed as mutable
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- mutable borrow later used here
 
 error[E0503]: cannot use `u.a` because it was mutably borrowed
   --> $DIR/borrowck-union-borrow.rs:79:21
@@ -73,7 +73,7 @@ LL |             let rma2 = &mut u.a; //[ast]~ ERROR cannot borrow `u.a` as muta
    |                        ^^^^^^^^ second mutable borrow occurs here
 LL |                                  //[mir]~^ ERROR cannot borrow `u.a` as mutable more than once at a time
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- first borrow later used here
 
 error[E0506]: cannot assign to `u.a` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:91:13
@@ -95,7 +95,7 @@ LL |             let rb = &u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b`) as
    |                      ^^^^ immutable borrow occurs here
 LL |                            //[mir]~^ ERROR cannot borrow `u.b` as immutable because it is also borrowed as mutable
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- mutable borrow later used here
 
 error[E0503]: cannot use `u.b` because it was mutably borrowed
   --> $DIR/borrowck-union-borrow.rs:104:21
@@ -117,7 +117,7 @@ LL |             let rmb2 = &mut u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b
    |                        ^^^^^^^^ second mutable borrow occurs here
 LL |                                  //[mir]~^ ERROR cannot borrow `u.b` as mutable more than once at a time
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- first borrow later used here
 
 error[E0506]: cannot assign to `u.b` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:117:13
diff --git a/src/test/ui/borrowck/borrowck-union-borrow.mir.stderr b/src/test/ui/borrowck/borrowck-union-borrow.mir.stderr
index 2f14826fa12..781d693d565 100644
--- a/src/test/ui/borrowck/borrowck-union-borrow.mir.stderr
+++ b/src/test/ui/borrowck/borrowck-union-borrow.mir.stderr
@@ -7,7 +7,7 @@ LL |             let rma = &mut u.a; //[ast]~ ERROR cannot borrow `u.a` as mutab
    |                       ^^^^^^^^ mutable borrow occurs here
 LL |                                 //[mir]~^ ERROR cannot borrow `u.a` as mutable because it is also borrowed as immutable
 LL |             drop(ra);
-   |                  -- borrow later used here
+   |                  -- immutable borrow later used here
 
 error[E0506]: cannot assign to `u.a` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:43:13
@@ -29,7 +29,7 @@ LL |             let rmb = &mut u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b`
    |                       ^^^^^^^^ mutable borrow occurs here
 LL |                                 //[mir]~^ ERROR cannot borrow `u.b` as mutable because it is also borrowed as immutable
 LL |             drop(ra);
-   |                  -- borrow later used here
+   |                  -- immutable borrow later used here
 
 error[E0506]: cannot assign to `u.b` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:66:13
@@ -51,7 +51,7 @@ LL |             let ra = &u.a; //[ast]~ ERROR cannot borrow `u.a` as immutable
    |                      ^^^^ immutable borrow occurs here
 LL |                          //[mir]~^ ERROR cannot borrow `u.a` as immutable because it is also borrowed as mutable
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- mutable borrow later used here
 
 error[E0503]: cannot use `u.a` because it was mutably borrowed
   --> $DIR/borrowck-union-borrow.rs:79:21
@@ -73,7 +73,7 @@ LL |             let rma2 = &mut u.a; //[ast]~ ERROR cannot borrow `u.a` as muta
    |                        ^^^^^^^^ second mutable borrow occurs here
 LL |                                  //[mir]~^ ERROR cannot borrow `u.a` as mutable more than once at a time
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- first borrow later used here
 
 error[E0506]: cannot assign to `u.a` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:91:13
@@ -95,7 +95,7 @@ LL |             let rb = &u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b`) as
    |                      ^^^^ immutable borrow occurs here
 LL |                            //[mir]~^ ERROR cannot borrow `u.b` as immutable because it is also borrowed as mutable
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- mutable borrow later used here
 
 error[E0503]: cannot use `u.b` because it was mutably borrowed
   --> $DIR/borrowck-union-borrow.rs:104:21
@@ -117,7 +117,7 @@ LL |             let rmb2 = &mut u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b
    |                        ^^^^^^^^ second mutable borrow occurs here
 LL |                                  //[mir]~^ ERROR cannot borrow `u.b` as mutable more than once at a time
 LL |             drop(rma);
-   |                  --- borrow later used here
+   |                  --- first borrow later used here
 
 error[E0506]: cannot assign to `u.b` because it is borrowed
   --> $DIR/borrowck-union-borrow.rs:117:13
diff --git a/src/test/ui/borrowck/borrowck-uniq-via-lend.nll.stderr b/src/test/ui/borrowck/borrowck-uniq-via-lend.nll.stderr
index a918550fabf..29e079ee333 100644
--- a/src/test/ui/borrowck/borrowck-uniq-via-lend.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-uniq-via-lend.nll.stderr
@@ -6,7 +6,7 @@ LL |     let w = &mut v;
 LL |     borrow(&*v); //~ ERROR cannot borrow `*v`
    |            ^^^ immutable borrow occurs here
 LL |     w.use_mut();
-   |     - borrow later used here
+   |     - mutable borrow later used here
 
 error[E0502]: cannot borrow `*v` as immutable because it is also borrowed as mutable
   --> $DIR/borrowck-uniq-via-lend.rs:63:12
@@ -16,7 +16,7 @@ LL |     x = &mut v;
 LL |     borrow(&*v); //~ ERROR cannot borrow `*v`
    |            ^^^ immutable borrow occurs here
 LL |     x.use_mut();
-   |     - borrow later used here
+   |     - mutable borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.nll.stderr b/src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.nll.stderr
index 9b73991ce30..4614c5cf5a6 100644
--- a/src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-vec-pattern-loan-from-mut.nll.stderr
@@ -5,7 +5,7 @@ LL |     let vb: &mut [isize] = &mut v;
    |                            ------ first mutable borrow occurs here
 ...
 LL |             v.push(tail[0] + tail[1]); //~ ERROR cannot borrow
-   |             ^      ------- borrow later used here
+   |             ^      ------- first borrow later used here
    |             |
    |             second mutable borrow occurs here
 
diff --git a/src/test/ui/borrowck/issue-51117.nll.stderr b/src/test/ui/borrowck/issue-51117.nll.stderr
index 1ddca213202..71e96577797 100644
--- a/src/test/ui/borrowck/issue-51117.nll.stderr
+++ b/src/test/ui/borrowck/issue-51117.nll.stderr
@@ -6,7 +6,7 @@ LL |         Some(baz) => {
 LL |             bar.take(); //~ ERROR cannot borrow
    |             ^^^ second mutable borrow occurs here
 LL |             drop(baz);
-   |                  --- borrow later used here
+   |                  --- first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/mut-borrow-in-loop.nll.stderr b/src/test/ui/borrowck/mut-borrow-in-loop.nll.stderr
index 92225369c92..c6aa243b6cf 100644
--- a/src/test/ui/borrowck/mut-borrow-in-loop.nll.stderr
+++ b/src/test/ui/borrowck/mut-borrow-in-loop.nll.stderr
@@ -4,7 +4,7 @@ error[E0499]: cannot borrow `*arg` as mutable more than once at a time
 LL |             (self.func)(arg) //~ ERROR cannot borrow
    |                         ^^^ mutable borrow starts here in previous iteration of loop
    |
-note: borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...
+note: first borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...
   --> $DIR/mut-borrow-in-loop.rs:17:6
    |
 LL | impl<'a, T : 'a> FuncWrapper<'a, T> {
@@ -16,7 +16,7 @@ error[E0499]: cannot borrow `*arg` as mutable more than once at a time
 LL |             (self.func)(arg) //~ ERROR cannot borrow
    |                         ^^^ mutable borrow starts here in previous iteration of loop
    |
-note: borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...
+note: first borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...
   --> $DIR/mut-borrow-in-loop.rs:17:6
    |
 LL | impl<'a, T : 'a> FuncWrapper<'a, T> {
@@ -28,7 +28,7 @@ error[E0499]: cannot borrow `*arg` as mutable more than once at a time
 LL |             (self.func)(arg) //~ ERROR cannot borrow
    |                         ^^^ mutable borrow starts here in previous iteration of loop
    |
-note: borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...
+note: first borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...
   --> $DIR/mut-borrow-in-loop.rs:17:6
    |
 LL | impl<'a, T : 'a> FuncWrapper<'a, T> {
diff --git a/src/test/ui/borrowck/mut-borrow-outside-loop.nll.stderr b/src/test/ui/borrowck/mut-borrow-outside-loop.nll.stderr
index dd445c8c3a0..fd201d75106 100644
--- a/src/test/ui/borrowck/mut-borrow-outside-loop.nll.stderr
+++ b/src/test/ui/borrowck/mut-borrow-outside-loop.nll.stderr
@@ -6,7 +6,7 @@ LL |     let first = &mut void;
 LL |     let second = &mut void; //~ ERROR cannot borrow
    |                  ^^^^^^^^^ second mutable borrow occurs here
 LL |     first.use_mut();
-   |     ----- borrow later used here
+   |     ----- first borrow later used here
 
 error[E0499]: cannot borrow `inner_void` as mutable more than once at a time
   --> $DIR/mut-borrow-outside-loop.rs:25:28
@@ -17,7 +17,7 @@ LL |         let inner_second = &mut inner_void; //~ ERROR cannot borrow
    |                            ^^^^^^^^^^^^^^^ second mutable borrow occurs here
 LL |         inner_second.use_mut();
 LL |         inner_first.use_mut();
-   |         ----------- borrow used here, in later iteration of loop
+   |         ----------- first borrow used here, in later iteration of loop
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr b/src/test/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr
index 5a7f33e5b56..ad1dc439c6d 100644
--- a/src/test/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr
+++ b/src/test/ui/borrowck/two-phase-activation-sharing-interference.nll_target.stderr
@@ -7,7 +7,7 @@ LL |     { let z = &x; read(z); }
    |               ^^ immutable borrow occurs here
 LL |     //[nll_target]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     *y += 1;
-   |     ------- borrow later used here
+   |     ------- mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-activation-sharing-interference.rs:50:13
@@ -18,7 +18,7 @@ LL |     let z = &x;
    |             ^^ immutable borrow occurs here
 LL |     //[nll_target]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     *y += 1;
-   |     ------- borrow later used here
+   |     ------- mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-activation-sharing-interference.rs:61:13
@@ -29,7 +29,7 @@ LL |     let z = &x;
    |             ^^ immutable borrow occurs here
 ...
 LL |     *y += 1;
-   |     ------- borrow later used here
+   |     ------- mutable borrow later used here
 
 error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-activation-sharing-interference.rs:72:14
@@ -40,7 +40,7 @@ LL |     let _z = &x;
    |              ^^ immutable borrow occurs here
 LL |     //[nll_target]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable
 LL |     *y += 1;
-   |     ------- borrow later used here
+   |     ------- mutable borrow later used here
 
 error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr b/src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr
index 942a38febdd..a3d3da94d54 100644
--- a/src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr
+++ b/src/test/ui/borrowck/two-phase-cannot-nest-mut-self-calls.stderr
@@ -1,19 +1,13 @@
 error[E0502]: cannot borrow `vec` as mutable because it is also borrowed as immutable
   --> $DIR/two-phase-cannot-nest-mut-self-calls.rs:26:9
    |
-LL |       vec.get({
-   |       ---
-   |       |
-   |  _____immutable borrow occurs here
-   | |
-LL | |
-LL | |         vec.push(2);
-   | |         ^^^^^^^^^^^ mutable borrow occurs here
-LL | |         //~^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable
-LL | |
-LL | |         0
-LL | |     });
-   | |______- borrow later used here
+LL |     vec.get({
+   |     --- --- immutable borrow later used by call
+   |     |
+   |     immutable borrow occurs here
+LL | 
+LL |         vec.push(2);
+   |         ^^^^^^^^^^^ mutable borrow occurs here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/two-phase-multi-mut.stderr b/src/test/ui/borrowck/two-phase-multi-mut.stderr
index a7e1dd95364..a6d311a7b1d 100644
--- a/src/test/ui/borrowck/two-phase-multi-mut.stderr
+++ b/src/test/ui/borrowck/two-phase-multi-mut.stderr
@@ -2,21 +2,20 @@ error[E0499]: cannot borrow `foo` as mutable more than once at a time
   --> $DIR/two-phase-multi-mut.rs:23:5
    |
 LL |     foo.method(&mut foo);
-   |     ^^^^^^^^^^^--------^
-   |     |          |
-   |     |          first mutable borrow occurs here
+   |     ^^^^------^--------^
+   |     |   |      |
+   |     |   |      first mutable borrow occurs here
+   |     |   first borrow later used by call
    |     second mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `foo` as mutable more than once at a time
   --> $DIR/two-phase-multi-mut.rs:23:16
    |
 LL |     foo.method(&mut foo);
-   |     -----------^^^^^^^^-
-   |     |          |
-   |     |          second mutable borrow occurs here
+   |     --- ------ ^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/borrowck/two-phase-nonrecv-autoref.ast.nll.stderr b/src/test/ui/borrowck/two-phase-nonrecv-autoref.ast.nll.stderr
index a8651c0e741..a272d2cf019 100644
--- a/src/test/ui/borrowck/two-phase-nonrecv-autoref.ast.nll.stderr
+++ b/src/test/ui/borrowck/two-phase-nonrecv-autoref.ast.nll.stderr
@@ -2,11 +2,10 @@ error[E0499]: cannot borrow `*f` as mutable more than once at a time
   --> $DIR/two-phase-nonrecv-autoref.rs:70:11
    |
 LL |         f(f(10));
-   |         --^-----
-   |         | |
-   |         | second mutable borrow occurs here
+   |         - ^ second mutable borrow occurs here
+   |         |
    |         first mutable borrow occurs here
-   |         borrow later used here
+   |         first borrow later used by call
 
 error[E0382]: use of moved value: `*f`
   --> $DIR/two-phase-nonrecv-autoref.rs:79:11
@@ -20,11 +19,10 @@ error[E0499]: cannot borrow `*f` as mutable more than once at a time
   --> $DIR/two-phase-nonrecv-autoref.rs:86:11
    |
 LL |         f(f(10));
-   |         --^-----
-   |         | |
-   |         | second mutable borrow occurs here
+   |         - ^ second mutable borrow occurs here
+   |         |
    |         first mutable borrow occurs here
-   |         borrow later used here
+   |         first borrow later used by call
 
 error[E0161]: cannot move a value of type dyn std::ops::FnOnce(i32) -> i32: the size of dyn std::ops::FnOnce(i32) -> i32 cannot be statically determined
   --> $DIR/two-phase-nonrecv-autoref.rs:95:9
@@ -50,11 +48,10 @@ error[E0502]: cannot borrow `a` as immutable because it is also borrowed as muta
   --> $DIR/two-phase-nonrecv-autoref.rs:139:27
    |
 LL |     double_access(&mut a, &a);
-   |     ----------------------^^-
-   |     |             |       |
-   |     |             |       immutable borrow occurs here
+   |     ------------- ------  ^^ immutable borrow occurs here
+   |     |             |
    |     |             mutable borrow occurs here
-   |     borrow later used here
+   |     mutable borrow later used by call
 
 error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-nonrecv-autoref.rs:167:7
@@ -64,7 +61,7 @@ LL |     i[i[3]] = 4;
    |     | |
    |     | immutable borrow occurs here
    |     mutable borrow occurs here
-   |     borrow later used here
+   |     mutable borrow later used here
 
 error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-nonrecv-autoref.rs:173:7
@@ -74,7 +71,7 @@ LL |     i[i[3]] = i[4];
    |     | |
    |     | immutable borrow occurs here
    |     mutable borrow occurs here
-   |     borrow later used here
+   |     mutable borrow later used here
 
 error: aborting due to 9 previous errors
 
diff --git a/src/test/ui/borrowck/two-phase-nonrecv-autoref.nll.stderr b/src/test/ui/borrowck/two-phase-nonrecv-autoref.nll.stderr
index a8651c0e741..a272d2cf019 100644
--- a/src/test/ui/borrowck/two-phase-nonrecv-autoref.nll.stderr
+++ b/src/test/ui/borrowck/two-phase-nonrecv-autoref.nll.stderr
@@ -2,11 +2,10 @@ error[E0499]: cannot borrow `*f` as mutable more than once at a time
   --> $DIR/two-phase-nonrecv-autoref.rs:70:11
    |
 LL |         f(f(10));
-   |         --^-----
-   |         | |
-   |         | second mutable borrow occurs here
+   |         - ^ second mutable borrow occurs here
+   |         |
    |         first mutable borrow occurs here
-   |         borrow later used here
+   |         first borrow later used by call
 
 error[E0382]: use of moved value: `*f`
   --> $DIR/two-phase-nonrecv-autoref.rs:79:11
@@ -20,11 +19,10 @@ error[E0499]: cannot borrow `*f` as mutable more than once at a time
   --> $DIR/two-phase-nonrecv-autoref.rs:86:11
    |
 LL |         f(f(10));
-   |         --^-----
-   |         | |
-   |         | second mutable borrow occurs here
+   |         - ^ second mutable borrow occurs here
+   |         |
    |         first mutable borrow occurs here
-   |         borrow later used here
+   |         first borrow later used by call
 
 error[E0161]: cannot move a value of type dyn std::ops::FnOnce(i32) -> i32: the size of dyn std::ops::FnOnce(i32) -> i32 cannot be statically determined
   --> $DIR/two-phase-nonrecv-autoref.rs:95:9
@@ -50,11 +48,10 @@ error[E0502]: cannot borrow `a` as immutable because it is also borrowed as muta
   --> $DIR/two-phase-nonrecv-autoref.rs:139:27
    |
 LL |     double_access(&mut a, &a);
-   |     ----------------------^^-
-   |     |             |       |
-   |     |             |       immutable borrow occurs here
+   |     ------------- ------  ^^ immutable borrow occurs here
+   |     |             |
    |     |             mutable borrow occurs here
-   |     borrow later used here
+   |     mutable borrow later used by call
 
 error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-nonrecv-autoref.rs:167:7
@@ -64,7 +61,7 @@ LL |     i[i[3]] = 4;
    |     | |
    |     | immutable borrow occurs here
    |     mutable borrow occurs here
-   |     borrow later used here
+   |     mutable borrow later used here
 
 error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-nonrecv-autoref.rs:173:7
@@ -74,7 +71,7 @@ LL |     i[i[3]] = i[4];
    |     | |
    |     | immutable borrow occurs here
    |     mutable borrow occurs here
-   |     borrow later used here
+   |     mutable borrow later used here
 
 error: aborting due to 9 previous errors
 
diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr b/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr
index 62a548af62b..21f54881b00 100644
--- a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr
+++ b/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr
@@ -8,7 +8,7 @@ LL |         delay = &mut vec;
    |                 ^^^^^^^^ mutable borrow occurs here
 ...
 LL |         shared[0];
-   |         ------ borrow later used here
+   |         ------ immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/two-phase-sneaky.nll.stderr b/src/test/ui/borrowck/two-phase-sneaky.nll.stderr
index 26a6271bbde..4847f6cec86 100644
--- a/src/test/ui/borrowck/two-phase-sneaky.nll.stderr
+++ b/src/test/ui/borrowck/two-phase-sneaky.nll.stderr
@@ -1,19 +1,13 @@
 error[E0499]: cannot borrow `v` as mutable more than once at a time
   --> $DIR/two-phase-sneaky.rs:22:9
    |
-LL |       v[0].push_str({
-   |       -
-   |       |
-   |  _____first mutable borrow occurs here
-   | |
-LL | |
-LL | |         v.push(format!("foo"));
-   | |         ^ second mutable borrow occurs here
-LL | |         //~^   ERROR cannot borrow `v` as mutable more than once at a time [E0499]
-LL | |
-LL | |         "World!"
-LL | |     });
-   | |______- borrow later used here
+LL |     v[0].push_str({
+   |     -    -------- first borrow later used by call
+   |     |
+   |     first mutable borrow occurs here
+LL | 
+LL |         v.push(format!("foo"));
+   |         ^ second mutable borrow occurs here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/borrowck/two-phase-surprise-no-conflict.nll.stderr b/src/test/ui/borrowck/two-phase-surprise-no-conflict.nll.stderr
index 1fcd9021341..b1f947aceb5 100644
--- a/src/test/ui/borrowck/two-phase-surprise-no-conflict.nll.stderr
+++ b/src/test/ui/borrowck/two-phase-surprise-no-conflict.nll.stderr
@@ -13,61 +13,57 @@ error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as im
   --> $DIR/two-phase-surprise-no-conflict.rs:79:17
    |
 LL |                 self.hash_expr(&self.cx_mut.body(eid).value);
-   |                 ^^^^^^^^^^^^^^^^-----------^^^^^^^^^^^^^^^^^
-   |                 |               |
-   |                 |               immutable borrow occurs here
+   |                 ^^^^^---------^^-----------^^^^^^^^^^^^^^^^^
+   |                 |    |          |
+   |                 |    |          immutable borrow occurs here
+   |                 |    immutable borrow later used by call
    |                 mutable borrow occurs here
-   |                 borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:151:51
    |
 LL |     reg.register_static(Box::new(TrivialPass::new(&mut reg.sess_mut)));
-   |     ----------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                             |
-   |     |                                             second mutable borrow occurs here
+   |     --- ---------------                           ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:156:54
    |
 LL |     reg.register_bound(Box::new(TrivialPass::new_mut(&mut reg.sess_mut)));
-   |     -------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                                |
-   |     |                                                second mutable borrow occurs here
+   |     --- --------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:161:53
    |
 LL |     reg.register_univ(Box::new(TrivialPass::new_mut(&mut reg.sess_mut)));
-   |     ------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                               |
-   |     |                                               second mutable borrow occurs here
+   |     --- -------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:166:44
    |
 LL |     reg.register_ref(&TrivialPass::new_mut(&mut reg.sess_mut));
-   |     ---------------------------------------^^^^^^^^^^^^^^^^^--
-   |     |                                      |
-   |     |                                      second mutable borrow occurs here
+   |     --- ------------                       ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `*reg` as mutable because it is also borrowed as immutable
   --> $DIR/two-phase-surprise-no-conflict.rs:178:5
    |
 LL |     reg.register_bound(Box::new(CapturePass::new(&reg.sess_mut)));
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-------------^^^
-   |     |                                            |
-   |     |                                            immutable borrow occurs here
+   |     ^^^^--------------^^^^^^^^^^^^^^^^^^^^^^^^^^^-------------^^^
+   |     |   |                                        |
+   |     |   |                                        immutable borrow occurs here
+   |     |   immutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `*reg` as mutable because it is also borrowed as immutable
   --> $DIR/two-phase-surprise-no-conflict.rs:183:5
@@ -78,7 +74,7 @@ LL |     reg.register_univ(Box::new(CapturePass::new(&reg.sess_mut)));
    |     |                                           immutable borrow occurs here
    |     mutable borrow occurs here
    |
-note: borrowed value must be valid for the lifetime 'a as defined on the function body at 122:21...
+note: immutable borrowed value must be valid for the lifetime 'a as defined on the function body at 122:21...
   --> $DIR/two-phase-surprise-no-conflict.rs:122:21
    |
 LL | fn register_plugins<'a>(mk_reg: impl Fn() -> &'a mut Registry<'a>) {
@@ -88,31 +84,30 @@ error[E0502]: cannot borrow `*reg` as mutable because it is also borrowed as imm
   --> $DIR/two-phase-surprise-no-conflict.rs:188:5
    |
 LL |     reg.register_ref(&CapturePass::new(&reg.sess_mut));
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-------------^^
-   |     |                                  |
-   |     |                                  immutable borrow occurs here
+   |     ^^^^------------^^^^^^^^^^^^^^^^^^^-------------^^
+   |     |   |                              |
+   |     |   |                              immutable borrow occurs here
+   |     |   immutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `*reg` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:200:5
    |
 LL |     reg.register_bound(Box::new(CapturePass::new_mut(&mut reg.sess_mut)));
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----------------^^^
-   |     |                                                |
-   |     |                                                first mutable borrow occurs here
+   |     ^^^^--------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----------------^^^
+   |     |   |                                            |
+   |     |   |                                            first mutable borrow occurs here
+   |     |   first borrow later used by call
    |     second mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:200:54
    |
 LL |     reg.register_bound(Box::new(CapturePass::new_mut(&mut reg.sess_mut)));
-   |     -------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                                |
-   |     |                                                second mutable borrow occurs here
+   |     --- --------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `*reg` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:206:5
@@ -123,7 +118,7 @@ LL |     reg.register_univ(Box::new(CapturePass::new_mut(&mut reg.sess_mut)));
    |     |                                               first mutable borrow occurs here
    |     second mutable borrow occurs here
    |
-note: borrowed value must be valid for the lifetime 'a as defined on the function body at 122:21...
+note: first borrowed value must be valid for the lifetime 'a as defined on the function body at 122:21...
   --> $DIR/two-phase-surprise-no-conflict.rs:122:21
    |
 LL | fn register_plugins<'a>(mk_reg: impl Fn() -> &'a mut Registry<'a>) {
@@ -133,31 +128,29 @@ error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:206:53
    |
 LL |     reg.register_univ(Box::new(CapturePass::new_mut(&mut reg.sess_mut)));
-   |     ------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                               |
-   |     |                                               second mutable borrow occurs here
+   |     --- -------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `*reg` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:212:5
    |
 LL |     reg.register_ref(&CapturePass::new_mut(&mut reg.sess_mut));
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----------------^^
-   |     |                                      |
-   |     |                                      first mutable borrow occurs here
+   |     ^^^^------------^^^^^^^^^^^^^^^^^^^^^^^-----------------^^
+   |     |   |                                  |
+   |     |   |                                  first mutable borrow occurs here
+   |     |   first borrow later used by call
    |     second mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:212:44
    |
 LL |     reg.register_ref(&CapturePass::new_mut(&mut reg.sess_mut));
-   |     ---------------------------------------^^^^^^^^^^^^^^^^^--
-   |     |                                      |
-   |     |                                      second mutable borrow occurs here
+   |     --- ------------                       ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error: aborting due to 15 previous errors
 
diff --git a/src/test/ui/borrowck/two-phase-surprise-no-conflict.no2pb.stderr b/src/test/ui/borrowck/two-phase-surprise-no-conflict.no2pb.stderr
index f4fc7e54f80..06ac92b18e1 100644
--- a/src/test/ui/borrowck/two-phase-surprise-no-conflict.no2pb.stderr
+++ b/src/test/ui/borrowck/two-phase-surprise-no-conflict.no2pb.stderr
@@ -13,161 +13,145 @@ error[E0502]: cannot borrow `*self.cx` as immutable because it is also borrowed
   --> $DIR/two-phase-surprise-no-conflict.rs:64:33
    |
 LL |                 self.hash_expr(&self.cx.body(eid).value);
-   |                 ----------------^^^^^^^-----------------
-   |                 |               |
-   |                 |               immutable borrow occurs here
+   |                 ---- ---------  ^^^^^^^ immutable borrow occurs here
+   |                 |    |
+   |                 |    mutable borrow later used by call
    |                 mutable borrow occurs here
-   |                 borrow later used here
 
 error[E0502]: cannot borrow `*self.cx_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:79:33
    |
 LL |                 self.hash_expr(&self.cx_mut.body(eid).value);
-   |                 ----------------^^^^^^^^^^^-----------------
-   |                 |               |
-   |                 |               immutable borrow occurs here
+   |                 ---- ---------  ^^^^^^^^^^^ immutable borrow occurs here
+   |                 |    |
+   |                 |    mutable borrow later used by call
    |                 mutable borrow occurs here
-   |                 borrow later used here
 
 error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:131:51
    |
 LL |     reg.register_static(Box::new(TrivialPass::new(&reg.sess_mut)));
-   |     ----------------------------------------------^^^^^^^^^^^^^---
-   |     |                                             |
-   |     |                                             immutable borrow occurs here
+   |     --- ---------------                           ^^^^^^^^^^^^^ immutable borrow occurs here
+   |     |   |
+   |     |   mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:135:50
    |
 LL |     reg.register_bound(Box::new(TrivialPass::new(&reg.sess_mut)));
-   |     ---------------------------------------------^^^^^^^^^^^^^---
-   |     |                                            |
-   |     |                                            immutable borrow occurs here
+   |     --- --------------                           ^^^^^^^^^^^^^ immutable borrow occurs here
+   |     |   |
+   |     |   mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:139:49
    |
 LL |     reg.register_univ(Box::new(TrivialPass::new(&reg.sess_mut)));
-   |     --------------------------------------------^^^^^^^^^^^^^---
-   |     |                                           |
-   |     |                                           immutable borrow occurs here
+   |     --- -------------                           ^^^^^^^^^^^^^ immutable borrow occurs here
+   |     |   |
+   |     |   mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:143:40
    |
 LL |     reg.register_ref(&TrivialPass::new(&reg.sess_mut));
-   |     -----------------------------------^^^^^^^^^^^^^--
-   |     |                                  |
-   |     |                                  immutable borrow occurs here
+   |     --- ------------                   ^^^^^^^^^^^^^ immutable borrow occurs here
+   |     |   |
+   |     |   mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:151:51
    |
 LL |     reg.register_static(Box::new(TrivialPass::new(&mut reg.sess_mut)));
-   |     ----------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                             |
-   |     |                                             second mutable borrow occurs here
+   |     --- ---------------                           ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:156:54
    |
 LL |     reg.register_bound(Box::new(TrivialPass::new_mut(&mut reg.sess_mut)));
-   |     -------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                                |
-   |     |                                                second mutable borrow occurs here
+   |     --- --------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:161:53
    |
 LL |     reg.register_univ(Box::new(TrivialPass::new_mut(&mut reg.sess_mut)));
-   |     ------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                               |
-   |     |                                               second mutable borrow occurs here
+   |     --- -------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:166:44
    |
 LL |     reg.register_ref(&TrivialPass::new_mut(&mut reg.sess_mut));
-   |     ---------------------------------------^^^^^^^^^^^^^^^^^--
-   |     |                                      |
-   |     |                                      second mutable borrow occurs here
+   |     --- ------------                       ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:178:50
    |
 LL |     reg.register_bound(Box::new(CapturePass::new(&reg.sess_mut)));
-   |     ---------------------------------------------^^^^^^^^^^^^^---
-   |     |                                            |
-   |     |                                            immutable borrow occurs here
+   |     --- --------------                           ^^^^^^^^^^^^^ immutable borrow occurs here
+   |     |   |
+   |     |   mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:183:49
    |
 LL |     reg.register_univ(Box::new(CapturePass::new(&reg.sess_mut)));
-   |     --------------------------------------------^^^^^^^^^^^^^---
-   |     |                                           |
-   |     |                                           immutable borrow occurs here
+   |     --- -------------                           ^^^^^^^^^^^^^ immutable borrow occurs here
+   |     |   |
+   |     |   mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `reg.sess_mut` as immutable because it is also borrowed as mutable
   --> $DIR/two-phase-surprise-no-conflict.rs:188:40
    |
 LL |     reg.register_ref(&CapturePass::new(&reg.sess_mut));
-   |     -----------------------------------^^^^^^^^^^^^^--
-   |     |                                  |
-   |     |                                  immutable borrow occurs here
+   |     --- ------------                   ^^^^^^^^^^^^^ immutable borrow occurs here
+   |     |   |
+   |     |   mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:200:54
    |
 LL |     reg.register_bound(Box::new(CapturePass::new_mut(&mut reg.sess_mut)));
-   |     -------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                                |
-   |     |                                                second mutable borrow occurs here
+   |     --- --------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:206:53
    |
 LL |     reg.register_univ(Box::new(CapturePass::new_mut(&mut reg.sess_mut)));
-   |     ------------------------------------------------^^^^^^^^^^^^^^^^^---
-   |     |                                               |
-   |     |                                               second mutable borrow occurs here
+   |     --- -------------                               ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error[E0499]: cannot borrow `reg.sess_mut` as mutable more than once at a time
   --> $DIR/two-phase-surprise-no-conflict.rs:212:44
    |
 LL |     reg.register_ref(&CapturePass::new_mut(&mut reg.sess_mut));
-   |     ---------------------------------------^^^^^^^^^^^^^^^^^--
-   |     |                                      |
-   |     |                                      second mutable borrow occurs here
+   |     --- ------------                       ^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
+   |     |   |
+   |     |   first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error: aborting due to 17 previous errors
 
diff --git a/src/test/ui/codemap_tests/issue-11715.nll.stderr b/src/test/ui/codemap_tests/issue-11715.nll.stderr
index c0eeb63447d..76ed3bc3137 100644
--- a/src/test/ui/codemap_tests/issue-11715.nll.stderr
+++ b/src/test/ui/codemap_tests/issue-11715.nll.stderr
@@ -7,7 +7,7 @@ LL |     let z = &mut x; //~ ERROR cannot borrow
    |             ^^^^^^ second mutable borrow occurs here
 LL |     z.use_mut();
 LL |     y.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/codemap_tests/one_line.nll.stderr b/src/test/ui/codemap_tests/one_line.nll.stderr
index 52ce3787f58..d79405e9a59 100644
--- a/src/test/ui/codemap_tests/one_line.nll.stderr
+++ b/src/test/ui/codemap_tests/one_line.nll.stderr
@@ -2,11 +2,10 @@ error[E0499]: cannot borrow `v` as mutable more than once at a time
   --> $DIR/one_line.rs:13:12
    |
 LL |     v.push(v.pop().unwrap()); //~ ERROR cannot borrow
-   |     -------^----------------
-   |     |      |
-   |     |      second mutable borrow occurs here
+   |     - ---- ^ second mutable borrow occurs here
+   |     | |
+   |     | first borrow later used by call
    |     first mutable borrow occurs here
-   |     borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef.ast.nll.stderr b/src/test/ui/coercion/coerce-overloaded-autoderef.ast.nll.stderr
index 29b6f057562..60584e481c1 100644
--- a/src/test/ui/coercion/coerce-overloaded-autoderef.ast.nll.stderr
+++ b/src/test/ui/coercion/coerce-overloaded-autoderef.ast.nll.stderr
@@ -7,7 +7,7 @@ LL |     let z = borrow_mut(x);
    |                        ^ second mutable borrow occurs here
 ...
 LL |     drop((y, z));
-   |           - borrow later used here
+   |           - first borrow later used here
 
 error[E0506]: cannot assign to `**x` because it is borrowed
   --> $DIR/coerce-overloaded-autoderef.rs:31:5
@@ -25,21 +25,20 @@ error[E0499]: cannot borrow `*x` as mutable more than once at a time
   --> $DIR/coerce-overloaded-autoderef.rs:38:20
    |
 LL |     borrow_mut2(x, x);
-   |     ---------------^-
-   |     |           |  |
-   |     |           |  second mutable borrow occurs here
+   |     ----------- -  ^ second mutable borrow occurs here
+   |     |           |
    |     |           first mutable borrow occurs here
-   |     borrow later used here
+   |     first borrow later used by call
 
 error[E0502]: cannot borrow `*x` as mutable because it is also borrowed as immutable
   --> $DIR/coerce-overloaded-autoderef.rs:44:5
    |
 LL |     borrow2(x, x);
-   |     ^^^^^^^^^^^-^
+   |     -------^^^^-^
    |     |          |
    |     |          immutable borrow occurs here
    |     mutable borrow occurs here
-   |     borrow later used here
+   |     immutable borrow later used by call
 
 error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef.mir.nll.stderr b/src/test/ui/coercion/coerce-overloaded-autoderef.mir.nll.stderr
index 29b6f057562..60584e481c1 100644
--- a/src/test/ui/coercion/coerce-overloaded-autoderef.mir.nll.stderr
+++ b/src/test/ui/coercion/coerce-overloaded-autoderef.mir.nll.stderr
@@ -7,7 +7,7 @@ LL |     let z = borrow_mut(x);
    |                        ^ second mutable borrow occurs here
 ...
 LL |     drop((y, z));
-   |           - borrow later used here
+   |           - first borrow later used here
 
 error[E0506]: cannot assign to `**x` because it is borrowed
   --> $DIR/coerce-overloaded-autoderef.rs:31:5
@@ -25,21 +25,20 @@ error[E0499]: cannot borrow `*x` as mutable more than once at a time
   --> $DIR/coerce-overloaded-autoderef.rs:38:20
    |
 LL |     borrow_mut2(x, x);
-   |     ---------------^-
-   |     |           |  |
-   |     |           |  second mutable borrow occurs here
+   |     ----------- -  ^ second mutable borrow occurs here
+   |     |           |
    |     |           first mutable borrow occurs here
-   |     borrow later used here
+   |     first borrow later used by call
 
 error[E0502]: cannot borrow `*x` as mutable because it is also borrowed as immutable
   --> $DIR/coerce-overloaded-autoderef.rs:44:5
    |
 LL |     borrow2(x, x);
-   |     ^^^^^^^^^^^-^
+   |     -------^^^^-^
    |     |          |
    |     |          immutable borrow occurs here
    |     mutable borrow occurs here
-   |     borrow later used here
+   |     immutable borrow later used by call
 
 error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef.mir.stderr b/src/test/ui/coercion/coerce-overloaded-autoderef.mir.stderr
index fbc49a7e91f..0ca752b5ff9 100644
--- a/src/test/ui/coercion/coerce-overloaded-autoderef.mir.stderr
+++ b/src/test/ui/coercion/coerce-overloaded-autoderef.mir.stderr
@@ -7,7 +7,7 @@ LL |     let z = borrow_mut(x);
    |                        ^ second mutable borrow occurs here
 ...
 LL |     drop((y, z));
-   |           - borrow later used here
+   |           - first borrow later used here
 
 error[E0506]: cannot assign to `**x` because it is borrowed
   --> $DIR/coerce-overloaded-autoderef.rs:31:5
@@ -25,21 +25,19 @@ error[E0499]: cannot borrow `*x` as mutable more than once at a time
   --> $DIR/coerce-overloaded-autoderef.rs:38:20
    |
 LL |     borrow_mut2(x, x);
-   |     ---------------^-
-   |     |           |  |
-   |     |           |  second mutable borrow occurs here
+   |     ----------- -  ^ second mutable borrow occurs here
+   |     |           |
    |     |           first mutable borrow occurs here
-   |     borrow later used here
+   |     first borrow later used by call
 
 error[E0502]: cannot borrow `*x` as immutable because it is also borrowed as mutable
   --> $DIR/coerce-overloaded-autoderef.rs:44:16
    |
 LL |     borrow2(x, x);
-   |     -----------^-
-   |     |       |  |
-   |     |       |  immutable borrow occurs here
+   |     ------- -  ^ immutable borrow occurs here
+   |     |       |
    |     |       mutable borrow occurs here
-   |     borrow later used here
+   |     mutable borrow later used by call
 
 error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/did_you_mean/issue-34126.nll.stderr b/src/test/ui/did_you_mean/issue-34126.nll.stderr
index 004c43a7343..8e29dccb8a7 100644
--- a/src/test/ui/did_you_mean/issue-34126.nll.stderr
+++ b/src/test/ui/did_you_mean/issue-34126.nll.stderr
@@ -11,11 +11,10 @@ error[E0502]: cannot borrow `self` as mutable because it is also borrowed as imm
   --> $DIR/issue-34126.rs:16:18
    |
 LL |         self.run(&mut self); //~ ERROR cannot borrow
-   |         ---------^^^^^^^^^-
-   |         |        |
-   |         |        mutable borrow occurs here
+   |         ---- --- ^^^^^^^^^ mutable borrow occurs here
+   |         |    |
+   |         |    immutable borrow later used by call
    |         immutable borrow occurs here
-   |         borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/error-codes/E0499.nll.stderr b/src/test/ui/error-codes/E0499.nll.stderr
index 89801693b76..39815ac6f17 100644
--- a/src/test/ui/error-codes/E0499.nll.stderr
+++ b/src/test/ui/error-codes/E0499.nll.stderr
@@ -7,7 +7,7 @@ LL |     let mut a = &mut i; //~ ERROR E0499
    |                 ^^^^^^ second mutable borrow occurs here
 LL |     a.use_mut();
 LL |     x.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/error-codes/E0502.nll.stderr b/src/test/ui/error-codes/E0502.nll.stderr
index 565f73616b9..ce082710246 100644
--- a/src/test/ui/error-codes/E0502.nll.stderr
+++ b/src/test/ui/error-codes/E0502.nll.stderr
@@ -6,7 +6,7 @@ LL |     let ref y = a;
 LL |     bar(a); //~ ERROR E0502
    |     ^^^^^^ mutable borrow occurs here
 LL |     y.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/generator/yield-while-iterating.nll.stderr b/src/test/ui/generator/yield-while-iterating.nll.stderr
index af79eb7ac05..d332df6e4ba 100644
--- a/src/test/ui/generator/yield-while-iterating.nll.stderr
+++ b/src/test/ui/generator/yield-while-iterating.nll.stderr
@@ -19,7 +19,7 @@ LL | |     };
 LL |       println!("{}", x[0]); //~ ERROR
    |                      ^ immutable borrow occurs here
 LL |       b.resume();
-   |       - borrow later used here
+   |       - mutable borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/generator/yield-while-ref-reborrowed.nll.stderr b/src/test/ui/generator/yield-while-ref-reborrowed.nll.stderr
index 14989079527..b5c392c51ec 100644
--- a/src/test/ui/generator/yield-while-ref-reborrowed.nll.stderr
+++ b/src/test/ui/generator/yield-while-ref-reborrowed.nll.stderr
@@ -11,7 +11,7 @@ LL | |     };
 LL |       println!("{}", x); //~ ERROR
    |                      ^ borrow occurs here
 LL |       b.resume();
-   |       - borrow later used here
+   |       - first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/hashmap-iter-value-lifetime.nll.stderr b/src/test/ui/hashmap-iter-value-lifetime.nll.stderr
index ec52d19cd1c..61a28bfd17b 100644
--- a/src/test/ui/hashmap-iter-value-lifetime.nll.stderr
+++ b/src/test/ui/hashmap-iter-value-lifetime.nll.stderr
@@ -8,7 +8,7 @@ LL |     my_stuff.clear(); //~ ERROR cannot borrow
    |     ^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL | 
 LL |     println!("{}", *thing);
-   |                    ------ borrow later used here
+   |                    ------ immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/hashmap-lifetimes.nll.stderr b/src/test/ui/hashmap-lifetimes.nll.stderr
index 943b684fe8d..4cf87ee8dc7 100644
--- a/src/test/ui/hashmap-lifetimes.nll.stderr
+++ b/src/test/ui/hashmap-lifetimes.nll.stderr
@@ -6,7 +6,7 @@ LL |     let mut it = my_stuff.iter();
 LL |     my_stuff.insert(1, 43); //~ ERROR cannot borrow
    |     ^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 LL |     it;
-   |     -- borrow later used here
+   |     -- immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/hrtb/hrtb-debruijn-in-receiver.nll.stderr b/src/test/ui/hrtb/hrtb-debruijn-in-receiver.nll.stderr
index 06970229325..10d028b05a7 100644
--- a/src/test/ui/hrtb/hrtb-debruijn-in-receiver.nll.stderr
+++ b/src/test/ui/hrtb/hrtb-debruijn-in-receiver.nll.stderr
@@ -7,7 +7,7 @@ LL |     foo.insert(); //~ ERROR cannot borrow
    |     ^^^
    |     |
    |     second mutable borrow occurs here
-   |     borrow later used here
+   |     first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/hygiene/fields-numeric-borrowck.nll.stderr b/src/test/ui/hygiene/fields-numeric-borrowck.nll.stderr
index 56dfee1fe33..4130ad7639f 100644
--- a/src/test/ui/hygiene/fields-numeric-borrowck.nll.stderr
+++ b/src/test/ui/hygiene/fields-numeric-borrowck.nll.stderr
@@ -7,7 +7,7 @@ LL |     let S { 0: ref mut borrow2 } = s;
    |                ^^^^^^^^^^^^^^^ second mutable borrow occurs here
 ...
 LL |     borrow1.use_mut();
-   |     ------- borrow later used here
+   |     ------- first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-11192.nll.stderr b/src/test/ui/issues/issue-11192.nll.stderr
index a7e6c9f2b33..4d4320083e4 100644
--- a/src/test/ui/issues/issue-11192.nll.stderr
+++ b/src/test/ui/issues/issue-11192.nll.stderr
@@ -8,10 +8,9 @@ LL |         ptr = box Foo { x: ptr.x + 1 };
    |         --- first borrow occurs due to use of `ptr` in closure
 ...
 LL |     test(&*ptr);
-   |     -----^^^^^-
-   |     |    |
-   |     |    immutable borrow occurs here
-   |     borrow later used here
+   |     ---- ^^^^^ immutable borrow occurs here
+   |     |
+   |     mutable borrow later used by call
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-18566.nll.stderr b/src/test/ui/issues/issue-18566.nll.stderr
index b5ed33d07c5..c815ad9049f 100644
--- a/src/test/ui/issues/issue-18566.nll.stderr
+++ b/src/test/ui/issues/issue-18566.nll.stderr
@@ -2,11 +2,10 @@ error[E0499]: cannot borrow `*s` as mutable more than once at a time
   --> $DIR/issue-18566.rs:33:19
    |
 LL |     MyPtr(s).poke(s);
-   |     --------------^-
-   |     |     |       |
-   |     |     |       second mutable borrow occurs here
-   |     |     first mutable borrow occurs here
-   |     borrow later used here
+   |           -  ---- ^ second mutable borrow occurs here
+   |           |  |
+   |           |  first borrow later used by call
+   |           first mutable borrow occurs here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-18783.nll.stderr b/src/test/ui/issues/issue-18783.nll.stderr
index 8acdc73bf0e..2531279f750 100644
--- a/src/test/ui/issues/issue-18783.nll.stderr
+++ b/src/test/ui/issues/issue-18783.nll.stderr
@@ -11,7 +11,7 @@ LL |     c.push(Box::new(|| y = 0));
    |                     second mutable borrow occurs here
 LL | //~^ ERROR cannot borrow `y` as mutable more than once at a time
 LL | }
-   | - borrow later used here, when `c` is dropped
+   | - first borrow later used here, when `c` is dropped
 
 error[E0499]: cannot borrow `y` as mutable more than once at a time
   --> $DIR/issue-18783.rs:26:29
@@ -26,7 +26,7 @@ LL |     Push::push(&c, Box::new(|| y = 0));
    |                             second mutable borrow occurs here
 LL | //~^ ERROR cannot borrow `y` as mutable more than once at a time
 LL | }
-   | - borrow later used here, when `c` is dropped
+   | - first borrow later used here, when `c` is dropped
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/issues/issue-25793.nll.stderr b/src/test/ui/issues/issue-25793.nll.stderr
index bd48d0eeb7c..f3d855feca2 100644
--- a/src/test/ui/issues/issue-25793.nll.stderr
+++ b/src/test/ui/issues/issue-25793.nll.stderr
@@ -7,10 +7,9 @@ LL |         $this.width.unwrap()
 LL |         let r = &mut *self;
    |                 ---------- borrow of `*self` occurs here
 LL |         r.get_size(width!(self))
-   |         ------------------------
-   |         |          |
-   |         |          in this macro invocation
-   |         borrow later used here
+   |           -------- ------------ in this macro invocation
+   |           |
+   |           borrow later used by call
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-42106.nll.stderr b/src/test/ui/issues/issue-42106.nll.stderr
index 39e3c218f40..5750b1761e5 100644
--- a/src/test/ui/issues/issue-42106.nll.stderr
+++ b/src/test/ui/issues/issue-42106.nll.stderr
@@ -6,7 +6,7 @@ LL |     let _a = &collection;
 LL |     collection.swap(1, 2); //~ ERROR also borrowed as immutable
    |     ^^^^^^^^^^ mutable borrow occurs here
 LL |     _a.use_ref();
-   |     -- borrow later used here
+   |     -- immutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-45157.stderr b/src/test/ui/issues/issue-45157.stderr
index e528a84ebd1..1512ea53a07 100644
--- a/src/test/ui/issues/issue-45157.stderr
+++ b/src/test/ui/issues/issue-45157.stderr
@@ -8,7 +8,7 @@ LL |         let nref = &u.z.c;
    |                    ^^^^^^ immutable borrow occurs here
 LL |         //~^ ERROR cannot borrow `u.z.c` as immutable because it is also borrowed as mutable [E0502]
 LL |         println!("{} {}", mref, nref)
-   |                           ---- borrow later used here
+   |                           ---- mutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/methods/method-self-arg-2.nll.stderr b/src/test/ui/methods/method-self-arg-2.nll.stderr
index f876aa281d1..df2902c0674 100644
--- a/src/test/ui/methods/method-self-arg-2.nll.stderr
+++ b/src/test/ui/methods/method-self-arg-2.nll.stderr
@@ -6,7 +6,7 @@ LL |     let y = &mut x;
 LL |     Foo::bar(&x); //~ERROR cannot borrow `x`
    |              ^^ immutable borrow occurs here
 LL |     y.use_mut();
-   |     - borrow later used here
+   |     - mutable borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/method-self-arg-2.rs:30:14
@@ -16,7 +16,7 @@ LL |     let y = &mut x;
 LL |     Foo::baz(&mut x); //~ERROR cannot borrow `x`
    |              ^^^^^^ second mutable borrow occurs here
 LL |     y.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.nll.stderr b/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.nll.stderr
index e23a6beb87e..3fc4fa3cac8 100644
--- a/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.nll.stderr
+++ b/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.nll.stderr
@@ -2,11 +2,10 @@ error[E0499]: cannot borrow `*f` as mutable more than once at a time
   --> $DIR/moves-based-on-type-no-recursive-stack-closure.rs:30:27
    |
 LL |                     (f.c)(f, true);
-   |                     ------^-------
-   |                     |     |
-   |                     |     second mutable borrow occurs here
+   |                     ----- ^ second mutable borrow occurs here
+   |                     |
    |                     first mutable borrow occurs here
-   |                     borrow later used here
+   |                     first borrow later used by call
 
 error[E0382]: borrow of moved value: `f`
   --> $DIR/moves-based-on-type-no-recursive-stack-closure.rs:42:5
diff --git a/src/test/ui/mut/mut-cant-alias.nll.stderr b/src/test/ui/mut/mut-cant-alias.nll.stderr
index e2758f810db..7b5a63b267f 100644
--- a/src/test/ui/mut/mut-cant-alias.nll.stderr
+++ b/src/test/ui/mut/mut-cant-alias.nll.stderr
@@ -6,7 +6,7 @@ LL |     let b1 = &mut *b;
 LL |     let b2 = &mut *b; //~ ERROR cannot borrow
    |                    ^ second mutable borrow occurs here
 LL |     b1.use_mut();
-   |     -- borrow later used here
+   |     -- first borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/nll/borrowed-local-error.stderr b/src/test/ui/nll/borrowed-local-error.stderr
index 28353a8bc2b..4da597791ef 100644
--- a/src/test/ui/nll/borrowed-local-error.stderr
+++ b/src/test/ui/nll/borrowed-local-error.stderr
@@ -1,16 +1,14 @@
 error[E0597]: `v` does not live long enough
   --> $DIR/borrowed-local-error.rs:20:9
    |
-LL |       let x = gimme({
-   |  _____________-
-LL | |         let v = (22,);
-LL | |         &v
-   | |         ^^ borrowed value does not live long enough
-LL | |         //~^ ERROR `v` does not live long enough [E0597]
-LL | |     });
-   | |_____-- borrow later used here
-   |       |
-   |       `v` dropped here while still borrowed
+LL |     let x = gimme({
+   |             ----- borrow later used by call
+LL |         let v = (22,);
+LL |         &v
+   |         ^^ borrowed value does not live long enough
+LL |         //~^ ERROR `v` does not live long enough [E0597]
+LL |     });
+   |     - `v` dropped here while still borrowed
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/nll/borrowed-referent-issue-38899.stderr b/src/test/ui/nll/borrowed-referent-issue-38899.stderr
index 5c5a66e7e21..ff8a83024f1 100644
--- a/src/test/ui/nll/borrowed-referent-issue-38899.stderr
+++ b/src/test/ui/nll/borrowed-referent-issue-38899.stderr
@@ -8,7 +8,7 @@ LL |     let p: &'a u8 = &*block.current;
    |                     ^^^^^^^^^^^^^^^ immutable borrow occurs here
 LL |     //~^ ERROR cannot borrow `*block.current` as immutable because it is also borrowed as mutable
 LL |     drop(x);
-   |          - borrow later used here
+   |          - mutable borrow later used here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/nll/closure-access-spans.stderr b/src/test/ui/nll/closure-access-spans.stderr
index 0042b5d7d52..9306926bf38 100644
--- a/src/test/ui/nll/closure-access-spans.stderr
+++ b/src/test/ui/nll/closure-access-spans.stderr
@@ -8,7 +8,7 @@ LL |     || x; //~ ERROR
    |     |
    |     immutable borrow occurs here
 LL |     r.use_mut();
-   |     - borrow later used here
+   |     - mutable borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/closure-access-spans.rs:23:5
@@ -20,7 +20,7 @@ LL |     || x = 2; //~ ERROR
    |     |
    |     second mutable borrow occurs here
 LL |     r.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0500]: closure requires unique access to `x` but it is already borrowed
   --> $DIR/closure-access-spans.rs:29:5
@@ -32,7 +32,7 @@ LL |     || *x = 2; //~ ERROR
    |     |
    |     closure construction occurs here
 LL |     r.use_mut();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0503]: cannot use `x` because it was mutably borrowed
   --> $DIR/closure-access-spans.rs:35:13
diff --git a/src/test/ui/nll/closure-borrow-spans.stderr b/src/test/ui/nll/closure-borrow-spans.stderr
index 1b9420b3c0b..3e423dadd19 100644
--- a/src/test/ui/nll/closure-borrow-spans.stderr
+++ b/src/test/ui/nll/closure-borrow-spans.stderr
@@ -20,7 +20,7 @@ LL |     let f = || x;
 LL |     let y = &mut x; //~ ERROR
    |             ^^^^^^ mutable borrow occurs here
 LL |     f.use_ref();
-   |     - borrow later used here
+   |     - immutable borrow later used here
 
 error[E0597]: `x` does not live long enough
   --> $DIR/closure-borrow-spans.rs:31:16
@@ -68,7 +68,7 @@ LL |     let f = || x = 0;
 LL |     let y = &x; //~ ERROR
    |             ^^ immutable borrow occurs here
 LL |     f.use_ref();
-   |     - borrow later used here
+   |     - mutable borrow later used here
 
 error[E0499]: cannot borrow `x` as mutable more than once at a time
   --> $DIR/closure-borrow-spans.rs:56:13
@@ -80,7 +80,7 @@ LL |     let f = || x = 0;
 LL |     let y = &mut x; //~ ERROR
    |             ^^^^^^ second mutable borrow occurs here
 LL |     f.use_ref();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0597]: `x` does not live long enough
   --> $DIR/closure-borrow-spans.rs:64:16
@@ -128,7 +128,7 @@ LL |     let f = || *x = 0;
 LL |     let y = &x; //~ ERROR
    |             ^^ borrow occurs here
 LL |     f.use_ref();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0501]: cannot borrow `x` as mutable because previous closure requires unique access
   --> $DIR/closure-borrow-spans.rs:89:13
@@ -140,7 +140,7 @@ LL |     let f = || *x = 0;
 LL |     let y = &mut x; //~ ERROR
    |             ^^^^^^ borrow occurs here
 LL |     f.use_ref();
-   |     - borrow later used here
+   |     - first borrow later used here
 
 error[E0597]: `x` does not live long enough
   --> $DIR/closure-borrow-spans.rs:98:17
diff --git a/src/test/ui/nll/get_default.nll.stderr b/src/test/ui/nll/get_default.nll.stderr
index 580dce3c0fe..a22f3032f30 100644
--- a/src/test/ui/nll/get_default.nll.stderr
+++ b/src/test/ui/nll/get_default.nll.stderr
@@ -43,7 +43,7 @@ LL |         match map.get() {
 LL |                 map.set(String::new()); // Ideally, this would not error.
    |                 ^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
    |
-note: borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 26:1...
+note: immutable borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 26:1...
   --> $DIR/get_default.rs:26:1
    |
 LL | / fn ok(map: &mut Map) -> &String {
@@ -64,7 +64,7 @@ LL |             Some(v) => {
 LL |                 map.set(String::new()); // Both AST and MIR error here
    |                 ^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
    |
-note: borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
+note: immutable borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
   --> $DIR/get_default.rs:41:1
    |
 LL | / fn err(map: &mut Map) -> &String {
@@ -85,7 +85,7 @@ LL |         match map.get() {
 LL |                 map.set(String::new()); // Ideally, just AST would error here
    |                 ^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
    |
-note: borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
+note: immutable borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
   --> $DIR/get_default.rs:41:1
    |
 LL | / fn err(map: &mut Map) -> &String {
diff --git a/src/test/ui/nll/get_default.stderr b/src/test/ui/nll/get_default.stderr
index 2f8eab907c7..8c93eb059e8 100644
--- a/src/test/ui/nll/get_default.stderr
+++ b/src/test/ui/nll/get_default.stderr
@@ -43,7 +43,7 @@ LL |         match map.get() {
 LL |                 map.set(String::new()); // Ideally, this would not error.
    |                 ^^^ mutable borrow occurs here
    |
-note: borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 26:1...
+note: immutable borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 26:1...
   --> $DIR/get_default.rs:26:1
    |
 LL | / fn ok(map: &mut Map) -> &String {
@@ -64,7 +64,7 @@ LL |             Some(v) => {
 LL |                 map.set(String::new()); // Both AST and MIR error here
    |                 ^^^ mutable borrow occurs here
    |
-note: borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
+note: immutable borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
   --> $DIR/get_default.rs:41:1
    |
 LL | / fn err(map: &mut Map) -> &String {
@@ -85,7 +85,7 @@ LL |         match map.get() {
 LL |                 map.set(String::new()); // Ideally, just AST would error here
    |                 ^^^ mutable borrow occurs here
    |
-note: borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
+note: immutable borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 41:1...
   --> $DIR/get_default.rs:41:1
    |
 LL | / fn err(map: &mut Map) -> &String {
diff --git a/src/test/ui/nll/issue-51268.stderr b/src/test/ui/nll/issue-51268.stderr
index 2ecfe03e7de..44f7c52d257 100644
--- a/src/test/ui/nll/issue-51268.stderr
+++ b/src/test/ui/nll/issue-51268.stderr
@@ -1,19 +1,16 @@
 error[E0502]: cannot borrow `self.thing` as mutable because it is also borrowed as immutable
   --> $DIR/issue-51268.rs:28:9
    |
-LL |            self.thing.bar(|| {
-   |            ^              -- immutable borrow occurs here
-   |   _________|
-   |  |_________|
-   | ||
-LL | ||         //~^ ERROR cannot borrow `self.thing` as mutable because it is also borrowed as immutable [E0502]
-LL | ||             &self.number;
-   | ||              ---- first borrow occurs due to use of `self` in closure
-LL | ||         });
-   | ||          ^
-   | ||__________|
-   | |___________mutable borrow occurs here
-   |             borrow later used here
+LL |           self.thing.bar(|| {
+   |           ^          --- -- immutable borrow occurs here
+   |           |          |
+   |  _________|          immutable borrow later used by call
+   | |
+LL | |         //~^ ERROR cannot borrow `self.thing` as mutable because it is also borrowed as immutable [E0502]
+LL | |             &self.number;
+   | |              ---- first borrow occurs due to use of `self` in closure
+LL | |         });
+   | |__________^ mutable borrow occurs here
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/nll/loan_ends_mid_block_vec.stderr b/src/test/ui/nll/loan_ends_mid_block_vec.stderr
index 4c739cfe978..2869035c3f3 100644
--- a/src/test/ui/nll/loan_ends_mid_block_vec.stderr
+++ b/src/test/ui/nll/loan_ends_mid_block_vec.stderr
@@ -80,7 +80,7 @@ LL |     data.push('d');
    |     ^^^^ second mutable borrow occurs here
 ...
 LL |     capitalize(slice);
-   |                ----- borrow later used here
+   |                ----- first borrow later used here
 
 error[E0499]: cannot borrow `data` as mutable more than once at a time (Mir)
   --> $DIR/loan_ends_mid_block_vec.rs:27:5
@@ -92,7 +92,7 @@ LL |     data.push('e');
    |     ^^^^ second mutable borrow occurs here
 ...
 LL |     capitalize(slice);
-   |                ----- borrow later used here
+   |                ----- first borrow later used here
 
 error[E0499]: cannot borrow `data` as mutable more than once at a time (Mir)
   --> $DIR/loan_ends_mid_block_vec.rs:30:5
@@ -104,7 +104,7 @@ LL |     data.push('f');
    |     ^^^^ second mutable borrow occurs here
 ...
 LL |     capitalize(slice);
-   |                ----- borrow later used here
+   |                ----- first borrow later used here
 
 error: aborting due to 9 previous errors
 
diff --git a/src/test/ui/nll/region-ends-after-if-condition.nll.stderr b/src/test/ui/nll/region-ends-after-if-condition.nll.stderr
index fa3a5e0c0d7..c1bfa4bffc0 100644
--- a/src/test/ui/nll/region-ends-after-if-condition.nll.stderr
+++ b/src/test/ui/nll/region-ends-after-if-condition.nll.stderr
@@ -32,7 +32,7 @@ LL |         my_struct.field.push_str("Hello, world!");
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
 ...
 LL |     drop(value);
-   |          ----- borrow later used here
+   |          ----- immutable borrow later used here
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/nll/region-ends-after-if-condition.stderr b/src/test/ui/nll/region-ends-after-if-condition.stderr
index d966c62c85f..eaa5e815de8 100644
--- a/src/test/ui/nll/region-ends-after-if-condition.stderr
+++ b/src/test/ui/nll/region-ends-after-if-condition.stderr
@@ -32,7 +32,7 @@ LL |         my_struct.field.push_str("Hello, world!");
    |         ^^^^^^^^^^^^^^^ mutable borrow occurs here
 ...
 LL |     drop(value);
-   |          ----- borrow later used here
+   |          ----- immutable borrow later used here
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/nll/return_from_loop.stderr b/src/test/ui/nll/return_from_loop.stderr
index 7130aa64dab..d631bb58af6 100644
--- a/src/test/ui/nll/return_from_loop.stderr
+++ b/src/test/ui/nll/return_from_loop.stderr
@@ -32,7 +32,7 @@ LL |         my_struct.field.push_str("Hello, world!");
    |         ^^^^^^^^^^^^^^^ second mutable borrow occurs here
 ...
 LL |         value.len();
-   |         ----- borrow later used here
+   |         ----- first borrow later used here
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/regions/region-bound-on-closure-outlives-call.nll.stderr b/src/test/ui/regions/region-bound-on-closure-outlives-call.nll.stderr
index da6ebaaefad..f11cc77bbea 100644
--- a/src/test/ui/regions/region-bound-on-closure-outlives-call.nll.stderr
+++ b/src/test/ui/regions/region-bound-on-closure-outlives-call.nll.stderr
@@ -2,12 +2,11 @@ error[E0505]: cannot move out of `f` because it is borrowed
   --> $DIR/region-bound-on-closure-outlives-call.rs:12:25
    |
 LL |     (|x| f(x))(call_rec(f)) //~ ERROR cannot move out of `f`
-   |     --------------------^--
-   |     ||   |              |
-   |     ||   |              move out of `f` occurs here
+   |     ----------          ^ move out of `f` occurs here
+   |     ||   |
    |     ||   borrow occurs due to use in closure
    |     |borrow of `f` occurs here
-   |     borrow later used here
+   |     borrow later used by call
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/regions/regions-adjusted-lvalue-op.nll.stderr b/src/test/ui/regions/regions-adjusted-lvalue-op.nll.stderr
index f342155c8b1..fa963714849 100644
--- a/src/test/ui/regions/regions-adjusted-lvalue-op.nll.stderr
+++ b/src/test/ui/regions/regions-adjusted-lvalue-op.nll.stderr
@@ -2,21 +2,19 @@ error[E0502]: cannot borrow `v` as immutable because it is also borrowed as muta
   --> $DIR/regions-adjusted-lvalue-op.rs:24:16
    |
 LL |     v[0].oh_no(&v); //~ ERROR cannot borrow `v` as immutable because
-   |     -----------^^-
-   |     |          |
-   |     |          immutable borrow occurs here
+   |     -    ----- ^^ immutable borrow occurs here
+   |     |    |
+   |     |    mutable borrow later used by call
    |     mutable borrow occurs here
-   |     borrow later used here
 
 error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable
   --> $DIR/regions-adjusted-lvalue-op.rs:25:16
    |
 LL |     (*v).oh_no(&v); //~ ERROR cannot borrow `v` as immutable because
-   |     -----------^^-
-   |     | |        |
-   |     | |        immutable borrow occurs here
-   |     | mutable borrow occurs here
-   |     borrow later used here
+   |       -  ----- ^^ immutable borrow occurs here
+   |       |  |
+   |       |  mutable borrow later used by call
+   |       mutable borrow occurs here
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.nll.stderr b/src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.nll.stderr
index 626ffad5ba7..84cd097e33c 100644
--- a/src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.nll.stderr
+++ b/src/test/ui/rfc-2005-default-binding-mode/borrowck-issue-49631.nll.stderr
@@ -7,7 +7,7 @@ LL |         foo.mutate();
    |         ^^^^^^^^^^^^ mutable borrow occurs here
 LL |         //~^ ERROR cannot borrow `foo` as mutable
 LL |         println!("foo={:?}", *string);
-   |                              ------- borrow used here, in later iteration of loop
+   |                              ------- immutable borrow used here, in later iteration of loop
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/span/borrowck-call-is-borrow-issue-12224.nll.stderr b/src/test/ui/span/borrowck-call-is-borrow-issue-12224.nll.stderr
index a05a3911aa7..978ca66a089 100644
--- a/src/test/ui/span/borrowck-call-is-borrow-issue-12224.nll.stderr
+++ b/src/test/ui/span/borrowck-call-is-borrow-issue-12224.nll.stderr
@@ -1,16 +1,14 @@
 error[E0499]: cannot borrow `f` as mutable more than once at a time
   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:22:16
    |
-LL |       f(Box::new(|| {
-   |       -          ^^ second mutable borrow occurs here
-   |       |
-   |  _____first mutable borrow occurs here
-   | |
-LL | |     //~^ ERROR: cannot borrow `f` as mutable more than once
-LL | |         f((Box::new(|| {})))
-   | |         - second borrow occurs due to use of `f` in closure
-LL | |     }));
-   | |_______- borrow later used here
+LL |     f(Box::new(|| {
+   |     -          ^^ second mutable borrow occurs here
+   |     |
+   |     first mutable borrow occurs here
+   |     first borrow later used by call
+LL |     //~^ ERROR: cannot borrow `f` as mutable more than once
+LL |         f((Box::new(|| {})))
+   |         - second borrow occurs due to use of `f` in closure
 
 error[E0596]: cannot borrow `*f` as mutable, as it is behind a `&` reference
   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:35:5
@@ -40,17 +38,13 @@ LL |         foo(f);
 error[E0505]: cannot move out of `f` because it is borrowed
   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:65:16
    |
-LL |       f(Box::new(|a| {
-   |       -          ^^^ move out of `f` occurs here
-   |       |
-   |  _____borrow of `f` occurs here
-   | |
-LL | |         foo(f);
-   | |             - move occurs due to use in closure
-LL | |         //~^ ERROR cannot move `f` into closure because it is borrowed
-LL | |         //~| ERROR cannot move out of captured outer variable in an `FnMut` closure
-LL | |     }), 3);
-   | |__________- borrow later used here
+LL |     f(Box::new(|a| {
+   |     -          ^^^ move out of `f` occurs here
+   |     |
+   |     borrow of `f` occurs here
+   |     borrow later used by call
+LL |         foo(f);
+   |             - move occurs due to use in closure
 
 error: aborting due to 5 previous errors
 
diff --git a/src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.nll.stderr b/src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.nll.stderr
index e2747e1bb62..652a93e610f 100644
--- a/src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.nll.stderr
+++ b/src/test/ui/unboxed-closures/unboxed-closures-recursive-fn-using-fn-mut.nll.stderr
@@ -2,11 +2,10 @@ error[E0499]: cannot borrow `*self` as mutable more than once at a time
   --> $DIR/unboxed-closures-recursive-fn-using-fn-mut.rs:32:21
    |
 LL |         (self.func)(self, arg)
-   |         ------------^^^^------
-   |         |           |
-   |         |           second mutable borrow occurs here
+   |         ----------- ^^^^ second mutable borrow occurs here
+   |         |
    |         first mutable borrow occurs here
-   |         borrow later used here
+   |         first borrow later used by call
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/vec/vec-mut-iter-borrow.nll.stderr b/src/test/ui/vec/vec-mut-iter-borrow.nll.stderr
index cff263231dd..a5c6e5f1110 100644
--- a/src/test/ui/vec/vec-mut-iter-borrow.nll.stderr
+++ b/src/test/ui/vec/vec-mut-iter-borrow.nll.stderr
@@ -5,7 +5,7 @@ LL |     for x in &mut xs {
    |              -------
    |              |
    |              first mutable borrow occurs here
-   |              borrow used here, in later iteration of loop
+   |              first borrow used here, in later iteration of loop
 LL |         xs.push(1) //~ ERROR cannot borrow `xs`
    |         ^^ second mutable borrow occurs here