about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2019-10-01 04:55:29 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2019-10-01 04:55:29 +0900
commitbc25746d488dd49ab2fd49b6b4b51f2fe464c56b (patch)
tree31807d2fdb4c70d6973c49a61197bfe0d8dc5298
parent576c215ab9184108422d30b311064b0efaf445d4 (diff)
downloadrust-bc25746d488dd49ab2fd49b6b4b51f2fe464c56b.tar.gz
rust-bc25746d488dd49ab2fd49b6b4b51f2fe464c56b.zip
Add test for #58022
-rw-r--r--src/test/ui/issues/issue-58022.rs18
-rw-r--r--src/test/ui/issues/issue-58022.stderr19
2 files changed, 37 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-58022.rs b/src/test/ui/issues/issue-58022.rs
new file mode 100644
index 00000000000..c6dd45e6cf3
--- /dev/null
+++ b/src/test/ui/issues/issue-58022.rs
@@ -0,0 +1,18 @@
+pub trait Foo: Sized {
+    const SIZE: usize;
+
+    fn new(slice: &[u8; Foo::SIZE]) -> Self;
+    //~^ ERROR: type annotations needed: cannot resolve `_: Foo`
+}
+
+pub struct Bar<T: ?Sized>(T);
+
+impl Bar<[u8]> {
+    const SIZE: usize = 32;
+
+    fn new(slice: &[u8; Self::SIZE]) -> Self {
+        Foo(Box::new(*slice)) //~ ERROR: expected function, found trait `Foo`
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-58022.stderr b/src/test/ui/issues/issue-58022.stderr
new file mode 100644
index 00000000000..71bad7b81fa
--- /dev/null
+++ b/src/test/ui/issues/issue-58022.stderr
@@ -0,0 +1,19 @@
+error[E0423]: expected function, found trait `Foo`
+  --> $DIR/issue-58022.rs:14:9
+   |
+LL |         Foo(Box::new(*slice))
+   |         ^^^ not a function
+
+error[E0283]: type annotations needed: cannot resolve `_: Foo`
+  --> $DIR/issue-58022.rs:4:25
+   |
+LL |     const SIZE: usize;
+   |     ------------------ required by `Foo::SIZE`
+LL | 
+LL |     fn new(slice: &[u8; Foo::SIZE]) -> Self;
+   |                         ^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0283, E0423.
+For more information about an error, try `rustc --explain E0283`.