diagnostics: do not suggest type name tweaks on type-inferred closure args
Fixes #111932
This commit is contained in:
parent
408bbd0406
commit
467bc9ffd5
6 changed files with 62 additions and 8 deletions
9
tests/ui/closures/issue-111932.rs
Normal file
9
tests/ui/closures/issue-111932.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
trait Foo: std::fmt::Debug {}
|
||||
|
||||
fn print_foos(foos: impl Iterator<Item = dyn Foo>) {
|
||||
foos.for_each(|foo| { //~ ERROR [E0277]
|
||||
println!("{:?}", foo); //~ ERROR [E0277]
|
||||
});
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
26
tests/ui/closures/issue-111932.stderr
Normal file
26
tests/ui/closures/issue-111932.stderr
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
error[E0277]: the size for values of type `(dyn Foo + 'static)` cannot be known at compilation time
|
||||
--> $DIR/issue-111932.rs:4:20
|
||||
|
|
||||
LL | foos.for_each(|foo| {
|
||||
| ^^^ doesn't have a size known at compile-time
|
||||
|
|
||||
= help: the trait `Sized` is not implemented for `(dyn Foo + 'static)`
|
||||
= note: all function arguments must have a statically known size
|
||||
= help: unsized fn params are gated as an unstable feature
|
||||
|
||||
error[E0277]: the size for values of type `dyn Foo` cannot be known at compilation time
|
||||
--> $DIR/issue-111932.rs:5:26
|
||||
|
|
||||
LL | println!("{:?}", foo);
|
||||
| ---- ^^^ doesn't have a size known at compile-time
|
||||
| |
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
= help: the trait `Sized` is not implemented for `dyn Foo`
|
||||
note: required by a bound in `core::fmt::rt::Argument::<'a>::new_debug`
|
||||
--> $SRC_DIR/core/src/fmt/rt.rs:LL:COL
|
||||
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
|
@ -5,10 +5,7 @@ LL | let f: fn([u8]) = |_| {};
|
|||
| ^ doesn't have a size known at compile-time
|
||||
|
|
||||
= help: the trait `Sized` is not implemented for `[u8]`
|
||||
help: function arguments must have a statically known size, borrowed types always have a known size
|
||||
|
|
||||
LL | let f: fn([u8]) = |&_| {};
|
||||
| +
|
||||
= note: all function arguments must have a statically known size
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue