about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2015-01-08 09:12:06 -0500
committerNiko Matsakis <niko@alum.mit.edu>2015-01-08 09:19:27 -0500
commit2387651f7d5e57ce73d5193f6dbfe75ae1e288c8 (patch)
treed1341baf0d67519f4e87a94d72a97d004e804af1 /src
parent0a32010e430006d3850b74976d7d7bf0dda699b4 (diff)
downloadrust-2387651f7d5e57ce73d5193f6dbfe75ae1e288c8.tar.gz
rust-2387651f7d5e57ce73d5193f6dbfe75ae1e288c8.zip
Update the "English-language" to-string function of a `cmt` to use
more modern terminology and update tests accordingly.
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/mem_categorization.rs103
-rw-r--r--src/librustc_borrowck/borrowck/gather_loans/move_error.rs20
-rw-r--r--src/librustc_borrowck/borrowck/mod.rs4
-rw-r--r--src/librustc_typeck/check/callee.rs2
-rw-r--r--src/librustc_typeck/check/mod.rs18
-rw-r--r--src/test/compile-fail/binop-move-semantics.rs4
-rw-r--r--src/test/compile-fail/borrowck-borrow-immut-deref-of-box-as-mut.rs2
-rw-r--r--src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs4
-rw-r--r--src/test/compile-fail/borrowck-move-in-irrefut-pat.rs6
-rw-r--r--src/test/compile-fail/borrowck-move-out-of-overloaded-auto-deref.rs2
-rw-r--r--src/test/compile-fail/borrowck-move-out-of-overloaded-deref.rs2
-rw-r--r--src/test/compile-fail/borrowck-move-out-of-vec-tail.rs2
-rw-r--r--src/test/compile-fail/borrowck-overloaded-index-2.rs2
-rw-r--r--src/test/compile-fail/borrowck-overloaded-index.rs2
-rw-r--r--src/test/compile-fail/dst-index.rs4
-rw-r--r--src/test/compile-fail/dst-rvalue.rs4
-rw-r--r--src/test/compile-fail/issue-12567.rs8
-rw-r--r--src/test/compile-fail/issue-17651.rs2
-rw-r--r--src/test/compile-fail/issue-2590.rs2
-rw-r--r--src/test/compile-fail/method-self-arg-2.rs2
-rw-r--r--src/test/compile-fail/slice-mut-2.rs2
-rw-r--r--src/test/compile-fail/slice-mut.rs2
-rw-r--r--src/test/compile-fail/std-uncopyable-atomics.rs8
-rw-r--r--src/test/compile-fail/unop-move-semantics.rs4
24 files changed, 124 insertions, 87 deletions
diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs
index fb9a16f86e5..0cc7f15a0b1 100644
--- a/src/librustc/middle/mem_categorization.rs
+++ b/src/librustc/middle/mem_categorization.rs
@@ -75,7 +75,7 @@ use middle::def;
 use middle::region;
 use middle::ty::{self, Ty};
 use util::nodemap::{NodeMap};
-use util::ppaux::{Repr};
+use util::ppaux::{Repr, UserString};
 
 use syntax::ast::{MutImmutable, MutMutable};
 use syntax::ast;
@@ -113,10 +113,17 @@ pub struct Upvar {
 // different kinds of pointers:
 #[derive(Clone, Copy, PartialEq, Eq, Hash, Show)]
 pub enum PointerKind {
+    /// `Box<T>`
     Unique,
+
+    /// `&T`
     BorrowedPtr(ty::BorrowKind, ty::Region),
-    Implicit(ty::BorrowKind, ty::Region),     // Implicit deref of a borrowed ptr.
-    UnsafePtr(ast::Mutability)
+
+    /// `*T`
+    UnsafePtr(ast::Mutability),
+
+    /// Implicit deref of the `&T` that results from an overloaded index `[]`.
+    Implicit(ty::BorrowKind, ty::Region),
 }
 
 // We use the term "interior" to mean "something reachable from the
@@ -1392,22 +1399,6 @@ impl<'tcx> cmt_<'tcx> {
 
 
     pub fn descriptive_string(&self, tcx: &ty::ctxt) -> String {
-        fn upvar_to_string(upvar: &Upvar, is_copy: bool) -> String {
-            if upvar.is_unboxed {
-                let kind = match upvar.kind {
-                    ty::FnUnboxedClosureKind => "Fn",
-                    ty::FnMutUnboxedClosureKind => "FnMut",
-                    ty::FnOnceUnboxedClosureKind => "FnOnce"
-                };
-                format!("captured outer variable in an `{}` closure", kind)
-            } else {
-                (match (upvar.kind, is_copy) {
-                    (ty::FnOnceUnboxedClosureKind, true) => "captured outer variable in a proc",
-                    _ => "captured outer variable"
-                }).to_string()
-            }
-        }
-
         match self.cat {
             cat_static_item => {
                 "static item".to_string()
@@ -1427,16 +1418,23 @@ impl<'tcx> cmt_<'tcx> {
                 let upvar = self.upvar();
                 match upvar.as_ref().map(|i| &i.cat) {
                     Some(&cat_upvar(ref var)) => {
-                        upvar_to_string(var, false)
+                        var.user_string(tcx)
                     }
                     Some(_) => unreachable!(),
                     None => {
                         match pk {
                             Implicit(..) => {
-                                "dereference (dereference is implicit, due to indexing)".to_string()
+                                format!("indexed content")
+                            }
+                            Unique => {
+                                format!("`Box` content")
+                            }
+                            UnsafePtr(..) => {
+                                format!("dereference of unsafe pointer")
+                            }
+                            BorrowedPtr(..) => {
+                                format!("borrowed content")
                             }
-                            Unique => format!("dereference of `{}`", ptr_sigil(pk)),
-                            _ => format!("dereference of `{}`-pointer", ptr_sigil(pk))
                         }
                     }
                 }
@@ -1447,14 +1445,12 @@ impl<'tcx> cmt_<'tcx> {
             cat_interior(_, InteriorField(PositionalField(_))) => {
                 "anonymous field".to_string()
             }
-            cat_interior(_, InteriorElement(VecElement)) => {
-                "vec content".to_string()
-            }
+            cat_interior(_, InteriorElement(VecElement)) |
             cat_interior(_, InteriorElement(OtherElement)) => {
                 "indexed content".to_string()
             }
             cat_upvar(ref var) => {
-                upvar_to_string(var, true)
+                var.user_string(tcx)
             }
             cat_downcast(ref cmt, _) => {
                 cmt.descriptive_string(tcx)
@@ -1483,7 +1479,7 @@ impl<'tcx> Repr<'tcx> for categorization<'tcx> {
                 format!("{:?}", *self)
             }
             cat_deref(ref cmt, derefs, ptr) => {
-                format!("{}-{}{}->", cmt.cat.repr(tcx), ptr_sigil(ptr), derefs)
+                format!("{}-{}{}->", cmt.cat.repr(tcx), ptr.repr(tcx), derefs)
             }
             cat_interior(ref cmt, interior) => {
                 format!("{}.{}", cmt.cat.repr(tcx), interior.repr(tcx))
@@ -1504,7 +1500,32 @@ pub fn ptr_sigil(ptr: PointerKind) -> &'static str {
         Implicit(ty::MutBorrow, _) => "&mut",
         BorrowedPtr(ty::UniqueImmBorrow, _) |
         Implicit(ty::UniqueImmBorrow, _) => "&unique",
-        UnsafePtr(_) => "*"
+        UnsafePtr(_) => "*",
+    }
+}
+
+impl<'tcx> Repr<'tcx> for PointerKind {
+    fn repr(&self, tcx: &ty::ctxt<'tcx>) -> String {
+        match *self {
+            Unique => {
+                format!("Box")
+            }
+            BorrowedPtr(ty::ImmBorrow, ref r) |
+            Implicit(ty::ImmBorrow, ref r) => {
+                format!("&{}", r.repr(tcx))
+            }
+            BorrowedPtr(ty::MutBorrow, ref r) |
+            Implicit(ty::MutBorrow, ref r) => {
+                format!("&{} mut", r.repr(tcx))
+            }
+            BorrowedPtr(ty::UniqueImmBorrow, ref r) |
+            Implicit(ty::UniqueImmBorrow, ref r) => {
+                format!("&{} uniq", r.repr(tcx))
+            }
+            UnsafePtr(_) => {
+                format!("*")
+            }
+        }
     }
 }
 
@@ -1531,3 +1552,27 @@ fn element_kind(t: Ty) -> ElementKind {
         _ => OtherElement
     }
 }
+
+impl<'tcx> Repr<'tcx> for ty::UnboxedClosureKind {
+    fn repr(&self, _: &ty::ctxt) -> String {
+        format!("Upvar({:?})", self)
+    }
+}
+
+impl<'tcx> Repr<'tcx> for Upvar {
+    fn repr(&self, tcx: &ty::ctxt) -> String {
+        format!("Upvar({})", self.kind.repr(tcx))
+    }
+}
+
+impl<'tcx> UserString<'tcx> for Upvar {
+    fn user_string(&self, _: &ty::ctxt) -> String {
+        let kind = match self.kind {
+            ty::FnUnboxedClosureKind => "Fn",
+            ty::FnMutUnboxedClosureKind => "FnMut",
+            ty::FnOnceUnboxedClosureKind => "FnOnce",
+        };
+        format!("captured outer variable in an `{}` closure", kind)
+    }
+}
+
diff --git a/src/librustc_borrowck/borrowck/gather_loans/move_error.rs b/src/librustc_borrowck/borrowck/gather_loans/move_error.rs
index a7771fefec4..28d02161eeb 100644
--- a/src/librustc_borrowck/borrowck/gather_loans/move_error.rs
+++ b/src/librustc_borrowck/borrowck/gather_loans/move_error.rs
@@ -115,29 +115,31 @@ fn report_cannot_move_out_of<'a, 'tcx>(bccx: &BorrowckCtxt<'a, 'tcx>,
     match move_from.cat {
         mc::cat_deref(_, _, mc::BorrowedPtr(..)) |
         mc::cat_deref(_, _, mc::Implicit(..)) |
-        mc::cat_deref(_, _, mc::UnsafePtr(..)) |
         mc::cat_static_item => {
-            bccx.span_err(
-                move_from.span,
-                &format!("cannot move out of {}",
-                        bccx.cmt_to_string(&*move_from))[]);
+            bccx.span_err(move_from.span,
+                          &format!("cannot move out of {}",
+                                  move_from.descriptive_string(bccx.tcx))[]);
         }
 
         mc::cat_downcast(ref b, _) |
         mc::cat_interior(ref b, _) => {
             match b.ty.sty {
-                ty::ty_struct(did, _)
-                | ty::ty_enum(did, _) if ty::has_dtor(bccx.tcx, did) => {
+                ty::ty_struct(did, _) |
+                ty::ty_enum(did, _) if ty::has_dtor(bccx.tcx, did) => {
                     bccx.span_err(
                         move_from.span,
                         &format!("cannot move out of type `{}`, \
                                  which defines the `Drop` trait",
                                 b.ty.user_string(bccx.tcx))[]);
                 },
-                _ => panic!("this path should not cause illegal move")
+                _ => {
+                    bccx.span_bug(move_from.span, "this path should not cause illegal move")
+                }
             }
         }
-        _ => panic!("this path should not cause illegal move")
+        _ => {
+            bccx.span_bug(move_from.span, "this path should not cause illegal move")
+        }
     }
 }
 
diff --git a/src/librustc_borrowck/borrowck/mod.rs b/src/librustc_borrowck/borrowck/mod.rs
index e734e8fb6ff..b87fed1601c 100644
--- a/src/librustc_borrowck/borrowck/mod.rs
+++ b/src/librustc_borrowck/borrowck/mod.rs
@@ -681,6 +681,10 @@ impl<'a, 'tcx> BorrowckCtxt<'a, 'tcx> {
         self.tcx.sess.span_err(s, m);
     }
 
+    pub fn span_bug(&self, s: Span, m: &str) {
+        self.tcx.sess.span_bug(s, m);
+    }
+
     pub fn span_note(&self, s: Span, m: &str) {
         self.tcx.sess.span_note(s, m);
     }
diff --git a/src/librustc_typeck/check/callee.rs b/src/librustc_typeck/check/callee.rs
index dff216ac293..19a88dfc553 100644
--- a/src/librustc_typeck/check/callee.rs
+++ b/src/librustc_typeck/check/callee.rs
@@ -73,7 +73,7 @@ pub fn check_call<'a, 'tcx>(fcx: &FnCtxt<'a, 'tcx>,
         autoderef(fcx,
                   callee_expr.span,
                   original_callee_ty,
-                  Some(callee_expr.id),
+                  Some(callee_expr),
                   LvaluePreference::NoPreference,
                   |adj_ty, idx| {
                       let autoderefref = ty::AutoDerefRef { autoderefs: idx, autoref: None };
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs
index 4ade11a9a83..084a457909c 100644
--- a/src/librustc_typeck/check/mod.rs
+++ b/src/librustc_typeck/check/mod.rs
@@ -2263,24 +2263,10 @@ pub enum LvaluePreference {
 /// Executes an autoderef loop for the type `t`. At each step, invokes `should_stop` to decide
 /// whether to terminate the loop. Returns the final type and number of derefs that it performed.
 ///
-<<<<<<< HEAD
 /// Note: this method does not modify the adjustments table. The caller is responsible for
 /// inserting an AutoAdjustment record into the `fcx` using one of the suitable methods.
 pub fn autoderef<'a, 'tcx, T, F>(fcx: &FnCtxt<'a, 'tcx>,
                                  sp: Span,
-||||||| merged common ancestors
-/// Note: this method does not modify the adjustments table. The caller is responsible for
-/// inserting an AutoAdjustment record into the `fcx` using one of the suitable methods.
-pub fn autoderef<'a, 'tcx, T, F>(fcx: &FnCtxt<'a, 'tcx>, sp: Span,
-=======
-/// Note: this method does not modify the adjustments table. The
-/// caller is responsible for inserting an AutoAdjustment record into
-/// the `fcx` using one of the suitable methods.  However, if
-/// `opt_expr` is not `None`, it *will* insert the appropriate method
-/// entries for the overloaded deref call.
-pub fn autoderef<'a, 'tcx, T, F>(fcx: &FnCtxt<'a, 'tcx>,
-                                 sp: Span,
->>>>>>> Add comments to autoderef() helper and refactor it to take
                                  base_ty: Ty<'tcx>,
                                  opt_expr: Option<&ast::Expr>,
                                  mut lvalue_pref: LvaluePreference,
@@ -2288,9 +2274,9 @@ pub fn autoderef<'a, 'tcx, T, F>(fcx: &FnCtxt<'a, 'tcx>,
                                  -> (Ty<'tcx>, uint, Option<T>)
     where F: FnMut(Ty<'tcx>, uint) -> Option<T>,
 {
-    debug!("autoderef(base_ty={}, opt_expr={}, lvalue_pref={})",
+    debug!("autoderef(base_ty={}, opt_expr={}, lvalue_pref={:?})",
            base_ty.repr(fcx.tcx()),
-           opt_expr,
+           opt_expr.repr(fcx.tcx()),
            lvalue_pref);
 
     let mut t = base_ty;
diff --git a/src/test/compile-fail/binop-move-semantics.rs b/src/test/compile-fail/binop-move-semantics.rs
index ffc38cc0a60..cff0064497a 100644
--- a/src/test/compile-fail/binop-move-semantics.rs
+++ b/src/test/compile-fail/binop-move-semantics.rs
@@ -37,9 +37,9 @@ fn illegal_dereference<T: Add<Output=()>>(mut x: T, y: T) {
     let m = &mut x;
     let n = &y;
 
-    *m  //~ ERROR: cannot move out of dereference of `&mut`-pointer
+    *m  //~ ERROR: cannot move out of borrowed content
     +
-    *n;  //~ ERROR: cannot move out of dereference of `&`-pointer
+    *n;  //~ ERROR: cannot move out of borrowed content
 }
 
 struct Foo;
diff --git a/src/test/compile-fail/borrowck-borrow-immut-deref-of-box-as-mut.rs b/src/test/compile-fail/borrowck-borrow-immut-deref-of-box-as-mut.rs
index 84f4e4f8817..794e0fc6e3a 100644
--- a/src/test/compile-fail/borrowck-borrow-immut-deref-of-box-as-mut.rs
+++ b/src/test/compile-fail/borrowck-borrow-immut-deref-of-box-as-mut.rs
@@ -20,5 +20,5 @@ impl A {
 pub fn main() {
     let a = box A;
     a.foo();
-    //~^ ERROR cannot borrow immutable dereference of `Box` `*a` as mutable
+    //~^ ERROR cannot borrow immutable `Box` content `*a` as mutable
 }
diff --git a/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs b/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs
index 9aec8de46b6..d5df1251346 100644
--- a/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs
+++ b/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs
@@ -33,7 +33,7 @@ fn test1() {
 }
 
 fn test2<F>(f: &F) where F: FnMut() {
-    (*f)(); //~ ERROR: cannot borrow immutable dereference of `&`-pointer `*f` as mutable
+    (*f)(); //~ ERROR: cannot borrow immutable borrowed content `*f` as mutable
 }
 
 fn test3<F>(f: &mut F) where F: FnMut() {
@@ -41,7 +41,7 @@ fn test3<F>(f: &mut F) where F: FnMut() {
 }
 
 fn test4(f: &Test) {
-    f.f.call_mut(()) //~ ERROR: cannot borrow immutable dereference of `Box` `*f.f` as mutable
+    f.f.call_mut(()) //~ ERROR: cannot borrow immutable `Box` content `*f.f` as mutable
 }
 
 fn test5(f: &mut Test) {
diff --git a/src/test/compile-fail/borrowck-move-in-irrefut-pat.rs b/src/test/compile-fail/borrowck-move-in-irrefut-pat.rs
index c5d23925a89..ec505faf885 100644
--- a/src/test/compile-fail/borrowck-move-in-irrefut-pat.rs
+++ b/src/test/compile-fail/borrowck-move-in-irrefut-pat.rs
@@ -11,16 +11,16 @@
 fn with<F>(f: F) where F: FnOnce(&String) {}
 
 fn arg_item(&_x: &String) {}
-    //~^ ERROR cannot move out of dereference of `&`-pointer
+    //~^ ERROR cannot move out of borrowed content
 
 fn arg_closure() {
     with(|&_x| ())
-    //~^ ERROR cannot move out of dereference of `&`-pointer
+    //~^ ERROR cannot move out of borrowed content
 }
 
 fn let_pat() {
     let &_x = &"hi".to_string();
-    //~^ ERROR cannot move out of dereference of `&`-pointer
+    //~^ ERROR cannot move out of borrowed content
 }
 
 pub fn main() {}
diff --git a/src/test/compile-fail/borrowck-move-out-of-overloaded-auto-deref.rs b/src/test/compile-fail/borrowck-move-out-of-overloaded-auto-deref.rs
index a6723a04611..a13efdea562 100644
--- a/src/test/compile-fail/borrowck-move-out-of-overloaded-auto-deref.rs
+++ b/src/test/compile-fail/borrowck-move-out-of-overloaded-auto-deref.rs
@@ -12,5 +12,5 @@ use std::rc::Rc;
 
 pub fn main() {
     let _x = Rc::new(vec!(1i, 2)).into_iter();
-    //~^ ERROR cannot move out of dereference of `&`-pointer
+    //~^ ERROR cannot move out of borrowed content
 }
diff --git a/src/test/compile-fail/borrowck-move-out-of-overloaded-deref.rs b/src/test/compile-fail/borrowck-move-out-of-overloaded-deref.rs
index 8a93790d5a2..fffcf575ab0 100644
--- a/src/test/compile-fail/borrowck-move-out-of-overloaded-deref.rs
+++ b/src/test/compile-fail/borrowck-move-out-of-overloaded-deref.rs
@@ -12,5 +12,5 @@ use std::rc::Rc;
 
 pub fn main() {
     let _x = *Rc::new("hi".to_string());
-    //~^ ERROR cannot move out of dereference of `&`-pointer
+    //~^ ERROR cannot move out of borrowed content
 }
diff --git a/src/test/compile-fail/borrowck-move-out-of-vec-tail.rs b/src/test/compile-fail/borrowck-move-out-of-vec-tail.rs
index 23ef5331b49..75596af10d7 100644
--- a/src/test/compile-fail/borrowck-move-out-of-vec-tail.rs
+++ b/src/test/compile-fail/borrowck-move-out-of-vec-tail.rs
@@ -25,7 +25,7 @@ pub fn main() {
     match x {
         [_, tail..] => {
             match tail {
-                [Foo { string: a }, //~ ERROR cannot move out of dereference of `&`-pointer
+                [Foo { string: a }, //~ ERROR cannot move out of borrowed content
                  Foo { string: b }] => {
                     //~^^ NOTE attempting to move value to here
                     //~^^ NOTE and here
diff --git a/src/test/compile-fail/borrowck-overloaded-index-2.rs b/src/test/compile-fail/borrowck-overloaded-index-2.rs
index 5e6d235574e..334f14349d7 100644
--- a/src/test/compile-fail/borrowck-overloaded-index-2.rs
+++ b/src/test/compile-fail/borrowck-overloaded-index-2.rs
@@ -28,5 +28,5 @@ fn main() {
     let v = MyVec { data: vec!(box 1i, box 2, box 3) };
     let good = &v[0]; // Shouldn't fail here
     let bad = v[0];
-    //~^ ERROR cannot move out of dereference (dereference is implicit, due to indexing)
+    //~^ ERROR cannot move out of indexed content
 }
diff --git a/src/test/compile-fail/borrowck-overloaded-index.rs b/src/test/compile-fail/borrowck-overloaded-index.rs
index 80b68dbf519..f4f4d983e00 100644
--- a/src/test/compile-fail/borrowck-overloaded-index.rs
+++ b/src/test/compile-fail/borrowck-overloaded-index.rs
@@ -66,5 +66,5 @@ fn main() {
         x: 1,
     };
     s[2] = 20;
-    //~^ ERROR cannot assign to immutable dereference (dereference is implicit, due to indexing)
+    //~^ ERROR cannot assign to immutable indexed content
 }
diff --git a/src/test/compile-fail/dst-index.rs b/src/test/compile-fail/dst-index.rs
index e297ecaac23..c64cc13bbe2 100644
--- a/src/test/compile-fail/dst-index.rs
+++ b/src/test/compile-fail/dst-index.rs
@@ -41,9 +41,9 @@ impl Index<uint> for T {
 
 fn main() {
     S[0];
-    //~^ ERROR cannot move out of dereference
+    //~^ ERROR cannot move out of indexed content
     //~^^ ERROR E0161
     T[0];
-    //~^ ERROR cannot move out of dereference
+    //~^ ERROR cannot move out of indexed content
     //~^^ ERROR E0161
 }
diff --git a/src/test/compile-fail/dst-rvalue.rs b/src/test/compile-fail/dst-rvalue.rs
index 74e952364cd..faae0009a93 100644
--- a/src/test/compile-fail/dst-rvalue.rs
+++ b/src/test/compile-fail/dst-rvalue.rs
@@ -15,10 +15,10 @@
 pub fn main() {
     let _x: Box<str> = box *"hello world";
     //~^ ERROR E0161
-    //~^^ ERROR cannot move out of dereference
+    //~^^ ERROR cannot move out of borrowed content
 
     let array: &[int] = &[1, 2, 3];
     let _x: Box<[int]> = box *array;
     //~^ ERROR E0161
-    //~^^ ERROR cannot move out of dereference
+    //~^^ ERROR cannot move out of borrowed content
 }
diff --git a/src/test/compile-fail/issue-12567.rs b/src/test/compile-fail/issue-12567.rs
index 26866cbbc60..d186a83676a 100644
--- a/src/test/compile-fail/issue-12567.rs
+++ b/src/test/compile-fail/issue-12567.rs
@@ -12,11 +12,11 @@ fn match_vecs<'a, T>(l1: &'a [T], l2: &'a [T]) {
     match (l1, l2) {
         ([], []) => println!("both empty"),
         ([], [hd, tl..]) | ([hd, tl..], []) => println!("one empty"),
-        //~^ ERROR: cannot move out of dereference
-        //~^^ ERROR: cannot move out of dereference
+        //~^ ERROR: cannot move out of borrowed content
+        //~^^ ERROR: cannot move out of borrowed content
         ([hd1, tl1..], [hd2, tl2..]) => println!("both nonempty"),
-        //~^ ERROR: cannot move out of dereference
-        //~^^ ERROR: cannot move out of dereference
+        //~^ ERROR: cannot move out of borrowed content
+        //~^^ ERROR: cannot move out of borrowed content
     }
 }
 
diff --git a/src/test/compile-fail/issue-17651.rs b/src/test/compile-fail/issue-17651.rs
index d3678f7d87f..fbecd0487bf 100644
--- a/src/test/compile-fail/issue-17651.rs
+++ b/src/test/compile-fail/issue-17651.rs
@@ -15,6 +15,6 @@
 
 fn main() {
     (|&:| box *[0us].as_slice())();
-    //~^ ERROR cannot move out of dereference
+    //~^ ERROR cannot move out of borrowed content
     //~^^ ERROR cannot move a value of type [usize]
 }
diff --git a/src/test/compile-fail/issue-2590.rs b/src/test/compile-fail/issue-2590.rs
index 79a66e30fdb..07aea4fd633 100644
--- a/src/test/compile-fail/issue-2590.rs
+++ b/src/test/compile-fail/issue-2590.rs
@@ -19,7 +19,7 @@ trait parse {
 
 impl parse for parser {
     fn parse(&self) -> Vec<int> {
-        self.tokens //~ ERROR cannot move out of dereference of `&`-pointer
+        self.tokens //~ ERROR cannot move out of borrowed content
     }
 }
 
diff --git a/src/test/compile-fail/method-self-arg-2.rs b/src/test/compile-fail/method-self-arg-2.rs
index 0ac0851619c..ad255ecd9c0 100644
--- a/src/test/compile-fail/method-self-arg-2.rs
+++ b/src/test/compile-fail/method-self-arg-2.rs
@@ -23,5 +23,5 @@ fn main() {
     Foo::bar(&x); //~ERROR cannot borrow `x`
 
     let x = Foo;
-    Foo::baz(&x); //~ERROR cannot borrow immutable dereference of `&`-pointer as mutable
+    Foo::baz(&x); //~ERROR cannot borrow immutable borrowed content as mutable
 }
diff --git a/src/test/compile-fail/slice-mut-2.rs b/src/test/compile-fail/slice-mut-2.rs
index 12f184d410c..09357d328cd 100644
--- a/src/test/compile-fail/slice-mut-2.rs
+++ b/src/test/compile-fail/slice-mut-2.rs
@@ -14,5 +14,5 @@ fn main() {
     let x: &[int] = &[1, 2, 3, 4, 5];
     // Can't mutably slice an immutable slice
     let slice: &mut [int] = &mut [0, 1];
-    let _ = &mut x[2..4]; //~ERROR cannot borrow immutable dereference of `&`-pointer `*x` as mutabl
+    let _ = &mut x[2..4]; //~ERROR cannot borrow immutable borrowed content `*x` as mutable
 }
diff --git a/src/test/compile-fail/slice-mut.rs b/src/test/compile-fail/slice-mut.rs
index 9bd9a752e4e..f68554b9ec7 100644
--- a/src/test/compile-fail/slice-mut.rs
+++ b/src/test/compile-fail/slice-mut.rs
@@ -13,5 +13,5 @@
 fn main() {
     let x: &[int] = &[1, 2, 3, 4, 5];
     // Immutable slices are not mutable.
-    let y: &mut[_] = &x[2..4]; //~ ERROR cannot borrow immutable dereference of `&`-pointer as mutab
+    let y: &mut[_] = &x[2..4]; //~ ERROR cannot borrow immutable borrowed content as mutable
 }
diff --git a/src/test/compile-fail/std-uncopyable-atomics.rs b/src/test/compile-fail/std-uncopyable-atomics.rs
index 5ebabc2e354..81cf9c1bdcf 100644
--- a/src/test/compile-fail/std-uncopyable-atomics.rs
+++ b/src/test/compile-fail/std-uncopyable-atomics.rs
@@ -16,11 +16,11 @@ use std::ptr;
 
 fn main() {
     let x = ATOMIC_BOOL_INIT;
-    let x = *&x; //~ ERROR: cannot move out of dereference
+    let x = *&x; //~ ERROR: cannot move out of borrowed content
     let x = ATOMIC_INT_INIT;
-    let x = *&x; //~ ERROR: cannot move out of dereference
+    let x = *&x; //~ ERROR: cannot move out of borrowed content
     let x = ATOMIC_UINT_INIT;
-    let x = *&x; //~ ERROR: cannot move out of dereference
+    let x = *&x; //~ ERROR: cannot move out of borrowed content
     let x: AtomicPtr<uint> = AtomicPtr::new(ptr::null_mut());
-    let x = *&x; //~ ERROR: cannot move out of dereference
+    let x = *&x; //~ ERROR: cannot move out of borrowed content
 }
diff --git a/src/test/compile-fail/unop-move-semantics.rs b/src/test/compile-fail/unop-move-semantics.rs
index f8cbdb4e160..94656667598 100644
--- a/src/test/compile-fail/unop-move-semantics.rs
+++ b/src/test/compile-fail/unop-move-semantics.rs
@@ -31,9 +31,9 @@ fn illegal_dereference<T: Not<Output=T>>(mut x: T, y: T) {
     let m = &mut x;
     let n = &y;
 
-    !*m;  //~ ERROR: cannot move out of dereference of `&mut`-pointer
+    !*m;  //~ ERROR: cannot move out of borrowed content
 
-    !*n;  //~ ERROR: cannot move out of dereference of `&`-pointer
+    !*n;  //~ ERROR: cannot move out of borrowed content
 }
 
 fn main() {}