| use rustc_attr_data_structures::lints::AttributeLint; |
| use rustc_data_structures::fingerprint::Fingerprint; |
| use rustc_macros::HashStable_Generic; |
| |
| use crate::HirId; |
| |
| /// During ast lowering, no lints can be emitted. |
| /// That is because lints attach to nodes either in the AST, or on the built HIR. |
| /// When attached to AST nodes, they're emitted just before building HIR, |
| /// and then there's a gap where no lints can be emitted until HIR is done. |
| /// The variants in this enum represent lints that are temporarily stashed during |
| /// AST lowering to be emitted once HIR is built. |
| #[derive(Clone, Debug, HashStable_Generic)] |
| pub enum DelayedLint { |
| AttributeParsing(AttributeLint<HirId>), |
| } |
| |
| #[derive(Debug)] |
| pub struct DelayedLints { |
| pub lints: Box<[DelayedLint]>, |
| // Only present when the crate hash is needed. |
| pub opt_hash: Option<Fingerprint>, |
| } |