about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorEric Holk <ericholk@microsoft.com>2021-12-16 13:34:39 -0800
committerEric Holk <ericholk@microsoft.com>2022-01-18 14:25:29 -0800
commita7df4e8d2f89379fb0b620cb0267f97c05bc1598 (patch)
tree74eb0ece9ef457eb3ed3d9fc2ba56cc5cccb1c7a /src/test/ui
parent6e281a7782b775104351ab28abaee795fdaf84c5 (diff)
downloadrust-a7df4e8d2f89379fb0b620cb0267f97c05bc1598.tar.gz
rust-a7df4e8d2f89379fb0b620cb0267f97c05bc1598.zip
Handle empty loops better
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/async-await/async-fn-nonsend.rs8
-rw-r--r--src/test/ui/async-await/async-fn-nonsend.stderr8
2 files changed, 12 insertions, 4 deletions
diff --git a/src/test/ui/async-await/async-fn-nonsend.rs b/src/test/ui/async-await/async-fn-nonsend.rs
index 210d9ff3f2d..55629132e40 100644
--- a/src/test/ui/async-await/async-fn-nonsend.rs
+++ b/src/test/ui/async-await/async-fn-nonsend.rs
@@ -43,6 +43,13 @@ async fn non_sync_with_method_call() {
     }
 }
 
+async fn non_sync_with_infinite_loop() {
+    let f: &mut std::fmt::Formatter = loop {};
+    if non_sync().fmt(f).unwrap() == () {
+        fut().await;
+    }
+}
+
 fn assert_send(_: impl Send) {}
 
 pub fn pass_assert() {
@@ -51,4 +58,5 @@ pub fn pass_assert() {
     //~^ ERROR future cannot be sent between threads safely
     assert_send(non_sync_with_method_call());
     //~^ ERROR future cannot be sent between threads safely
+    assert_send(non_sync_with_infinite_loop());
 }
diff --git a/src/test/ui/async-await/async-fn-nonsend.stderr b/src/test/ui/async-await/async-fn-nonsend.stderr
index abba5585c62..9c87067a4d3 100644
--- a/src/test/ui/async-await/async-fn-nonsend.stderr
+++ b/src/test/ui/async-await/async-fn-nonsend.stderr
@@ -1,5 +1,5 @@
 error: future cannot be sent between threads safely
-  --> $DIR/async-fn-nonsend.rs:50:17
+  --> $DIR/async-fn-nonsend.rs:57:17
    |
 LL |     assert_send(non_send_temporary_in_match());
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `non_send_temporary_in_match` is not `Send`
@@ -16,13 +16,13 @@ LL |         Some(_) => fut().await,
 LL | }
    | - `Some(non_send())` is later dropped here
 note: required by a bound in `assert_send`
-  --> $DIR/async-fn-nonsend.rs:46:24
+  --> $DIR/async-fn-nonsend.rs:53:24
    |
 LL | fn assert_send(_: impl Send) {}
    |                        ^^^^ required by this bound in `assert_send`
 
 error: future cannot be sent between threads safely
-  --> $DIR/async-fn-nonsend.rs:52:17
+  --> $DIR/async-fn-nonsend.rs:59:17
    |
 LL |     assert_send(non_sync_with_method_call());
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `non_sync_with_method_call` is not `Send`
@@ -40,7 +40,7 @@ LL |     }
 LL | }
    | - `f` is later dropped here
 note: required by a bound in `assert_send`
-  --> $DIR/async-fn-nonsend.rs:46:24
+  --> $DIR/async-fn-nonsend.rs:53:24
    |
 LL | fn assert_send(_: impl Send) {}
    |                        ^^^^ required by this bound in `assert_send`