`rustc_mir_dataflow/src/elaborate_drops.rs` contains some infrastructure used by a few MIR passes: the `elaborate_drop` function, the `DropElaborator` trait, etc. `rustc_mir_transform/src/elaborate_drops.rs` (same file name, different crate) contains the `ElaborateDrops` pass. It relies on a lot of the infrastructure from `rustc_mir_dataflow/src/elaborate_drops.rs`. It turns out that the drop infrastructure is only used in `rustc_mir_transform`, so this commit moves it there. (The only exception is the small `DropFlagState` type, which is moved to the existing `rustc_mir_dataflow/src/drop_flag_effects.rs`.) The file is renamed from `rustc_mir_dataflow/src/elaborate_drops.rs` to `rustc_mir_transform/src/elaborate_drop.rs` (with no trailing `s`) because (a) the `elaborate_drop` function is the most important export, and (b) `rustc_mir_transform/src/elaborate_drops.rs` already exists. All the infrastructure pieces that used to be `pub` are now `pub(crate)`, because they are now only used within `rustc_mir_transform`.
44 lines
1.2 KiB
Rust
44 lines
1.2 KiB
Rust
// tidy-alphabetical-start
|
|
#![feature(assert_matches)]
|
|
#![feature(associated_type_defaults)]
|
|
#![feature(box_patterns)]
|
|
#![feature(exact_size_is_empty)]
|
|
#![feature(file_buffered)]
|
|
#![feature(let_chains)]
|
|
#![feature(never_type)]
|
|
#![feature(try_blocks)]
|
|
#![warn(unreachable_pub)]
|
|
// tidy-alphabetical-end
|
|
|
|
use rustc_middle::ty;
|
|
|
|
// Please change the public `use` directives cautiously, as they might be used by external tools.
|
|
// See issue #120130.
|
|
pub use self::drop_flag_effects::{
|
|
DropFlagState, drop_flag_effects_for_function_entry, drop_flag_effects_for_location,
|
|
move_path_children_matching, on_all_children_bits, on_lookup_result_bits,
|
|
};
|
|
pub use self::framework::{
|
|
Analysis, Backward, Direction, EntryStates, Forward, GenKill, JoinSemiLattice, MaybeReachable,
|
|
Results, ResultsCursor, ResultsVisitor, fmt, graphviz, lattice, visit_results,
|
|
};
|
|
use self::move_paths::MoveData;
|
|
|
|
pub mod debuginfo;
|
|
mod drop_flag_effects;
|
|
mod errors;
|
|
mod framework;
|
|
pub mod impls;
|
|
pub mod move_paths;
|
|
pub mod points;
|
|
pub mod rustc_peek;
|
|
mod un_derefer;
|
|
pub mod value_analysis;
|
|
|
|
rustc_fluent_macro::fluent_messages! { "../messages.ftl" }
|
|
|
|
pub struct MoveDataTypingEnv<'tcx> {
|
|
pub move_data: MoveData<'tcx>,
|
|
pub typing_env: ty::TypingEnv<'tcx>,
|
|
}
|