From 611766dceed207a538881255f654388fddc223e6 Mon Sep 17 00:00:00 2001
From: Michael Goulet <michael@errs.io>
Date: Wed, 18 Oct 2023 18:59:02 +0000
Subject: [PATCH] Add a test showing failing closure signature inference in new
 solver

---
 .../infer-signature-from-impl.next.stderr     | 16 +++++++++++++++
 .../ui/closures/infer-signature-from-impl.rs  | 20 +++++++++++++++++++
 2 files changed, 36 insertions(+)
 create mode 100644 tests/ui/closures/infer-signature-from-impl.next.stderr
 create mode 100644 tests/ui/closures/infer-signature-from-impl.rs

diff --git a/tests/ui/closures/infer-signature-from-impl.next.stderr b/tests/ui/closures/infer-signature-from-impl.next.stderr
new file mode 100644
index 00000000000..97351706699
--- /dev/null
+++ b/tests/ui/closures/infer-signature-from-impl.next.stderr
@@ -0,0 +1,16 @@
+error[E0282]: type annotations needed
+  --> $DIR/infer-signature-from-impl.rs:17:16
+   |
+LL |     needs_foo(|x| {
+   |                ^
+LL |         x.to_string();
+   |         - type must be known at this point
+   |
+help: consider giving this closure parameter an explicit type
+   |
+LL |     needs_foo(|x: /* Type */| {
+   |                 ++++++++++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0282`.
diff --git a/tests/ui/closures/infer-signature-from-impl.rs b/tests/ui/closures/infer-signature-from-impl.rs
new file mode 100644
index 00000000000..6e8c94177bf
--- /dev/null
+++ b/tests/ui/closures/infer-signature-from-impl.rs
@@ -0,0 +1,20 @@
+// revisions: current next
+//[next] compile-flags: -Ztrait-solver=next
+//[next] known-bug: trait-system-refactor-initiative#71
+//[current] check-pass
+
+trait Foo {}
+fn needs_foo<T>(_: T)
+where
+    Wrap<T>: Foo,
+{
+}
+
+struct Wrap<T>(T);
+impl<T> Foo for Wrap<T> where T: Fn(i32) {}
+
+fn main() {
+    needs_foo(|x| {
+        x.to_string();
+    });
+}