E0308 for coroutines kinda cryptic
matthiaskrgr opened this issue · 2 comments
matthiaskrgr commented
Code
#![feature(coroutines)]
#![crate_type="lib"]
async fn async_fn() -> i32 {
move || {
yield 1_u32;
}
}
Current output
error[E0308]: mismatched types
--> 94BA3E9349D8E32F911462C954A9A278963282E62BF874B0EED4F13C0EFFE468.rs:5:5
|
5 | / move || {
6 | | yield 1_u32;
7 | | }
| |_____^ expected `i32`, found coroutine
|
= note: expected type `i32`
found coroutine `{coroutine@94BA3E9349D8E32F911462C954A9A278963282E62BF874B0EED4F13C0EFFE468.rs:5:5: 5:12}`
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0308`.
Desired output
`found coroutine<u32>` or something like that?
Rationale and extra context
No response
Other cases
No response
Anything else?
No response
compiler-errors commented
This is no worse than a closure error.
error[E0308]: mismatched types
--> src/lib.rs:2:5
|
2 | / move || {
3 | |
4 | | }
| |_____^ expected `i32`, found closure
|
= note: expected type `i32`
found closure `{closure@src/lib.rs:2:5: 2:12}`
Is it worse because you generate files with wild names like 94BA3E9349D8E32F911462C954A9A278963282E62BF874B0EED4F13C0EFFE468.rs
?
compiler-errors commented
That being said, if you think closure type names are cryptic ({closure@FILE:LL:CC}
), then that's a separate issue. Probably one that has had discussions/bikeshedding in the past?