about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-02-22 14:36:14 +0000
committerbors <bors@rust-lang.org>2020-02-22 14:36:14 +0000
commit3eeefc21f1a3ed9755c072c83808ed5c087b8c9a (patch)
treeb76ff147c70897424acc2728f6c1249c0d52a634 /src
parent07534591ffb222308c5ac84aad4da64582811283 (diff)
parente5fb1291a0773d00bdb1d53cbfad53b5db94c123 (diff)
downloadrust-3eeefc21f1a3ed9755c072c83808ed5c087b8c9a.tar.gz
rust-3eeefc21f1a3ed9755c072c83808ed5c087b8c9a.zip
Auto merge of #69374 - Dylan-DPC:rollup-x7mjd5z, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #68984 (Make `u8::is_ascii` a stable `const fn`)
 - #69339 (Add test for #69312)
 - #69346 (Clean up E0323, E0324, E0325 and E0326 explanations)
 - #69348 (Wrong error message for move_ref_pattern)
 - #69349 (MIR is not an experiment anymore)
 - #69354 (Test `Duration::new` panics on overflow)
 - #69370 (move const_eval.rs into the module folder)

Failed merges:

r? @ghost
Diffstat (limited to 'src')
-rw-r--r--src/libcore/num/mod.rs3
-rw-r--r--src/libcore/tests/time.rs6
-rw-r--r--src/librustc_error_codes/error_codes/E0323.md1
-rw-r--r--src/librustc_error_codes/error_codes/E0324.md5
-rw-r--r--src/librustc_error_codes/error_codes/E0325.md1
-rw-r--r--src/librustc_error_codes/error_codes/E0326.md8
-rw-r--r--src/librustc_mir/const_eval/mod.rs (renamed from src/librustc_mir/const_eval.rs)0
-rw-r--r--src/librustc_mir/lib.rs2
-rw-r--r--src/librustc_mir_build/hair/pattern/check_match.rs2
-rw-r--r--src/test/ui/consts/is_ascii.rs (renamed from src/test/ui/consts/std/char.rs)6
-rw-r--r--src/test/ui/consts/issue-69312.rs10
-rw-r--r--src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr4
-rw-r--r--src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr2
-rw-r--r--src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr50
-rw-r--r--src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr8
-rw-r--r--src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr2
16 files changed, 69 insertions, 41 deletions
diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs
index 6f55e7c8be8..43c5f7cf6b9 100644
--- a/src/libcore/num/mod.rs
+++ b/src/libcore/num/mod.rs
@@ -4324,8 +4324,9 @@ impl u8 {
     /// assert!(!non_ascii.is_ascii());
     /// ```
     #[stable(feature = "ascii_methods_on_intrinsics", since = "1.23.0")]
+    #[rustc_const_stable(feature = "const_ascii_methods_on_intrinsics", since = "1.43.0")]
     #[inline]
-    pub fn is_ascii(&self) -> bool {
+    pub const fn is_ascii(&self) -> bool {
         *self & 128 == 0
     }
 
diff --git a/src/libcore/tests/time.rs b/src/libcore/tests/time.rs
index 273f1258bb0..c1fbdf7df76 100644
--- a/src/libcore/tests/time.rs
+++ b/src/libcore/tests/time.rs
@@ -12,6 +12,12 @@ fn creation() {
 }
 
 #[test]
+#[should_panic]
+fn new_overflow() {
+    let _ = Duration::new(::core::u64::MAX, 1_000_000_000);
+}
+
+#[test]
 fn secs() {
     assert_eq!(Duration::new(0, 0).as_secs(), 0);
     assert_eq!(Duration::new(0, 500_000_005).as_secs(), 0);
diff --git a/src/librustc_error_codes/error_codes/E0323.md b/src/librustc_error_codes/error_codes/E0323.md
index 6d34c35f9cb..0bf42d17ebc 100644
--- a/src/librustc_error_codes/error_codes/E0323.md
+++ b/src/librustc_error_codes/error_codes/E0323.md
@@ -1,4 +1,5 @@
 An associated const was implemented when another trait item was expected.
+
 Erroneous code example:
 
 ```compile_fail,E0323
diff --git a/src/librustc_error_codes/error_codes/E0324.md b/src/librustc_error_codes/error_codes/E0324.md
index b8c9e596990..1442cb77dd9 100644
--- a/src/librustc_error_codes/error_codes/E0324.md
+++ b/src/librustc_error_codes/error_codes/E0324.md
@@ -1,5 +1,6 @@
-A method was implemented when another trait item was expected. Erroneous
-code example:
+A method was implemented when another trait item was expected.
+
+Erroneous code example:
 
 ```compile_fail,E0324
 struct Bar;
diff --git a/src/librustc_error_codes/error_codes/E0325.md b/src/librustc_error_codes/error_codes/E0325.md
index f685b92cbf0..656fd1ec82b 100644
--- a/src/librustc_error_codes/error_codes/E0325.md
+++ b/src/librustc_error_codes/error_codes/E0325.md
@@ -1,4 +1,5 @@
 An associated type was implemented when another trait item was expected.
+
 Erroneous code example:
 
 ```compile_fail,E0325
diff --git a/src/librustc_error_codes/error_codes/E0326.md b/src/librustc_error_codes/error_codes/E0326.md
index 0702d00c2de..3d357819c7f 100644
--- a/src/librustc_error_codes/error_codes/E0326.md
+++ b/src/librustc_error_codes/error_codes/E0326.md
@@ -1,7 +1,6 @@
-The types of any associated constants in a trait implementation must match the
-types in the trait definition. This error indicates that there was a mismatch.
+An implementation of a trait doesn't match the type contraint.
 
-Here's an example of this error:
+Erroneous code example:
 
 ```compile_fail,E0326
 trait Foo {
@@ -14,3 +13,6 @@ impl Foo for Bar {
     const BAR: u32 = 5; // error, expected bool, found u32
 }
 ```
+
+The types of any associated constants in a trait implementation must match the
+types in the trait definition.
diff --git a/src/librustc_mir/const_eval.rs b/src/librustc_mir/const_eval/mod.rs
index 04e2558a308..04e2558a308 100644
--- a/src/librustc_mir/const_eval.rs
+++ b/src/librustc_mir/const_eval/mod.rs
diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs
index 4f1b90e34cf..284dd74ce99 100644
--- a/src/librustc_mir/lib.rs
+++ b/src/librustc_mir/lib.rs
@@ -1,6 +1,6 @@
 /*!
 
-Rust MIR: a lowered representation of Rust. Also: an experiment!
+Rust MIR: a lowered representation of Rust.
 
 */
 
diff --git a/src/librustc_mir_build/hair/pattern/check_match.rs b/src/librustc_mir_build/hair/pattern/check_match.rs
index 651f2f70d9b..3dfe826ad2a 100644
--- a/src/librustc_mir_build/hair/pattern/check_match.rs
+++ b/src/librustc_mir_build/hair/pattern/check_match.rs
@@ -659,7 +659,7 @@ fn check_borrow_conflicts_in_at_patterns(cx: &MatchVisitor<'_, '_>, pat: &Pat<'_
             });
             if !conflicts_ref.is_empty() {
                 let occurs_because = format!(
-                    "move occurs because `{}` has type `{}` which does implement the `Copy` trait",
+                    "move occurs because `{}` has type `{}` which does not implement the `Copy` trait",
                     name,
                     tables.node_type(pat.hir_id),
                 );
diff --git a/src/test/ui/consts/std/char.rs b/src/test/ui/consts/is_ascii.rs
index fe79059a2e4..d8424549f93 100644
--- a/src/test/ui/consts/std/char.rs
+++ b/src/test/ui/consts/is_ascii.rs
@@ -3,7 +3,13 @@
 static X: bool = 'a'.is_ascii();
 static Y: bool = 'รค'.is_ascii();
 
+static BX: bool = b'a'.is_ascii();
+static BY: bool = 192u8.is_ascii();
+
 fn main() {
     assert!(X);
     assert!(!Y);
+
+    assert!(BX);
+    assert!(!BY);
 }
diff --git a/src/test/ui/consts/issue-69312.rs b/src/test/ui/consts/issue-69312.rs
new file mode 100644
index 00000000000..413c6752079
--- /dev/null
+++ b/src/test/ui/consts/issue-69312.rs
@@ -0,0 +1,10 @@
+// build-pass
+
+// Verify that the compiler doesn't ICE during const prop while evaluating the index operation.
+
+#![allow(unconditional_panic)]
+
+fn main() {
+    let cols = [0u32; 0];
+    cols[0];
+}
diff --git a/src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr b/src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr
index 026747c212a..f2186b9298e 100644
--- a/src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr
+++ b/src/test/ui/pattern/bindings-after-at/bind-by-move-neither-can-live-while-the-other-survives-1.stderr
@@ -15,7 +15,7 @@ LL |         Some(_z @ ref _y) => {}
    |              |    |
    |              |    value borrowed here after move
    |              value moved into `_z` here
-   |              move occurs because `_z` has type `X` which does implement the `Copy` trait
+   |              move occurs because `_z` has type `X` which does not implement the `Copy` trait
 
 error: cannot move out of value because it is borrowed
   --> $DIR/bind-by-move-neither-can-live-while-the-other-survives-1.rs:29:14
@@ -34,7 +34,7 @@ LL |         Some(_z @ ref mut _y) => {}
    |              |    |
    |              |    value borrowed here after move
    |              value moved into `_z` here
-   |              move occurs because `_z` has type `X` which does implement the `Copy` trait
+   |              move occurs because `_z` has type `X` which does not implement the `Copy` trait
 
 error[E0382]: borrow of moved value
   --> $DIR/bind-by-move-neither-can-live-while-the-other-survives-1.rs:21:19
diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr b/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr
index 91fdfd4f2ab..54900e958c2 100644
--- a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr
+++ b/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse-promotion.stderr
@@ -6,7 +6,7 @@ LL |     let a @ ref b = U;
    |         |   |
    |         |   value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `main::U` which does implement the `Copy` trait
+   |         move occurs because `a` has type `main::U` which does not implement the `Copy` trait
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr b/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr
index ec86692dc69..f819e671436 100644
--- a/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr
+++ b/src/test/ui/pattern/bindings-after-at/borrowck-pat-by-move-and-ref-inverse.stderr
@@ -6,7 +6,7 @@ LL |     let a @ ref b = U;
    |         |   |
    |         |   value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `main::U` which does implement the `Copy` trait
+   |         move occurs because `a` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:9
@@ -17,7 +17,7 @@ LL |     let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
    |         |            |              value borrowed here after move
    |         |            value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `(main::U, main::U)` which does implement the `Copy` trait
+   |         move occurs because `a` has type `(main::U, main::U)` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:14
@@ -27,7 +27,7 @@ LL |     let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
    |              |       |
    |              |       value borrowed here after move
    |              value moved into `b` here
-   |              move occurs because `b` has type `main::U` which does implement the `Copy` trait
+   |              move occurs because `b` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:33
@@ -37,7 +37,7 @@ LL |     let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
    |                                 |   |
    |                                 |   value borrowed here after move
    |                                 value moved into `d` here
-   |                                 move occurs because `d` has type `main::U` which does implement the `Copy` trait
+   |                                 move occurs because `d` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:38:9
@@ -48,7 +48,7 @@ LL |     let a @ [ref mut b, ref c] = [U, U];
    |         |    |          value borrowed here after move
    |         |    value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `[main::U; 2]` which does implement the `Copy` trait
+   |         move occurs because `a` has type `[main::U; 2]` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:41:9
@@ -58,7 +58,7 @@ LL |     let a @ ref b = u();
    |         |   |
    |         |   value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `main::U` which does implement the `Copy` trait
+   |         move occurs because `a` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:9
@@ -69,7 +69,7 @@ LL |     let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
    |         |            |              value borrowed here after move
    |         |            value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `(main::U, main::U)` which does implement the `Copy` trait
+   |         move occurs because `a` has type `(main::U, main::U)` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:14
@@ -79,7 +79,7 @@ LL |     let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
    |              |       |
    |              |       value borrowed here after move
    |              value moved into `b` here
-   |              move occurs because `b` has type `main::U` which does implement the `Copy` trait
+   |              move occurs because `b` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:44:33
@@ -89,7 +89,7 @@ LL |     let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
    |                                 |   |
    |                                 |   value borrowed here after move
    |                                 value moved into `d` here
-   |                                 move occurs because `d` has type `main::U` which does implement the `Copy` trait
+   |                                 move occurs because `d` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:51:9
@@ -100,7 +100,7 @@ LL |     let a @ [ref mut b, ref c] = [u(), u()];
    |         |    |          value borrowed here after move
    |         |    value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `[main::U; 2]` which does implement the `Copy` trait
+   |         move occurs because `a` has type `[main::U; 2]` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:56:9
@@ -110,7 +110,7 @@ LL |         a @ Some(ref b) => {}
    |         |        |
    |         |        value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `std::option::Option<main::U>` which does implement the `Copy` trait
+   |         move occurs because `a` has type `std::option::Option<main::U>` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:9
@@ -121,7 +121,7 @@ LL |         a @ Some((mut b @ ref mut c, d @ ref e)) => {}
    |         |                 |              value borrowed here after move
    |         |                 value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `std::option::Option<(main::U, main::U)>` which does implement the `Copy` trait
+   |         move occurs because `a` has type `std::option::Option<(main::U, main::U)>` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:19
@@ -131,7 +131,7 @@ LL |         a @ Some((mut b @ ref mut c, d @ ref e)) => {}
    |                   |       |
    |                   |       value borrowed here after move
    |                   value moved into `b` here
-   |                   move occurs because `b` has type `main::U` which does implement the `Copy` trait
+   |                   move occurs because `b` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:61:38
@@ -141,7 +141,7 @@ LL |         a @ Some((mut b @ ref mut c, d @ ref e)) => {}
    |                                      |   |
    |                                      |   value borrowed here after move
    |                                      value moved into `d` here
-   |                                      move occurs because `d` has type `main::U` which does implement the `Copy` trait
+   |                                      move occurs because `d` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:71:9
@@ -152,7 +152,7 @@ LL |         mut a @ Some([ref b, ref mut c]) => {}
    |         |             |      value borrowed here after move
    |         |             value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `std::option::Option<[main::U; 2]>` which does implement the `Copy` trait
+   |         move occurs because `a` has type `std::option::Option<[main::U; 2]>` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:77:9
@@ -162,7 +162,7 @@ LL |         a @ Some(ref b) => {}
    |         |        |
    |         |        value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `std::option::Option<main::U>` which does implement the `Copy` trait
+   |         move occurs because `a` has type `std::option::Option<main::U>` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:9
@@ -173,7 +173,7 @@ LL |         a @ Some((mut b @ ref mut c, d @ ref e)) => {}
    |         |                 |              value borrowed here after move
    |         |                 value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `std::option::Option<(main::U, main::U)>` which does implement the `Copy` trait
+   |         move occurs because `a` has type `std::option::Option<(main::U, main::U)>` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:19
@@ -183,7 +183,7 @@ LL |         a @ Some((mut b @ ref mut c, d @ ref e)) => {}
    |                   |       |
    |                   |       value borrowed here after move
    |                   value moved into `b` here
-   |                   move occurs because `b` has type `main::U` which does implement the `Copy` trait
+   |                   move occurs because `b` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:83:38
@@ -193,7 +193,7 @@ LL |         a @ Some((mut b @ ref mut c, d @ ref e)) => {}
    |                                      |   |
    |                                      |   value borrowed here after move
    |                                      value moved into `d` here
-   |                                      move occurs because `d` has type `main::U` which does implement the `Copy` trait
+   |                                      move occurs because `d` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:93:9
@@ -204,7 +204,7 @@ LL |         mut a @ Some([ref b, ref mut c]) => {}
    |         |             |      value borrowed here after move
    |         |             value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `std::option::Option<[main::U; 2]>` which does implement the `Copy` trait
+   |         move occurs because `a` has type `std::option::Option<[main::U; 2]>` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:14:11
@@ -214,7 +214,7 @@ LL |     fn f1(a @ ref b: U) {}
    |           |   |
    |           |   value borrowed here after move
    |           value moved into `a` here
-   |           move occurs because `a` has type `main::U` which does implement the `Copy` trait
+   |           move occurs because `a` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:11
@@ -225,7 +225,7 @@ LL |     fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
    |           |            |              value borrowed here after move
    |           |            value borrowed here after move
    |           value moved into `a` here
-   |           move occurs because `a` has type `(main::U, main::U)` which does implement the `Copy` trait
+   |           move occurs because `a` has type `(main::U, main::U)` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:20
@@ -235,7 +235,7 @@ LL |     fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
    |                    |   |
    |                    |   value borrowed here after move
    |                    value moved into `b` here
-   |                    move occurs because `b` has type `main::U` which does implement the `Copy` trait
+   |                    move occurs because `b` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:18:31
@@ -245,7 +245,7 @@ LL |     fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
    |                               |       |
    |                               |       value borrowed here after move
    |                               value moved into `d` here
-   |                               move occurs because `d` has type `main::U` which does implement the `Copy` trait
+   |                               move occurs because `d` has type `main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:25:11
@@ -256,7 +256,7 @@ LL |     fn f3(a @ [ref mut b, ref c]: [U; 2]) {}
    |           |    |          value borrowed here after move
    |           |    value borrowed here after move
    |           value moved into `a` here
-   |           move occurs because `a` has type `[main::U; 2]` which does implement the `Copy` trait
+   |           move occurs because `a` has type `[main::U; 2]` which does not implement the `Copy` trait
 
 error[E0382]: borrow of moved value
   --> $DIR/borrowck-pat-by-move-and-ref-inverse.rs:31:22
diff --git a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr b/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr
index 4e96c6e1669..e74f227b5e4 100644
--- a/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr
+++ b/src/test/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-twice.stderr
@@ -96,7 +96,7 @@ LL |     let a @ (ref mut b, ref mut c) = (U, U);
    |         |    |          value borrowed here after move
    |         |    value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `(main::U, main::U)` which does implement the `Copy` trait
+   |         move occurs because `a` has type `(main::U, main::U)` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-ref-mut-twice.rs:70:9
@@ -108,7 +108,7 @@ LL |     let a @ (b, [c, d]) = &mut val; // Same as ^--
    |         |    |   value borrowed here after move
    |         |    value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `&mut (main::U, [main::U; 2])` which does implement the `Copy` trait
+   |         move occurs because `a` has type `&mut (main::U, [main::U; 2])` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-ref-mut-twice.rs:74:9
@@ -118,7 +118,7 @@ LL |     let a @ &mut ref mut b = &mut U;
    |         |        |
    |         |        value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `&mut main::U` which does implement the `Copy` trait
+   |         move occurs because `a` has type `&mut main::U` which does not implement the `Copy` trait
 
 error: borrow of moved value
   --> $DIR/borrowck-pat-ref-mut-twice.rs:77:9
@@ -129,7 +129,7 @@ LL |     let a @ &mut (ref mut b, ref mut c) = &mut (U, U);
    |         |         |          value borrowed here after move
    |         |         value borrowed here after move
    |         value moved into `a` here
-   |         move occurs because `a` has type `&mut (main::U, main::U)` which does implement the `Copy` trait
+   |         move occurs because `a` has type `&mut (main::U, main::U)` which does not implement the `Copy` trait
 
 error: cannot borrow value as mutable more than once at a time
   --> $DIR/borrowck-pat-ref-mut-twice.rs:82:9
diff --git a/src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr b/src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr
index 697a8b96e63..19e815a1ae8 100644
--- a/src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr
+++ b/src/test/ui/pattern/bindings-after-at/default-binding-modes-both-sides-independent.stderr
@@ -33,7 +33,7 @@ LL |         Ok(ref a @ b) | Err(b @ ref a) => {
    |                             |   |
    |                             |   value borrowed here after move
    |                             value moved into `b` here
-   |                             move occurs because `b` has type `main::NotCopy` which does implement the `Copy` trait
+   |                             move occurs because `b` has type `main::NotCopy` which does not implement the `Copy` trait
 
 error: cannot move out of value because it is borrowed
   --> $DIR/default-binding-modes-both-sides-independent.rs:44:9