about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-08-11 13:14:28 -0700
committerGitHub <noreply@github.com>2016-08-11 13:14:28 -0700
commit8787a12334439d47e931be26fef53381ce337c3a (patch)
treefddfaef8f238490b3801ccb14222c31c01944e3f /src/test
parent11f880588791930cb130071c2cb972fc3c3354ed (diff)
parentd3af9a38eda71e6440423a1627f216acc0cc45f4 (diff)
Auto merge of #35592 - jonathandturner:rollup, r=jonathandturner
Rollup of 23 pull requests

- Successful merges: #35279, #35331, #35358, #35375, #35445, #35448, #35482, #35486, #35505, #35528, #35530, #35532, #35536, #35537, #35541, #35552, #35554, #35555, #35557, #35562, #35565, #35569, #35576
- Failed merges: #35395, #35415, #35563
Diffstat (limited to 'src/test')
-rw-r--r--src/test/compile-fail/E0007.rs6
-rw-r--r--src/test/compile-fail/E0008.rs4
-rw-r--r--src/test/compile-fail/E0017.rs7
-rw-r--r--src/test/compile-fail/E0038.rs5
-rw-r--r--src/test/compile-fail/E0045.rs3
-rw-r--r--src/test/compile-fail/E0072.rs1
-rw-r--r--src/test/compile-fail/E0081.rs6
-rw-r--r--src/test/compile-fail/E0091.rs2
-rw-r--r--src/test/compile-fail/E0092.rs2
-rw-r--r--src/test/compile-fail/E0128.rs1
-rw-r--r--src/test/compile-fail/E0130.rs4
-rw-r--r--src/test/compile-fail/E0133.rs4
-rw-r--r--src/test/compile-fail/E0263.rs6
-rw-r--r--src/test/compile-fail/asm-out-assign-imm.rs3
-rw-r--r--src/test/compile-fail/assign-imm-local-twice.rs3
-rw-r--r--src/test/compile-fail/associated-const-impl-wrong-type.rs4
-rw-r--r--src/test/compile-fail/derived-errors/issue-31997-1.rs1
-rw-r--r--src/test/compile-fail/issue-15524.rs21
-rw-r--r--src/test/compile-fail/issue-18183.rs1
-rw-r--r--src/test/compile-fail/issue-20692.rs2
-rw-r--r--src/test/compile-fail/issue-26056.rs3
-rw-r--r--src/test/compile-fail/issue-28776.rs4
-rw-r--r--src/test/compile-fail/issue-3008-2.rs1
-rw-r--r--src/test/compile-fail/issue-32326.rs1
-rw-r--r--src/test/compile-fail/issue-3779.rs1
-rw-r--r--src/test/compile-fail/liveness-assign-imm-local-in-loop.rs2
-rw-r--r--src/test/compile-fail/liveness-assign-imm-local-in-op-eq.rs3
-rw-r--r--src/test/compile-fail/liveness-assign-imm-local-with-init.rs3
-rw-r--r--src/test/compile-fail/no-patterns-in-args.rs7
-rw-r--r--src/test/compile-fail/object-safety-generics.rs4
-rw-r--r--src/test/compile-fail/object-safety-mentions-Self.rs2
-rw-r--r--src/test/compile-fail/object-safety-sized.rs1
-rw-r--r--src/test/compile-fail/object-safety-supertrait-mentions-Self.rs1
-rw-r--r--src/test/compile-fail/trait-safety-fn-body.rs4
-rw-r--r--src/test/compile-fail/type-recursive.rs1
-rw-r--r--src/test/compile-fail/unsafe-const-fn.rs4
-rw-r--r--src/test/run-pass/issue-29053.rs21
37 files changed, 114 insertions, 35 deletions
diff --git a/src/test/compile-fail/E0007.rs b/src/test/compile-fail/E0007.rs
index bfc0f1afe3a..4be115b8afd 100644
--- a/src/test/compile-fail/E0007.rs
+++ b/src/test/compile-fail/E0007.rs
@@ -11,8 +11,10 @@
 fn main() {
     let x = Some("s".to_string());
     match x {
-        op_string @ Some(s) => {}, //~ ERROR E0007
-                                   //~| ERROR E0303
+        op_string @ Some(s) => {},
+        //~^ ERROR E0007
+        //~| NOTE binds an already bound by-move value by moving it
+        //~| ERROR E0303
         None => {},
     }
 }
diff --git a/src/test/compile-fail/E0008.rs b/src/test/compile-fail/E0008.rs
index 97dd0f368bd..20cc1cbd223 100644
--- a/src/test/compile-fail/E0008.rs
+++ b/src/test/compile-fail/E0008.rs
@@ -10,7 +10,9 @@
 
 fn main() {
     match Some("hi".to_string()) {
-        Some(s) if s.len() == 0 => {}, //~ ERROR E0008
+        Some(s) if s.len() == 0 => {},
+        //~^ ERROR E0008
+        //~| NOTE moves value into pattern guard
         _ => {},
     }
 }
diff --git a/src/test/compile-fail/E0017.rs b/src/test/compile-fail/E0017.rs
index 13f2c23d8c4..1223a01cbcb 100644
--- a/src/test/compile-fail/E0017.rs
+++ b/src/test/compile-fail/E0017.rs
@@ -12,11 +12,16 @@ static X: i32 = 1;
 const C: i32 = 2;
 
 const CR: &'static mut i32 = &mut C; //~ ERROR E0017
+                                     //~| NOTE constants require immutable values
                                      //~| ERROR E0017
+                                     //~| NOTE constants require immutable values
 static STATIC_REF: &'static mut i32 = &mut X; //~ ERROR E0017
+                                              //~| NOTE statics require immutable values
                                               //~| ERROR E0017
+                                              //~| NOTE statics require immutable values
                                               //~| ERROR E0388
 static CONST_REF: &'static mut i32 = &mut C; //~ ERROR E0017
+                                             //~| NOTE statics require immutable values
                                              //~| ERROR E0017
-
+                                             //~| NOTE statics require immutable values
 fn main() {}
diff --git a/src/test/compile-fail/E0038.rs b/src/test/compile-fail/E0038.rs
index 26d2f339763..6cf3f1ebf19 100644
--- a/src/test/compile-fail/E0038.rs
+++ b/src/test/compile-fail/E0038.rs
@@ -12,7 +12,10 @@ trait Trait {
     fn foo(&self) -> Self;
 }
 
-fn call_foo(x: Box<Trait>) { //~ ERROR E0038
+fn call_foo(x: Box<Trait>) {
+    //~^ ERROR E0038
+    //~| NOTE the trait `Trait` cannot be made into an object
+    //~| NOTE method `foo` references the `Self` type in its arguments or return type
     let y = x.foo();
 }
 
diff --git a/src/test/compile-fail/E0045.rs b/src/test/compile-fail/E0045.rs
index 2a731596b4b..a3fea8e0db2 100644
--- a/src/test/compile-fail/E0045.rs
+++ b/src/test/compile-fail/E0045.rs
@@ -8,7 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-extern "Rust" { fn foo(x: u8, ...); } //~ ERROR E0045
+extern "Rust" { fn foo(x: u8, ...); }   //~ ERROR E0045
+                                        //~| NOTE variadics require C calling conventions
 
 fn main() {
 }
diff --git a/src/test/compile-fail/E0072.rs b/src/test/compile-fail/E0072.rs
index 2f96ba1046d..e6de7921b30 100644
--- a/src/test/compile-fail/E0072.rs
+++ b/src/test/compile-fail/E0072.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 struct ListNode { //~ ERROR E0072
+                  //~| NOTE recursive type has infinite size
     head: u8,
     tail: Option<ListNode>,
 }
diff --git a/src/test/compile-fail/E0081.rs b/src/test/compile-fail/E0081.rs
index b63265564b3..9911e093a89 100644
--- a/src/test/compile-fail/E0081.rs
+++ b/src/test/compile-fail/E0081.rs
@@ -9,8 +9,10 @@
 // except according to those terms.
 
 enum Enum {
-    P = 3,
-    X = 3, //~ ERROR E0081
+    P = 3, //~ NOTE first use of `3isize`
+    X = 3,
+    //~^ ERROR discriminant value `3isize` already exists
+    //~| NOTE enum already has `3isize`
     Y = 5
 }
 
diff --git a/src/test/compile-fail/E0091.rs b/src/test/compile-fail/E0091.rs
index da988dbf819..0d6c246de2a 100644
--- a/src/test/compile-fail/E0091.rs
+++ b/src/test/compile-fail/E0091.rs
@@ -9,7 +9,9 @@
 // except according to those terms.
 
 type Foo<T> = u32; //~ ERROR E0091
+                   //~| NOTE unused type parameter
 type Foo2<A, B> = Box<A>; //~ ERROR E0091
+                          //~| NOTE unused type parameter
 
 fn main() {
 }
diff --git a/src/test/compile-fail/E0092.rs b/src/test/compile-fail/E0092.rs
index b08164ac06d..c8bb31a7857 100644
--- a/src/test/compile-fail/E0092.rs
+++ b/src/test/compile-fail/E0092.rs
@@ -11,7 +11,7 @@
 #![feature(intrinsics)]
 extern "rust-intrinsic" {
     fn atomic_foo(); //~ ERROR E0092
-}
+}                    //~| NOTE unrecognized atomic operation
 
 fn main() {
 }
diff --git a/src/test/compile-fail/E0128.rs b/src/test/compile-fail/E0128.rs
index 37071012825..f5829b93859 100644
--- a/src/test/compile-fail/E0128.rs
+++ b/src/test/compile-fail/E0128.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 struct Foo<T=U, U=()> { //~ ERROR E0128
+                        //~| NOTE defaulted type parameters cannot be forward declared
     field1: T,
     field2: U,
 }
diff --git a/src/test/compile-fail/E0130.rs b/src/test/compile-fail/E0130.rs
index ef5961e1338..e9e027fd1dc 100644
--- a/src/test/compile-fail/E0130.rs
+++ b/src/test/compile-fail/E0130.rs
@@ -9,7 +9,9 @@
 // except according to those terms.
 
 extern {
-    fn foo((a, b): (u32, u32)); //~ ERROR E0130
+    fn foo((a, b): (u32, u32));
+    //~^ ERROR E0130
+    //~| NOTE pattern not allowed in foreign function
 }
 
 fn main() {
diff --git a/src/test/compile-fail/E0133.rs b/src/test/compile-fail/E0133.rs
index 630ee851d0a..b8a4476fc59 100644
--- a/src/test/compile-fail/E0133.rs
+++ b/src/test/compile-fail/E0133.rs
@@ -11,5 +11,7 @@
 unsafe fn f() { return; }
 
 fn main() {
-    f(); //~ ERROR E0133
+    f();
+    //~^ ERROR E0133
+    //~| NOTE unsafe call requires unsafe function or block
 }
diff --git a/src/test/compile-fail/E0263.rs b/src/test/compile-fail/E0263.rs
index 09f654c368c..11a8ff443a8 100644
--- a/src/test/compile-fail/E0263.rs
+++ b/src/test/compile-fail/E0263.rs
@@ -8,6 +8,10 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn foo<'a, 'b, 'a>(x: &'a str, y: &'b str) { } //~ ERROR E0263
+fn foo<'a, 'b, 'a>(x: &'a str, y: &'b str) {
+    //~^ ERROR E0263
+    //~| NOTE declared twice
+    //~| NOTE previous declaration here
+}
 
 fn main() {}
diff --git a/src/test/compile-fail/asm-out-assign-imm.rs b/src/test/compile-fail/asm-out-assign-imm.rs
index c1c72a5519b..0541faa0213 100644
--- a/src/test/compile-fail/asm-out-assign-imm.rs
+++ b/src/test/compile-fail/asm-out-assign-imm.rs
@@ -18,11 +18,12 @@ fn foo(x: isize) { println!("{}", x); }
           target_arch = "aarch64"))]
 pub fn main() {
     let x: isize;
-    x = 1; //~ NOTE prior assignment occurs here
+    x = 1; //~ NOTE first assignment
     foo(x);
     unsafe {
         asm!("mov $1, $0" : "=r"(x) : "r"(5));
         //~^ ERROR re-assignment of immutable variable `x`
+        //~| NOTE re-assignment of immutable
         //~| NOTE in this expansion of asm!
     }
     foo(x);
diff --git a/src/test/compile-fail/assign-imm-local-twice.rs b/src/test/compile-fail/assign-imm-local-twice.rs
index 540272a8e2c..9a5d6289b58 100644
--- a/src/test/compile-fail/assign-imm-local-twice.rs
+++ b/src/test/compile-fail/assign-imm-local-twice.rs
@@ -10,9 +10,10 @@
 
 fn test() {
     let v: isize;
-    v = 1; //~ NOTE prior assignment occurs here
+    v = 1; //~ NOTE first assignment
     println!("v={}", v);
     v = 2; //~ ERROR re-assignment of immutable variable
+           //~| NOTE re-assignment of immutable
     println!("v={}", v);
 }
 
diff --git a/src/test/compile-fail/associated-const-impl-wrong-type.rs b/src/test/compile-fail/associated-const-impl-wrong-type.rs
index 95508a31044..b3776091682 100644
--- a/src/test/compile-fail/associated-const-impl-wrong-type.rs
+++ b/src/test/compile-fail/associated-const-impl-wrong-type.rs
@@ -11,7 +11,7 @@
 #![feature(associated_consts)]
 
 trait Foo {
-    const BAR: u32;
+    const BAR: u32; //~ NOTE original trait requirement
 }
 
 struct SignedBar;
@@ -19,7 +19,7 @@ struct SignedBar;
 impl Foo for SignedBar {
     const BAR: i32 = -1;
     //~^ ERROR implemented const `BAR` has an incompatible type for trait [E0326]
-    //~| expected u32, found i32
+    //~| NOTE expected u32, found i32
 }
 
 fn main() {}
diff --git a/src/test/compile-fail/derived-errors/issue-31997-1.rs b/src/test/compile-fail/derived-errors/issue-31997-1.rs
index 7d79c48c06a..6a9d8db9654 100644
--- a/src/test/compile-fail/derived-errors/issue-31997-1.rs
+++ b/src/test/compile-fail/derived-errors/issue-31997-1.rs
@@ -29,6 +29,7 @@ fn main() {
 
     let mut map = HashMap::new();
     //~^ ERROR E0433
+    //~| NOTE Use of undeclared type or module `HashMap`
 
     for line in input.lines() {
         let line = line.unwrap();
diff --git a/src/test/compile-fail/issue-15524.rs b/src/test/compile-fail/issue-15524.rs
index 3d6f224c249..658a0c1546b 100644
--- a/src/test/compile-fail/issue-15524.rs
+++ b/src/test/compile-fail/issue-15524.rs
@@ -12,17 +12,20 @@ const N: isize = 1;
 
 enum Foo {
     A = 1,
-    //~^ NOTE first use
-    //~| NOTE first use
-    //~| NOTE first use
-    B = 1, //~ ERROR discriminant value
-    //~^ NOTE enum already
+    //~^ NOTE first use of `1isize`
+    //~| NOTE first use of `1isize`
+    //~| NOTE first use of `1isize`
+    B = 1,
+    //~^ ERROR discriminant value `1isize` already exists
+    //~| NOTE enum already has `1isize`
     C = 0,
-    D, //~ ERROR discriminant value
-    //~^ NOTE enum already
+    D,
+    //~^ ERROR discriminant value `1isize` already exists
+    //~| NOTE enum already has `1isize`
 
-    E = N, //~ ERROR discriminant value
-    //~^ NOTE enum already
+    E = N,
+    //~^ ERROR discriminant value `1isize` already exists
+    //~| NOTE enum already has `1isize`
 
 }
 
diff --git a/src/test/compile-fail/issue-18183.rs b/src/test/compile-fail/issue-18183.rs
index e6f3a2bdd33..b3fc3aea148 100644
--- a/src/test/compile-fail/issue-18183.rs
+++ b/src/test/compile-fail/issue-18183.rs
@@ -9,5 +9,6 @@
 // except according to those terms.
 
 pub struct Foo<Bar=Bar>; //~ ERROR E0128
+                         //~| NOTE defaulted type parameters cannot be forward declared
 pub struct Baz(Foo);
 fn main() {}
diff --git a/src/test/compile-fail/issue-20692.rs b/src/test/compile-fail/issue-20692.rs
index 1c9e588cb2c..3e440538755 100644
--- a/src/test/compile-fail/issue-20692.rs
+++ b/src/test/compile-fail/issue-20692.rs
@@ -15,10 +15,12 @@ fn f<T: Array>(x: &T) {
     //~^ ERROR `Array` cannot be made into an object
     //~| NOTE the trait cannot require that `Self : Sized`
     //~| NOTE requirements on the impl of `std::ops::CoerceUnsized<&Array>`
+    //~| NOTE the trait `Array` cannot be made into an object
     as
     &Array;
     //~^ ERROR `Array` cannot be made into an object
     //~| NOTE the trait cannot require that `Self : Sized`
+    //~| NOTE the trait `Array` cannot be made into an object
 }
 
 fn main() {}
diff --git a/src/test/compile-fail/issue-26056.rs b/src/test/compile-fail/issue-26056.rs
index 4e9cbc4f283..ded685152d4 100644
--- a/src/test/compile-fail/issue-26056.rs
+++ b/src/test/compile-fail/issue-26056.rs
@@ -28,6 +28,7 @@ impl<K> Map for K {
 fn main() {
     let _ = &()
         as &Map<Key=u32,MapValue=u32>;
-    //~^ ERROR the trait `Map` cannot be made into an object
+    //~^ ERROR E0038
     //~| NOTE the trait cannot use `Self` as a type parameter
+    //~| NOTE the trait `Map` cannot be made into an object
 }
diff --git a/src/test/compile-fail/issue-28776.rs b/src/test/compile-fail/issue-28776.rs
index ce06c8bf220..52b0eba96cb 100644
--- a/src/test/compile-fail/issue-28776.rs
+++ b/src/test/compile-fail/issue-28776.rs
@@ -11,5 +11,7 @@
 use std::ptr;
 
 fn main() {
-    (&ptr::write)(1 as *mut _, 42); //~ ERROR E0133
+    (&ptr::write)(1 as *mut _, 42);
+    //~^ ERROR E0133
+    //~| NOTE unsafe call requires unsafe function or block
 }
diff --git a/src/test/compile-fail/issue-3008-2.rs b/src/test/compile-fail/issue-3008-2.rs
index e6cc29634a1..38b5fcbb3db 100644
--- a/src/test/compile-fail/issue-3008-2.rs
+++ b/src/test/compile-fail/issue-3008-2.rs
@@ -13,6 +13,7 @@
 enum foo { foo_(bar) }
 struct bar { x: bar }
 //~^ ERROR E0072
+//~| NOTE recursive type has infinite size
 
 fn main() {
 }
diff --git a/src/test/compile-fail/issue-32326.rs b/src/test/compile-fail/issue-32326.rs
index 8af243afc22..afffe2a2c8d 100644
--- a/src/test/compile-fail/issue-32326.rs
+++ b/src/test/compile-fail/issue-32326.rs
@@ -13,6 +13,7 @@
 // too big.
 
 enum Expr { //~ ERROR E0072
+            //~| NOTE recursive type has infinite size
     Plus(Expr, Expr),
     Literal(i64),
 }
diff --git a/src/test/compile-fail/issue-3779.rs b/src/test/compile-fail/issue-3779.rs
index d96b1a1cbe3..71e9325ab75 100644
--- a/src/test/compile-fail/issue-3779.rs
+++ b/src/test/compile-fail/issue-3779.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 struct S { //~ ERROR E0072
+           //~| NOTE recursive type has infinite size
     element: Option<S>
 }
 
diff --git a/src/test/compile-fail/liveness-assign-imm-local-in-loop.rs b/src/test/compile-fail/liveness-assign-imm-local-in-loop.rs
index f50a9345106..9d246f8ea5e 100644
--- a/src/test/compile-fail/liveness-assign-imm-local-in-loop.rs
+++ b/src/test/compile-fail/liveness-assign-imm-local-in-loop.rs
@@ -12,7 +12,7 @@ fn test() {
     let v: isize;
     loop {
         v = 1; //~ ERROR re-assignment of immutable variable
-        //~^ NOTE prior assignment occurs here
+        //~^ NOTE re-assignment of immutable variable
         v.clone(); // just to prevent liveness warnings
     }
 }
diff --git a/src/test/compile-fail/liveness-assign-imm-local-in-op-eq.rs b/src/test/compile-fail/liveness-assign-imm-local-in-op-eq.rs
index df57bb9e441..e1eb3246137 100644
--- a/src/test/compile-fail/liveness-assign-imm-local-in-op-eq.rs
+++ b/src/test/compile-fail/liveness-assign-imm-local-in-op-eq.rs
@@ -10,8 +10,9 @@
 
 fn test() {
     let v: isize;
-    v = 2;  //~ NOTE prior assignment occurs here
+    v = 2;  //~ NOTE first assignment
     v += 1; //~ ERROR re-assignment of immutable variable
+            //~| NOTE re-assignment of immutable
     v.clone();
 }
 
diff --git a/src/test/compile-fail/liveness-assign-imm-local-with-init.rs b/src/test/compile-fail/liveness-assign-imm-local-with-init.rs
index 28218bff60d..2468c91f34b 100644
--- a/src/test/compile-fail/liveness-assign-imm-local-with-init.rs
+++ b/src/test/compile-fail/liveness-assign-imm-local-with-init.rs
@@ -9,9 +9,10 @@
 // except according to those terms.
 
 fn test() {
-    let v: isize = 1; //~ NOTE prior assignment occurs here
+    let v: isize = 1; //~ NOTE first assignment
     v.clone();
     v = 2; //~ ERROR re-assignment of immutable variable
+           //~| NOTE re-assignment of immutable
     v.clone();
 }
 
diff --git a/src/test/compile-fail/no-patterns-in-args.rs b/src/test/compile-fail/no-patterns-in-args.rs
index 3edbdf4ebc9..b0278476998 100644
--- a/src/test/compile-fail/no-patterns-in-args.rs
+++ b/src/test/compile-fail/no-patterns-in-args.rs
@@ -10,10 +10,13 @@
 
 extern {
     fn f1(mut arg: u8); //~ ERROR patterns aren't allowed in foreign function declarations
-                        //~^ NOTE this is a recent error
+                        //~^ NOTE pattern not allowed in foreign function
+                        //~| NOTE this is a recent error
     fn f2(&arg: u8); //~ ERROR patterns aren't allowed in foreign function declarations
+                     //~^ NOTE pattern not allowed in foreign function
     fn f3(arg @ _: u8); //~ ERROR patterns aren't allowed in foreign function declarations
-                        //~^ NOTE this is a recent error
+                        //~^ NOTE pattern not allowed in foreign function
+                        //~| NOTE this is a recent error
     fn g1(arg: u8); // OK
     fn g2(_: u8); // OK
     // fn g3(u8); // Not yet
diff --git a/src/test/compile-fail/object-safety-generics.rs b/src/test/compile-fail/object-safety-generics.rs
index 5097e3d7b10..6174d45b898 100644
--- a/src/test/compile-fail/object-safety-generics.rs
+++ b/src/test/compile-fail/object-safety-generics.rs
@@ -24,12 +24,14 @@ trait Quux {
 fn make_bar<T:Bar>(t: &T) -> &Bar {
         //~^ ERROR E0038
         //~| NOTE method `bar` has generic type parameters
+        //~| NOTE the trait `Bar` cannot be made into an object
     t
 }
 
 fn make_bar_explicit<T:Bar>(t: &T) -> &Bar {
     //~^ ERROR E0038
-    //~^^ NOTE method `bar` has generic type parameters
+    //~| NOTE method `bar` has generic type parameters
+    //~| NOTE the trait `Bar` cannot be made into an object
     t as &Bar
 }
 
diff --git a/src/test/compile-fail/object-safety-mentions-Self.rs b/src/test/compile-fail/object-safety-mentions-Self.rs
index edd31c1f796..d85614fa5b5 100644
--- a/src/test/compile-fail/object-safety-mentions-Self.rs
+++ b/src/test/compile-fail/object-safety-mentions-Self.rs
@@ -27,12 +27,14 @@ trait Quux {
 fn make_bar<T:Bar>(t: &T) -> &Bar {
         //~^ ERROR E0038
         //~| NOTE method `bar` references the `Self` type in its arguments or return type
+        //~| NOTE the trait `Bar` cannot be made into an object
     loop { }
 }
 
 fn make_baz<T:Baz>(t: &T) -> &Baz {
         //~^ ERROR E0038
         //~| NOTE method `bar` references the `Self` type in its arguments or return type
+        //~| NOTE the trait `Baz` cannot be made into an object
     t
 }
 
diff --git a/src/test/compile-fail/object-safety-sized.rs b/src/test/compile-fail/object-safety-sized.rs
index 501d61d20fe..accd7fa87ac 100644
--- a/src/test/compile-fail/object-safety-sized.rs
+++ b/src/test/compile-fail/object-safety-sized.rs
@@ -18,6 +18,7 @@ trait Bar : Sized {
 fn make_bar<T:Bar>(t: &T) -> &Bar {
         //~^ ERROR E0038
         //~| NOTE the trait cannot require that `Self : Sized`
+        //~| NOTE the trait `Bar` cannot be made into an object
     t
 }
 
diff --git a/src/test/compile-fail/object-safety-supertrait-mentions-Self.rs b/src/test/compile-fail/object-safety-supertrait-mentions-Self.rs
index 0a79ec30e4b..74d1ad62f14 100644
--- a/src/test/compile-fail/object-safety-supertrait-mentions-Self.rs
+++ b/src/test/compile-fail/object-safety-supertrait-mentions-Self.rs
@@ -25,6 +25,7 @@ fn make_bar<T:Bar<u32>>(t: &T) -> &Bar<u32> {
 fn make_baz<T:Baz>(t: &T) -> &Baz {
     //~^ ERROR E0038
     //~| NOTE the trait cannot use `Self` as a type parameter in the supertrait listing
+    //~| NOTE the trait `Baz` cannot be made into an object
     t
 }
 
diff --git a/src/test/compile-fail/trait-safety-fn-body.rs b/src/test/compile-fail/trait-safety-fn-body.rs
index 499b58f70d7..0df7ee8cabe 100644
--- a/src/test/compile-fail/trait-safety-fn-body.rs
+++ b/src/test/compile-fail/trait-safety-fn-body.rs
@@ -18,7 +18,9 @@ unsafe trait UnsafeTrait : Sized {
 unsafe impl UnsafeTrait for *mut isize {
     fn foo(self) {
         // Unsafe actions are not made legal by taking place in an unsafe trait:
-        *self += 1; //~ ERROR E0133
+        *self += 1;
+        //~^ ERROR E0133
+        //~| NOTE unsafe call requires unsafe function or block
     }
 }
 
diff --git a/src/test/compile-fail/type-recursive.rs b/src/test/compile-fail/type-recursive.rs
index 4bb739800df..7b56c6c15eb 100644
--- a/src/test/compile-fail/type-recursive.rs
+++ b/src/test/compile-fail/type-recursive.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 struct t1 { //~ ERROR E0072
+            //~| NOTE recursive type has infinite size
     foo: isize,
     foolish: t1
 }
diff --git a/src/test/compile-fail/unsafe-const-fn.rs b/src/test/compile-fail/unsafe-const-fn.rs
index 24ac41ce884..174939b0900 100644
--- a/src/test/compile-fail/unsafe-const-fn.rs
+++ b/src/test/compile-fail/unsafe-const-fn.rs
@@ -16,7 +16,9 @@ const unsafe fn dummy(v: u32) -> u32 {
     !v
 }
 
-const VAL: u32 = dummy(0xFFFF); //~ ERROR E0133
+const VAL: u32 = dummy(0xFFFF);
+//~^ ERROR E0133
+//~| NOTE unsafe call requires unsafe function or block
 
 fn main() {
     assert_eq!(VAL, 0xFFFF0000);
diff --git a/src/test/run-pass/issue-29053.rs b/src/test/run-pass/issue-29053.rs
new file mode 100644
index 00000000000..72655071e41
--- /dev/null
+++ b/src/test/run-pass/issue-29053.rs
@@ -0,0 +1,21 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+fn main() {
+    let x: &'static str = "x";
+
+    {
+        let y = "y".to_string();
+        let ref mut x = &*x;
+        *x = &*y;
+    }
+
+    assert_eq!(x, "x");
+}