480c4a18d5
Remove confusing 'while checking' note from opaque future type mismatches Maybe I'm just misinterpreting the wording of the note. The only value I can see in this note is that it points out where the async's opaque future is coming from, but the way it's doing it is misleading IMO. For example: ```rust note: while checking the return type of the `async fn` --> $DIR/dont-suggest-missing-await.rs:7:24 | LL | async fn make_u32() -> u32 { | ^^^ checked the `Output` of this `async fn`, found opaque type ``` We point at the type `u32` in the HIR, but then say "found opaque type". We also say "while checking"... but we're typechecking a totally different function when we get this type mismatch! r? ``@estebank`` but feel free to reassign and/or take your time reviewing this. I'd be inclined to also discuss reworking the presentation of this type mismatch to restore some of these labels in a way that makes it more clear what it's trying to point out.
133 lines
3.9 KiB
Plaintext
133 lines
3.9 KiB
Plaintext
error[E0308]: mismatched types
|
|
--> $DIR/suggest-missing-await.rs:12:14
|
|
|
|
|
LL | take_u32(x)
|
|
| -------- ^ expected `u32`, found opaque type
|
|
| |
|
|
| arguments to this function are incorrect
|
|
|
|
|
= note: expected type `u32`
|
|
found opaque type `impl Future<Output = u32>`
|
|
note: function defined here
|
|
--> $DIR/suggest-missing-await.rs:3:4
|
|
|
|
|
LL | fn take_u32(_x: u32) {}
|
|
| ^^^^^^^^ -------
|
|
help: consider `await`ing on the `Future`
|
|
|
|
|
LL | take_u32(x.await)
|
|
| ++++++
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/suggest-missing-await.rs:22:5
|
|
|
|
|
LL | dummy()
|
|
| ^^^^^^^ expected `()`, found opaque type
|
|
|
|
|
= note: expected unit type `()`
|
|
found opaque type `impl Future<Output = ()>`
|
|
help: consider `await`ing on the `Future`
|
|
|
|
|
LL | dummy().await
|
|
| ++++++
|
|
help: consider using a semicolon here
|
|
|
|
|
LL | dummy();
|
|
| +
|
|
|
|
error[E0308]: `if` and `else` have incompatible types
|
|
--> $DIR/suggest-missing-await.rs:35:9
|
|
|
|
|
LL | let _x = if true {
|
|
| ______________-
|
|
LL | | dummy()
|
|
| | ------- expected because of this
|
|
LL | |
|
|
LL | | } else {
|
|
LL | | dummy().await
|
|
| | ^^^^^^^^^^^^^ expected opaque type, found `()`
|
|
LL | |
|
|
LL | | };
|
|
| |_____- `if` and `else` have incompatible types
|
|
|
|
|
= note: expected opaque type `impl Future<Output = ()>`
|
|
found unit type `()`
|
|
help: consider `await`ing on the `Future`
|
|
|
|
|
LL | dummy().await
|
|
| ++++++
|
|
|
|
error[E0308]: `match` arms have incompatible types
|
|
--> $DIR/suggest-missing-await.rs:45:14
|
|
|
|
|
LL | let _x = match 0usize {
|
|
| ______________-
|
|
LL | | 0 => dummy(),
|
|
| | ------- this is found to be of type `impl Future<Output = ()>`
|
|
LL | | 1 => dummy(),
|
|
| | ------- this is found to be of type `impl Future<Output = ()>`
|
|
LL | | 2 => dummy().await,
|
|
| | ^^^^^^^^^^^^^ expected opaque type, found `()`
|
|
LL | |
|
|
LL | | };
|
|
| |_____- `match` arms have incompatible types
|
|
|
|
|
= note: expected opaque type `impl Future<Output = ()>`
|
|
found unit type `()`
|
|
help: consider `await`ing on the `Future`
|
|
|
|
|
LL ~ 0 => dummy().await,
|
|
LL ~ 1 => dummy().await,
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/suggest-missing-await.rs:53:9
|
|
|
|
|
LL | let _x = match dummy() {
|
|
| ------- this expression has type `impl Future<Output = ()>`
|
|
LL | () => {}
|
|
| ^^ expected opaque type, found `()`
|
|
|
|
|
= note: expected opaque type `impl Future<Output = ()>`
|
|
found unit type `()`
|
|
help: consider `await`ing on the `Future`
|
|
|
|
|
LL | let _x = match dummy().await {
|
|
| ++++++
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/suggest-missing-await.rs:67:9
|
|
|
|
|
LL | match dummy_result() {
|
|
| -------------- this expression has type `impl Future<Output = Result<(), ()>>`
|
|
...
|
|
LL | Ok(_) => {}
|
|
| ^^^^^ expected opaque type, found `Result<_, _>`
|
|
|
|
|
= note: expected opaque type `impl Future<Output = Result<(), ()>>`
|
|
found enum `Result<_, _>`
|
|
help: consider `await`ing on the `Future`
|
|
|
|
|
LL | match dummy_result().await {
|
|
| ++++++
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/suggest-missing-await.rs:69:9
|
|
|
|
|
LL | match dummy_result() {
|
|
| -------------- this expression has type `impl Future<Output = Result<(), ()>>`
|
|
...
|
|
LL | Err(_) => {}
|
|
| ^^^^^^ expected opaque type, found `Result<_, _>`
|
|
|
|
|
= note: expected opaque type `impl Future<Output = Result<(), ()>>`
|
|
found enum `Result<_, _>`
|
|
help: consider `await`ing on the `Future`
|
|
|
|
|
LL | match dummy_result().await {
|
|
| ++++++
|
|
|
|
error: aborting due to 7 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0308`.
|