Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DO NOT MERGE (yet): Enable -Zdrop-tracking by default #97334

Closed
wants to merge 1 commit into from

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
Contributor

bors commented May 23, 2022

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

@bors
Copy link
Contributor

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
Contributor

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
Contributor

bors commented Jan 24, 2023

⌛ Trying commit bb05901728def04193a6ad433659864581e2cc66 with merge f41a2ab7b0d9462073425dd6c04abbeb4805cb77...

@bors
Copy link
Contributor

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
Contributor

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.