mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
8f1cec8d84
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> |
||
---|---|---|
.. | ||
recursive-wrapper-types-bit-compatible.rs | ||
recursive-wrapper-types-bit-compatible.stderr | ||
recursive-wrapper-types-bit-incompatible.rs | ||
recursive-wrapper-types-bit-incompatible.stderr | ||
recursive-wrapper-types.rs | ||
u8-to-unit.rs | ||
u8-to-unit.stderr | ||
unit-to-itself.rs | ||
unit-to-u8.rs | ||
unit-to-u8.stderr |