diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/lifetimes/issue-105675.rs | 8 | ||||
| -rw-r--r-- | tests/ui/lifetimes/issue-105675.stderr | 104 | ||||
| -rw-r--r-- | tests/ui/lifetimes/issue-79187-2.stderr | 4 |
3 files changed, 46 insertions, 70 deletions
diff --git a/tests/ui/lifetimes/issue-105675.rs b/tests/ui/lifetimes/issue-105675.rs index a01fbef4b3b..58d8be8b65f 100644 --- a/tests/ui/lifetimes/issue-105675.rs +++ b/tests/ui/lifetimes/issue-105675.rs @@ -1,13 +1,11 @@ -fn thing(x: impl FnOnce(&u32, &u32)) {} +fn thing(x: impl FnOnce(&u32, &u32, u32)) {} fn main() { - let f = |_, _| (); + let f = | _ , y: &u32 , z | (); thing(f); //~^ ERROR mismatched types //~^^ ERROR mismatched types - //~^^^ ERROR implementation of `FnOnce` is not general enough - //~^^^^ ERROR implementation of `FnOnce` is not general enough - let f = |x, y| (); + let f = | x, y: _ , z: u32 | (); thing(f); //~^ ERROR mismatched types //~^^ ERROR mismatched types diff --git a/tests/ui/lifetimes/issue-105675.stderr b/tests/ui/lifetimes/issue-105675.stderr index 3d8172ad14a..66415f72bcb 100644 --- a/tests/ui/lifetimes/issue-105675.stderr +++ b/tests/ui/lifetimes/issue-105675.stderr @@ -4,22 +4,22 @@ error[E0308]: mismatched types LL | thing(f); | ^^^^^^^^ one type is more general than the other | - = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32)>` - found trait `FnOnce<(&u32, &u32)>` + = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32, u32)>` + found trait `for<'a> FnOnce<(&u32, &'a u32, u32)>` note: this closure does not fulfill the lifetime requirements --> $DIR/issue-105675.rs:4:13 | -LL | let f = |_, _| (); - | ^^^^^^ +LL | let f = | _ , y: &u32 , z | (); + | ^^^^^^^^^^^^^^^^^^^ note: the lifetime requirement is introduced here --> $DIR/issue-105675.rs:1:18 | -LL | fn thing(x: impl FnOnce(&u32, &u32)) {} - | ^^^^^^^^^^^^^^^^^^ +LL | fn thing(x: impl FnOnce(&u32, &u32, u32)) {} + | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider specifying the type of the closure parameters | -LL | let f = |_: &_, _: &_| (); - | ~~~~~~~~~~~~~~ +LL | let f = |_: &_, y: &u32, z| (); + | ~~~~~~~~~~~~~~~~~~~ error[E0308]: mismatched types --> $DIR/issue-105675.rs:5:5 @@ -27,105 +27,83 @@ error[E0308]: mismatched types LL | thing(f); | ^^^^^^^^ one type is more general than the other | - = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32)>` - found trait `FnOnce<(&u32, &u32)>` + = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32, u32)>` + found trait `for<'a> FnOnce<(&u32, &'a u32, u32)>` note: this closure does not fulfill the lifetime requirements --> $DIR/issue-105675.rs:4:13 | -LL | let f = |_, _| (); - | ^^^^^^ +LL | let f = | _ , y: &u32 , z | (); + | ^^^^^^^^^^^^^^^^^^^ note: the lifetime requirement is introduced here --> $DIR/issue-105675.rs:1:18 | -LL | fn thing(x: impl FnOnce(&u32, &u32)) {} - | ^^^^^^^^^^^^^^^^^^ -help: consider specifying the type of the closure parameters - | -LL | let f = |_: &_, _: &_| (); - | ~~~~~~~~~~~~~~ - -error: implementation of `FnOnce` is not general enough - --> $DIR/issue-105675.rs:5:5 - | -LL | thing(f); - | ^^^^^^^^ implementation of `FnOnce` is not general enough - | - = note: closure with signature `fn(&'2 u32, &u32)` must implement `FnOnce<(&'1 u32, &u32)>`, for any lifetime `'1`... - = note: ...but it actually implements `FnOnce<(&'2 u32, &u32)>`, for some specific lifetime `'2` - -error: implementation of `FnOnce` is not general enough - --> $DIR/issue-105675.rs:5:5 - | -LL | thing(f); - | ^^^^^^^^ implementation of `FnOnce` is not general enough - | - = note: closure with signature `fn(&u32, &'2 u32)` must implement `FnOnce<(&u32, &'1 u32)>`, for any lifetime `'1`... - = note: ...but it actually implements `FnOnce<(&u32, &'2 u32)>`, for some specific lifetime `'2` +LL | fn thing(x: impl FnOnce(&u32, &u32, u32)) {} + | ^^^^^^^^^^^^^^^^^^^^^^^ error[E0308]: mismatched types - --> $DIR/issue-105675.rs:11:5 + --> $DIR/issue-105675.rs:9:5 | LL | thing(f); | ^^^^^^^^ one type is more general than the other | - = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32)>` - found trait `FnOnce<(&u32, &u32)>` + = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32, u32)>` + found trait `FnOnce<(&u32, &u32, u32)>` note: this closure does not fulfill the lifetime requirements - --> $DIR/issue-105675.rs:10:13 + --> $DIR/issue-105675.rs:8:13 | -LL | let f = |x, y| (); - | ^^^^^^ +LL | let f = | x, y: _ , z: u32 | (); + | ^^^^^^^^^^^^^^^^^^^^^ note: the lifetime requirement is introduced here --> $DIR/issue-105675.rs:1:18 | -LL | fn thing(x: impl FnOnce(&u32, &u32)) {} - | ^^^^^^^^^^^^^^^^^^ +LL | fn thing(x: impl FnOnce(&u32, &u32, u32)) {} + | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider specifying the type of the closure parameters | -LL | let f = |x: &_, y: &_| (); - | ~~~~~~~~~~~~~~ +LL | let f = |x: &_, y: &_, z: u32| (); + | ~~~~~~~~~~~~~~~~~~~~~~ error[E0308]: mismatched types - --> $DIR/issue-105675.rs:11:5 + --> $DIR/issue-105675.rs:9:5 | LL | thing(f); | ^^^^^^^^ one type is more general than the other | - = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32)>` - found trait `FnOnce<(&u32, &u32)>` + = note: expected trait `for<'a, 'b> FnOnce<(&'a u32, &'b u32, u32)>` + found trait `FnOnce<(&u32, &u32, u32)>` note: this closure does not fulfill the lifetime requirements - --> $DIR/issue-105675.rs:10:13 + --> $DIR/issue-105675.rs:8:13 | -LL | let f = |x, y| (); - | ^^^^^^ +LL | let f = | x, y: _ , z: u32 | (); + | ^^^^^^^^^^^^^^^^^^^^^ note: the lifetime requirement is introduced here --> $DIR/issue-105675.rs:1:18 | -LL | fn thing(x: impl FnOnce(&u32, &u32)) {} - | ^^^^^^^^^^^^^^^^^^ +LL | fn thing(x: impl FnOnce(&u32, &u32, u32)) {} + | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider specifying the type of the closure parameters | -LL | let f = |x: &_, y: &_| (); - | ~~~~~~~~~~~~~~ +LL | let f = |x: &_, y: &_, z: u32| (); + | ~~~~~~~~~~~~~~~~~~~~~~ error: implementation of `FnOnce` is not general enough - --> $DIR/issue-105675.rs:11:5 + --> $DIR/issue-105675.rs:9:5 | LL | thing(f); | ^^^^^^^^ implementation of `FnOnce` is not general enough | - = note: closure with signature `fn(&'2 u32, &u32)` must implement `FnOnce<(&'1 u32, &u32)>`, for any lifetime `'1`... - = note: ...but it actually implements `FnOnce<(&'2 u32, &u32)>`, for some specific lifetime `'2` + = note: closure with signature `fn(&'2 u32, &u32, u32)` must implement `FnOnce<(&'1 u32, &u32, u32)>`, for any lifetime `'1`... + = note: ...but it actually implements `FnOnce<(&'2 u32, &u32, u32)>`, for some specific lifetime `'2` error: implementation of `FnOnce` is not general enough - --> $DIR/issue-105675.rs:11:5 + --> $DIR/issue-105675.rs:9:5 | LL | thing(f); | ^^^^^^^^ implementation of `FnOnce` is not general enough | - = note: closure with signature `fn(&u32, &'2 u32)` must implement `FnOnce<(&u32, &'1 u32)>`, for any lifetime `'1`... - = note: ...but it actually implements `FnOnce<(&u32, &'2 u32)>`, for some specific lifetime `'2` + = note: closure with signature `fn(&u32, &'2 u32, u32)` must implement `FnOnce<(&u32, &'1 u32, u32)>`, for any lifetime `'1`... + = note: ...but it actually implements `FnOnce<(&u32, &'2 u32, u32)>`, for some specific lifetime `'2` -error: aborting due to 8 previous errors +error: aborting due to 6 previous errors For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/lifetimes/issue-79187-2.stderr b/tests/ui/lifetimes/issue-79187-2.stderr index c14d3e0c61b..75fd87b3fe9 100644 --- a/tests/ui/lifetimes/issue-79187-2.stderr +++ b/tests/ui/lifetimes/issue-79187-2.stderr @@ -43,9 +43,9 @@ note: the lifetime requirement is introduced here | LL | fn take_foo(_: impl Foo) {} | ^^^ -help: consider changing the type of the closure parameters +help: consider specifying the type of the closure parameters | -LL | take_foo(|_: &_| a); +LL | take_foo(|a: &_| a); | ~~~~~~~ error[E0308]: mismatched types |
