about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-08-03 13:23:31 +0000
committerbors <bors@rust-lang.org>2021-08-03 13:23:31 +0000
commitd5fd37f00f1ec5e4a4b0d87f5af0b93f36aab271 (patch)
tree7d3d9a9d7e67c6a10ad608d9a75ac650e3cbbb5f /src/test
parent2939249f294dd54a9ce78a8ee1f2922a44e7fb7c (diff)
parentb84d08d1e46df54ee3a2729296697e0b1ecc6097 (diff)
downloadrust-d5fd37f00f1ec5e4a4b0d87f5af0b93f36aab271.tar.gz
rust-d5fd37f00f1ec5e4a4b0d87f5af0b93f36aab271.zip
Auto merge of #86338 - JohnTitor:issue-86162, r=estebank
Do not suggest impl traits as type arguments

Fixes #86162
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/inference/issue-86162-1.rs9
-rw-r--r--src/test/ui/inference/issue-86162-1.stderr14
-rw-r--r--src/test/ui/inference/issue-86162-2.rs14
-rw-r--r--src/test/ui/inference/issue-86162-2.stderr14
4 files changed, 51 insertions, 0 deletions
diff --git a/src/test/ui/inference/issue-86162-1.rs b/src/test/ui/inference/issue-86162-1.rs
new file mode 100644
index 00000000000..5a547eb38d1
--- /dev/null
+++ b/src/test/ui/inference/issue-86162-1.rs
@@ -0,0 +1,9 @@
+// Regression test of #86162.
+
+fn foo(x: impl Clone) {}
+fn gen<T>() -> T { todo!() }
+
+fn main() {
+    foo(gen()); //<- Do not suggest `foo::<impl Clone>()`!
+    //~^ ERROR: type annotations needed
+}
diff --git a/src/test/ui/inference/issue-86162-1.stderr b/src/test/ui/inference/issue-86162-1.stderr
new file mode 100644
index 00000000000..f4e2161d7b8
--- /dev/null
+++ b/src/test/ui/inference/issue-86162-1.stderr
@@ -0,0 +1,14 @@
+error[E0283]: type annotations needed
+  --> $DIR/issue-86162-1.rs:7:5
+   |
+LL | fn foo(x: impl Clone) {}
+   |                ----- required by this bound in `foo`
+...
+LL |     foo(gen()); //<- Do not suggest `foo::<impl Clone>()`!
+   |     ^^^ cannot infer type for type parameter `impl Clone` declared on the function `foo`
+   |
+   = note: cannot satisfy `_: Clone`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0283`.
diff --git a/src/test/ui/inference/issue-86162-2.rs b/src/test/ui/inference/issue-86162-2.rs
new file mode 100644
index 00000000000..b8c75dd7728
--- /dev/null
+++ b/src/test/ui/inference/issue-86162-2.rs
@@ -0,0 +1,14 @@
+// Regression test of #86162.
+
+fn gen<T>() -> T { todo!() }
+
+struct Foo;
+
+impl Foo {
+    fn bar(x: impl Clone) {}
+}
+
+fn main() {
+    Foo::bar(gen()); //<- Do not suggest `Foo::bar::<impl Clone>()`!
+    //~^ ERROR: type annotations needed
+}
diff --git a/src/test/ui/inference/issue-86162-2.stderr b/src/test/ui/inference/issue-86162-2.stderr
new file mode 100644
index 00000000000..19f741e1cf6
--- /dev/null
+++ b/src/test/ui/inference/issue-86162-2.stderr
@@ -0,0 +1,14 @@
+error[E0283]: type annotations needed
+  --> $DIR/issue-86162-2.rs:12:5
+   |
+LL |     fn bar(x: impl Clone) {}
+   |                    ----- required by this bound in `Foo::bar`
+...
+LL |     Foo::bar(gen()); //<- Do not suggest `Foo::bar::<impl Clone>()`!
+   |     ^^^^^^^^ cannot infer type for type parameter `impl Clone` declared on the associated function `bar`
+   |
+   = note: cannot satisfy `_: Clone`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0283`.