forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#81496 - guswynn:expected_async_block, r=oli…
…-obk name async generators something more human friendly in type error diagnostic fixes rust-lang#81457 Some details: 1. I opted to load the generator kind from the hir in TyCategory. I also use 1 impl in the hir for the descr 2. I named both the source of the future, in addition to the general type (`future`), not sure what is preferred 3. I am not sure what is required to make sure "generator" is not referred to anywhere. A brief `rg "\"generator\"" showed me that most diagnostics correctly distinguish from generators and async generator, but the `descr` of `DefKind` is pretty general (not sure how thats used) 4. should the descr impl of AsyncGeneratorKind use its display impl instead of copying the string?
- Loading branch information
Showing
8 changed files
with
103 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
// edition:2018 | ||
#![feature(async_closure)] | ||
use std::future::Future; | ||
|
||
async fn one() {} | ||
async fn two() {} | ||
|
||
fn fun<F: Future<Output = ()>>(f1: F, f2: F) {} | ||
fn main() { | ||
fun(async {}, async {}); | ||
//~^ ERROR mismatched types | ||
fun(one(), two()); | ||
//~^ ERROR mismatched types | ||
fun((async || {})(), (async || {})()); | ||
//~^ ERROR mismatched types | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
error[E0308]: mismatched types | ||
--> $DIR/generator-desc.rs:10:25 | ||
| | ||
LL | fun(async {}, async {}); | ||
| -- ^^ expected `async` block, found a different `async` block | ||
| | | ||
| the expected `async` block | ||
| | ||
= note: expected `async` block `[static generator@$DIR/generator-desc.rs:10:15: 10:17]` | ||
found `async` block `[static generator@$DIR/generator-desc.rs:10:25: 10:27]` | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/generator-desc.rs:12:16 | ||
| | ||
LL | async fn one() {} | ||
| - the `Output` of this `async fn`'s expected opaque type | ||
LL | async fn two() {} | ||
| - the `Output` of this `async fn`'s found opaque type | ||
... | ||
LL | fun(one(), two()); | ||
| ^^^^^ expected opaque type, found a different opaque type | ||
| | ||
= note: expected opaque type `impl Future` (opaque type at <$DIR/generator-desc.rs:5:16>) | ||
found opaque type `impl Future` (opaque type at <$DIR/generator-desc.rs:6:16>) | ||
= help: consider `await`ing on both `Future`s | ||
= note: distinct uses of `impl Trait` result in different opaque types | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/generator-desc.rs:14:26 | ||
| | ||
LL | fun((async || {})(), (async || {})()); | ||
| -- ^^^^^^^^^^^^^^^ expected `async` closure body, found a different `async` closure body | ||
| | | ||
| the expected `async` closure body | ||
| | ||
::: $SRC_DIR/core/src/future/mod.rs:LL:COL | ||
| | ||
LL | pub const fn from_generator<T>(gen: T) -> impl Future<Output = T::Return> | ||
| ------------------------------- | ||
| | | ||
| the expected opaque type | ||
| the found opaque type | ||
| | ||
= note: expected opaque type `impl Future` (`async` closure body) | ||
found opaque type `impl Future` (`async` closure body) | ||
|
||
error: aborting due to 3 previous errors | ||
|
||
For more information about this error, try `rustc --explain E0308`. |