diff options
| author | Michael Goulet <michael@errs.io> | 2022-09-03 04:57:21 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-10-10 05:05:26 +0000 |
| commit | 693485373b971d1574388b9da785b66c19dc86d2 (patch) | |
| tree | 73bade4831cbe9e5993151b205b1cabd341b6c59 /src | |
| parent | 1a7c203e7f89f92598a793c6f6406735c024e7ee (diff) | |
| download | rust-693485373b971d1574388b9da785b66c19dc86d2.tar.gz rust-693485373b971d1574388b9da785b66c19dc86d2.zip | |
Point out incompatible closure bounds
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/closures/multiple-fn-bounds.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/closures/multiple-fn-bounds.stderr | 24 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/ui/closures/multiple-fn-bounds.rs b/src/test/ui/closures/multiple-fn-bounds.rs new file mode 100644 index 00000000000..6bb4098e2bb --- /dev/null +++ b/src/test/ui/closures/multiple-fn-bounds.rs @@ -0,0 +1,15 @@ +fn foo<F: Fn(&char) -> bool + Fn(char) -> bool>(f: F) { + //~^ NOTE required by a bound in `foo` + //~| NOTE required by this bound in `foo` + //~| NOTE closure inferred to have a different signature due to this bound + todo!(); +} + +fn main() { + let v = true; + foo(move |x| v); + //~^ ERROR type mismatch in closure arguments + //~| NOTE expected closure signature + //~| NOTE expected due to this + //~| NOTE found signature defined here +} diff --git a/src/test/ui/closures/multiple-fn-bounds.stderr b/src/test/ui/closures/multiple-fn-bounds.stderr new file mode 100644 index 00000000000..eefc123fed7 --- /dev/null +++ b/src/test/ui/closures/multiple-fn-bounds.stderr @@ -0,0 +1,24 @@ +error[E0631]: type mismatch in closure arguments + --> $DIR/multiple-fn-bounds.rs:10:5 + | +LL | foo(move |x| v); + | ^^^ -------- found signature defined here + | | + | expected due to this + | + = note: expected closure signature `fn(char) -> _` + found closure signature `for<'a> fn(&'a char) -> _` +note: closure inferred to have a different signature due to this bound + --> $DIR/multiple-fn-bounds.rs:1:11 + | +LL | fn foo<F: Fn(&char) -> bool + Fn(char) -> bool>(f: F) { + | ^^^^^^^^^^^^^^^^^ +note: required by a bound in `foo` + --> $DIR/multiple-fn-bounds.rs:1:31 + | +LL | fn foo<F: Fn(&char) -> bool + Fn(char) -> bool>(f: F) { + | ^^^^^^^^^^^^^^^^ required by this bound in `foo` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0631`. |
