Change:
<del> error[E0382]: use of moved value: `a` --> $DIR/borrowck-box-insensitivity.rs:37:9 | LL |     let _x = a.x; |         -- value moved here LL |     //~^ value moved here LL |     let _y = a.y; //~ ERROR use of moved |         ^^ value used here after move | = note: move occurs because `a.x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait error[E0382]: use of moved value: `a` --> $DIR/borrowck-box-insensitivity.rs:46:9 | LL |     let _x = a.x; |         -- value moved here LL |     //~^ value moved here LL |     let _y = a.y; //~ ERROR use of moved |         ^^ value used here after move | = note: move occurs because `a.x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait error[E0382]: use of moved value: `a` --> $DIR/borrowck-box-insensitivity.rs:55:15 | LL |     let _x = a.x; |         -- value moved here LL |     //~^ value moved here LL |     let _y = &a.y; //~ ERROR use of moved |               ^^^ value used here after move | = note: move occurs because `a.x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait error[E0505]: cannot move out of `a.y` because it is borrowed --> $DIR/borrowck-box-insensitivity.rs:63:9 | LL |     let _x = &a.x; |               --- borrow of `a.x` occurs here LL |     let _y = a.y; |         ^^ move out of `a.y` occurs here error[E0503]: cannot use `a.y` because it was mutably borrowed --> $DIR/borrowck-box-insensitivity.rs:71:9 | LL |     let _x = &mut a.x; |                   --- borrow of `a.x` occurs here LL |     let _y = a.y; //~ ERROR cannot use |         ^^ use of borrowed `a.x` error[E0505]: cannot move out of `a.y` because it is borrowed --> $DIR/borrowck-box-insensitivity.rs:77:9 | LL |     let _x = &mut a.x; |                   --- borrow of `a.x` occurs here LL |     let _y = a.y; |         ^^ move out of `a.y` occurs here error[E0502]: cannot borrow `a` (via `a.y`) as immutable because `a` is also borrowed as mutable (via `a.x`) --> $DIR/borrowck-box-insensitivity.rs:85:15 | LL |     let _x = &mut a.x; |                   --- mutable borrow occurs here (via `a.x`) LL |     let _y = &a.y; //~ ERROR cannot borrow |               ^^^ immutable borrow occurs here (via `a.y`) LL |     //~^ immutable borrow occurs here (via `a.y`) LL | } | - mutable borrow ends here error[E0502]: cannot borrow `a` (via `a.y`) as mutable because `a` is also borrowed as immutable (via `a.x`) --> $DIR/borrowck-box-insensitivity.rs:92:19 | LL |     let _x = &a.x; |               --- immutable borrow occurs here (via `a.x`) LL |     let _y = &mut a.y; //~ ERROR cannot borrow |                   ^^^ mutable borrow occurs here (via `a.y`) LL |     //~^ mutable borrow occurs here (via `a.y`) LL | } | - immutable borrow ends here error[E0382]: use of collaterally moved value: `a.y` --> $DIR/borrowck-box-insensitivity.rs:100:9 | LL |     let _x = a.x.x; |         -- value moved here LL |     //~^ value moved here LL |     let _y = a.y; //~ ERROR use of collaterally moved |         ^^ value used here after move | = note: move occurs because `a.x.x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait error[E0382]: use of collaterally moved value: `a.y` --> $DIR/borrowck-box-insensitivity.rs:108:9 | LL |     let _x = a.x.x; |         -- value moved here LL |     //~^ value moved here LL |     let _y = a.y; //~ ERROR use of collaterally moved |         ^^ value used here after move | = note: move occurs because `a.x.x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait error[E0382]: use of collaterally moved value: `a.y` --> $DIR/borrowck-box-insensitivity.rs:116:15 | LL |     let _x = a.x.x; |         -- value moved here LL |     //~^ value moved here LL |     let _y = &a.y; //~ ERROR use of collaterally moved |               ^^^ value used here after move | = note: move occurs because `a.x.x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait error[E0505]: cannot move out of `a.y` because it is borrowed --> $DIR/borrowck-box-insensitivity.rs:124:9 | LL |     let _x = &a.x.x; |               ----- borrow of `a.x.x` occurs here LL |     //~^ borrow of `a.x.x` occurs here LL |     let _y = a.y; |         ^^ move out of `a.y` occurs here error[E0503]: cannot use `a.y` because it was mutably borrowed --> $DIR/borrowck-box-insensitivity.rs:132:9 | LL |     let _x = &mut a.x.x; |                   ----- borrow of `a.x.x` occurs here LL |     let _y = a.y; //~ ERROR cannot use |         ^^ use of borrowed `a.x.x` error[E0505]: cannot move out of `a.y` because it is borrowed --> $DIR/borrowck-box-insensitivity.rs:138:9 | LL |     let _x = &mut a.x.x; |                   ----- borrow of `a.x.x` occurs here LL |     let _y = a.y; |         ^^ move out of `a.y` occurs here error[E0502]: cannot borrow `a.y` as immutable because `a.x.x` is also borrowed as mutable --> $DIR/borrowck-box-insensitivity.rs:147:15 | LL |     let _x = &mut a.x.x; |                   ----- mutable borrow occurs here LL |     //~^ mutable borrow occurs here LL |     let _y = &a.y; //~ ERROR cannot borrow |               ^^^ immutable borrow occurs here LL |     //~^ immutable borrow occurs here LL | } | - mutable borrow ends here error[E0502]: cannot borrow `a.y` as mutable because `a.x.x` is also borrowed as immutable --> $DIR/borrowck-box-insensitivity.rs:155:19 | LL |     let _x = &a.x.x; |               ----- immutable borrow occurs here LL |     //~^ immutable borrow occurs here LL |     let _y = &mut a.y; //~ ERROR cannot borrow |                   ^^^ mutable borrow occurs here LL |     //~^ mutable borrow occurs here LL | } | - immutable borrow ends here error: aborting due to 16 previous errors Some errors occurred: E0382, E0502, E0503, E0505. For more information about an error, try `rustc --explain E0382`. </del>

Discussion:
The revision system lets encode different sets of errors for different invocations of the compiler. and normally attempts to catch cases where you left out expected error messages by saying "if you have any annotation in your file, then the set of such annotations needs to match the same set of errors that are actually emitted. However, if you combine these features, then for each revision (call it ) in the revisions list, at least one of your errors currently need to be written with the revision system in mind, e.g. If none of the error annotations include a revision (i.e., if they are all ), then thinks that the test has no error annotations, and thus treats it as a case where the compiler's error output is blindly accepted. That seems bad.
cc
This is surely no longer the case, because and annotations are now mandatory?
With annotation for warnings and errors being mandatory , and additionally annotations applying to all revisions , this should be non-issue.