about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-10-09 18:31:48 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2020-10-09 18:31:48 +0900
commit07627a3aa3dc7e0e961b523808dfd55bb86bde3e (patch)
treecaba980aa5694b08a9f30e8b05691f1fb7edd2c9 /src
parent9a74fb726ec40be398c55bce66c6d0b1a91d106c (diff)
downloadrust-07627a3aa3dc7e0e961b523808dfd55bb86bde3e.tar.gz
rust-07627a3aa3dc7e0e961b523808dfd55bb86bde3e.zip
Add a regression test for issue-52843
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-52843.rs15
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-52843.stderr14
2 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/type-alias-impl-trait/issue-52843.rs b/src/test/ui/type-alias-impl-trait/issue-52843.rs
new file mode 100644
index 00000000000..b24959d7207
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-52843.rs
@@ -0,0 +1,15 @@
+#![feature(type_alias_impl_trait)]
+
+type Foo<T> = impl Default;
+//~^ ERROR: the trait bound `T: Default` is not satisfied
+
+#[allow(unused)]
+fn foo<T: Default>(t: T) -> Foo<T> {
+    t
+}
+
+struct NotDefault;
+
+fn main() {
+    let _ = Foo::<NotDefault>::default();
+}
diff --git a/src/test/ui/type-alias-impl-trait/issue-52843.stderr b/src/test/ui/type-alias-impl-trait/issue-52843.stderr
new file mode 100644
index 00000000000..25db8dfabfc
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-52843.stderr
@@ -0,0 +1,14 @@
+error[E0277]: the trait bound `T: Default` is not satisfied
+  --> $DIR/issue-52843.rs:3:15
+   |
+LL | type Foo<T> = impl Default;
+   |               ^^^^^^^^^^^^ the trait `Default` is not implemented for `T`
+   |
+help: consider restricting type parameter `T`
+   |
+LL | type Foo<T: Default> = impl Default;
+   |           ^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.