From 611766dceed207a538881255f654388fddc223e6 Mon Sep 17 00:00:00 2001 From: Michael Goulet 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 0000000000000..97351706699a6 --- /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 0000000000000..6e8c94177bf66 --- /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) +where + Wrap: Foo, +{ +} + +struct Wrap(T); +impl Foo for Wrap where T: Fn(i32) {} + +fn main() { + needs_foo(|x| { + x.to_string(); + }); +}