mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-17 01:13:11 +00:00
![]() Add ADT variant infomation to StableMIR and finish implementing TyKind::internal() Introduce a `VariantDef` type and a mechanism to retrieve the definition from an `AdtDef`. The `VariantDef` representation itself is just a combination of `AdtDef` and `VariantIdx`, which allow us to retrieve further information of a variant. I don't think we need to cache extra information for now, and we can translate on an on demand manner. I am leaving the fields public today due to https://github.com/rust-lang/project-stable-mir/issues/56, but they shouldn't. For this PR, I've only added a method to retrieve the variant name, and its fields. I also added an implementation of `RustcInternal` that allow users to retrieve more information using Rust internal APIs. I have also finished the implementation of `RustcInternal` for `TyKind` which fixes https://github.com/rust-lang/project-stable-mir/issues/46. ## Motivation Both of these changes are needed in order to properly interpret things like projections. For example, - The variant definition is used to find out which variant we are downcasting to. - Being able to create `Ty` from `TyKind` helps for example processing each stage of a projection, like the code in `place.ty()`. |
||
---|---|---|
.. | ||
auxiliary | ||
fluent-messages | ||
internal-lints | ||
mod_dir_simple | ||
session-diagnostic | ||
stable-mir | ||
compiler-calls.rs | ||
deriving-global.rs | ||
deriving-hygiene.rs | ||
dropck_tarena_sound_drop.rs | ||
dropck-tarena-cycle-checked.rs | ||
dropck-tarena-cycle-checked.stderr | ||
dropck-tarena-unsound-drop.rs | ||
dropck-tarena-unsound-drop.stderr | ||
empty-struct-braces-derive.rs | ||
hash-stable-is-unstable.rs | ||
hash-stable-is-unstable.stderr | ||
lint-pass-macros.rs | ||
missing-rustc-driver-error.rs | ||
missing-rustc-driver-error.stderr | ||
mod_dir_path_canonicalized.rs | ||
pathless-extern-unstable.rs | ||
pathless-extern-unstable.stderr | ||
pprust-expr-roundtrip.rs | ||
regions-mock-tcx.rs | ||
rustc_encodable_hygiene.rs |