diff options
| author | Gus Wynn <guswynn@gmail.com> | 2021-01-28 18:16:52 -0800 |
|---|---|---|
| committer | Gus Wynn <guswynn@gmail.com> | 2021-02-15 08:51:08 -0800 |
| commit | c28d86c53b94e475fc3ea707c3289acce253f091 (patch) | |
| tree | 0cb0a4524738cb403077fc85ec6b0ccf264236b2 /src | |
| parent | b05fd2a15de7c9e50110e9ed4c01f114be215739 (diff) | |
| download | rust-c28d86c53b94e475fc3ea707c3289acce253f091.tar.gz rust-c28d86c53b94e475fc3ea707c3289acce253f091.zip | |
name async generators something more human friendly in type error diagnostics
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/async-await/generator-desc.rs | 16 | ||||
| -rw-r--r-- | src/test/ui/async-await/generator-desc.stderr | 49 |
2 files changed, 65 insertions, 0 deletions
diff --git a/src/test/ui/async-await/generator-desc.rs b/src/test/ui/async-await/generator-desc.rs new file mode 100644 index 00000000000..50081201667 --- /dev/null +++ b/src/test/ui/async-await/generator-desc.rs @@ -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 +} diff --git a/src/test/ui/async-await/generator-desc.stderr b/src/test/ui/async-await/generator-desc.stderr new file mode 100644 index 00000000000..b85926c7a03 --- /dev/null +++ b/src/test/ui/async-await/generator-desc.stderr @@ -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`. |
