Matthias Krüger
3cf567e3c0
Rollup merge of #127136 - compiler-errors:coroutine-closure-env-shim, r=oli-obk
...
Fix `FnMut::call_mut`/`Fn::call` shim for async closures that capture references
I adjusted async closures to be able to implement `Fn` and `FnMut` *even if* they capture references, as long as those references did not need to borrow data from the closure captures themselves. See #125259 .
However, when I did this, I didn't actually relax an assertion in the `build_construct_coroutine_by_move_shim` shim code, which builds the `Fn`/`FnMut`/`FnOnce` implementations for async closures. Therefore, if we actually tried to *call* `FnMut`/`Fn` on async closures, it would ICE.
This PR adjusts this assertion to ensure that we only capture immutable references in closures if they implement `Fn`/`FnMut`. It also adds a bunch of tests and makes more of the async-closure tests into `build-pass` since we often care about these tests actually generating the right closure shims and stuff. I think it might be excessive to *always* use build-pass here, but 🤷 it's not that big of a deal.
Fixes #127019
Fixes #127012
r? oli-obk
2024-07-02 17:47:46 +02:00
..
2024-06-22 19:05:48 +02:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-06-12 22:59:24 +10:00
2024-06-19 10:44:01 -07:00
2024-06-03 13:24:44 +10:00
2024-06-10 00:06:02 -07:00
2024-07-01 05:17:13 -07:00
2024-06-19 10:44:01 -07:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-07-01 05:17:13 -07:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-04-08 15:08:06 +00:00
2023-06-15 15:19:11 -04:00
2024-06-03 14:17:16 +10:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-06-03 14:17:16 +10:00
2024-04-03 08:50:12 +00:00
2024-03-18 10:07:43 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2024-06-29 17:38:02 -04:00
2023-08-24 14:26:26 +02:00
2024-04-08 15:08:06 +00:00
2024-04-20 13:19:34 +02:00
2024-04-03 08:50:12 +00:00
2024-04-20 13:19:34 +02:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-01-07 13:54:05 +00:00
2024-01-07 13:54:05 +00:00
2024-04-20 13:19:34 +02:00
2024-01-07 13:54:05 +00:00
2024-01-07 13:54:05 +00:00
2024-05-21 19:22:04 +02:00
2024-01-07 13:54:05 +00:00
2024-01-07 13:54:05 +00:00
2024-04-20 13:19:34 +02:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-02-09 21:13:53 +00:00
2024-02-22 16:04:04 +00:00
2024-03-17 19:59:15 +01:00
2024-03-10 14:59:41 +01:00
2023-06-15 15:19:11 -04:00
2024-03-17 19:59:15 +01:00
2024-04-03 08:50:12 +00:00
2024-03-17 19:59:15 +01:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-02-12 17:37:05 +01:00
2024-02-12 17:37:05 +01:00
2024-04-20 13:19:34 +02:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-06-03 14:17:16 +10:00
2023-08-24 14:26:26 +02:00
2023-08-24 14:26:26 +02:00
2024-04-20 13:19:34 +02:00
2023-10-24 15:30:17 +00:00
2023-10-24 15:30:17 +00:00
2024-06-03 14:17:16 +10:00
2023-06-15 15:19:11 -04:00
2024-06-03 14:17:16 +10:00
2023-06-15 15:19:11 -04:00
2024-06-03 14:17:16 +10:00
2023-09-19 05:42:23 +00:00
2024-04-20 13:19:34 +02:00
2024-04-07 21:14:26 +08:00
2024-04-08 19:20:07 +08:00
2024-04-20 13:19:34 +02:00
2024-04-20 13:19:34 +02:00
2024-04-07 21:14:26 +08:00
2024-03-13 06:41:21 +01:00
2024-04-20 13:19:34 +02:00
2024-04-07 21:14:26 +08:00
2024-04-07 21:14:26 +08:00
2024-04-20 13:19:34 +02:00
2024-04-07 21:14:26 +08:00
2024-04-07 21:14:26 +08:00
2024-04-08 19:20:07 +08:00
2024-04-08 19:20:07 +08:00
2024-04-20 13:19:34 +02:00
2023-10-16 16:29:35 +00:00
2023-10-16 16:29:35 +00:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-06-03 14:17:16 +10:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2023-10-16 16:29:35 +00:00
2023-10-16 16:29:35 +00:00
2023-06-28 00:41:37 +00:00
2024-02-22 16:04:04 +00:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-03-22 20:14:39 -04:00
2023-01-11 09:32:08 +00:00
2024-02-22 16:04:04 +00:00
2024-02-05 23:31:54 +00:00
2024-04-20 13:19:34 +02:00
2024-06-28 19:05:01 -07:00
2024-06-28 19:05:01 -07:00
2024-04-20 19:22:13 +00:00
2024-04-20 19:22:13 +00:00
2024-04-20 13:19:34 +02:00
2024-05-17 20:33:02 -07:00
2024-05-17 20:33:02 -07:00
2023-10-25 06:46:45 +00:00
2023-10-25 06:46:45 +00:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-04-20 19:25:20 +00:00
2024-04-20 19:25:20 +00:00
2024-06-22 20:27:08 -07:00
2024-06-22 20:27:08 -07:00
2024-06-22 20:34:09 -07:00
2024-06-22 20:34:09 -07:00
2023-10-25 06:46:47 +00:00
2023-10-25 06:46:47 +00:00
2024-06-06 00:25:58 -07:00
2024-06-06 00:25:58 -07:00
2024-01-16 22:20:53 +00:00
2024-01-16 22:20:53 +00:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2023-10-25 06:46:48 +00:00
2023-10-25 06:46:48 +00:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2023-10-25 17:59:30 +00:00
2023-10-25 17:59:30 +00:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-06 00:25:58 -07:00
2024-06-06 00:25:58 -07:00
2023-10-25 06:46:45 +00:00
2023-10-25 06:46:45 +00:00
2024-04-20 19:10:23 +00:00
2024-04-20 19:10:23 +00:00
2023-10-25 06:46:47 +00:00
2023-10-25 06:46:47 +00:00
2024-06-30 11:30:54 -07:00
2024-06-30 11:30:54 -07:00
2023-10-25 06:46:48 +00:00
2023-10-25 06:46:48 +00:00
2024-01-16 22:20:54 +00:00
2024-01-16 22:20:54 +00:00
2024-06-30 11:30:54 -07:00
2024-06-06 00:25:58 -07:00
2024-06-06 00:25:58 -07:00
2024-06-06 00:25:58 -07:00
2024-06-06 00:25:58 -07:00
2024-04-20 19:22:13 +00:00
2024-04-20 19:22:13 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-01-16 22:20:54 +00:00
2024-01-16 22:20:54 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-02-12 17:37:05 +01:00
2024-02-12 17:37:05 +01:00
2023-06-15 15:19:11 -04:00
2023-08-30 17:24:10 +08:00
2023-06-15 15:19:11 -04:00
2023-08-30 17:24:10 +08:00
2023-08-30 17:24:10 +08:00
2023-08-30 17:24:10 +08:00
2023-08-30 17:24:10 +08:00
2023-08-30 17:24:10 +08:00
2024-04-20 13:19:34 +02:00
2024-04-20 13:19:34 +02:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-20 13:19:34 +02:00
2023-06-15 15:19:11 -04:00
2023-10-19 15:51:52 +00:00
2023-08-24 14:26:26 +02:00
2023-08-24 14:26:26 +02:00
2024-06-03 14:17:16 +10:00
2023-08-24 14:26:26 +02:00
2023-08-24 14:26:26 +02:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2023-10-24 15:30:17 +00:00
2023-10-24 15:30:17 +00:00
2024-06-03 14:17:16 +10:00
2023-10-19 15:51:52 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-02-12 17:37:05 +01:00
2024-04-08 15:08:06 +00:00
2024-06-03 14:17:16 +10:00
2024-02-17 20:21:57 +01:00
2023-06-15 15:19:11 -04:00
2024-04-03 08:50:12 +00:00
2024-06-03 14:17:16 +10:00
2024-06-20 22:16:59 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2023-06-15 15:19:11 -04:00
2024-02-22 16:04:04 +00:00
2024-02-17 20:21:57 +01:00
2023-08-24 14:26:26 +02:00
2023-06-15 15:19:11 -04:00
2024-02-17 20:21:57 +01:00
2024-06-03 14:17:16 +10:00
2024-06-05 22:25:42 +01:00
2024-06-05 22:25:42 +01:00
2023-10-19 15:51:52 +00:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-20 13:19:34 +02:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-06-03 14:17:16 +10:00
2024-02-13 17:21:53 +00:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-01-23 00:00:22 +00:00
2024-01-23 00:00:22 +00:00
2023-10-21 06:58:38 +00:00
2023-10-21 06:58:38 +00:00
2024-02-12 17:37:05 +01:00
2024-02-12 17:37:05 +01:00
2023-10-21 07:08:53 +00:00
2023-10-21 07:08:53 +00:00
2023-10-21 06:58:38 +00:00
2023-10-21 06:58:38 +00:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2023-10-21 06:58:38 +00:00
2023-10-21 06:58:38 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2023-10-21 06:58:38 +00:00
2023-10-21 06:58:38 +00:00
2023-10-21 07:01:24 +00:00
2023-10-21 07:01:24 +00:00
2024-06-03 14:17:16 +10:00
2024-02-12 17:37:05 +01:00
2024-02-12 17:37:05 +01:00
2023-06-15 15:19:11 -04:00
2024-02-22 16:04:04 +00:00
2024-06-22 20:27:08 -07:00
2024-06-22 20:27:08 -07:00
2024-06-22 20:27:08 -07:00
2024-06-22 20:27:08 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-22 20:27:08 -07:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-03-10 14:59:41 +01:00
2024-03-10 14:59:41 +01:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-05-28 09:28:51 -07:00
2024-05-28 09:28:51 -07:00
2024-04-21 11:08:37 -07:00
2024-04-21 11:08:37 -07:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-05-28 09:28:51 -07:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-03-23 23:23:41 -07:00
2024-03-23 23:23:41 -07:00
2024-03-23 23:23:41 -07:00
2024-03-23 23:23:41 -07:00
2024-03-23 23:23:41 -07:00
2024-03-23 23:23:41 -07:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2023-10-24 15:30:17 +00:00
2023-10-24 15:30:17 +00:00
2023-10-24 15:30:17 +00:00
2023-10-24 15:30:17 +00:00
2023-10-24 15:30:17 +00:00
2023-10-24 15:30:17 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-03-30 03:32:11 -07:00
2024-03-30 03:32:11 -07:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-05-17 20:33:02 -07:00
2024-05-17 20:33:02 -07:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-06-20 22:16:59 -07:00
2024-06-20 22:16:59 -07:00
2024-06-03 14:17:16 +10:00
2024-04-20 16:01:35 +02:00
2024-04-20 16:01:35 +02:00
2023-10-19 15:51:52 +00:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-04-08 18:54:33 +08:00
2024-04-20 05:37:53 +08:00
2024-04-20 05:37:53 +08:00
2024-04-20 05:37:53 +08:00
2023-08-30 17:24:10 +08:00
2024-04-08 18:54:33 +08:00
2024-04-08 18:54:33 +08:00
2024-04-08 18:54:33 +08:00
2024-04-20 05:37:53 +08:00
2024-04-08 18:54:33 +08:00
2024-04-20 05:37:53 +08:00
2024-06-03 13:24:44 +10:00
2024-04-20 05:37:53 +08:00
2024-04-20 05:37:53 +08:00
2024-06-03 14:17:16 +10:00
2024-02-22 16:04:04 +00:00
2023-06-15 15:19:11 -04:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2023-08-24 14:26:26 +02:00
2023-08-24 14:26:26 +02:00
2023-10-19 15:51:52 +00:00
2024-06-03 13:24:44 +10:00
2024-05-31 00:22:40 +00:00
2024-05-31 00:22:40 +00:00
2024-05-31 00:22:40 +00:00
2024-06-03 14:17:16 +10:00
2024-06-16 18:23:48 +02:00
2024-06-16 18:23:48 +02:00
2024-06-16 18:39:50 +02:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-06-03 14:17:16 +10:00
2024-04-20 13:19:34 +02:00
2024-03-10 14:59:41 +01:00
2023-06-23 18:36:25 +01:00
2023-06-23 18:36:25 +01:00
2023-06-23 18:36:25 +01:00
2024-04-03 08:50:12 +00:00
2023-06-15 15:19:11 -04:00
2024-04-20 19:19:06 +00:00
2024-04-03 08:50:12 +00:00
2023-08-17 17:02:04 +00:00
2024-04-20 19:19:06 +00:00
2024-06-03 14:17:16 +10:00
2024-04-03 08:50:12 +00:00
2024-04-20 16:01:35 +02:00
2024-04-20 16:01:35 +02:00
2023-10-19 15:51:52 +00:00
2023-06-15 15:19:11 -04:00
2024-01-06 14:17:33 -05:00
2024-02-12 17:37:05 +01:00
2024-02-12 17:37:05 +01:00
2024-04-20 13:19:34 +02:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2024-04-18 09:35:35 -07:00
2023-10-19 15:51:52 +00:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2023-10-19 15:51:52 +00:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-06-19 10:44:01 -07:00
2024-06-19 10:44:01 -07:00
2024-03-18 10:32:25 +01:00
2024-03-18 10:32:25 +01:00
2023-06-15 15:19:11 -04:00
2023-06-23 18:36:25 +01:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-05-17 18:33:37 -03:00
2024-05-17 18:33:37 -03:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-04-18 09:35:35 -07:00
2024-02-22 16:04:04 +00:00
2024-03-08 08:15:14 +08:00
2024-01-07 00:28:20 +00:00
2024-01-07 00:28:20 +00:00
2024-06-03 13:24:44 +10:00
2024-02-22 16:04:04 +00:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2024-02-22 16:04:04 +00:00
2023-06-15 15:19:11 -04:00
2024-03-17 19:59:15 +01:00
2024-03-17 19:59:15 +01:00
2024-03-13 22:35:11 +08:00
2024-06-03 13:24:44 +10:00
2024-01-07 01:42:57 +00:00
2024-01-07 01:42:57 +00:00
2024-01-28 13:50:20 -06:00
2024-03-07 22:58:51 +08:00
2024-03-07 22:58:51 +08:00
2024-06-03 14:17:16 +10:00
2023-06-15 15:19:11 -04:00
2023-06-23 18:36:25 +01:00
2024-04-20 13:19:34 +02:00
2024-02-12 17:37:05 +01:00
2024-04-20 13:19:34 +02:00
2023-07-07 18:17:16 +02:00
2023-06-15 15:19:11 -04:00
2023-06-15 15:19:11 -04:00
2024-04-03 16:00:38 +02:00
2023-06-15 15:19:11 -04:00
2024-06-03 14:17:16 +10:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-01-11 09:58:19 +00:00
2024-01-11 09:58:19 +00:00
2024-06-03 14:17:16 +10:00
2023-01-11 09:32:08 +00:00
2024-02-22 16:04:04 +00:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2023-08-24 14:26:26 +02:00
2024-02-22 16:04:04 +00:00
2023-10-19 15:51:52 +00:00
2023-10-19 15:51:52 +00:00
2023-10-19 15:51:52 +00:00
2024-06-03 13:24:44 +10:00
2023-06-15 15:19:11 -04:00
2024-04-03 08:50:12 +00:00
2024-02-22 16:04:04 +00:00
2024-04-03 08:50:12 +00:00
2024-04-03 08:50:12 +00:00
2024-06-03 14:17:16 +10:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2023-10-31 11:44:23 +00:00
2023-10-31 11:44:23 +00:00
2024-04-20 13:19:34 +02:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-04-20 13:19:34 +02:00
2024-03-09 14:32:27 +08:00
2024-03-09 14:32:27 +08:00
2024-02-12 17:37:05 +01:00
2024-02-12 17:37:05 +01:00
2023-10-31 11:44:23 +00:00
2023-10-31 11:44:23 +00:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2023-08-24 14:26:26 +02:00
2023-06-15 15:19:11 -04:00
2024-06-03 14:17:16 +10:00
2023-06-15 15:19:11 -04:00