Bryan Garza
8f1cec8d84
Safe Transmute: Enable handling references, including recursive types
...
This patch enables support for references in Safe Transmute, by generating
nested obligations during trait selection. Specifically, when we call
`confirm_transmutability_candidate(...)`, we now recursively traverse the
`rustc_transmute::Answer` tree and create obligations for all the `Answer`
variants, some of which include multiple nested `Answer`s.
Also, to handle recursive types, enable support for coinduction for the Safe
Transmute trait (`BikeshedIntrinsicFrom`) by adding the `#[rustc_coinduction]`
annotation.
Also fix some small logic issues when reducing the `or` and `and` combinations
in `rustc_transmute`, so that we don't end up with additional redundant
`Answer`s in the tree.
Co-authored-by: Jack Wrenn <jack@wrenn.fyi>
2023-05-24 14:52:18 -07:00
..
2023-04-30 00:06:26 +08:00
2023-04-25 00:08:35 +02:00
2023-04-25 00:08:35 +02:00
2023-05-08 03:36:30 +00:00
2023-05-05 22:40:04 +12:00
2023-04-23 18:09:30 +00:00
2023-05-24 01:17:38 +02:00
2023-05-03 19:41:15 +00:00
2023-05-12 00:10:52 +00:00
2023-05-23 03:43:09 +00:00
2023-04-27 18:33:39 +00:00
2023-04-28 20:28:56 -05:00
2023-04-27 01:34:03 +00:00
2023-05-21 14:16:41 +02:00
2023-05-18 17:37:08 +05:30
2023-05-06 18:40:47 +02:00
2023-05-12 00:10:52 +00:00
2023-05-21 14:16:41 +02:00
2023-05-12 00:10:52 +00:00
2023-04-26 22:34:39 -04:00
2023-04-28 14:42:03 +02:00
2023-05-17 11:13:57 +05:30
2023-05-05 20:36:21 +02:00
2023-05-21 14:09:03 +02:00
2023-05-12 00:10:52 +00:00
2023-05-08 17:58:01 -03:00
2023-05-05 01:22:17 -05:00
2023-04-27 01:34:03 +00:00
2023-05-08 17:58:01 -03:00
2023-04-27 01:34:03 +00:00
2023-05-12 00:10:52 +00:00
2023-05-05 22:40:05 +12:00
2023-05-21 14:16:41 +02:00
2023-05-04 18:06:07 +00:00
2023-05-12 00:10:52 +00:00
2023-05-23 17:23:30 +00:00
2023-05-09 20:49:32 +02:00
2023-05-15 00:00:00 +00:00
2023-05-18 01:47:55 +00:00
2023-05-21 14:16:41 +02:00
2023-05-11 21:41:07 +01:00
2023-05-09 20:35:39 -04:00
2023-05-05 13:02:43 -07:00
2023-05-13 21:34:05 +00:00
2023-05-11 12:14:57 -07:00
2023-05-08 17:58:01 -03:00
2023-05-21 14:16:41 +02:00
2023-05-16 11:39:38 +02:00
2023-05-01 16:37:00 +08:00
2023-05-21 13:37:32 +02:00
2023-05-18 01:53:01 +00:00
2023-05-23 13:14:34 +08:00
2023-05-09 20:49:31 +02:00
2023-05-03 20:09:10 +03:00
2023-05-16 18:50:26 +02:00
2023-04-25 15:25:19 +00:00
2023-05-18 01:47:55 +00:00
2023-05-15 21:16:35 +03:00
2023-05-13 21:34:05 +00:00
2023-05-05 16:05:04 -07:00
2023-05-05 21:42:54 +01:00
2023-05-21 14:28:09 +02:00
2023-05-21 13:37:32 +02:00
2023-05-21 13:37:32 +02:00
2023-04-30 14:08:26 +00:00
2023-05-08 03:36:30 +00:00
2023-05-12 00:10:52 +00:00
2023-04-25 00:08:35 +02:00
2023-05-08 03:36:30 +00:00
2023-05-05 18:54:06 +01:00
2023-05-21 13:37:32 +02:00
2023-05-21 14:16:41 +02:00
2023-05-03 20:09:10 +03:00
2023-05-11 18:06:31 +04:00
2023-05-12 00:10:52 +00:00
2023-05-20 15:20:27 +02:00
2023-05-21 14:16:41 +02:00
2023-04-28 20:28:56 -05:00
2023-04-29 13:01:46 +01:00
2023-05-17 17:56:26 +08:00
2023-05-16 11:39:38 +02:00
2023-05-21 14:16:41 +02:00
2023-05-21 13:37:32 +02:00
2023-04-24 07:53:23 +02:00
2023-04-26 01:55:50 -05:00
2023-05-08 03:42:21 +00:00
2023-05-09 20:49:31 +02:00
2023-05-03 20:09:10 +03:00
2023-05-21 13:37:32 +02:00
2023-05-01 15:05:39 +01:00
2023-05-19 22:11:54 +08:00
2023-05-21 14:16:41 +02:00
2023-05-21 13:37:32 +02:00
2023-05-05 16:19:18 +01:00
2023-05-02 10:32:08 +00:00
2023-05-21 13:37:32 +02:00
2023-05-03 22:41:29 +00:00
2023-05-23 03:23:52 +00:00
2023-05-05 14:58:52 -07:00
2023-05-09 12:33:45 +05:30
2023-05-09 12:33:46 +05:30
2023-04-29 13:01:46 +01:00
2023-05-21 13:37:32 +02:00
2023-05-08 03:36:30 +00:00
2023-05-08 14:58:09 +08:00
2023-05-19 20:58:06 +02:00
2023-04-30 00:06:26 +08:00
2023-05-08 17:58:01 -03:00
2023-04-26 22:34:30 -04:00
2023-04-26 21:02:56 +02:00
2023-04-22 14:24:32 -05:00
2023-05-23 04:41:44 +00:00
2023-05-24 14:52:18 -07:00
2023-05-24 14:52:18 -07:00
2023-05-21 14:16:41 +02:00
2023-05-16 11:39:39 +02:00
2023-05-22 23:33:34 +00:00
2023-05-08 03:36:30 +00:00
2023-05-01 16:15:17 +08:00
2023-05-18 09:29:48 +08:00
2023-05-03 20:09:10 +03:00
2023-05-18 01:53:01 +00:00
2023-05-23 12:46:25 -04:00
2023-04-29 13:01:46 +01:00
2023-05-16 20:30:48 +00:00
2023-05-12 00:10:52 +00:00
2023-05-09 20:35:39 -04:00
2023-05-09 20:35:39 -04:00
2023-05-21 13:37:32 +02:00
2023-05-09 20:35:39 -04:00
2023-05-21 14:16:41 +02:00
2023-05-21 14:16:41 +02:00
2023-05-10 19:36:02 +02:00
2023-04-25 00:08:33 +02:00
2023-05-04 15:39:21 +02:00
2023-05-03 20:09:10 +03:00
2023-05-15 21:22:13 +01:00