1
Fork 0

Use BTreeMap to store attributes.

This commit is contained in:
Camille GILLOT 2021-01-24 17:14:17 +01:00
parent 90a562c7ff
commit 38d9d09a58
10 changed files with 117 additions and 47 deletions

View file

@ -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> {

View file

@ -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)
}