--bless tests

This commit is contained in:
Maybe Waffle 2022-07-28 19:33:10 +04:00
parent 620b0f1935
commit 7da578b8f8
12 changed files with 119 additions and 63 deletions

View File

@ -2,10 +2,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:2:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:2:5
| |
LL | f1(|_: (), _: ()| {}); LL | f1(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'r, 's> fn(&'r (), &'s ()) -> _` | expected due to this
| |
= note: expected closure signature `for<'r, 's> fn(&'r (), &'s ()) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `f1` note: required by a bound in `f1`
--> $DIR/anonymous-higher-ranked-lifetime.rs:16:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:16:25
| |
@ -16,10 +18,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:3:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:3:5
| |
LL | f2(|_: (), _: ()| {}); LL | f2(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'a, 'r> fn(&'a (), &'r ()) -> _` | expected due to this
| |
= note: expected closure signature `for<'a, 'r> fn(&'a (), &'r ()) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `f2` note: required by a bound in `f2`
--> $DIR/anonymous-higher-ranked-lifetime.rs:17:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:17:25
| |
@ -30,10 +34,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:4:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:4:5
| |
LL | f3(|_: (), _: ()| {}); LL | f3(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'r> fn(&(), &'r ()) -> _` | expected due to this
| |
= note: expected closure signature `for<'r> fn(&(), &'r ()) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `f3` note: required by a bound in `f3`
--> $DIR/anonymous-higher-ranked-lifetime.rs:18:29 --> $DIR/anonymous-higher-ranked-lifetime.rs:18:29
| |
@ -44,10 +50,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:5:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:5:5
| |
LL | f4(|_: (), _: ()| {}); LL | f4(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'s, 'r> fn(&'s (), &'r ()) -> _` | expected due to this
| |
= note: expected closure signature `for<'r, 's> fn(&'s (), &'r ()) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `f4` note: required by a bound in `f4`
--> $DIR/anonymous-higher-ranked-lifetime.rs:19:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:19:25
| |
@ -58,10 +66,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:6:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:6:5
| |
LL | f5(|_: (), _: ()| {}); LL | f5(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'r> fn(&'r (), &'r ()) -> _` | expected due to this
| |
= note: expected closure signature `for<'r> fn(&'r (), &'r ()) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `f5` note: required by a bound in `f5`
--> $DIR/anonymous-higher-ranked-lifetime.rs:20:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:20:25
| |
@ -72,10 +82,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:7:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:7:5
| |
LL | g1(|_: (), _: ()| {}); LL | g1(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'r> fn(&'r (), Box<(dyn for<'s> Fn(&'s ()) + 'static)>) -> _` | expected due to this
| |
= note: expected closure signature `for<'r> fn(&'r (), Box<(dyn for<'r> Fn(&'r ()) + 'static)>) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `g1` note: required by a bound in `g1`
--> $DIR/anonymous-higher-ranked-lifetime.rs:23:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:23:25
| |
@ -86,10 +98,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:8:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:8:5
| |
LL | g2(|_: (), _: ()| {}); LL | g2(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'r> fn(&'r (), for<'s> fn(&'s ())) -> _` | expected due to this
| |
= note: expected closure signature `for<'r> fn(&'r (), for<'r> fn(&'r ())) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `g2` note: required by a bound in `g2`
--> $DIR/anonymous-higher-ranked-lifetime.rs:24:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:24:25
| |
@ -100,10 +114,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:9:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:9:5
| |
LL | g3(|_: (), _: ()| {}); LL | g3(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'s> fn(&'s (), Box<(dyn for<'r> Fn(&'r ()) + 'static)>) -> _` | expected due to this
| |
= note: expected closure signature `for<'s> fn(&'s (), Box<(dyn for<'r> Fn(&'r ()) + 'static)>) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `g3` note: required by a bound in `g3`
--> $DIR/anonymous-higher-ranked-lifetime.rs:25:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:25:25
| |
@ -114,10 +130,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:10:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:10:5
| |
LL | g4(|_: (), _: ()| {}); LL | g4(|_: (), _: ()| {});
| ^^ -------------- found signature of `fn((), ()) -> _` | ^^ -------------- found signature defined here
| | | |
| expected signature of `for<'s> fn(&'s (), for<'r> fn(&'r ())) -> _` | expected due to this
| |
= note: expected closure signature `for<'s> fn(&'s (), for<'r> fn(&'r ())) -> _`
found closure signature `fn((), ()) -> _`
note: required by a bound in `g4` note: required by a bound in `g4`
--> $DIR/anonymous-higher-ranked-lifetime.rs:26:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:26:25
| |
@ -128,10 +146,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:11:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:11:5
| |
LL | h1(|_: (), _: (), _: (), _: ()| {}); LL | h1(|_: (), _: (), _: (), _: ()| {});
| ^^ ---------------------------- found signature of `fn((), (), (), ()) -> _` | ^^ ---------------------------- found signature defined here
| | | |
| expected signature of `for<'r, 's> fn(&'r (), Box<(dyn for<'t0> Fn(&'t0 ()) + 'static)>, &'s (), for<'t0, 't1> fn(&'t0 (), &'t1 ())) -> _` | expected due to this
| |
= note: expected closure signature `for<'r, 's> fn(&'r (), Box<(dyn for<'r> Fn(&'r ()) + 'static)>, &'s (), for<'r, 's> fn(&'r (), &'s ())) -> _`
found closure signature `fn((), (), (), ()) -> _`
note: required by a bound in `h1` note: required by a bound in `h1`
--> $DIR/anonymous-higher-ranked-lifetime.rs:29:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:29:25
| |
@ -142,10 +162,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/anonymous-higher-ranked-lifetime.rs:12:5 --> $DIR/anonymous-higher-ranked-lifetime.rs:12:5
| |
LL | h2(|_: (), _: (), _: (), _: ()| {}); LL | h2(|_: (), _: (), _: (), _: ()| {});
| ^^ ---------------------------- found signature of `fn((), (), (), ()) -> _` | ^^ ---------------------------- found signature defined here
| | | |
| expected signature of `for<'r, 't0> fn(&'r (), Box<(dyn for<'s> Fn(&'s ()) + 'static)>, &'t0 (), for<'s, 't1> fn(&'s (), &'t1 ())) -> _` | expected due to this
| |
= note: expected closure signature `for<'t0, 'r> fn(&'r (), Box<(dyn for<'r> Fn(&'r ()) + 'static)>, &'t0 (), for<'r, 's> fn(&'r (), &'s ())) -> _`
found closure signature `fn((), (), (), ()) -> _`
note: required by a bound in `h2` note: required by a bound in `h2`
--> $DIR/anonymous-higher-ranked-lifetime.rs:30:25 --> $DIR/anonymous-higher-ranked-lifetime.rs:30:25
| |

View File

@ -2,10 +2,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/expect-infer-var-appearing-twice.rs:14:5 --> $DIR/expect-infer-var-appearing-twice.rs:14:5
| |
LL | with_closure(|x: u32, y: i32| { LL | with_closure(|x: u32, y: i32| {
| ^^^^^^^^^^^^ ---------------- found signature of `fn(u32, i32) -> _` | ^^^^^^^^^^^^ ---------------- found signature defined here
| | | |
| expected signature of `fn(_, _) -> _` | expected due to this
| |
= note: expected closure signature `fn(_, _) -> _`
found closure signature `fn(u32, i32) -> _`
note: required by a bound in `with_closure` note: required by a bound in `with_closure`
--> $DIR/expect-infer-var-appearing-twice.rs:2:14 --> $DIR/expect-infer-var-appearing-twice.rs:2:14
| |

View File

@ -7,10 +7,12 @@ use std::ops::Generator;
fn foo(bar: bool) -> impl Generator<(bool,)> { fn foo(bar: bool) -> impl Generator<(bool,)> {
//~^ ERROR: type mismatch in generator arguments [E0631] //~^ ERROR: type mismatch in generator arguments [E0631]
//~| NOTE: expected signature of `fn((bool,)) -> _` //~| NOTE: expected due to this
//~| NOTE: expected generator signature `fn((bool,)) -> _`
//~| NOTE: in this expansion of desugaring of `impl Trait`
//~| NOTE: in this expansion of desugaring of `impl Trait` //~| NOTE: in this expansion of desugaring of `impl Trait`
|bar| { |bar| {
//~^ NOTE: found signature of `fn(bool) -> _` //~^ NOTE: found signature defined here
if bar { if bar {
yield bar; yield bar;
} }

View File

@ -2,10 +2,13 @@ error[E0631]: type mismatch in generator arguments
--> $DIR/issue-88653.rs:8:22 --> $DIR/issue-88653.rs:8:22
| |
LL | fn foo(bar: bool) -> impl Generator<(bool,)> { LL | fn foo(bar: bool) -> impl Generator<(bool,)> {
| ^^^^^^^^^^^^^^^^^^^^^^^ expected signature of `fn((bool,)) -> _` | ^^^^^^^^^^^^^^^^^^^^^^^ expected due to this
... ...
LL | |bar| { LL | |bar| {
| ----- found signature of `fn(bool) -> _` | ----- found signature defined here
|
= note: expected generator signature `fn((bool,)) -> _`
found generator signature `fn(bool) -> _`
error: aborting due to previous error error: aborting due to previous error

View File

@ -2,13 +2,15 @@ error[E0631]: type mismatch in function arguments
--> $DIR/issue-88382.rs:28:40 --> $DIR/issue-88382.rs:28:40
| |
LL | do_something(SomeImplementation(), test); LL | do_something(SomeImplementation(), test);
| ------------ ^^^^ expected signature of `for<'r> fn(&'r mut std::iter::Empty<usize>) -> _` | ------------ ^^^^ expected due to this
| | | |
| required by a bound introduced by this call | required by a bound introduced by this call
... ...
LL | fn test<'a, I: Iterable>(_: &mut I::Iterator<'a>) {} LL | fn test<'a, I: Iterable>(_: &mut I::Iterator<'a>) {}
| ------------------------------------------------- found signature of `for<'r, 'a> fn(&'r mut <_ as Iterable>::Iterator<'a>) -> _` | ------------------------------------------------- found signature defined here
| |
= note: expected function signature `for<'r> fn(&'r mut std::iter::Empty<usize>) -> _`
found function signature `for<'a, 'r> fn(&'r mut <_ as Iterable>::Iterator<'a>) -> _`
note: required by a bound in `do_something` note: required by a bound in `do_something`
--> $DIR/issue-88382.rs:22:48 --> $DIR/issue-88382.rs:22:48
| |

View File

@ -67,13 +67,15 @@ error[E0631]: type mismatch in function arguments
--> $DIR/const-eval-select-bad.rs:34:32 --> $DIR/const-eval-select-bad.rs:34:32
| |
LL | const fn foo(n: i32) -> i32 { LL | const fn foo(n: i32) -> i32 {
| --------------------------- found signature of `fn(i32) -> _` | --------------------------- found signature defined here
... ...
LL | const_eval_select((true,), foo, baz); LL | const_eval_select((true,), foo, baz);
| ----------------- ^^^ expected signature of `fn(bool) -> _` | ----------------- ^^^ expected due to this
| | | |
| required by a bound introduced by this call | required by a bound introduced by this call
| |
= note: expected function signature `fn(bool) -> _`
found function signature `fn(i32) -> _`
note: required by a bound in `const_eval_select` note: required by a bound in `const_eval_select`
--> $SRC_DIR/core/src/intrinsics.rs:LL:COL --> $SRC_DIR/core/src/intrinsics.rs:LL:COL
| |

View File

@ -2,10 +2,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/E0631.rs:7:5 --> $DIR/E0631.rs:7:5
| |
LL | foo(|_: isize| {}); LL | foo(|_: isize| {});
| ^^^ ---------- found signature of `fn(isize) -> _` | ^^^ ---------- found signature defined here
| | | |
| expected signature of `fn(usize) -> _` | expected due to this
| |
= note: expected closure signature `fn(usize) -> _`
found closure signature `fn(isize) -> _`
note: required by a bound in `foo` note: required by a bound in `foo`
--> $DIR/E0631.rs:3:11 --> $DIR/E0631.rs:3:11
| |
@ -16,10 +18,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/E0631.rs:8:5 --> $DIR/E0631.rs:8:5
| |
LL | bar(|_: isize| {}); LL | bar(|_: isize| {});
| ^^^ ---------- found signature of `fn(isize) -> _` | ^^^ ---------- found signature defined here
| | | |
| expected signature of `fn(usize) -> _` | expected due to this
| |
= note: expected closure signature `fn(usize) -> _`
found closure signature `fn(isize) -> _`
note: required by a bound in `bar` note: required by a bound in `bar`
--> $DIR/E0631.rs:4:11 --> $DIR/E0631.rs:4:11
| |
@ -30,13 +34,15 @@ error[E0631]: type mismatch in function arguments
--> $DIR/E0631.rs:9:9 --> $DIR/E0631.rs:9:9
| |
LL | fn f(_: u64) {} LL | fn f(_: u64) {}
| ------------ found signature of `fn(u64) -> _` | ------------ found signature defined here
... ...
LL | foo(f); LL | foo(f);
| --- ^ expected signature of `fn(usize) -> _` | --- ^ expected due to this
| | | |
| required by a bound introduced by this call | required by a bound introduced by this call
| |
= note: expected function signature `fn(usize) -> _`
found function signature `fn(u64) -> _`
note: required by a bound in `foo` note: required by a bound in `foo`
--> $DIR/E0631.rs:3:11 --> $DIR/E0631.rs:3:11
| |
@ -47,13 +53,15 @@ error[E0631]: type mismatch in function arguments
--> $DIR/E0631.rs:10:9 --> $DIR/E0631.rs:10:9
| |
LL | fn f(_: u64) {} LL | fn f(_: u64) {}
| ------------ found signature of `fn(u64) -> _` | ------------ found signature defined here
... ...
LL | bar(f); LL | bar(f);
| --- ^ expected signature of `fn(usize) -> _` | --- ^ expected due to this
| | | |
| required by a bound introduced by this call | required by a bound introduced by this call
| |
= note: expected function signature `fn(usize) -> _`
found function signature `fn(u64) -> _`
note: required by a bound in `bar` note: required by a bound in `bar`
--> $DIR/E0631.rs:4:11 --> $DIR/E0631.rs:4:11
| |

View File

@ -2,10 +2,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/closure-arg-type-mismatch.rs:3:14 --> $DIR/closure-arg-type-mismatch.rs:3:14
| |
LL | a.iter().map(|_: (u32, u32)| 45); LL | a.iter().map(|_: (u32, u32)| 45);
| ^^^ --------------- found signature of `fn((u32, u32)) -> _` | ^^^ --------------- found signature defined here
| | | |
| expected signature of `fn(&(u32, u32)) -> _` | expected due to this
| |
= note: expected closure signature `fn(&(u32, u32)) -> _`
found closure signature `fn((u32, u32)) -> _`
note: required by a bound in `map` note: required by a bound in `map`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
| |
@ -16,10 +18,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/closure-arg-type-mismatch.rs:4:14 --> $DIR/closure-arg-type-mismatch.rs:4:14
| |
LL | a.iter().map(|_: &(u16, u16)| 45); LL | a.iter().map(|_: &(u16, u16)| 45);
| ^^^ ---------------- found signature of `for<'r> fn(&'r (u16, u16)) -> _` | ^^^ ---------------- found signature defined here
| | | |
| expected signature of `fn(&(u32, u32)) -> _` | expected due to this
| |
= note: expected closure signature `fn(&(u32, u32)) -> _`
found closure signature `for<'r> fn(&'r (u16, u16)) -> _`
note: required by a bound in `map` note: required by a bound in `map`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
| |
@ -30,10 +34,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/closure-arg-type-mismatch.rs:5:14 --> $DIR/closure-arg-type-mismatch.rs:5:14
| |
LL | a.iter().map(|_: (u16, u16)| 45); LL | a.iter().map(|_: (u16, u16)| 45);
| ^^^ --------------- found signature of `fn((u16, u16)) -> _` | ^^^ --------------- found signature defined here
| | | |
| expected signature of `fn(&(u32, u32)) -> _` | expected due to this
| |
= note: expected closure signature `fn(&(u32, u32)) -> _`
found closure signature `fn((u16, u16)) -> _`
note: required by a bound in `map` note: required by a bound in `map`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
| |

View File

@ -2,13 +2,15 @@ error[E0631]: type mismatch in function arguments
--> $DIR/fn-variance-1.rs:11:15 --> $DIR/fn-variance-1.rs:11:15
| |
LL | fn takes_mut(x: &mut isize) { } LL | fn takes_mut(x: &mut isize) { }
| --------------------------- found signature of `for<'r> fn(&'r mut isize) -> _` | --------------------------- found signature defined here
... ...
LL | apply(&3, takes_mut); LL | apply(&3, takes_mut);
| ----- ^^^^^^^^^ expected signature of `fn(&{integer}) -> _` | ----- ^^^^^^^^^ expected due to this
| | | |
| required by a bound introduced by this call | required by a bound introduced by this call
| |
= note: expected function signature `fn(&{integer}) -> _`
found function signature `for<'r> fn(&'r mut isize) -> _`
note: required by a bound in `apply` note: required by a bound in `apply`
--> $DIR/fn-variance-1.rs:5:37 --> $DIR/fn-variance-1.rs:5:37
| |
@ -19,13 +21,15 @@ error[E0631]: type mismatch in function arguments
--> $DIR/fn-variance-1.rs:15:19 --> $DIR/fn-variance-1.rs:15:19
| |
LL | fn takes_imm(x: &isize) { } LL | fn takes_imm(x: &isize) { }
| ----------------------- found signature of `for<'r> fn(&'r isize) -> _` | ----------------------- found signature defined here
... ...
LL | apply(&mut 3, takes_imm); LL | apply(&mut 3, takes_imm);
| ----- ^^^^^^^^^ expected signature of `fn(&mut {integer}) -> _` | ----- ^^^^^^^^^ expected due to this
| | | |
| required by a bound introduced by this call | required by a bound introduced by this call
| |
= note: expected function signature `fn(&mut {integer}) -> _`
found function signature `for<'r> fn(&'r isize) -> _`
note: required by a bound in `apply` note: required by a bound in `apply`
--> $DIR/fn-variance-1.rs:5:37 --> $DIR/fn-variance-1.rs:5:37
| |

View File

@ -2,10 +2,12 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/issue-36053-2.rs:7:32 --> $DIR/issue-36053-2.rs:7:32
| |
LL | once::<&str>("str").fuse().filter(|a: &str| true).count(); LL | once::<&str>("str").fuse().filter(|a: &str| true).count();
| ^^^^^^ --------- found signature of `for<'r> fn(&'r str) -> _` | ^^^^^^ --------- found signature defined here
| | | |
| expected signature of `for<'r> fn(&'r &str) -> _` | expected due to this
| |
= note: expected closure signature `for<'r> fn(&'r &str) -> _`
found closure signature `for<'r> fn(&'r str) -> _`
note: required by a bound in `filter` note: required by a bound in `filter`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
| |

View File

@ -2,20 +2,21 @@
use std::ops::FnMut; use std::ops::FnMut;
fn to_fn_mut<A,F:FnMut<A>>(f: F) -> F { f } fn to_fn_mut<A, F: FnMut<A>>(f: F) -> F { f }
fn call_it<F:FnMut(isize,isize)->isize>(y: isize, mut f: F) -> isize { fn call_it<F: FnMut(isize, isize) -> isize>(y: isize, mut f: F) -> isize {
//~^ NOTE required by this bound in `call_it` //~^ NOTE required by this bound in `call_it`
//~| NOTE required by a bound in `call_it` //~| NOTE required by a bound in `call_it`
f(2, y) f(2, y)
} }
pub fn main() { pub fn main() {
let f = to_fn_mut(|x: usize, y: isize| -> isize { (x as isize) + y }); let f = to_fn_mut(|x: usize, y: isize| -> isize { (x as isize) + y });
//~^ NOTE found signature of `fn(usize, isize) -> _` //~^ NOTE found signature defined here
let z = call_it(3, f); let z = call_it(3, f);
//~^ ERROR type mismatch //~^ ERROR type mismatch
//~| NOTE expected signature of `fn(isize, isize) -> _` //~| NOTE expected due to this
//~| NOTE expected closure signature `fn(isize, _) -> _`
//~| NOTE required by a bound introduced by this call //~| NOTE required by a bound introduced by this call
println!("{}", z); println!("{}", z);
} }

View File

@ -2,18 +2,20 @@ error[E0631]: type mismatch in closure arguments
--> $DIR/unboxed-closures-vtable-mismatch.rs:16:24 --> $DIR/unboxed-closures-vtable-mismatch.rs:16:24
| |
LL | let f = to_fn_mut(|x: usize, y: isize| -> isize { (x as isize) + y }); LL | let f = to_fn_mut(|x: usize, y: isize| -> isize { (x as isize) + y });
| ----------------------------- found signature of `fn(usize, isize) -> _` | ----------------------------- found signature defined here
LL | LL |
LL | let z = call_it(3, f); LL | let z = call_it(3, f);
| ------- ^ expected signature of `fn(isize, isize) -> _` | ------- ^ expected due to this
| | | |
| required by a bound introduced by this call | required by a bound introduced by this call
| |
= note: expected closure signature `fn(isize, _) -> _`
found closure signature `fn(usize, _) -> _`
note: required by a bound in `call_it` note: required by a bound in `call_it`
--> $DIR/unboxed-closures-vtable-mismatch.rs:7:14 --> $DIR/unboxed-closures-vtable-mismatch.rs:7:15
| |
LL | fn call_it<F:FnMut(isize,isize)->isize>(y: isize, mut f: F) -> isize { LL | fn call_it<F: FnMut(isize, isize) -> isize>(y: isize, mut f: F) -> isize {
| ^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `call_it` | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `call_it`
error: aborting due to previous error error: aborting due to previous error