Rollup merge of #101360 - compiler-errors:multiple-closure-bounds, r=petrochenkov
Point out incompatible closure bounds Fixes #100295
This commit is contained in:
commit
d8d01e3216
4 changed files with 107 additions and 0 deletions
15
src/test/ui/closures/multiple-fn-bounds.rs
Normal file
15
src/test/ui/closures/multiple-fn-bounds.rs
Normal file
|
|
@ -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
|
||||
}
|
||||
24
src/test/ui/closures/multiple-fn-bounds.stderr
Normal file
24
src/test/ui/closures/multiple-fn-bounds.stderr
Normal file
|
|
@ -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`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue