about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorcsmoe <csmoe@msn.com>2020-08-20 18:42:08 +0800
committercsmoe <csmoe@msn.com>2020-08-26 17:40:08 +0800
commit8ee206a80dab320ee76a2aa9324c587368df3921 (patch)
tree732a8cd716ef9ce5b62cd01053f7c2d6d08d8b36 /src/test
parent2271b081ebdb10af25aca0206e53931eaed92d3a (diff)
downloadrust-8ee206a80dab320ee76a2aa9324c587368df3921.tar.gz
rust-8ee206a80dab320ee76a2aa9324c587368df3921.zip
suggest await on unexpected types
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/async-await/issue-61076.rs5
-rw-r--r--src/test/ui/async-await/issue-61076.stderr46
2 files changed, 40 insertions, 11 deletions
diff --git a/src/test/ui/async-await/issue-61076.rs b/src/test/ui/async-await/issue-61076.rs
index 743f1959828..e383a9126f7 100644
--- a/src/test/ui/async-await/issue-61076.rs
+++ b/src/test/ui/async-await/issue-61076.rs
@@ -64,5 +64,10 @@ async fn baz() -> Result<(), ()> {
     Ok(())
 }
 
+async fn match_() {
+    match tuple() {
+        Tuple(_) => {} //~ ERROR mismatched types
+    }
+}
 
 fn main() {}
diff --git a/src/test/ui/async-await/issue-61076.stderr b/src/test/ui/async-await/issue-61076.stderr
index 692117a06b0..69b6e8c3cf5 100644
--- a/src/test/ui/async-await/issue-61076.stderr
+++ b/src/test/ui/async-await/issue-61076.stderr
@@ -26,28 +26,52 @@ error[E0609]: no field `0` on type `impl std::future::Future`
   --> $DIR/issue-61076.rs:58:26
    |
 LL |     let _: i32 = tuple().0;
-   |                  --------^
-   |                  |
-   |                  help: consider await before field access: `tuple().await.0`
+   |                          ^
+   |
+help: consider awaiting before field access
+   |
+LL |     let _: i32 = tuple().await.0;
+   |                         ^^^^^^
 
 error[E0609]: no field `a` on type `impl std::future::Future`
   --> $DIR/issue-61076.rs:60:28
    |
 LL |     let _: i32 = struct_().a;
-   |                  ----------^
-   |                  |
-   |                  help: consider await before field access: `struct_().await.a`
+   |                            ^
+   |
+help: consider awaiting before field access
+   |
+LL |     let _: i32 = struct_().await.a;
+   |                           ^^^^^^
 
 error[E0599]: no method named `method` found for opaque type `impl std::future::Future` in the current scope
   --> $DIR/issue-61076.rs:62:15
    |
 LL |     struct_().method();
+   |               ^^^^^^ method not found in `impl std::future::Future`
+   |
+help: consider awaiting before this method call
+   |
+LL |     struct_().await.method();
    |               ^^^^^^
-   |               |
-   |               method not found in `impl std::future::Future`
-   |               help: consider await before this method call: `await.method`
 
-error: aborting due to 5 previous errors
+error[E0308]: mismatched types
+  --> $DIR/issue-61076.rs:69:9
+   |
+LL | async fn tuple() -> Tuple {
+   |                     ----- the `Output` of this `async fn`'s expected opaque type
+...
+LL |         Tuple(_) => {}
+   |         ^^^^^^^^ expected opaque type, found struct `Tuple`
+   |
+   = note: expected opaque type `impl std::future::Future`
+                   found struct `Tuple`
+help: consider awaiting on the future
+   |
+LL |     match tuple().await {
+   |                  ^^^^^^
+
+error: aborting due to 6 previous errors
 
-Some errors have detailed explanations: E0277, E0599, E0609.
+Some errors have detailed explanations: E0277, E0308, E0599, E0609.
 For more information about an error, try `rustc --explain E0277`.