about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-08-12 10:58:22 +0200
committerGitHub <noreply@github.com>2019-08-12 10:58:22 +0200
commit7bdff66d353ac6395dc0611f2afc80ffe8b1bf0c (patch)
tree3f8568e9632731b447ca13760ec1dbd5d697b9ca /src
parent58ac2b2b6b86c32c3b84585d8fa7a43a8dad9fb2 (diff)
parent5981dfffbae081df0281de2cbe0da79fa1ceb7e6 (diff)
downloadrust-7bdff66d353ac6395dc0611f2afc80ffe8b1bf0c.tar.gz
rust-7bdff66d353ac6395dc0611f2afc80ffe8b1bf0c.zip
Rollup merge of #63474 - adamAndMath:master, r=Centril
Add tests for issue #53598 and #57700

Closes #53598 and #57700
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53598.rs28
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53598.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-57700.rs22
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-57700.stderr12
4 files changed, 74 insertions, 0 deletions
diff --git a/src/test/ui/type-alias-impl-trait/issue-53598.rs b/src/test/ui/type-alias-impl-trait/issue-53598.rs
new file mode 100644
index 00000000000..61dff79d07b
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-53598.rs
@@ -0,0 +1,28 @@
+// ignore-tidy-linelength
+#![feature(type_alias_impl_trait)]
+
+use std::fmt::Debug;
+
+pub trait Foo {
+    type Item: Debug;
+
+    fn foo<T: Debug>(_: T) -> Self::Item;
+}
+
+#[derive(Debug)]
+pub struct S<T>(std::marker::PhantomData<T>);
+
+pub struct S2;
+
+impl Foo for S2 {
+    type Item = impl Debug;
+
+    fn foo<T: Debug>(_: T) -> Self::Item {
+    //~^ Error type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias
+        S::<T>(Default::default())
+    }
+}
+
+fn main() {
+    S2::foo(123);
+}
diff --git a/src/test/ui/type-alias-impl-trait/issue-53598.stderr b/src/test/ui/type-alias-impl-trait/issue-53598.stderr
new file mode 100644
index 00000000000..4c8144a2359
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-53598.stderr
@@ -0,0 +1,12 @@
+error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias
+  --> $DIR/issue-53598.rs:20:42
+   |
+LL |       fn foo<T: Debug>(_: T) -> Self::Item {
+   |  __________________________________________^
+LL | |
+LL | |         S::<T>(Default::default())
+LL | |     }
+   | |_____^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/type-alias-impl-trait/issue-57700.rs b/src/test/ui/type-alias-impl-trait/issue-57700.rs
new file mode 100644
index 00000000000..bfabef54724
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-57700.rs
@@ -0,0 +1,22 @@
+// ignore-tidy-linelength
+#![feature(arbitrary_self_types)]
+#![feature(type_alias_impl_trait)]
+
+use std::ops::Deref;
+
+trait Foo {
+    type Bar: Foo;
+
+    fn foo(self: impl Deref<Target = Self>) -> Self::Bar;
+}
+
+impl<C> Foo for C {
+    type Bar = impl Foo;
+
+    fn foo(self: impl Deref<Target = Self>) -> Self::Bar {
+    //~^ Error type parameter `impl Deref<Target = Self>` is part of concrete type but not used in parameter list for the `impl Trait` type alias
+        self
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-57700.stderr b/src/test/ui/type-alias-impl-trait/issue-57700.stderr
new file mode 100644
index 00000000000..c701e3e74ef
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-57700.stderr
@@ -0,0 +1,12 @@
+error: type parameter `impl Deref<Target = Self>` is part of concrete type but not used in parameter list for the `impl Trait` type alias
+  --> $DIR/issue-57700.rs:16:58
+   |
+LL |       fn foo(self: impl Deref<Target = Self>) -> Self::Bar {
+   |  __________________________________________________________^
+LL | |
+LL | |         self
+LL | |     }
+   | |_____^
+
+error: aborting due to previous error
+