about summary refs log tree commit diff
path: root/src/test/ui/async-await/issues
diff options
context:
space:
mode:
authorNathan Corbyn <me@nathancorbyn.com>2019-06-26 13:48:41 +0100
committerNathan Corbyn <me@nathancorbyn.com>2019-06-26 15:49:10 +0100
commit5cb841d72e70f92fc4318833db4824d07ab4c911 (patch)
tree521b90e280f8e5e638c8adddfaf17f8043bd7850 /src/test/ui/async-await/issues
parentd3e2cec29225a46298ec4ebf082f34ebd7cfeecf (diff)
downloadrust-5cb841d72e70f92fc4318833db4824d07ab4c911.tar.gz
rust-5cb841d72e70f92fc4318833db4824d07ab4c911.zip
Don't ICE on item in `.await` expression
Diffstat (limited to 'src/test/ui/async-await/issues')
-rw-r--r--src/test/ui/async-await/issues/issue-51719.rs3
-rw-r--r--src/test/ui/async-await/issues/issue-51719.stderr4
-rw-r--r--src/test/ui/async-await/issues/issue-62009.rs19
-rw-r--r--src/test/ui/async-await/issues/issue-62009.stderr49
4 files changed, 72 insertions, 3 deletions
diff --git a/src/test/ui/async-await/issues/issue-51719.rs b/src/test/ui/async-await/issues/issue-51719.rs
index 5966edd0bf0..361a49c2774 100644
--- a/src/test/ui/async-await/issues/issue-51719.rs
+++ b/src/test/ui/async-await/issues/issue-51719.rs
@@ -7,7 +7,8 @@
 async fn foo() {}
 
 fn make_generator() {
-    let _gen = || foo.await; //~ ERROR `await` is only allowed inside `async` functions and blocks
+    let _gen = || foo().await;
+    //~^ ERROR `await` is only allowed inside `async` functions and blocks
 }
 
 fn main() {}
diff --git a/src/test/ui/async-await/issues/issue-51719.stderr b/src/test/ui/async-await/issues/issue-51719.stderr
index c06165b2446..2a9fb6cf0df 100644
--- a/src/test/ui/async-await/issues/issue-51719.stderr
+++ b/src/test/ui/async-await/issues/issue-51719.stderr
@@ -1,8 +1,8 @@
 error[E0728]: `await` is only allowed inside `async` functions and blocks
   --> $DIR/issue-51719.rs:10:19
    |
-LL |     let _gen = || foo.await;
-   |                -- ^^^^^^^^^ only allowed inside `async` functions and blocks
+LL |     let _gen = || foo().await;
+   |                -- ^^^^^^^^^^^ only allowed inside `async` functions and blocks
    |                |
    |                this is not `async`
 
diff --git a/src/test/ui/async-await/issues/issue-62009.rs b/src/test/ui/async-await/issues/issue-62009.rs
new file mode 100644
index 00000000000..e2d58cac24d
--- /dev/null
+++ b/src/test/ui/async-await/issues/issue-62009.rs
@@ -0,0 +1,19 @@
+// edition:2018
+
+#![feature(async_await)]
+
+async fn print_dur() {}
+
+fn main() {
+    async { let (); }.await;
+    //~^ ERROR `await` is only allowed inside `async` functions and blocks
+    async {
+    //~^ ERROR `await` is only allowed inside `async` functions and blocks
+        let task1 = print_dur().await;
+    }.await;
+    (async || 2333)().await;
+    //~^ ERROR `await` is only allowed inside `async` functions and blocks
+    (|_| 2333).await;
+    //~^ ERROR `await` is only allowed inside `async` functions and blocks
+    //~^^ ERROR
+}
diff --git a/src/test/ui/async-await/issues/issue-62009.stderr b/src/test/ui/async-await/issues/issue-62009.stderr
new file mode 100644
index 00000000000..53d1f34fe4f
--- /dev/null
+++ b/src/test/ui/async-await/issues/issue-62009.stderr
@@ -0,0 +1,49 @@
+error[E0728]: `await` is only allowed inside `async` functions and blocks
+  --> $DIR/issue-62009.rs:8:5
+   |
+LL | fn main() {
+   |    ---- this is not `async`
+LL |     async { let (); }.await;
+   |     ^^^^^^^^^^^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
+
+error[E0728]: `await` is only allowed inside `async` functions and blocks
+  --> $DIR/issue-62009.rs:10:5
+   |
+LL |   fn main() {
+   |      ---- this is not `async`
+...
+LL | /     async {
+LL | |
+LL | |         let task1 = print_dur().await;
+LL | |     }.await;
+   | |___________^ only allowed inside `async` functions and blocks
+
+error[E0728]: `await` is only allowed inside `async` functions and blocks
+  --> $DIR/issue-62009.rs:14:5
+   |
+LL | fn main() {
+   |    ---- this is not `async`
+...
+LL |     (async || 2333)().await;
+   |     ^^^^^^^^^^^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
+
+error[E0728]: `await` is only allowed inside `async` functions and blocks
+  --> $DIR/issue-62009.rs:16:5
+   |
+LL | fn main() {
+   |    ---- this is not `async`
+...
+LL |     (|_| 2333).await;
+   |     ^^^^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
+
+error[E0277]: the trait bound `[closure@$DIR/issue-62009.rs:16:5: 16:15]: std::future::Future` is not satisfied
+  --> $DIR/issue-62009.rs:16:5
+   |
+LL |     (|_| 2333).await;
+   |     ^^^^^^^^^^^^^^^^ the trait `std::future::Future` is not implemented for `[closure@$DIR/issue-62009.rs:16:5: 16:15]`
+   |
+   = note: required by `std::future::poll_with_tls_context`
+
+error: aborting due to 5 previous errors
+
+For more information about this error, try `rustc --explain E0277`.