rust/compiler/rustc_hir/src
bors e4417cf020 Auto merge of #92268 - jswrenn:transmute, r=oli-obk
Initial implementation of transmutability trait.

*T'was the night before Christmas and all through the codebase, not a miri was stirring — no hint of `unsafe`!*

This PR provides an initial, **incomplete** implementation of *[MCP 411: Lang Item for Transmutability](https://github.com/rust-lang/compiler-team/issues/411)*. The `core::mem::BikeshedIntrinsicFrom` trait provided by this PR is implemented on-the-fly by the compiler for types `Src` and `Dst` when the bits of all possible values of type `Src` are safely reinterpretable as a value of type `Dst`.

What this PR provides is:
- [x] [support for transmutations involving primitives](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/primitives)
- [x] [support for transmutations involving arrays](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/arrays)
- [x] [support for transmutations involving structs](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/structs)
- [x] [support for transmutations involving enums](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/enums)
- [x] [support for transmutations involving unions](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/unions)
- [x] [support for weaker validity checks](https://github.com/jswrenn/rust/blob/transmute/src/test/ui/transmutability/unions/should_permit_intersecting_if_validity_is_assumed.rs) (i.e., `Assume::VALIDITY`)
- [x] visibility checking

What isn't yet implemented:
- [ ] transmutability options passed using the `Assume` struct
- [ ] [support for references](https://github.com/jswrenn/rust/blob/transmute/src/test/ui/transmutability/references.rs)
- [ ] smarter error messages

These features will be implemented in future PRs.
2022-08-02 21:17:31 +00:00
..
arena.rs Add an indirection for closures in hir::ExprKind 2022-07-12 21:00:13 +04:00
def.rs Replace LifetimeRes::Anonymous by LifetimeRes::Infer. 2022-07-26 19:00:31 +02:00
def_path_hash_map.rs Use on-disk-hash-table format for DefPathHashMap in hir::definitions. 2021-09-14 13:54:41 +02:00
definitions.rs fix ICE in Definitions::create_def 2022-08-01 16:15:55 +03:00
diagnostic_items.rs Introduce get_diagnostic_name 2021-10-06 08:40:28 -05:00
hir.rs Store associated item defaultness in impl_defaultness. 2022-08-01 21:38:16 +02:00
hir_id.rs Auto merge of #96082 - michaelwoerister:less_impl_stable_hash_via_hash, r=compiler-errors 2022-04-20 03:51:09 +00:00
intravisit.rs Match on TraitItem exhaustively. 2022-08-01 21:39:59 +02:00
lang_items.rs Initial (incomplete) implementation of transmutability trait. 2022-07-27 17:33:56 +00:00
lib.rs Make AST lowering a query. 2022-07-06 23:04:55 +02:00
pat_util.rs Remove unused StableMap and StableSet types from rustc_data_structures 2022-07-20 13:11:39 +02:00
stable_hash_impls.rs Remove NodeIdHashingMode. 2022-04-12 19:59:32 +02:00
target.rs add comment about restriction of Target::from_def_kind 2022-04-09 16:03:16 -04:00
tests.rs Revert "Revert "Fix test"" 2021-07-06 11:28:06 +02:00
weak_lang_items.rs Use FxIndexMap instead of otherwise unused StableMap for WEAK_ITEMS_REFS. 2022-07-20 12:40:51 +02:00