mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-29 03:53:55 +00:00
lint on duplicates during attribute parsing To do this we stuff them in the diagnostic context to be emitted after hir is constructed
24 lines
863 B
Rust
24 lines
863 B
Rust
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>,
|
|
}
|