From 035d84558cb777806d8c02234051843194459aee Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 6 Apr 2021 22:25:44 +0200 Subject: =?UTF-8?q?Avoid=20O(n=C2=B2)=20when=20constructing=20AttrSourceMa?= =?UTF-8?q?p?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/hir_def/src/db.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'crates/hir_def/src/db.rs') diff --git a/crates/hir_def/src/db.rs b/crates/hir_def/src/db.rs index 9b7a213a1..7eadc8e0d 100644 --- a/crates/hir_def/src/db.rs +++ b/crates/hir_def/src/db.rs @@ -2,9 +2,10 @@ use std::sync::Arc; use base_db::{salsa, CrateId, SourceDatabase, Upcast}; +use either::Either; use hir_expand::{db::AstDatabase, HirFileId}; use la_arena::ArenaMap; -use syntax::SmolStr; +use syntax::{ast, AstPtr, SmolStr}; use crate::{ adt::{EnumData, StructData}, @@ -122,6 +123,18 @@ pub trait DefDatabase: InternDatabase + AstDatabase + Upcast { #[salsa::invoke(Attrs::fields_attrs_query)] fn fields_attrs(&self, def: VariantId) -> Arc>; + #[salsa::invoke(crate::attr::variants_attrs_source_map)] + fn variants_attrs_source_map( + &self, + def: EnumId, + ) -> Arc>>; + + #[salsa::invoke(crate::attr::fields_attrs_source_map)] + fn fields_attrs_source_map( + &self, + def: VariantId, + ) -> Arc, AstPtr>>>; + #[salsa::invoke(AttrsWithOwner::attrs_query)] fn attrs(&self, def: AttrDefId) -> AttrsWithOwner; -- cgit v1.2.3