summaryrefslogtreecommitdiffstats
path: root/tests/ui/async-await/issues
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/async-await/issues')
-rw-r--r--tests/ui/async-await/issues/auxiliary/issue_67893.rs7
-rw-r--r--tests/ui/async-await/issues/issue-107280.rs5
-rw-r--r--tests/ui/async-await/issues/issue-107280.stderr67
-rw-r--r--tests/ui/async-await/issues/issue-62009-1.stderr10
-rw-r--r--tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr32
-rw-r--r--tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs7
-rw-r--r--tests/ui/async-await/issues/issue-66695-static-refs.rs4
-rw-r--r--tests/ui/async-await/issues/issue-67611-static-mut-refs.rs6
-rw-r--r--tests/ui/async-await/issues/issue-67893.rs2
-rw-r--r--tests/ui/async-await/issues/issue-67893.stderr28
-rw-r--r--tests/ui/async-await/issues/issue-78600.rs2
-rw-r--r--tests/ui/async-await/issues/issue-78600.stderr14
12 files changed, 40 insertions, 144 deletions
diff --git a/tests/ui/async-await/issues/auxiliary/issue_67893.rs b/tests/ui/async-await/issues/auxiliary/issue_67893.rs
index d53944698..efde4d286 100644
--- a/tests/ui/async-await/issues/auxiliary/issue_67893.rs
+++ b/tests/ui/async-await/issues/auxiliary/issue_67893.rs
@@ -1,13 +1,12 @@
-// revisions: no_drop_tracking drop_tracking drop_tracking_mir
-// [drop_tracking] compile-flags: -Zdrop-tracking
-// [drop_tracking_mir] compile-flags: -Zdrop-tracking-mir
// edition:2018
use std::sync::{Arc, Mutex};
+fn make_arc() -> Arc<Mutex<()>> { unimplemented!() }
+
pub async fn f(_: ()) {}
pub async fn run() {
- let x: Arc<Mutex<()>> = unimplemented!();
+ let x: Arc<Mutex<()>> = make_arc();
f(*x.lock().unwrap()).await;
}
diff --git a/tests/ui/async-await/issues/issue-107280.rs b/tests/ui/async-await/issues/issue-107280.rs
index 85fce8740..81ae9553c 100644
--- a/tests/ui/async-await/issues/issue-107280.rs
+++ b/tests/ui/async-await/issues/issue-107280.rs
@@ -3,11 +3,6 @@
async fn foo() {
inner::<false>().await
//~^ ERROR: function takes 2 generic arguments but 1 generic argument was supplied
- //~| ERROR: type inside `async fn` body must be known in this context
- //~| ERROR: type inside `async fn` body must be known in this context
- //~| ERROR: type inside `async fn` body must be known in this context
- //~| ERROR: type inside `async fn` body must be known in this context
- //~| ERROR: type inside `async fn` body must be known in this context
}
async fn inner<T, const PING: bool>() {}
diff --git a/tests/ui/async-await/issues/issue-107280.stderr b/tests/ui/async-await/issues/issue-107280.stderr
index 2e69862a0..c5fd5c5bf 100644
--- a/tests/ui/async-await/issues/issue-107280.stderr
+++ b/tests/ui/async-await/issues/issue-107280.stderr
@@ -7,7 +7,7 @@ LL | inner::<false>().await
| expected 2 generic arguments
|
note: function defined here, with 2 generic parameters: `T`, `PING`
- --> $DIR/issue-107280.rs:13:10
+ --> $DIR/issue-107280.rs:8:10
|
LL | async fn inner<T, const PING: bool>() {}
| ^^^^^ - ----------------
@@ -16,67 +16,6 @@ help: add missing generic argument
LL | inner::<false, PING>().await
| ++++++
-error[E0698]: type inside `async fn` body must be known in this context
- --> $DIR/issue-107280.rs:4:5
- |
-LL | inner::<false>().await
- | ^^^^^^^^^^^^^^ cannot infer the value of const parameter `PING` declared on the function `inner`
- |
-note: the type is part of the `async fn` body because of this `await`
- --> $DIR/issue-107280.rs:4:22
- |
-LL | inner::<false>().await
- | ^^^^^
-
-error[E0698]: type inside `async fn` body must be known in this context
- --> $DIR/issue-107280.rs:4:5
- |
-LL | inner::<false>().await
- | ^^^^^^^^^^^^^^ cannot infer the value of const parameter `PING` declared on the function `inner`
- |
-note: the type is part of the `async fn` body because of this `await`
- --> $DIR/issue-107280.rs:4:22
- |
-LL | inner::<false>().await
- | ^^^^^
-
-error[E0698]: type inside `async fn` body must be known in this context
- --> $DIR/issue-107280.rs:4:5
- |
-LL | inner::<false>().await
- | ^^^^^^^^^^^^^^ cannot infer the value of const parameter `PING` declared on the function `inner`
- |
-note: the type is part of the `async fn` body because of this `await`
- --> $DIR/issue-107280.rs:4:22
- |
-LL | inner::<false>().await
- | ^^^^^
-
-error[E0698]: type inside `async fn` body must be known in this context
- --> $DIR/issue-107280.rs:4:5
- |
-LL | inner::<false>().await
- | ^^^^^^^^^^^^^^ cannot infer the value of const parameter `PING` declared on the function `inner`
- |
-note: the type is part of the `async fn` body because of this `await`
- --> $DIR/issue-107280.rs:4:22
- |
-LL | inner::<false>().await
- | ^^^^^
-
-error[E0698]: type inside `async fn` body must be known in this context
- --> $DIR/issue-107280.rs:4:5
- |
-LL | inner::<false>().await
- | ^^^^^^^^^^^^^^ cannot infer the value of const parameter `PING` declared on the function `inner`
- |
-note: the type is part of the `async fn` body because of this `await`
- --> $DIR/issue-107280.rs:4:22
- |
-LL | inner::<false>().await
- | ^^^^^
-
-error: aborting due to 6 previous errors
+error: aborting due to previous error
-Some errors have detailed explanations: E0107, E0698.
-For more information about an error, try `rustc --explain E0107`.
+For more information about this error, try `rustc --explain E0107`.
diff --git a/tests/ui/async-await/issues/issue-62009-1.stderr b/tests/ui/async-await/issues/issue-62009-1.stderr
index 53d0577a1..bb617d090 100644
--- a/tests/ui/async-await/issues/issue-62009-1.stderr
+++ b/tests/ui/async-await/issues/issue-62009-1.stderr
@@ -24,18 +24,18 @@ LL | fn main() {
LL | (|_| 2333).await;
| ^^^^^ only allowed inside `async` functions and blocks
-error[E0277]: `[closure@$DIR/issue-62009-1.rs:12:6: 12:9]` is not a future
+error[E0277]: `{closure@$DIR/issue-62009-1.rs:12:6: 12:9}` is not a future
--> $DIR/issue-62009-1.rs:12:16
|
LL | (|_| 2333).await;
| -^^^^^
| ||
- | |`[closure@$DIR/issue-62009-1.rs:12:6: 12:9]` is not a future
+ | |`{closure@$DIR/issue-62009-1.rs:12:6: 12:9}` is not a future
| help: remove the `.await`
|
- = help: the trait `Future` is not implemented for closure `[closure@$DIR/issue-62009-1.rs:12:6: 12:9]`
- = note: [closure@$DIR/issue-62009-1.rs:12:6: 12:9] must be a future or must implement `IntoFuture` to be awaited
- = note: required for `[closure@$DIR/issue-62009-1.rs:12:6: 12:9]` to implement `IntoFuture`
+ = help: the trait `Future` is not implemented for closure `{closure@$DIR/issue-62009-1.rs:12:6: 12:9}`
+ = note: {closure@$DIR/issue-62009-1.rs:12:6: 12:9} must be a future or must implement `IntoFuture` to be awaited
+ = note: required for `{closure@$DIR/issue-62009-1.rs:12:6: 12:9}` to implement `IntoFuture`
error: aborting due to 4 previous errors
diff --git a/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr b/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr
deleted file mode 100644
index 53d326202..000000000
--- a/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking.stderr
+++ /dev/null
@@ -1,32 +0,0 @@
-error: future cannot be sent between threads safely
- --> $DIR/issue-65436-raw-ptr-not-send.rs:17:17
- |
-LL | assert_send(async {
- | _________________^
-LL | |
-LL | | bar(Foo(std::ptr::null())).await;
-LL | | })
- | |_____^ future created by async block is not `Send`
- |
- = help: within `[async block@$DIR/issue-65436-raw-ptr-not-send.rs:17:17: 20:6]`, the trait `Send` is not implemented for `*const u8`
-note: future is not `Send` as this value is used across an await
- --> $DIR/issue-65436-raw-ptr-not-send.rs:19:36
- |
-LL | bar(Foo(std::ptr::null())).await;
- | ---------------- ^^^^^- `std::ptr::null()` is later dropped here
- | | |
- | | await occurs here, with `std::ptr::null()` maybe used later
- | has type `*const u8` which is not `Send`
-help: consider moving this into a `let` binding to create a shorter lived borrow
- --> $DIR/issue-65436-raw-ptr-not-send.rs:19:13
- |
-LL | bar(Foo(std::ptr::null())).await;
- | ^^^^^^^^^^^^^^^^^^^^^
-note: required by a bound in `assert_send`
- --> $DIR/issue-65436-raw-ptr-not-send.rs:14:19
- |
-LL | fn assert_send<T: Send>(_: T) {}
- | ^^^^ required by this bound in `assert_send`
-
-error: aborting due to previous error
-
diff --git a/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs b/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs
index d7ef92951..ef6f105f3 100644
--- a/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs
+++ b/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs
@@ -1,9 +1,5 @@
// edition:2018
-// revisions: no_drop_tracking drop_tracking drop_tracking_mir
-// [drop_tracking] compile-flags: -Zdrop-tracking
-// [drop_tracking_mir] compile-flags: -Zdrop-tracking-mir
-// [drop_tracking] check-pass
-// [drop_tracking_mir] check-pass
+// check-pass
struct Foo(*const u8);
@@ -15,7 +11,6 @@ fn assert_send<T: Send>(_: T) {}
fn main() {
assert_send(async {
- //[no_drop_tracking]~^ ERROR future cannot be sent between threads safely
bar(Foo(std::ptr::null())).await;
})
}
diff --git a/tests/ui/async-await/issues/issue-66695-static-refs.rs b/tests/ui/async-await/issues/issue-66695-static-refs.rs
index f0609713b..1b0e1c6c9 100644
--- a/tests/ui/async-await/issues/issue-66695-static-refs.rs
+++ b/tests/ui/async-await/issues/issue-66695-static-refs.rs
@@ -1,12 +1,15 @@
// build-pass
// edition:2018
+#![feature(if_let_guard)]
+
static A: [i32; 5] = [1, 2, 3, 4, 5];
async fn fun() {
let u = A[async { 1 }.await];
match A {
i if async { true }.await => (),
+ i if let Some(1) = async { Some(1) }.await => (),
_ => (),
}
}
@@ -18,6 +21,7 @@ fn main() {
async {
match A {
i if async { true }.await => (),
+ i if let Some(2) = async { Some(2) }.await => (),
_ => (),
}
};
diff --git a/tests/ui/async-await/issues/issue-67611-static-mut-refs.rs b/tests/ui/async-await/issues/issue-67611-static-mut-refs.rs
index c4f8f607d..caed76269 100644
--- a/tests/ui/async-await/issues/issue-67611-static-mut-refs.rs
+++ b/tests/ui/async-await/issues/issue-67611-static-mut-refs.rs
@@ -1,9 +1,7 @@
// build-pass
// edition:2018
-// revisions: no_drop_tracking drop_tracking drop_tracking_mir
-// [drop_tracking] compile-flags: -Zdrop-tracking
-// [drop_tracking_mir] compile-flags: -Zdrop-tracking-mir
+#![feature(if_let_guard)]
static mut A: [i32; 5] = [1, 2, 3, 4, 5];
@@ -14,6 +12,7 @@ async fn fun() {
unsafe {
match A {
i if async { true }.await => (),
+ i if let Some(1) = async { Some(1) }.await => (),
_ => (),
}
}
@@ -27,6 +26,7 @@ fn main() {
unsafe {
match A {
i if async { true }.await => (),
+ i if let Some(2) = async { Some(2) }.await => (),
_ => (),
}
}
diff --git a/tests/ui/async-await/issues/issue-67893.rs b/tests/ui/async-await/issues/issue-67893.rs
index d73772e5f..359c75f17 100644
--- a/tests/ui/async-await/issues/issue-67893.rs
+++ b/tests/ui/async-await/issues/issue-67893.rs
@@ -7,5 +7,5 @@ fn g(_: impl Send) {}
fn main() {
g(issue_67893::run())
- //~^ ERROR future cannot be sent between threads safely
+ //~^ ERROR `MutexGuard<'_, ()>` cannot be sent between threads safely
}
diff --git a/tests/ui/async-await/issues/issue-67893.stderr b/tests/ui/async-await/issues/issue-67893.stderr
index c941b9eeb..f36269e8f 100644
--- a/tests/ui/async-await/issues/issue-67893.stderr
+++ b/tests/ui/async-await/issues/issue-67893.stderr
@@ -1,18 +1,27 @@
-error: future cannot be sent between threads safely
+error[E0277]: `MutexGuard<'_, ()>` cannot be sent between threads safely
--> $DIR/issue-67893.rs:9:7
|
LL | g(issue_67893::run())
- | ^^^^^^^^^^^^^^^^^^ future is not `Send`
+ | - ^^^^^^^^^^^^^^^^^^ `MutexGuard<'_, ()>` cannot be sent between threads safely
+ | |
+ | required by a bound introduced by this call
+ |
+ ::: $DIR/auxiliary/issue_67893.rs:9:20
+ |
+LL | pub async fn run() {
+ | - within this `impl Future<Output = ()>`
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `MutexGuard<'_, ()>`
-note: future is not `Send` as this value is used across an await
- --> $DIR/auxiliary/issue_67893.rs:12:27
+ = note: required because it captures the following types: `Arc<Mutex<()>>`, `MutexGuard<'_, ()>`, `impl Future<Output = ()>`
+note: required because it's used within this `async fn` body
+ --> $DIR/auxiliary/issue_67893.rs:9:20
|
-LL | f(*x.lock().unwrap()).await;
- | ----------------- ^^^^^- `x.lock().unwrap()` is later dropped here
- | | |
- | | await occurs here, with `x.lock().unwrap()` maybe used later
- | has type `MutexGuard<'_, ()>` which is not `Send`
+LL | pub async fn run() {
+ | ____________________^
+LL | | let x: Arc<Mutex<()>> = make_arc();
+LL | | f(*x.lock().unwrap()).await;
+LL | | }
+ | |_^
note: required by a bound in `g`
--> $DIR/issue-67893.rs:6:14
|
@@ -21,3 +30,4 @@ LL | fn g(_: impl Send) {}
error: aborting due to previous error
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/async-await/issues/issue-78600.rs b/tests/ui/async-await/issues/issue-78600.rs
index 8aaeaecf3..4303fc795 100644
--- a/tests/ui/async-await/issues/issue-78600.rs
+++ b/tests/ui/async-await/issues/issue-78600.rs
@@ -1,10 +1,10 @@
+// check-pass
// edition:2018
struct S<'a>(&'a i32);
impl<'a> S<'a> {
async fn new(i: &'a i32) -> Result<Self, ()> {
- //~^ ERROR: `async fn`
Ok(S(&22))
}
}
diff --git a/tests/ui/async-await/issues/issue-78600.stderr b/tests/ui/async-await/issues/issue-78600.stderr
deleted file mode 100644
index 37eafa996..000000000
--- a/tests/ui/async-await/issues/issue-78600.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0658]: `async fn` return type cannot contain a projection or `Self` that references lifetimes from a parent scope
- --> $DIR/issue-78600.rs:6:33
- |
-LL | async fn new(i: &'a i32) -> Result<Self, ()> {
- | ^^^^^^^----^^^^^
- | |
- | help: consider spelling out the type instead: `S<'a>`
- |
- = note: see issue #103532 <https://github.com/rust-lang/rust/issues/103532> for more information
- = help: add `#![feature(impl_trait_projections)]` to the crate attributes to enable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.