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-05-12 00:10:52 +00:00
2023-05-05 20:36:21 +02:00
2023-05-08 17:58:01 -03:00
2023-05-08 17:58:01 -03:00
2023-05-04 18:06:07 +00:00
2023-05-12 00:10:52 +00:00
2023-05-11 12:14:57 -07:00
2023-05-08 17:58:01 -03:00
2023-04-30 14:08:26 +00:00
2023-05-08 03:36:30 +00:00
2023-05-08 03:36:30 +00:00
2023-05-12 00:10:52 +00:00
2023-04-29 13:01:46 +01:00
2023-05-02 10:32:08 +00:00
2023-05-05 14:58:52 -07:00
2023-04-29 13:01:46 +01:00
2023-05-08 03:36:30 +00:00
2023-05-19 20:58:06 +02:00
2023-05-08 17:58:01 -03:00
2023-04-26 21:02:56 +02:00
2023-05-08 03:36:30 +00:00
2023-05-01 16:15:17 +08: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