about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-06-23 17:52:42 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2020-06-23 17:52:42 +0900
commite817cd2a6e499eebf9674e558b762fd98581f13a (patch)
tree959a1682dcf84981dba8aa537d46ef3c863e3ed8
parent43ef554b6ab72c4cc3c56dab8e9b61021c63b3b7 (diff)
downloadrust-e817cd2a6e499eebf9674e558b762fd98581f13a.tar.gz
rust-e817cd2a6e499eebf9674e558b762fd98581f13a.zip
Add test for issue-59435
-rw-r--r--src/test/ui/specialization/issue-59435.rs17
-rw-r--r--src/test/ui/specialization/issue-59435.stderr12
2 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/specialization/issue-59435.rs b/src/test/ui/specialization/issue-59435.rs
new file mode 100644
index 00000000000..47323d3096f
--- /dev/null
+++ b/src/test/ui/specialization/issue-59435.rs
@@ -0,0 +1,17 @@
+#![feature(specialization)]
+#![allow(incomplete_features)]
+
+struct MyStruct {}
+
+trait MyTrait {
+    type MyType: Default;
+}
+
+impl MyTrait for i32 {
+    default type MyType = MyStruct;
+    //~^ ERROR: the trait bound `MyStruct: std::default::Default` is not satisfied
+}
+
+fn main() {
+    let _x: <i32 as MyTrait>::MyType = <i32 as MyTrait>::MyType::default();
+}
diff --git a/src/test/ui/specialization/issue-59435.stderr b/src/test/ui/specialization/issue-59435.stderr
new file mode 100644
index 00000000000..fd512a539a3
--- /dev/null
+++ b/src/test/ui/specialization/issue-59435.stderr
@@ -0,0 +1,12 @@
+error[E0277]: the trait bound `MyStruct: std::default::Default` is not satisfied
+  --> $DIR/issue-59435.rs:11:5
+   |
+LL |     type MyType: Default;
+   |     --------------------- required by `MyTrait::MyType`
+...
+LL |     default type MyType = MyStruct;
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::default::Default` is not implemented for `MyStruct`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.