Use BTreeMap to store attributes.
This commit is contained in:
parent
90a562c7ff
commit
38d9d09a58
10 changed files with 117 additions and 47 deletions
|
@ -2,7 +2,7 @@
|
|||
use crate::def::{CtorKind, DefKind, Namespace, Res};
|
||||
use crate::def_id::DefId;
|
||||
crate use crate::hir_id::HirId;
|
||||
use crate::{itemlikevisit, HirIdVec, LangItem};
|
||||
use crate::{itemlikevisit, LangItem};
|
||||
|
||||
use rustc_ast::util::parser::ExprPrecedence;
|
||||
use rustc_ast::{self as ast, CrateSugar, LlvmAsmDialect};
|
||||
|
@ -675,7 +675,7 @@ pub struct Crate<'hir> {
|
|||
pub trait_map: BTreeMap<HirId, Vec<TraitCandidate>>,
|
||||
|
||||
/// Collected attributes from HIR nodes.
|
||||
pub attrs: HirIdVec<&'hir [Attribute]>,
|
||||
pub attrs: BTreeMap<HirId, &'hir [Attribute]>,
|
||||
}
|
||||
|
||||
impl Crate<'hir> {
|
||||
|
|
|
@ -477,7 +477,7 @@ pub trait Visitor<'v>: Sized {
|
|||
pub fn walk_crate<'v, V: Visitor<'v>>(visitor: &mut V, krate: &'v Crate<'v>) {
|
||||
visitor.visit_mod(&krate.item.module, krate.item.span, CRATE_HIR_ID);
|
||||
walk_list!(visitor, visit_macro_def, krate.exported_macros);
|
||||
for (id, attrs) in krate.attrs.iter_enumerated() {
|
||||
for (&id, attrs) in krate.attrs.iter() {
|
||||
for a in *attrs {
|
||||
visitor.visit_attribute(id, a)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue