Skip to content

Conversation

eholk
Copy link
Contributor

@eholk eholk commented May 23, 2022

This is not quite ready to merge yet because we still need fixes for a couple of issues (See #97331 for details), but we can probably go ahead and kick off a crater run to see if there are any additional regressions we don't know about yet.

@bors r? @wesleywiser

@rustbot rustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label May 23, 2022
@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 23, 2022
@rust-log-analyzer

This comment has been minimized.

@wesleywiser
Copy link
Member

@bors try
@craterbot run mode=build-only

@craterbot

This comment was marked as resolved.

@bors
Copy link
Collaborator

bors commented May 23, 2022

⌛ Trying commit 2b4b7c6512a106b7d25fd906f4c5d9fee6c1a08f with merge 615edd3ad1cf6871c977dc900317cb6c2070fd6b...

@bors
Copy link
Collaborator

bors commented May 23, 2022

☀️ Try build successful - checks-actions
Build commit: 615edd3ad1cf6871c977dc900317cb6c2070fd6b (615edd3ad1cf6871c977dc900317cb6c2070fd6b)

@wesleywiser
Copy link
Member

@craterbot run mode=build-only

@craterbot
Copy link
Collaborator

👌 Experiment pr-97334 created and queued.
🤖 Automatically detected try build 615edd3ad1cf6871c977dc900317cb6c2070fd6b
🔍 You can check out the queue and this experiment's details.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-crater Status: Waiting on a crater run to be completed. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 23, 2022
@Dylan-DPC Dylan-DPC marked this pull request as draft May 24, 2022 07:58
@craterbot
Copy link
Collaborator

🚧 Experiment pr-97334 is now running

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot
Copy link
Collaborator

🎉 Experiment pr-97334 is completed!
📊 837 regressed and 16 fixed (235654 total)
📰 Open the full report.

⚠️ If you notice any spurious failure please add them to the blacklist!
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-crater Status: Waiting on a crater run to be completed. labels Jun 14, 2022
@Mark-Simulacrum Mark-Simulacrum added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 24, 2022
@eholk eholk force-pushed the drop-tracking-on-by-default branch from 2b4b7c6 to c15747d Compare July 29, 2022 22:45
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Collaborator

bors commented Aug 22, 2022

☔ The latest upstream changes (presumably #100654) made this pull request unmergeable. Please resolve the merge conflicts.

@eholk eholk force-pushed the drop-tracking-on-by-default branch from 45b65eb to e7f6d2b Compare August 30, 2022 21:17
@rust-log-analyzer

This comment has been minimized.

@eholk eholk force-pushed the drop-tracking-on-by-default branch from 89ebc24 to 9b8b39d Compare January 23, 2023 21:20
@rust-log-analyzer

This comment has been minimized.

@eholk eholk force-pushed the drop-tracking-on-by-default branch 2 times, most recently from a576f71 to bb05901 Compare January 24, 2023 00:27
@eholk
Copy link
Contributor Author

eholk commented Jan 24, 2023

@bors try

@bors
Copy link
Collaborator

bors commented Jan 24, 2023

⌛ Trying commit bb05901728def04193a6ad433659864581e2cc66 with merge f41a2ab7b0d9462073425dd6c04abbeb4805cb77...

@bors
Copy link
Collaborator

bors commented Jan 24, 2023

☀️ Try build successful - checks-actions
Build commit: f41a2ab7b0d9462073425dd6c04abbeb4805cb77 (f41a2ab7b0d9462073425dd6c04abbeb4805cb77)

@eholk
Copy link
Contributor Author

eholk commented Jan 24, 2023

@craterbot run mode=build-only

@craterbot
Copy link
Collaborator

👌 Experiment pr-97334-2 created and queued.
🤖 Automatically detected try build f41a2ab7b0d9462073425dd6c04abbeb4805cb77
🔍 You can check out the queue and this experiment's details.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-crater Status: Waiting on a crater run to be completed. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 24, 2023
@craterbot
Copy link
Collaborator

🚧 Experiment pr-97334-2 is now running

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot
Copy link
Collaborator

🎉 Experiment pr-97334-2 is completed!
📊 563 regressed and 29 fixed (253548 total)
📰 Open the full report.

⚠️ If you notice any spurious failure please add them to the blacklist!
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-crater Status: Waiting on a crater run to be completed. labels Jan 26, 2023
@eholk eholk force-pushed the drop-tracking-on-by-default branch from bb05901 to 71e44e8 Compare February 23, 2023 19:55
@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-llvm-14 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
Prepare all required actions
Getting action download info
Download action repository 'actions/checkout@v3' (SHA:ac593985615ec2ede58e132d2e21d2b1cbd6127c)
Download action repository 'rust-lang/simpleinfra@master' (SHA:697bea7ddceb6696743da8f159f268aef8bfb3c6)
Complete job name: PR (x86_64-gnu-llvm-14, false, ubuntu-20.04-xl)
git config --global core.autocrlf false
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  CI_JOB_NAME: x86_64-gnu-llvm-14
---
........................................................................................ 352/14514
........................................................................................ 440/14514
........................................................................................ 528/14514
........................................................................................ 616/14514
.......................F..........F..................................................... 704/14514
.......................................................................F.............F.. 792/14514
......F............................................................F.................... 880/14514
.................................................i..........F........................... 968/14514
........................................................................................ 1144/14514
........................................................................................ 1232/14514
........................................................................................ 1320/14514
........................................................................................ 1408/14514
---
........................................................................................ 4400/14514
.........iii............................................................................ 4488/14514
............................................................................i........... 4576/14514
........................................................................................ 4664/14514
............................F.......................F..F...............................F 4752/14514
.....F.................................................................................. 4840/14514
.................................................................................i...... 5016/14514
........................................................................................ 5104/14514
........................................................................................ 5192/14514
........................................................................................ 5280/14514
---
........................................................................................ 7480/14514
....................i.i.........................................i...................i... 7568/14514
..........i..................................................................i.......... 7656/14514
........................................................................................ 7744/14514
............i................F........F................................................. 7832/14514
........................................................................................ 8008/14514
...................................ii.............................................i..i.. 8096/14514
.............................................................i.......................... 8184/14514
........................................................................................ 8272/14514
---

---- [ui] tests/ui/async-await/async-await-let-else.rs#no_drop_tracking stdout ----
diff of stderr:

20 LL | fn is_send<T: Send>(_: T) {}
22 
- error: future cannot be sent between threads safely
- error: future cannot be sent between threads safely
+ error[E0277]: `Rc<()>` cannot be sent between threads safely
25    |
25    |
+ LL | async fn foo2(x: Option<bool>) {
+    |                                - within this `impl Future<Output = ()>`
+ ...
26 LL |     is_send(foo2(Some(true)));
-    |             ^^^^^^^^^^^^^^^^ future returned by `foo2` is not `Send`
+    |     ------- ^^^^^^^^^^^^^^^^ `Rc<()>` cannot be sent between threads safely
+    |     required by a bound introduced by this call
28    |
28    |
29    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
- note: future is not `Send` as this value is used across an await
-   --> $DIR/async-await-let-else.rs:23:26
+ note: required because it's used within this `async fn` body
32    |
32    |
- LL |         bar2(Rc::new(())).await
-    |              ----------- ^^^^^^ await occurs here, with `Rc::new(())` maybe used later
-    |              |
-    |              has type `Rc<()>` which is not `Send`
- LL |     };
-    |     - `Rc::new(())` is later dropped here
+ LL |   async fn bar2<T>(_: T) -> ! {
+ LL | |     panic!()
+ LL | | }
+    | |_^
+    | |_^
+    = note: required because it captures the following types: `ResumeTy`, `Option<bool>`, `impl Future<Output = !>`, `()`
+ note: required because it's used within this `async fn` body
+    |
+    |
+ LL |   async fn foo2(x: Option<bool>) {
+    |  ________________________________^
+ LL | |     let Some(_) = x else {
+ LL | |         bar2(Rc::new(())).await
+ LL | |     };
+ LL | | }
39 note: required by a bound in `is_send`
40   --> $DIR/async-await-let-else.rs:19:15
41    |

---
To only update this specific test, also pass `--test-args async-await/async-await-let-else.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/async-await/async-await-let-else.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/async-await-let-else.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/async-await-let-else.no_drop_tracking/auxiliary" "--edition=2021"
stdout: none
--- stderr -------------------------------
error: future cannot be sent between threads safely
  --> fake-test-src-base/async-await/async-await-let-else.rs:48:13
   |
LL |     is_send(foo(Some(true)));
   |             ^^^^^^^^^^^^^^^ future returned by `foo` is not `Send`
   |
   = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
note: future is not `Send` as this value is used across an await
  --> fake-test-src-base/async-await/async-await-let-else.rs:11:14
   |
LL |         let r = Rc::new(());
   |             - has type `Rc<()>` which is not `Send`
LL |         bar().await
   |              ^^^^^^ await occurs here, with `r` maybe used later
LL |     };
   |     - `r` is later dropped here
  --> fake-test-src-base/async-await/async-await-let-else.rs:19:15
   |
   |
LL | fn is_send<T: Send>(_: T) {}


error[E0277]: `Rc<()>` cannot be sent between threads safely
  --> fake-test-src-base/async-await/async-await-let-else.rs:50:13
   |
LL | async fn foo2(x: Option<bool>) {
   |                                - within this `impl Future<Output = ()>`
...
LL |     is_send(foo2(Some(true)));
   |     ------- ^^^^^^^^^^^^^^^^ `Rc<()>` cannot be sent between threads safely
   |     required by a bound introduced by this call
   |
   |
   = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
note: required because it's used within this `async fn` body
  --> fake-test-src-base/async-await/async-await-let-else.rs:27:29
   |
LL |   async fn bar2<T>(_: T) -> ! {
LL | |     panic!()
LL | | }
   | |_^
   | |_^
   = note: required because it captures the following types: `ResumeTy`, `Option<bool>`, `impl Future<Output = !>`, `()`
note: required because it's used within this `async fn` body
  --> fake-test-src-base/async-await/async-await-let-else.rs:21:32
   |
LL |   async fn foo2(x: Option<bool>) {
   |  ________________________________^
LL | |     let Some(_) = x else {
LL | |         bar2(Rc::new(())).await
LL | |     };
LL | | }
note: required by a bound in `is_send`
  --> fake-test-src-base/async-await/async-await-let-else.rs:19:15
   |
   |
LL | fn is_send<T: Send>(_: T) {}

error: future cannot be sent between threads safely
  --> fake-test-src-base/async-await/async-await-let-else.rs:52:13
   |
   |
LL |     is_send(foo3(Some(true)));
   |             ^^^^^^^^^^^^^^^^ future returned by `foo3` is not `Send`
   |
   = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
note: future is not `Send` as this value is used across an await
  --> fake-test-src-base/async-await/async-await-let-else.rs:33:28
   |
LL |         (Rc::new(()), bar().await);
   |          -----------       ^^^^^^ - `Rc::new(())` is later dropped here
   |          |                 |
   |          |                 await occurs here, with `Rc::new(())` maybe used later
   |          has type `Rc<()>` which is not `Send`
  --> fake-test-src-base/async-await/async-await-let-else.rs:19:15
   |
   |
LL | fn is_send<T: Send>(_: T) {}

error: future cannot be sent between threads safely
  --> fake-test-src-base/async-await/async-await-let-else.rs:54:13
   |
   |
LL |     is_send(foo4(Some(true)));
   |             ^^^^^^^^^^^^^^^^ future returned by `foo4` is not `Send`
   |
   = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
note: future is not `Send` as this value is used across an await
  --> fake-test-src-base/async-await/async-await-let-else.rs:41:14
   |
LL |         let r = Rc::new(());
   |             - has type `Rc<()>` which is not `Send`
LL |         bar().await;
   |              ^^^^^^ await occurs here, with `r` maybe used later
LL |     };
LL |     };
   |     - `r` is later dropped here
  --> fake-test-src-base/async-await/async-await-let-else.rs:19:15
   |
   |
LL | fn is_send<T: Send>(_: T) {}

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0277`.
---

1 error: future cannot be sent between threads safely
-   --> $DIR/async-fn-nonsend.rs:70:17
-    |
- LL |     assert_send(local_dropped_before_await());
-    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `local_dropped_before_await` is not `Send`
-    |
-    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
- note: future is not `Send` as this value is used across an await
-   --> $DIR/async-fn-nonsend.rs:27:10
- LL |     let x = non_send();
- LL |     let x = non_send();
-    |         - has type `impl Debug` which is not `Send`
- LL |     drop(x);
- LL |     fut().await;
-    |          ^^^^^^ await occurs here, with `x` maybe used later
- LL | }
-    | - `x` is later dropped here
- note: required by a bound in `assert_send`
-   --> $DIR/async-fn-nonsend.rs:67:24
-    |
- LL | fn assert_send(_: impl Send) {}
-    |                        ^^^^ required by this bound in `assert_send`
- error: future cannot be sent between threads safely
25   --> $DIR/async-fn-nonsend.rs:72:17
26    |
27 LL |     assert_send(non_send_temporary_in_match());
27 LL |     assert_send(non_send_temporary_in_match());

32   --> $DIR/async-fn-nonsend.rs:36:25
33    |
34 LL |     match Some(non_send()) {
-    |                ---------- has type `impl Debug` which is not `Send`
+    |           ---------------- has type `Option<impl Debug>` which is not `Send`
36 LL |         Some(_) => fut().await,
-    |                         ^^^^^^ await occurs here, with `non_send()` maybe used later
+    |                         ^^^^^^ await occurs here, with `Some(non_send())` maybe used later
39 LL | }
39 LL | }
-    | - `non_send()` is later dropped here
+    | - `Some(non_send())` is later dropped here
41 note: required by a bound in `assert_send`
43    |


68 LL | fn assert_send(_: impl Send) {}
69    |                        ^^^^ required by this bound in `assert_send`
- error: future cannot be sent between threads safely
-   --> $DIR/async-fn-nonsend.rs:76:17
-    |
- LL |     assert_send(non_sync_with_method_call_panic());
- LL |     assert_send(non_sync_with_method_call_panic());
-    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `non_sync_with_method_call_panic` is not `Send`
-    |
-    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `dyn std::fmt::Write`
- note: future is not `Send` as this value is used across an await
-   --> $DIR/async-fn-nonsend.rs:56:14
-    |
- LL |     let f: &mut std::fmt::Formatter = panic!();
-    |         - has type `&mut Formatter<'_>` which is not `Send`
- LL |     if non_sync().fmt(f).unwrap() == () {
- LL |         fut().await;
-    |              ^^^^^^ await occurs here, with `f` maybe used later
- LL |     }
- LL | }
-    | - `f` is later dropped here
- note: required by a bound in `assert_send`
-   --> $DIR/async-fn-nonsend.rs:67: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:78:17
-    |
- LL |     assert_send(non_sync_with_method_call_infinite_loop());
- LL |     assert_send(non_sync_with_method_call_infinite_loop());
-    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `non_sync_with_method_call_infinite_loop` is not `Send`
-    |
-    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `dyn std::fmt::Write`
- note: future is not `Send` as this value is used across an await
-   --> $DIR/async-fn-nonsend.rs:63:14
-    |
- LL |     let f: &mut std::fmt::Formatter = loop {};
-    |         - has type `&mut Formatter<'_>` which is not `Send`
- LL |     if non_sync().fmt(f).unwrap() == () {
- LL |         fut().await;
-    |              ^^^^^^ await occurs here, with `f` maybe used later
- LL |     }
- LL | }
-    | - `f` is later dropped here
- note: required by a bound in `assert_send`
-   --> $DIR/async-fn-nonsend.rs:67:24
-    |
- LL | fn assert_send(_: impl Send) {}
-    |                        ^^^^ required by this bound in `assert_send`
- error: aborting due to 5 previous errors
+ error: aborting due to 2 previous errors
120 
121 
121 


The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/async-fn-nonsend.no_drop_tracking/async-fn-nonsend.no_drop_tracking.stderr
To only update this specific test, also pass `--test-args async-await/async-fn-nonsend.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/async-await/async-fn-nonsend.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/async-fn-nonsend.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/async-fn-nonsend.no_drop_tracking/auxiliary" "--edition=2018" "--crate-type" "lib"
stdout: none
--- stderr -------------------------------
error: future cannot be sent between threads safely
  --> fake-test-src-base/async-await/async-fn-nonsend.rs:72:17
LL |     assert_send(non_send_temporary_in_match());
LL |     assert_send(non_send_temporary_in_match());
   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `non_send_temporary_in_match` is not `Send`
   |
   = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
note: future is not `Send` as this value is used across an await
  --> fake-test-src-base/async-await/async-fn-nonsend.rs:36:25
LL |     match Some(non_send()) {
LL |     match Some(non_send()) {
   |           ---------------- has type `Option<impl Debug>` which is not `Send`
LL |         Some(_) => fut().await,
   |                         ^^^^^^ await occurs here, with `Some(non_send())` maybe used later
LL | }
LL | }
   | - `Some(non_send())` is later dropped here
note: required by a bound in `assert_send`
  --> fake-test-src-base/async-await/async-fn-nonsend.rs:67:24
   |
LL | fn assert_send(_: impl Send) {}
   |                        ^^^^ required by this bound in `assert_send`
error: future cannot be sent between threads safely
  --> fake-test-src-base/async-await/async-fn-nonsend.rs:74:17
   |
   |
LL |     assert_send(non_sync_with_method_call());
   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `non_sync_with_method_call` is not `Send`
   |
   = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `dyn std::fmt::Write`
note: future is not `Send` as this value is used across an await
  --> fake-test-src-base/async-await/async-fn-nonsend.rs:49:14
   |
LL |     let f: &mut std::fmt::Formatter = &mut get_formatter();
   |                                            --------------- has type `Formatter<'_>` which is not `Send`
LL |         fut().await;
LL |         fut().await;
   |              ^^^^^^ await occurs here, with `get_formatter()` maybe used later
LL | }
LL | }
   | - `get_formatter()` is later dropped here
note: required by a bound in `assert_send`
  --> fake-test-src-base/async-await/async-fn-nonsend.rs:67:24
   |
LL | fn assert_send(_: impl Send) {}
   |                        ^^^^ required by this bound in `assert_send`
error: aborting due to 2 previous errors
------------------------------------------



---- [ui] tests/ui/async-await/issue-64130-4-async-move.rs#no_drop_tracking stdout ----

error in revision `no_drop_tracking`: ui test compiled successfully!
status: exit status: 0
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/async-await/issue-64130-4-async-move.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issue-64130-4-async-move.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issue-64130-4-async-move.no_drop_tracking/auxiliary" "--edition=2018"
stdout: none
stderr: none

---- [ui] tests/ui/async-await/issue-68112.rs#no_drop_tracking stdout ----
diff of stderr:


60    |
61 LL | fn make_non_send_future2() -> impl Future<Output = Arc<RefCell<i32>>> {
62    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    = note: required because it captures the following types: `ResumeTy`, `impl Future<Output = Arc<RefCell<i32>>>`, `()`, `i32`, `Ready<i32>`
+    = note: required because it captures the following types: `ResumeTy`, `impl Future<Output = Arc<RefCell<i32>>>`, `()`, `Ready<i32>`
64 note: required because it's used within this `async` block
66    |


The actual stderr differed from the expected stderr.
The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issue-68112.no_drop_tracking/issue-68112.no_drop_tracking.stderr
To only update this specific test, also pass `--test-args async-await/issue-68112.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/async-await/issue-68112.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issue-68112.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issue-68112.no_drop_tracking/auxiliary" "--edition=2018"
stdout: none
--- stderr -------------------------------
error: future cannot be sent between threads safely
  --> fake-test-src-base/async-await/issue-68112.rs:37:18
LL |     require_send(send_fut);
LL |     require_send(send_fut);
   |                  ^^^^^^^^ future created by async block is not `Send`
   = help: the trait `Sync` is not implemented for `RefCell<i32>`
   = help: the trait `Sync` is not implemented for `RefCell<i32>`
   = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead
note: future is not `Send` as it awaits another future which is not `Send`
  --> fake-test-src-base/async-await/issue-68112.rs:34:17
   |
LL |         let _ = non_send_fut.await;
   |                 ^^^^^^^^^^^^ await occurs here on type `impl Future<Output = Arc<RefCell<i32>>>`, which is not `Send`
note: required by a bound in `require_send`
  --> fake-test-src-base/async-await/issue-68112.rs:14:25
   |
LL | fn require_send(_: impl Send) {}
   |                         ^^^^ required by this bound in `require_send`
error: future cannot be sent between threads safely
  --> fake-test-src-base/async-await/issue-68112.rs:46:18
   |
LL |     require_send(send_fut);
LL |     require_send(send_fut);
   |                  ^^^^^^^^ future created by async block is not `Send`
   = help: the trait `Sync` is not implemented for `RefCell<i32>`
   = help: the trait `Sync` is not implemented for `RefCell<i32>`
   = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead
note: future is not `Send` as it awaits another future which is not `Send`
  --> fake-test-src-base/async-await/issue-68112.rs:43:17
   |
LL |         let _ = make_non_send_future1().await;
   |                 ^^^^^^^^^^^^^^^^^^^^^^^ await occurs here on type `impl Future<Output = Arc<RefCell<i32>>>`, which is not `Send`
note: required by a bound in `require_send`
  --> fake-test-src-base/async-await/issue-68112.rs:14:25
   |
LL | fn require_send(_: impl Send) {}
   |                         ^^^^ required by this bound in `require_send`

error[E0277]: `RefCell<i32>` cannot be shared between threads safely
  --> fake-test-src-base/async-await/issue-68112.rs:65:18
LL |     require_send(send_fut);
LL |     require_send(send_fut);
   |     ------------ ^^^^^^^^ `RefCell<i32>` cannot be shared between threads safely
   |     required by a bound introduced by this call
   |
   = help: the trait `Sync` is not implemented for `RefCell<i32>`
   = help: the trait `Sync` is not implemented for `RefCell<i32>`
   = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead
   = note: required for `Arc<RefCell<i32>>` to implement `Send`
note: required because it's used within this `async fn` body
  --> fake-test-src-base/async-await/issue-68112.rs:50:31
LL |   async fn ready2<T>(t: T) -> T {
   |  _______________________________^
LL | |     t
LL | | }
LL | | }
   | |_^
note: required because it appears within the type `impl Future<Output = Arc<RefCell<i32>>>`
  --> fake-test-src-base/async-await/issue-68112.rs:53:31
   |
LL | fn make_non_send_future2() -> impl Future<Output = Arc<RefCell<i32>>> {
   |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = note: required because it captures the following types: `ResumeTy`, `impl Future<Output = Arc<RefCell<i32>>>`, `()`, `Ready<i32>`
note: required because it's used within this `async` block
  --> fake-test-src-base/async-await/issue-68112.rs:60:20
LL |       let send_fut = async {
   |  ____________________^
   |  ____________________^
LL | |         let non_send_fut = make_non_send_future2();
LL | |         let _ = non_send_fut.await;
LL | |         ready(0).await;
LL | |     };
note: required by a bound in `require_send`
  --> fake-test-src-base/async-await/issue-68112.rs:14:25
   |
   |
LL | fn require_send(_: impl Send) {}
   |                         ^^^^ required by this bound in `require_send`
error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0277`.
------------------------------------------
------------------------------------------


---- [ui] tests/ui/async-await/issue-70935-complex-spans.rs#no_drop_tracking stdout ----
diff of stderr:

- error: future cannot be sent between threads safely
+ error[E0277]: `Sender<i32>` cannot be shared between threads safely
3    |
3    |
4 LL | fn foo(tx: std::sync::mpsc::Sender<i32>) -> impl Future + Send {

-    |                                             ^^^^^^^^^^^^^^^^^^ future created by async block is not `Send`
+    |                                             ^^^^^^^^^^^^^^^^^^ `Sender<i32>` cannot be shared between threads safely
7    = help: the trait `Sync` is not implemented for `Sender<i32>`
7    = help: the trait `Sync` is not implemented for `Sender<i32>`
- note: future is not `Send` as this value is used across an await
-   --> $DIR/issue-70935-complex-spans.rs:19:11
+    = note: required for `&Sender<i32>` to implement `Send`
+ note: required because it's used within this closure
10    |
10    |
- LL |           baz(|| async{
-    |  _____________-
+ LL |         baz(|| async{
+    |             ^^
+ note: required because it's used within this `async fn` body
+    |
+    |
+ LL |   async fn baz<T>(_c: impl FnMut() -> T) where T: Future<Output=()> {
+ LL | | }
+    | |_^
+    | |_^
+    = note: required because it captures the following types: `ResumeTy`, `impl Future<Output = ()>`, `()`
+ note: required because it's used within this `async` block
+    |
+    |
+ LL | /     async move {
+ LL | |         baz(|| async{
13 LL | |             foo(tx.clone());
14 LL | |         }).await;
-    | |         - ^^^^^^- the value is later dropped here
-    | |         | |
-    | |_________| await occurs here, with the value maybe used later
-    |           has type `[closure@$DIR/issue-70935-complex-spans.rs:17:13: 17:15]` which is not `Send`
+ LL | |     }
19 
20 error: aborting due to previous error
21 

---
To only update this specific test, also pass `--test-args async-await/issue-70935-complex-spans.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/async-await/issue-70935-complex-spans.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issue-70935-complex-spans.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issue-70935-complex-spans.no_drop_tracking/auxiliary" "--edition=2018"
stdout: none
--- stderr -------------------------------
error[E0277]: `Sender<i32>` cannot be shared between threads safely
  --> fake-test-src-base/async-await/issue-70935-complex-spans.rs:13:45
   |
LL | fn foo(tx: std::sync::mpsc::Sender<i32>) -> impl Future + Send {
   |                                             ^^^^^^^^^^^^^^^^^^ `Sender<i32>` cannot be shared between threads safely
   = help: the trait `Sync` is not implemented for `Sender<i32>`
   = help: the trait `Sync` is not implemented for `Sender<i32>`
   = note: required for `&Sender<i32>` to implement `Send`
note: required because it's used within this closure
  --> fake-test-src-base/async-await/issue-70935-complex-spans.rs:17:13
   |
LL |         baz(|| async{
   |             ^^
note: required because it's used within this `async fn` body
  --> fake-test-src-base/async-await/issue-70935-complex-spans.rs:10:67
   |
LL |   async fn baz<T>(_c: impl FnMut() -> T) where T: Future<Output=()> {
LL | | }
   | |_^
   | |_^
   = note: required because it captures the following types: `ResumeTy`, `impl Future<Output = ()>`, `()`
note: required because it's used within this `async` block
  --> fake-test-src-base/async-await/issue-70935-complex-spans.rs:16:5
   |
LL | /     async move {
LL | |         baz(|| async{
LL | |             foo(tx.clone());
LL | |         }).await;
LL | |     }

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
For more information about this error, try `rustc --explain E0277`.
------------------------------------------


---- [ui] tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs#no_drop_tracking stdout ----

error in revision `no_drop_tracking`: ui test compiled successfully!
status: exit status: 0
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/async-await/issues/issue-65436-raw-ptr-not-send.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/issues/issue-65436-raw-ptr-not-send.no_drop_tracking/auxiliary" "--edition=2018"
stdout: none
stderr: none

---- [ui] tests/ui/async-await/unresolved_type_param.rs#no_drop_tracking stdout ----
diff of stderr:


34 LL |     bar().await;
35    |          ^^^^^^
36 
- error[E0698]: type inside `async fn` body must be known in this context
-   --> $DIR/unresolved_type_param.rs:12:5
- LL |     bar().await;
- LL |     bar().await;
-    |     ^^^ cannot infer type for type parameter `T` declared on the function `bar`
-    |
- note: the type is part of the `async fn` body because of this `await`
-   --> $DIR/unresolved_type_param.rs:12:10
- LL |     bar().await;
-    |          ^^^^^^
- 
- 
- error[E0698]: type inside `async fn` body must be known in this context
-   --> $DIR/unresolved_type_param.rs:12:5
- LL |     bar().await;
- LL |     bar().await;
-    |     ^^^ cannot infer type for type parameter `T` declared on the function `bar`
-    |
- note: the type is part of the `async fn` body because of this `await`
-   --> $DIR/unresolved_type_param.rs:12:10
- LL |     bar().await;
-    |          ^^^^^^
- 
- error: aborting due to 5 previous errors
- error: aborting due to 5 previous errors
+ error: aborting due to 3 previous errors
62 
63 For more information about this error, try `rustc --explain E0698`.
64 


The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/unresolved_type_param.no_drop_tracking/unresolved_type_param.no_drop_tracking.stderr
To only update this specific test, also pass `--test-args async-await/unresolved_type_param.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/async-await/unresolved_type_param.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/unresolved_type_param.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/async-await/unresolved_type_param.no_drop_tracking/auxiliary" "--edition=2018"
stdout: none
--- stderr -------------------------------
error[E0698]: type inside `async fn` body must be known in this context
  --> fake-test-src-base/async-await/unresolved_type_param.rs:12:5
LL |     bar().await;
LL |     bar().await;
   |     ^^^ cannot infer type for type parameter `T` declared on the function `bar`
   |
note: the type is part of the `async fn` body because of this `await`
  --> fake-test-src-base/async-await/unresolved_type_param.rs:12:10
LL |     bar().await;
   |          ^^^^^^


error[E0698]: type inside `async fn` body must be known in this context
  --> fake-test-src-base/async-await/unresolved_type_param.rs:12:5
LL |     bar().await;
LL |     bar().await;
   |     ^^^ cannot infer type for type parameter `T` declared on the function `bar`
   |
note: the type is part of the `async fn` body because of this `await`
  --> fake-test-src-base/async-await/unresolved_type_param.rs:12:10
LL |     bar().await;
   |          ^^^^^^


error[E0698]: type inside `async fn` body must be known in this context
  --> fake-test-src-base/async-await/unresolved_type_param.rs:12:5
LL |     bar().await;
LL |     bar().await;
   |     ^^^ cannot infer type for type parameter `T` declared on the function `bar`
   |
note: the type is part of the `async fn` body because of this `await`
  --> fake-test-src-base/async-await/unresolved_type_param.rs:12:10
LL |     bar().await;
   |          ^^^^^^

error: aborting due to 3 previous errors
---

13 LL | |     );
14    | |_____- in this macro invocation
15    |
-    = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `copy::Client`
- note: generator is not `Send` as this value is used across a yield
-   --> $DIR/drop-tracking-parent-expression.rs:25:22
-    |
- LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
-    |                                                            ------------------------ has type `copy::Client` which is not `Send`
- LL |                   _ => yield,
- LL |                   _ => yield,
-    |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
- LL |               };
-    |               - `$name::Client::default()` is later dropped here
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
- note: required by a bound in `assert_send`
- note: required by a bound in `assert_send`
-   --> $DIR/drop-tracking-parent-expression.rs:49:19
-    |
- LL | fn assert_send<T: Send>(_thing: T) {}
-    |                   ^^^^ required by this bound in `assert_send`
-    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
- error: generator cannot be sent between threads safely
-   --> $DIR/drop-tracking-parent-expression.rs:40:25
-    |
- LL |               assert_send(g);
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
-    |
-    |
-    = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:37:21: 37:28]`, the trait `Send` is not implemented for `copy::Client`
- note: generator is not `Send` as this value is used across a yield
-   --> $DIR/drop-tracking-parent-expression.rs:38:22
-    |
- LL |               let g = move || match drop($name::Client::default()) {
-    |                                          ------------------------ has type `copy::Client` which is not `Send`
- LL |                   _ => yield,
-    |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
- LL |               };
-    |               - `$name::Client::default()` is later dropped here
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
- note: required by a bound in `assert_send`
- note: required by a bound in `assert_send`
-   --> $DIR/drop-tracking-parent-expression.rs:49:19
-    |
- LL | fn assert_send<T: Send>(_thing: T) {}
-    |                   ^^^^ required by this bound in `assert_send`
-    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
- error: generator cannot be sent between threads safely
-   --> $DIR/drop-tracking-parent-expression.rs:27:25
-    |
- LL |               assert_send(g);
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
-    |
-    |
99    = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `derived_drop::Client`
100 note: generator is not `Send` as this value is used across a yield

124    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
125 
126 error: generator cannot be sent between threads safely
126 error: generator cannot be sent between threads safely
-   --> $DIR/drop-tracking-parent-expression.rs:40:25
-    |
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
-    |
-    |
-    = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:37:21: 37:28]`, the trait `Send` is not implemented for `derived_drop::Client`
- note: generator is not `Send` as this value is used across a yield
-   --> $DIR/drop-tracking-parent-expression.rs:38:22
-    |
- LL |               let g = move || match drop($name::Client::default()) {
-    |                                          ------------------------ has type `derived_drop::Client` which is not `Send`
- LL |                   _ => yield,
-    |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
- LL |               };
-    |               - `$name::Client::default()` is later dropped here
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
- note: required by a bound in `assert_send`
- note: required by a bound in `assert_send`
-   --> $DIR/drop-tracking-parent-expression.rs:49:19
-    |
- LL | fn assert_send<T: Send>(_thing: T) {}
-    |                   ^^^^ required by this bound in `assert_send`
-    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
- error: generator cannot be sent between threads safely
168   --> $DIR/drop-tracking-parent-expression.rs:27:25
169    |
170 LL |               assert_send(g);
170 LL |               assert_send(g);

207    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
208 
209 error: generator cannot be sent between threads safely
-   --> $DIR/drop-tracking-parent-expression.rs:40:25
-    |
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
-    |
-    |
-    = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:37:21: 37:28]`, the trait `Send` is not implemented for `significant_drop::Client`
- note: generator is not `Send` as this value is used across a yield
-   --> $DIR/drop-tracking-parent-expression.rs:38:22
-    |
- LL |               let g = move || match drop($name::Client::default()) {
-    |                                          ------------------------ has type `significant_drop::Client` which is not `Send`
- LL |                   _ => yield,
-    |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
- LL |               };
-    |               - `$name::Client::default()` is later dropped here
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
- note: required by a bound in `assert_send`
- note: required by a bound in `assert_send`
-   --> $DIR/drop-tracking-parent-expression.rs:49:19
-    |
- LL | fn assert_send<T: Send>(_thing: T) {}
-    |                   ^^^^ required by this bound in `assert_send`
-    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
- error: generator cannot be sent between threads safely
251   --> $DIR/drop-tracking-parent-expression.rs:27:25
252    |
253 LL |               assert_send(g);
253 LL |               assert_send(g);

289    |                   ^^^^ required by this bound in `assert_send`
290    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
291 
- error: generator cannot be sent between threads safely
-   --> $DIR/drop-tracking-parent-expression.rs:40:25
-    |
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
-    |
-    |
-    = help: within `[generator@$DIR/drop-tracking-parent-expression.rs:37:21: 37:28]`, the trait `Send` is not implemented for `insignificant_dtor::Client`
- note: generator is not `Send` as this value is used across a yield
-   --> $DIR/drop-tracking-parent-expression.rs:38:22
-    |
- LL |               let g = move || match drop($name::Client::default()) {
-    |                                          ------------------------ has type `insignificant_dtor::Client` which is not `Send`
- LL |                   _ => yield,
-    |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
- LL |               };
-    |               - `$name::Client::default()` is later dropped here
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
- note: required by a bound in `assert_send`
- note: required by a bound in `assert_send`
-   --> $DIR/drop-tracking-parent-expression.rs:49:19
-    |
- LL | fn assert_send<T: Send>(_thing: T) {}
-    |                   ^^^^ required by this bound in `assert_send`
-    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
- error: aborting due to 8 previous errors
+ error: aborting due to 3 previous errors
334 
335 
335 


The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/drop-tracking-parent-expression.no_drop_tracking/drop-tracking-parent-expression.no_drop_tracking.stderr
To only update this specific test, also pass `--test-args generator/drop-tracking-parent-expression.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/generator/drop-tracking-parent-expression.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/drop-tracking-parent-expression.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/drop-tracking-parent-expression.no_drop_tracking/auxiliary"
stdout: none
--- stderr -------------------------------
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:27:25
LL |               assert_send(g);
LL |               assert_send(g);
   |                           ^ generator is not `Send`
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
   |
   |
   = help: within `[generator@fake-test-src-base/generator/drop-tracking-parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `derived_drop::Client`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:25:22
   |
LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
   |                                                            ------------------------ has type `derived_drop::Client` which is not `Send`
LL |                   _ => yield,
LL |                   _ => yield,
   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
LL |               };
   |               - `$name::Client::default()` is later dropped here
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
note: required by a bound in `assert_send`
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:49:19
   |
LL | fn assert_send<T: Send>(_thing: T) {}
   |                   ^^^^ required by this bound in `assert_send`
   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:27:25
   |
LL |               assert_send(g);
LL |               assert_send(g);
   |                           ^ generator is not `Send`
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
   |
   |
   = help: within `[generator@fake-test-src-base/generator/drop-tracking-parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `significant_drop::Client`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:25:22
   |
LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
   |                                                            ------------------------ has type `significant_drop::Client` which is not `Send`
LL |                   _ => yield,
LL |                   _ => yield,
   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
LL |               };
   |               - `$name::Client::default()` is later dropped here
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
note: required by a bound in `assert_send`
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:49:19
   |
LL | fn assert_send<T: Send>(_thing: T) {}
   |                   ^^^^ required by this bound in `assert_send`
   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:27:25
   |
LL |               assert_send(g);
LL |               assert_send(g);
   |                           ^ generator is not `Send`
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
   |
   |
   = help: within `[generator@fake-test-src-base/generator/drop-tracking-parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `insignificant_dtor::Client`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:25:22
   |
LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
   |                                                            ------------------------ has type `insignificant_dtor::Client` which is not `Send`
LL |                   _ => yield,
LL |                   _ => yield,
   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
LL |               };
   |               - `$name::Client::default()` is later dropped here
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
note: required by a bound in `assert_send`
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/drop-tracking-parent-expression.rs:49:19
   |
LL | fn assert_send<T: Send>(_thing: T) {}
   |                   ^^^^ required by this bound in `assert_send`
   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 3 previous errors
------------------------------------------



---- [ui] tests/ui/generator/issue-57478.rs#no_drop_tracking stdout ----

error in revision `no_drop_tracking`: ui test compiled successfully!
status: exit status: 0
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/generator/issue-57478.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/issue-57478.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/issue-57478.no_drop_tracking/auxiliary"
stdout: none
stderr: none

---- [ui] tests/ui/generator/issue-57017.rs#no_drop_tracking stdout ----

error in revision `no_drop_tracking`: ui test compiled successfully!
error in revision `no_drop_tracking`: ui test compiled successfully!
status: exit status: 0
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/generator/issue-57017.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/issue-57017.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/issue-57017.no_drop_tracking/auxiliary"
stdout: none
stderr: none

---- [ui] tests/ui/generator/parent-expression.rs#no_drop_tracking stdout ----
diff of stderr:


13 LL | |     );
14    | |_____- in this macro invocation
15    |
-    = help: within `[generator@$DIR/parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `copy::Client`
- note: generator is not `Send` as this value is used across a yield
-   --> $DIR/parent-expression.rs:25:22
-    |
- LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
-    |                                                            ------------------------ has type `copy::Client` which is not `Send`
- LL |                   _ => yield,
- LL |                   _ => yield,
-    |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
- LL |               };
-    |               - `$name::Client::default()` is later dropped here
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
- note: required by a bound in `assert_send`
- note: required by a bound in `assert_send`
-   --> $DIR/parent-expression.rs:49:19
-    |
- LL | fn assert_send<T: Send>(_thing: T) {}
-    |                   ^^^^ required by this bound in `assert_send`
-    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
- error: generator cannot be sent between threads safely
-   --> $DIR/parent-expression.rs:40:25
-    |
- LL |               assert_send(g);
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
-    |
-    |
-    = help: within `[generator@$DIR/parent-expression.rs:37:21: 37:28]`, the trait `Send` is not implemented for `copy::Client`
- note: generator is not `Send` as this value is used across a yield
-   --> $DIR/parent-expression.rs:38:22
-    |
- LL |               let g = move || match drop($name::Client::default()) {
-    |                                          ------------------------ has type `copy::Client` which is not `Send`
- LL |                   _ => yield,
-    |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
- LL |               };
-    |               - `$name::Client::default()` is later dropped here
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
- note: required by a bound in `assert_send`
- note: required by a bound in `assert_send`
-   --> $DIR/parent-expression.rs:49:19
-    |
- LL | fn assert_send<T: Send>(_thing: T) {}
-    |                   ^^^^ required by this bound in `assert_send`
-    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
- error: generator cannot be sent between threads safely
-   --> $DIR/parent-expression.rs:27:25
-    |
- LL |               assert_send(g);
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
- LL | |         };
- LL | |     );
-    | |_____- in this macro invocation
-    |
-    |
99    = help: within `[generator@$DIR/parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `derived_drop::Client`
100 note: generator is not `Send` as this value is used across a yield

124    = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
125 
126 error: generator cannot be sent between threads safely
126 error: generator cannot be sent between threads safely
-   --> $DIR/parent-expression.rs:40:25
-    |
- LL |               assert_send(g);
-    |                           ^ generator is not `Send`
- LL | /     type_combinations!(
- LL | |         // OK
- LL | |         // OK
- LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
- LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
---
To only update this specific test, also pass `--test-args generator/parent-expression.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/generator/parent-expression.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/parent-expression.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/parent-expression.no_drop_tracking/auxiliary"
stdout: none
--- stderr -------------------------------
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/parent-expression.rs:27:25
LL |               assert_send(g);
LL |               assert_send(g);
   |                           ^ generator is not `Send`
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
   |
   |
   = help: within `[generator@fake-test-src-base/generator/parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `derived_drop::Client`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/parent-expression.rs:25:22
   |
LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
   |                                                            ------------------------ has type `derived_drop::Client` which is not `Send`
LL |                   _ => yield,
LL |                   _ => yield,
   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
LL |               };
   |               - `$name::Client::default()` is later dropped here
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
note: required by a bound in `assert_send`
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/parent-expression.rs:49:19
   |
LL | fn assert_send<T: Send>(_thing: T) {}
   |                   ^^^^ required by this bound in `assert_send`
   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/parent-expression.rs:27:25
   |
LL |               assert_send(g);
LL |               assert_send(g);
   |                           ^ generator is not `Send`
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
   |
   |
   = help: within `[generator@fake-test-src-base/generator/parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `significant_drop::Client`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/parent-expression.rs:25:22
   |
LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
   |                                                            ------------------------ has type `significant_drop::Client` which is not `Send`
LL |                   _ => yield,
LL |                   _ => yield,
   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
LL |               };
   |               - `$name::Client::default()` is later dropped here
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
note: required by a bound in `assert_send`
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/parent-expression.rs:49:19
   |
LL | fn assert_send<T: Send>(_thing: T) {}
   |                   ^^^^ required by this bound in `assert_send`
   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/parent-expression.rs:27:25
   |
LL |               assert_send(g);
LL |               assert_send(g);
   |                           ^ generator is not `Send`
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
   |
   |
   = help: within `[generator@fake-test-src-base/generator/parent-expression.rs:21:21: 21:28]`, the trait `Send` is not implemented for `insignificant_dtor::Client`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/parent-expression.rs:25:22
   |
LL |               let g = move || match drop($name::Client { ..$name::Client::default() }) {
   |                                                            ------------------------ has type `insignificant_dtor::Client` which is not `Send`
LL |                   _ => yield,
LL |                   _ => yield,
   |                        ^^^^^ yield occurs here, with `$name::Client::default()` maybe used later
LL |               };
   |               - `$name::Client::default()` is later dropped here
LL | /     type_combinations!(
LL | |         // OK
LL | |         // OK
LL | |         copy => { #[derive(Copy, Clone, Default)] pub struct Client; };
LL | |         // NOT OK: MIR borrowck thinks that this is used after the yield, even though
LL | |         };
LL | |     );
   | |_____- in this macro invocation
note: required by a bound in `assert_send`
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/parent-expression.rs:49:19
   |
LL | fn assert_send<T: Send>(_thing: T) {}
   |                   ^^^^ required by this bound in `assert_send`
   = note: this error originates in the macro `type_combinations` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 3 previous errors
------------------------------------------



---- [ui] tests/ui/generator/partial-drop.rs#no_drop_tracking stdout ----
diff of stderr:

44 note: generator is not `Send` as this value is used across a yield
46    |
46    |
- LL |         let Bar { foo, x } = guard;
-    |                   --- has type `Foo` which is not `Send`
- LL |         drop(foo);
+ LL |         let guard = Bar { foo: Foo, x: 42 };
+    |             ----- has type `Bar` which is not `Send`
50 LL |         yield;
50 LL |         yield;
-    |         ^^^^^ yield occurs here, with `foo` maybe used later
+    |         ^^^^^ yield occurs here, with `guard` maybe used later
52 LL |     });
-    |     - `foo` is later dropped here
+    |     - `guard` is later dropped here
54 note: required by a bound in `assert_send`
56    |


The actual stderr differed from the expected stderr.
The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/partial-drop.no_drop_tracking/partial-drop.no_drop_tracking.stderr
To only update this specific test, also pass `--test-args generator/partial-drop.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/generator/partial-drop.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/partial-drop.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/partial-drop.no_drop_tracking/auxiliary"
stdout: none
--- stderr -------------------------------
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/partial-drop.rs:17:17
LL |       assert_send(|| {
   |  _________________^
   |  _________________^
LL | |         //[no_drop_tracking,drop_tracking]~^ ERROR generator cannot be sent between threads safely
LL | |         let guard = Bar { foo: Foo, x: 42 };
LL | |         drop(guard.foo);
LL | |         yield;
LL | |     });
   | |_____^ generator is not `Send`
   |
   = help: within `[generator@fake-test-src-base/generator/partial-drop.rs:17:17: 17:19]`, the trait `Send` is not implemented for `Foo`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/partial-drop.rs:21:9
   |
LL |         let guard = Bar { foo: Foo, x: 42 };
   |             ----- has type `Bar` which is not `Send`
LL |         drop(guard.foo);
LL |         yield;
   |         ^^^^^ yield occurs here, with `guard` maybe used later
LL |     });
   |     - `guard` is later dropped here
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/partial-drop.rs:33:19
   |
LL | fn assert_send<T: Send>(_: T) {}
   |                   ^^^^ required by this bound in `assert_send`
error: generator cannot be sent between threads safely
  --> fake-test-src-base/generator/partial-drop.rs:24:17
   |
LL |       assert_send(|| {
LL |       assert_send(|| {
   |  _________________^
LL | |         //[no_drop_tracking,drop_tracking]~^ ERROR generator cannot be sent between threads safely
LL | |         let guard = Bar { foo: Foo, x: 42 };
LL | |         let Bar { foo, x } = guard;
LL | |         drop(foo);
LL | |         yield;
LL | |     });
   | |_____^ generator is not `Send`
   |
   = help: within `[generator@fake-test-src-base/generator/partial-drop.rs:24:17: 24:19]`, the trait `Send` is not implemented for `Foo`
note: generator is not `Send` as this value is used across a yield
  --> fake-test-src-base/generator/partial-drop.rs:29:9
   |
LL |         let guard = Bar { foo: Foo, x: 42 };
   |             ----- has type `Bar` which is not `Send`
LL |         yield;
LL |         yield;
   |         ^^^^^ yield occurs here, with `guard` maybe used later
LL |     });
   |     - `guard` is later dropped here
note: required by a bound in `assert_send`
  --> fake-test-src-base/generator/partial-drop.rs:33:19
   |
LL | fn assert_send<T: Send>(_: T) {}
   |                   ^^^^ required by this bound in `assert_send`
error: aborting due to 2 previous errors
------------------------------------------



---- [ui] tests/ui/lint/must_not_suspend/dedup.rs#no_drop_tracking stdout ----
diff of stderr:

17 LL | #![deny(must_not_suspend)]
19 
19 
- error: `No` held across a suspend point, but should not be
-   --> $DIR/dedup.rs:20:13
-    |
- LL |     wheeee(&no).await;
-    |             ^^ ------ the value is held across this suspend point
-    |
- help: consider using a block (`{ ... }`) to shrink the value's scope, ending before the suspend point
-   --> $DIR/dedup.rs:20:13
-    |
- LL |     wheeee(&no).await;
- 
- error: aborting due to 2 previous errors
+ error: aborting due to previous error
33 
33 
34 


The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/lint/must_not_suspend/dedup.no_drop_tracking/dedup.no_drop_tracking.stderr
To only update this specific test, also pass `--test-args lint/must_not_suspend/dedup.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/lint/must_not_suspend/dedup.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/lint/must_not_suspend/dedup.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/lint/must_not_suspend/dedup.no_drop_tracking/auxiliary" "--edition=2018"
stdout: none
--- stderr -------------------------------
error: `No` held across a suspend point, but should not be
  --> fake-test-src-base/lint/must_not_suspend/dedup.rs:19:9
   |
LL |     let no = No {}; //~ ERROR `No` held across
   |         ^^
LL |     wheeee(&no).await; //[no_drop_tracking]~ ERROR `No` held across
   |                ------ the value is held across this suspend point
   |
help: consider using a block (`{ ... }`) to shrink the value's scope, ending before the suspend point
  --> fake-test-src-base/lint/must_not_suspend/dedup.rs:19:9
   |
LL |     let no = No {}; //~ ERROR `No` held across
note: the lint level is defined here
  --> fake-test-src-base/lint/must_not_suspend/dedup.rs:6:9
   |
   |
LL | #![deny(must_not_suspend)]

error: aborting due to previous error
------------------------------------------



---- [ui] tests/ui/lint/must_not_suspend/ref.rs#no_drop_tracking stdout ----
diff of stderr:

- error: `Umm` held across a suspend point, but should not be
-   --> $DIR/ref.rs:22:26
+ error: reference to `Umm` held across a suspend point, but should not be
3    |
4 LL |         let guard = &mut self.u;
-    |                          ^^^^^^
+    |             ^^^^^
+    |             ^^^^^
6 LL |
7 LL |         other().await;
8    |                ------ the value is held across this suspend point
9    |
9    |
10 note: You gotta use Umm's, ya know?
-   --> $DIR/ref.rs:22:26
12    |
13 LL |         let guard = &mut self.u;
-    |                          ^^^^^^
+    |             ^^^^^
+    |             ^^^^^
15 help: consider using a block (`{ ... }`) to shrink the value's scope, ending before the suspend point
-   --> $DIR/ref.rs:22:26
17    |
18 LL |         let guard = &mut self.u;
-    |                          ^^^^^^
+    |             ^^^^^
+    |             ^^^^^
20 note: the lint level is defined here
21   --> $DIR/ref.rs:7:9
22    |


The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/lint/must_not_suspend/ref.no_drop_tracking/ref.no_drop_tracking.stderr
To only update this specific test, also pass `--test-args lint/must_not_suspend/ref.rs`

error in revision `no_drop_tracking`: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/lint/must_not_suspend/ref.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--cfg" "no_drop_tracking" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "--remap-path-prefix=/checkout/tests/ui=fake-test-src-base" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/lint/must_not_suspend/ref.no_drop_tracking" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/lint/must_not_suspend/ref.no_drop_tracking/auxiliary" "--edition=2018"
stdout: none
--- stderr -------------------------------
error: reference to `Umm` held across a suspend point, but should not be
  --> fake-test-src-base/lint/must_not_suspend/ref.rs:22:13
   |
LL |         let guard = &mut self.u; //~ ERROR `Umm` held across
LL |
LL |         other().await;
LL |         other().await;
   |                ------ the value is held across this suspend point
   |
note: You gotta use Umm's, ya know?
  --> fake-test-src-base/lint/must_not_suspend/ref.rs:22:13
   |
LL |         let guard = &mut self.u; //~ ERROR `Umm` held across
   |             ^^^^^
help: consider using a block (`{ ... }`) to shrink the value's scope, ending before the suspend point
  --> fake-test-src-base/lint/must_not_suspend/ref.rs:22:13
   |
LL |         let guard = &mut self.u; //~ ERROR `Umm` held across
note: the lint level is defined here
  --> fake-test-src-base/lint/must_not_suspend/ref.rs:7:9
   |
   |
LL | #![deny(must_not_suspend)]

error: aborting due to previous error
------------------------------------------

@eholk
Copy link
Contributor Author

eholk commented Feb 23, 2023

Huh, that's weird that we're suddenly getting a bunch of new test failures. I wonder what changed in this code? Maybe #101692 had some effect here?

@cjgillot
Copy link
Contributor

#101692 has duplicated each generator test case to have the 3 variants (no drop tracking, drop tracking, and MIR drop tracking). This may be where the errors come from.

@Noratrieb Noratrieb added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 5, 2023
@bors
Copy link
Collaborator

bors commented Apr 13, 2023

☔ The latest upstream changes (presumably #110252) made this pull request unmergeable. Please resolve the merge conflicts.

@Swatinem
Copy link
Contributor

I believe this can be closed now that #107421 has landed?

@Dylan-DPC Dylan-DPC closed this Oct 4, 2023
@Dylan-DPC Dylan-DPC removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Oct 4, 2023
@eholk
Copy link
Contributor Author

eholk commented Oct 26, 2023

I believe this can be closed now that #107421 has landed?

Yes! Sorry for the slow response!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.