| use rustc_data_structures::fx::FxIndexSet; |
| use rustc_hir::def_id::{DefId, LocalDefIdMap, LocalDefIdSet}; |
| use rustc_macros::StableHash; |
| |
| /// A single snapshot of dead-code liveness analysis state. |
| #[derive(Clone, Debug, StableHash)] |
| pub struct DeadCodeLivenessSnapshot { |
| pub live_symbols: LocalDefIdSet, |
| /// Maps each ADT to derived traits (for example `Debug` and `Clone`) that should be ignored |
| /// when checking for dead code diagnostics. |
| pub ignored_derived_traits: LocalDefIdMap<FxIndexSet<DefId>>, |
| } |
| |
| /// Dead-code liveness data for both analysis phases. |
| /// |
| /// `pre_deferred_seeding` is computed before reachable-public and `#[allow(dead_code)]` seeding, |
| /// and is used for lint `dead_code_pub_in_binary`. |
| /// `final_result` is the final liveness snapshot used for lint `dead_code`. |
| #[derive(Clone, Debug, StableHash)] |
| pub struct DeadCodeLivenessSummary { |
| pub pre_deferred_seeding: DeadCodeLivenessSnapshot, |
| pub final_result: DeadCodeLivenessSnapshot, |
| } |