about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBastian Kauschke <bastian_kauschke@hotmail.de>2020-05-30 19:42:22 +0200
committerBastian Kauschke <bastian_kauschke@hotmail.de>2020-06-19 10:55:38 +0200
commit0b5007e4b7c4ee9a3d0356e54f91ef3def094a0a (patch)
tree44f17d41097bc8a7296c80e3294e53f33c2d6a8a
parenta39c7787ba246353178e099373b9240be0d9e603 (diff)
downloadrust-0b5007e4b7c4ee9a3d0356e54f91ef3def094a0a.tar.gz
rust-0b5007e4b7c4ee9a3d0356e54f91ef3def094a0a.zip
merge coercion test folders
-rw-r--r--src/test/ui/coerce/coerce-overloaded-autoderef.rs68
-rw-r--r--src/test/ui/coercion/coerce-expect-unsized.rs (renamed from src/test/ui/coerce/coerce-expect-unsized.rs)0
-rw-r--r--src/test/ui/coercion/coerce-overloaded-autoderef-fail.rs32
-rw-r--r--src/test/ui/coercion/coerce-overloaded-autoderef-fail.stderr (renamed from src/test/ui/coercion/coerce-overloaded-autoderef.stderr)8
-rw-r--r--src/test/ui/coercion/coerce-overloaded-autoderef.rs78
-rw-r--r--src/test/ui/coercion/coerce-reborrow-imm-ptr-arg.rs (renamed from src/test/ui/coerce/coerce-reborrow-imm-ptr-arg.rs)0
-rw-r--r--src/test/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs (renamed from src/test/ui/coerce/coerce-reborrow-imm-ptr-rcvr.rs)0
-rw-r--r--src/test/ui/coercion/coerce-reborrow-imm-vec-arg.rs (renamed from src/test/ui/coerce/coerce-reborrow-imm-vec-arg.rs)0
-rw-r--r--src/test/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs (renamed from src/test/ui/coerce/coerce-reborrow-imm-vec-rcvr.rs)0
-rw-r--r--src/test/ui/coercion/coerce-reborrow-mut-ptr-arg.rs (renamed from src/test/ui/coerce/coerce-reborrow-mut-ptr-arg.rs)0
-rw-r--r--src/test/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs (renamed from src/test/ui/coerce/coerce-reborrow-mut-ptr-rcvr.rs)0
-rw-r--r--src/test/ui/coercion/coerce-reborrow-mut-vec-arg.rs (renamed from src/test/ui/coerce/coerce-reborrow-mut-vec-arg.rs)0
-rw-r--r--src/test/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs (renamed from src/test/ui/coerce/coerce-reborrow-mut-vec-rcvr.rs)0
-rw-r--r--src/test/ui/coercion/coerce-to-bang-cast.rs2
-rw-r--r--src/test/ui/coercion/coerce-to-bang-cast.stderr4
-rw-r--r--src/test/ui/coercion/coerce-unify-return.rs (renamed from src/test/ui/coerce/coerce-unify-return.rs)0
-rw-r--r--src/test/ui/coercion/coerce-unify.rs (renamed from src/test/ui/coerce/coerce-unify.rs)0
-rw-r--r--src/test/ui/coercion/coerce-unsize-subtype.rs (renamed from src/test/ui/coerce/coerce-unsize-subtype.rs)0
18 files changed, 95 insertions, 97 deletions
diff --git a/src/test/ui/coerce/coerce-overloaded-autoderef.rs b/src/test/ui/coerce/coerce-overloaded-autoderef.rs
deleted file mode 100644
index d5484607c8b..00000000000
--- a/src/test/ui/coerce/coerce-overloaded-autoderef.rs
+++ /dev/null
@@ -1,68 +0,0 @@
-// run-pass
-#![allow(unused_braces)]
-#![allow(dead_code)]
-// pretty-expanded FIXME #23616
-
-use std::rc::Rc;
-
-// Examples from the "deref coercions" RFC, at rust-lang/rfcs#241.
-
-fn use_ref<T>(_: &T) {}
-fn use_mut<T>(_: &mut T) {}
-
-fn use_rc<T>(t: Rc<T>) {
-    use_ref(&*t);  // what you have to write today
-    use_ref(&t);   // what you'd be able to write
-    use_ref(&&&&&&t);
-    use_ref(&mut &&&&&t);
-    use_ref(&&&mut &&&t);
-}
-
-fn use_mut_box<T>(mut t: &mut Box<T>) {
-    use_mut(&mut *t); // what you have to write today
-    use_mut(t);       // what you'd be able to write
-    use_mut(&mut &mut &mut t);
-
-    use_ref(&*t);      // what you have to write today
-    use_ref(t);        // what you'd be able to write
-    use_ref(&&&&&&t);
-    use_ref(&mut &&&&&t);
-    use_ref(&&&mut &&&t);
-}
-
-fn use_nested<T>(t: &Box<T>) {
-    use_ref(&**t);  // what you have to write today
-    use_ref(t);     // what you'd be able to write (note: recursive deref)
-    use_ref(&&&&&&t);
-    use_ref(&mut &&&&&t);
-    use_ref(&&&mut &&&t);
-}
-
-fn use_slice(_: &[u8]) {}
-fn use_slice_mut(_: &mut [u8]) {}
-
-fn use_vec(mut v: Vec<u8>) {
-    use_slice_mut(&mut v[..]); // what you have to write today
-    use_slice_mut(&mut v);     // what you'd be able to write
-    use_slice_mut(&mut &mut &mut v);
-
-    use_slice(&v[..]);  // what you have to write today
-    use_slice(&v);      // what you'd be able to write
-    use_slice(&&&&&&v);
-    use_slice(&mut &&&&&v);
-    use_slice(&&&mut &&&v);
-}
-
-fn use_vec_ref(v: &Vec<u8>) {
-    use_slice(&v[..]);  // what you have to write today
-    use_slice(v);       // what you'd be able to write
-    use_slice(&&&&&&v);
-    use_slice(&mut &&&&&v);
-    use_slice(&&&mut &&&v);
-}
-
-fn use_op_rhs(s: &mut String) {
-    *s += {&String::from(" ")};
-}
-
-pub fn main() {}
diff --git a/src/test/ui/coerce/coerce-expect-unsized.rs b/src/test/ui/coercion/coerce-expect-unsized.rs
index d486fdf73ab..d486fdf73ab 100644
--- a/src/test/ui/coerce/coerce-expect-unsized.rs
+++ b/src/test/ui/coercion/coerce-expect-unsized.rs
diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef-fail.rs b/src/test/ui/coercion/coerce-overloaded-autoderef-fail.rs
new file mode 100644
index 00000000000..01d9c1e486a
--- /dev/null
+++ b/src/test/ui/coercion/coerce-overloaded-autoderef-fail.rs
@@ -0,0 +1,32 @@
+fn borrow_mut<T>(x: &mut T) -> &mut T { x }
+fn borrow<T>(x: &T) -> &T { x }
+
+fn borrow_mut2<T>(_: &mut T, _: &mut T) {}
+fn borrow2<T>(_: &mut T, _: &T) {}
+
+fn double_mut_borrow<T>(x: &mut Box<T>) {
+    let y = borrow_mut(x);
+    let z = borrow_mut(x);
+    //~^ ERROR cannot borrow `*x` as mutable more than once at a time
+    drop((y, z));
+}
+
+fn double_imm_borrow(x: &mut Box<i32>) {
+    let y = borrow(x);
+    let z = borrow(x);
+    **x += 1;
+    //~^ ERROR cannot assign to `**x` because it is borrowed
+    drop((y, z));
+}
+
+fn double_mut_borrow2<T>(x: &mut Box<T>) {
+    borrow_mut2(x, x);
+    //~^ ERROR cannot borrow `*x` as mutable more than once at a time
+}
+
+fn double_borrow2<T>(x: &mut Box<T>) {
+    borrow2(x, x);
+    //~^ ERROR cannot borrow `*x` as mutable because it is also borrowed as immutable
+}
+
+pub fn main() {}
diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef.stderr b/src/test/ui/coercion/coerce-overloaded-autoderef-fail.stderr
index 7cdfcb5f4fc..d067c3b3a18 100644
--- a/src/test/ui/coercion/coerce-overloaded-autoderef.stderr
+++ b/src/test/ui/coercion/coerce-overloaded-autoderef-fail.stderr
@@ -1,5 +1,5 @@
 error[E0499]: cannot borrow `*x` as mutable more than once at a time
-  --> $DIR/coerce-overloaded-autoderef.rs:9:24
+  --> $DIR/coerce-overloaded-autoderef-fail.rs:9:24
    |
 LL |     let y = borrow_mut(x);
    |                        - first mutable borrow occurs here
@@ -10,7 +10,7 @@ LL |     drop((y, z));
    |           - first borrow later used here
 
 error[E0506]: cannot assign to `**x` because it is borrowed
-  --> $DIR/coerce-overloaded-autoderef.rs:17:5
+  --> $DIR/coerce-overloaded-autoderef-fail.rs:17:5
    |
 LL |     let y = borrow(x);
    |                    - borrow of `**x` occurs here
@@ -22,7 +22,7 @@ LL |     drop((y, z));
    |           - borrow later used here
 
 error[E0499]: cannot borrow `*x` as mutable more than once at a time
-  --> $DIR/coerce-overloaded-autoderef.rs:23:20
+  --> $DIR/coerce-overloaded-autoderef-fail.rs:23:20
    |
 LL |     borrow_mut2(x, x);
    |     ----------- -  ^ second mutable borrow occurs here
@@ -31,7 +31,7 @@ LL |     borrow_mut2(x, x);
    |     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:28:5
+  --> $DIR/coerce-overloaded-autoderef-fail.rs:28:5
    |
 LL |     borrow2(x, x);
    |     -------^^^^-^
diff --git a/src/test/ui/coercion/coerce-overloaded-autoderef.rs b/src/test/ui/coercion/coerce-overloaded-autoderef.rs
index 01d9c1e486a..d5484607c8b 100644
--- a/src/test/ui/coercion/coerce-overloaded-autoderef.rs
+++ b/src/test/ui/coercion/coerce-overloaded-autoderef.rs
@@ -1,32 +1,68 @@
-fn borrow_mut<T>(x: &mut T) -> &mut T { x }
-fn borrow<T>(x: &T) -> &T { x }
+// run-pass
+#![allow(unused_braces)]
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
 
-fn borrow_mut2<T>(_: &mut T, _: &mut T) {}
-fn borrow2<T>(_: &mut T, _: &T) {}
+use std::rc::Rc;
 
-fn double_mut_borrow<T>(x: &mut Box<T>) {
-    let y = borrow_mut(x);
-    let z = borrow_mut(x);
-    //~^ ERROR cannot borrow `*x` as mutable more than once at a time
-    drop((y, z));
+// Examples from the "deref coercions" RFC, at rust-lang/rfcs#241.
+
+fn use_ref<T>(_: &T) {}
+fn use_mut<T>(_: &mut T) {}
+
+fn use_rc<T>(t: Rc<T>) {
+    use_ref(&*t);  // what you have to write today
+    use_ref(&t);   // what you'd be able to write
+    use_ref(&&&&&&t);
+    use_ref(&mut &&&&&t);
+    use_ref(&&&mut &&&t);
+}
+
+fn use_mut_box<T>(mut t: &mut Box<T>) {
+    use_mut(&mut *t); // what you have to write today
+    use_mut(t);       // what you'd be able to write
+    use_mut(&mut &mut &mut t);
+
+    use_ref(&*t);      // what you have to write today
+    use_ref(t);        // what you'd be able to write
+    use_ref(&&&&&&t);
+    use_ref(&mut &&&&&t);
+    use_ref(&&&mut &&&t);
 }
 
-fn double_imm_borrow(x: &mut Box<i32>) {
-    let y = borrow(x);
-    let z = borrow(x);
-    **x += 1;
-    //~^ ERROR cannot assign to `**x` because it is borrowed
-    drop((y, z));
+fn use_nested<T>(t: &Box<T>) {
+    use_ref(&**t);  // what you have to write today
+    use_ref(t);     // what you'd be able to write (note: recursive deref)
+    use_ref(&&&&&&t);
+    use_ref(&mut &&&&&t);
+    use_ref(&&&mut &&&t);
+}
+
+fn use_slice(_: &[u8]) {}
+fn use_slice_mut(_: &mut [u8]) {}
+
+fn use_vec(mut v: Vec<u8>) {
+    use_slice_mut(&mut v[..]); // what you have to write today
+    use_slice_mut(&mut v);     // what you'd be able to write
+    use_slice_mut(&mut &mut &mut v);
+
+    use_slice(&v[..]);  // what you have to write today
+    use_slice(&v);      // what you'd be able to write
+    use_slice(&&&&&&v);
+    use_slice(&mut &&&&&v);
+    use_slice(&&&mut &&&v);
 }
 
-fn double_mut_borrow2<T>(x: &mut Box<T>) {
-    borrow_mut2(x, x);
-    //~^ ERROR cannot borrow `*x` as mutable more than once at a time
+fn use_vec_ref(v: &Vec<u8>) {
+    use_slice(&v[..]);  // what you have to write today
+    use_slice(v);       // what you'd be able to write
+    use_slice(&&&&&&v);
+    use_slice(&mut &&&&&v);
+    use_slice(&&&mut &&&v);
 }
 
-fn double_borrow2<T>(x: &mut Box<T>) {
-    borrow2(x, x);
-    //~^ ERROR cannot borrow `*x` as mutable because it is also borrowed as immutable
+fn use_op_rhs(s: &mut String) {
+    *s += {&String::from(" ")};
 }
 
 pub fn main() {}
diff --git a/src/test/ui/coerce/coerce-reborrow-imm-ptr-arg.rs b/src/test/ui/coercion/coerce-reborrow-imm-ptr-arg.rs
index f033e1b5d2b..f033e1b5d2b 100644
--- a/src/test/ui/coerce/coerce-reborrow-imm-ptr-arg.rs
+++ b/src/test/ui/coercion/coerce-reborrow-imm-ptr-arg.rs
diff --git a/src/test/ui/coerce/coerce-reborrow-imm-ptr-rcvr.rs b/src/test/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs
index 64a365229cb..64a365229cb 100644
--- a/src/test/ui/coerce/coerce-reborrow-imm-ptr-rcvr.rs
+++ b/src/test/ui/coercion/coerce-reborrow-imm-ptr-rcvr.rs
diff --git a/src/test/ui/coerce/coerce-reborrow-imm-vec-arg.rs b/src/test/ui/coercion/coerce-reborrow-imm-vec-arg.rs
index c2aaae1c73e..c2aaae1c73e 100644
--- a/src/test/ui/coerce/coerce-reborrow-imm-vec-arg.rs
+++ b/src/test/ui/coercion/coerce-reborrow-imm-vec-arg.rs
diff --git a/src/test/ui/coerce/coerce-reborrow-imm-vec-rcvr.rs b/src/test/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs
index 9a5652acf87..9a5652acf87 100644
--- a/src/test/ui/coerce/coerce-reborrow-imm-vec-rcvr.rs
+++ b/src/test/ui/coercion/coerce-reborrow-imm-vec-rcvr.rs
diff --git a/src/test/ui/coerce/coerce-reborrow-mut-ptr-arg.rs b/src/test/ui/coercion/coerce-reborrow-mut-ptr-arg.rs
index 76cd6793b3c..76cd6793b3c 100644
--- a/src/test/ui/coerce/coerce-reborrow-mut-ptr-arg.rs
+++ b/src/test/ui/coercion/coerce-reborrow-mut-ptr-arg.rs
diff --git a/src/test/ui/coerce/coerce-reborrow-mut-ptr-rcvr.rs b/src/test/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs
index e6e7c3a51aa..e6e7c3a51aa 100644
--- a/src/test/ui/coerce/coerce-reborrow-mut-ptr-rcvr.rs
+++ b/src/test/ui/coercion/coerce-reborrow-mut-ptr-rcvr.rs
diff --git a/src/test/ui/coerce/coerce-reborrow-mut-vec-arg.rs b/src/test/ui/coercion/coerce-reborrow-mut-vec-arg.rs
index 2635754f14d..2635754f14d 100644
--- a/src/test/ui/coerce/coerce-reborrow-mut-vec-arg.rs
+++ b/src/test/ui/coercion/coerce-reborrow-mut-vec-arg.rs
diff --git a/src/test/ui/coerce/coerce-reborrow-mut-vec-rcvr.rs b/src/test/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs
index c03336ea37a..c03336ea37a 100644
--- a/src/test/ui/coerce/coerce-reborrow-mut-vec-rcvr.rs
+++ b/src/test/ui/coercion/coerce-reborrow-mut-vec-rcvr.rs
diff --git a/src/test/ui/coercion/coerce-to-bang-cast.rs b/src/test/ui/coercion/coerce-to-bang-cast.rs
index 8ef19480846..85598a42ecc 100644
--- a/src/test/ui/coercion/coerce-to-bang-cast.rs
+++ b/src/test/ui/coercion/coerce-to-bang-cast.rs
@@ -1,7 +1,5 @@
 #![feature(never_type)]
 
-fn foo(x: usize, y: !, z: usize) { }
-
 fn cast_a() {
     let y = {return; 22} as !;
     //~^ ERROR non-primitive cast
diff --git a/src/test/ui/coercion/coerce-to-bang-cast.stderr b/src/test/ui/coercion/coerce-to-bang-cast.stderr
index d3adbd5158d..50e009aa25b 100644
--- a/src/test/ui/coercion/coerce-to-bang-cast.stderr
+++ b/src/test/ui/coercion/coerce-to-bang-cast.stderr
@@ -1,11 +1,11 @@
 error[E0605]: non-primitive cast: `i32` as `!`
-  --> $DIR/coerce-to-bang-cast.rs:6:13
+  --> $DIR/coerce-to-bang-cast.rs:4:13
    |
 LL |     let y = {return; 22} as !;
    |             ^^^^^^^^^^^^^^^^^ an `as` expression can only be used to convert between primitive types or to coerce to a specific trait object
 
 error[E0605]: non-primitive cast: `i32` as `!`
-  --> $DIR/coerce-to-bang-cast.rs:11:13
+  --> $DIR/coerce-to-bang-cast.rs:9:13
    |
 LL |     let y = 22 as !;
    |             ^^^^^^^ an `as` expression can only be used to convert between primitive types or to coerce to a specific trait object
diff --git a/src/test/ui/coerce/coerce-unify-return.rs b/src/test/ui/coercion/coerce-unify-return.rs
index 95a7ee8fe0f..95a7ee8fe0f 100644
--- a/src/test/ui/coerce/coerce-unify-return.rs
+++ b/src/test/ui/coercion/coerce-unify-return.rs
diff --git a/src/test/ui/coerce/coerce-unify.rs b/src/test/ui/coercion/coerce-unify.rs
index f1818f9bb5a..f1818f9bb5a 100644
--- a/src/test/ui/coerce/coerce-unify.rs
+++ b/src/test/ui/coercion/coerce-unify.rs
diff --git a/src/test/ui/coerce/coerce-unsize-subtype.rs b/src/test/ui/coercion/coerce-unsize-subtype.rs
index 45b53300c5b..45b53300c5b 100644
--- a/src/test/ui/coerce/coerce-unsize-subtype.rs
+++ b/src/test/ui/coercion/coerce-unsize-subtype.rs