about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorMasaki Hara <ackie.h.gmai@gmail.com>2018-11-19 00:18:13 +0900
committerMasaki Hara <ackie.h.gmai@gmail.com>2018-11-21 22:20:22 +0900
commit8b426232eef0629265bbfd0bc81fab75e113762b (patch)
tree9c8abbd76eb598fd3a7345a584e1ecb0d3ce795b /src/test
parent682b33a1103695de3c6520d55204b3c3d45f68ec (diff)
downloadrust-8b426232eef0629265bbfd0bc81fab75e113762b.tar.gz
rust-8b426232eef0629265bbfd0bc81fab75e113762b.zip
Check arg/ret sizedness at ExprKind::Path.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/issues/issue-30355.nll.stderr22
-rw-r--r--src/test/ui/issues/issue-30355.rs4
-rw-r--r--src/test/ui/issues/issue-30355.stderr24
-rw-r--r--src/test/ui/unsized-locals/unsized-exprs.rs2
-rw-r--r--src/test/ui/unsized-locals/unsized-exprs.stderr13
-rw-r--r--src/test/ui/unsized-locals/unsized-exprs2.rs2
6 files changed, 23 insertions, 44 deletions
diff --git a/src/test/ui/issues/issue-30355.nll.stderr b/src/test/ui/issues/issue-30355.nll.stderr
deleted file mode 100644
index fdf8157dcf8..00000000000
--- a/src/test/ui/issues/issue-30355.nll.stderr
+++ /dev/null
@@ -1,22 +0,0 @@
-error[E0161]: cannot move a value of type X: the size of X cannot be statically determined
-  --> $DIR/issue-30355.rs:15:6
-   |
-LL |     &X(*Y)
-   |      ^^^^^
-
-error[E0161]: cannot move a value of type [u8]: the size of [u8] cannot be statically determined
-  --> $DIR/issue-30355.rs:15:8
-   |
-LL |     &X(*Y)
-   |        ^^
-
-error[E0508]: cannot move out of type `[u8]`, a non-copy slice
-  --> $DIR/issue-30355.rs:15:8
-   |
-LL |     &X(*Y)
-   |        ^^ cannot move out of here
-
-error: aborting due to 3 previous errors
-
-Some errors occurred: E0161, E0508.
-For more information about an error, try `rustc --explain E0161`.
diff --git a/src/test/ui/issues/issue-30355.rs b/src/test/ui/issues/issue-30355.rs
index ee19d040318..8d5eac06c43 100644
--- a/src/test/ui/issues/issue-30355.rs
+++ b/src/test/ui/issues/issue-30355.rs
@@ -13,9 +13,7 @@ pub struct X([u8]);
 pub static Y: &'static X = {
     const Y: &'static [u8] = b"";
     &X(*Y)
-    //~^ ERROR cannot move out
-    //~^^ ERROR cannot move a
-    //~^^^ ERROR cannot move a
+    //~^ ERROR E0277
 };
 
 fn main() {}
diff --git a/src/test/ui/issues/issue-30355.stderr b/src/test/ui/issues/issue-30355.stderr
index 7e843688035..1b55f20e6b4 100644
--- a/src/test/ui/issues/issue-30355.stderr
+++ b/src/test/ui/issues/issue-30355.stderr
@@ -1,22 +1,14 @@
-error[E0161]: cannot move a value of type X: the size of X cannot be statically determined
+error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
   --> $DIR/issue-30355.rs:15:6
    |
 LL |     &X(*Y)
-   |      ^^^^^
-
-error[E0161]: cannot move a value of type [u8]: the size of [u8] cannot be statically determined
-  --> $DIR/issue-30355.rs:15:8
+   |      ^ doesn't have a size known at compile-time
    |
-LL |     &X(*Y)
-   |        ^^
-
-error[E0507]: cannot move out of borrowed content
-  --> $DIR/issue-30355.rs:15:8
-   |
-LL |     &X(*Y)
-   |        ^^ cannot move out of borrowed content
+   = help: the trait `std::marker::Sized` is not implemented for `[u8]`
+   = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
+   = note: all function arguments must have a statically known size
+   = help: unsized locals are gated as an unstable feature
 
-error: aborting due to 3 previous errors
+error: aborting due to previous error
 
-Some errors occurred: E0161, E0507.
-For more information about an error, try `rustc --explain E0161`.
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/unsized-locals/unsized-exprs.rs b/src/test/ui/unsized-locals/unsized-exprs.rs
index 0cf93c78c4a..8ca88edcb6a 100644
--- a/src/test/ui/unsized-locals/unsized-exprs.rs
+++ b/src/test/ui/unsized-locals/unsized-exprs.rs
@@ -23,4 +23,6 @@ fn main() {
     //~^ERROR E0277
     udrop::<A<[u8]>>(A { 0: *foo() });
     //~^ERROR E0277
+    udrop::<A<[u8]>>(A(*foo()));
+    //~^ERROR E0277
 }
diff --git a/src/test/ui/unsized-locals/unsized-exprs.stderr b/src/test/ui/unsized-locals/unsized-exprs.stderr
index eb201694177..0ca60e8dea0 100644
--- a/src/test/ui/unsized-locals/unsized-exprs.stderr
+++ b/src/test/ui/unsized-locals/unsized-exprs.stderr
@@ -20,6 +20,17 @@ LL |     udrop::<A<[u8]>>(A { 0: *foo() });
    = note: required because it appears within the type `A<[u8]>`
    = note: structs must have a statically known size to be initialized
 
-error: aborting due to 2 previous errors
+error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
+  --> $DIR/unsized-exprs.rs:26:22
+   |
+LL |     udrop::<A<[u8]>>(A(*foo()));
+   |                      ^ doesn't have a size known at compile-time
+   |
+   = help: within `A<[u8]>`, the trait `std::marker::Sized` is not implemented for `[u8]`
+   = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
+   = note: required because it appears within the type `A<[u8]>`
+   = note: the return type of a function must have a statically known size
+
+error: aborting due to 3 previous errors
 
 For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/unsized-locals/unsized-exprs2.rs b/src/test/ui/unsized-locals/unsized-exprs2.rs
index ae69893a835..3fb5a002e0e 100644
--- a/src/test/ui/unsized-locals/unsized-exprs2.rs
+++ b/src/test/ui/unsized-locals/unsized-exprs2.rs
@@ -21,6 +21,4 @@ impl std::ops::Add<i32> for A<[u8]> {
 fn main() {
     udrop::<[u8]>(foo()[..]);
     //~^ERROR cannot move out of indexed content
-    // FIXME: should be error
-    udrop::<A<[u8]>>(A(*foo()));
 }