about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/async-await/issue-64130-4-async-move.stderr2
-rw-r--r--src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs16
-rw-r--r--src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.stderr26
3 files changed, 43 insertions, 1 deletions
diff --git a/src/test/ui/async-await/issue-64130-4-async-move.stderr b/src/test/ui/async-await/issue-64130-4-async-move.stderr
index f59dbc26384..1e52d74f155 100644
--- a/src/test/ui/async-await/issue-64130-4-async-move.stderr
+++ b/src/test/ui/async-await/issue-64130-4-async-move.stderr
@@ -25,7 +25,7 @@ LL |                 let _x = get().await;
 ...
 LL |     }
    |     - `client` is later dropped here
-help: consider moving this method call into a `let` binding to create a shorter lived borrow
+help: consider moving this into a `let` binding to create a shorter lived borrow
   --> $DIR/issue-64130-4-async-move.rs:19:15
    |
 LL |         match client.status() {
diff --git a/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs b/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs
new file mode 100644
index 00000000000..3a814b47517
--- /dev/null
+++ b/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs
@@ -0,0 +1,16 @@
+// edition:2018
+
+struct Foo(*const u8);
+
+unsafe impl Send for Foo {}
+
+async fn bar(_: Foo) {}
+
+fn assert_send<T: Send>(_: T) {}
+
+fn main() {
+    assert_send(async {
+    //~^ ERROR future cannot be sent between threads safely
+        bar(Foo(std::ptr::null())).await;
+    })
+}
diff --git a/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.stderr b/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.stderr
new file mode 100644
index 00000000000..7638ba1fe7d
--- /dev/null
+++ b/src/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.stderr
@@ -0,0 +1,26 @@
+error: future cannot be sent between threads safely
+  --> $DIR/issue-65436-raw-ptr-not-send.rs:12:5
+   |
+LL | fn assert_send<T: Send>(_: T) {}
+   |    -----------    ---- required by this bound in `assert_send`
+...
+LL |     assert_send(async {
+   |     ^^^^^^^^^^^ future returned by `main` is not `Send`
+   |
+   = help: within `impl std::future::Future`, the trait `std::marker::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:14:9
+   |
+LL |         bar(Foo(std::ptr::null())).await;
+   |         ^^^^^^^^----------------^^^^^^^^- `std::ptr::null()` is later dropped here
+   |         |       |
+   |         |       has type `*const u8`
+   |         await occurs here, with `std::ptr::null()` maybe used later
+help: consider moving this into a `let` binding to create a shorter lived borrow
+  --> $DIR/issue-65436-raw-ptr-not-send.rs:14:13
+   |
+LL |         bar(Foo(std::ptr::null())).await;
+   |             ^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+