Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/expr_store/lower.rs')
| -rw-r--r-- | crates/hir-def/src/expr_store/lower.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/crates/hir-def/src/expr_store/lower.rs b/crates/hir-def/src/expr_store/lower.rs index c3ca610fae..c346cec242 100644 --- a/crates/hir-def/src/expr_store/lower.rs +++ b/crates/hir-def/src/expr_store/lower.rs @@ -5,7 +5,7 @@ mod asm; use std::mem; -use base_db::CrateId; +use base_db::Crate; use either::Either; use hir_expand::{ mod_path::tool_path, @@ -50,7 +50,7 @@ use crate::{ item_scope::BuiltinShadowMode, lang_item::LangItem, lower::LowerCtx, - nameres::{DefMap, MacroSubNs}, + nameres::{DefMap, LocalDefMap, MacroSubNs}, path::{GenericArgs, Path}, type_ref::{Mutability, Rawness, TypeRef}, AdtId, BlockId, BlockLoc, ConstBlockLoc, DefWithBodyId, MacroId, ModuleDefId, UnresolvedMacro, @@ -64,7 +64,7 @@ pub(super) fn lower_body( expander: Expander, parameters: Option<(ast::ParamList, impl Iterator<Item = bool>)>, body: Option<ast::Expr>, - krate: CrateId, + krate: Crate, is_async_fn: bool, ) -> (Body, BodySourceMap) { // We cannot leave the root span map empty and let any identifier from it be treated as root, @@ -189,7 +189,7 @@ pub(super) fn lower( owner: ExprStoreOwnerId, expander: Expander, body: Option<ast::Expr>, - krate: CrateId, + krate: Crate, ) -> (ExpressionStore, ExpressionStoreSourceMap) { // We cannot leave the root span map empty and let any identifier from it be treated as root, // because when inside nested macros `SyntaxContextId`s from the outer macro will be interleaved @@ -214,8 +214,9 @@ struct ExprCollector<'a> { expander: Expander, owner: ExprStoreOwnerId, def_map: Arc<DefMap>, + local_def_map: Arc<LocalDefMap>, ast_id_map: Arc<AstIdMap>, - krate: CrateId, + krate: Crate, store: ExpressionStoreBuilder, source_map: ExpressionStoreSourceMap, @@ -327,14 +328,16 @@ impl ExprCollector<'_> { db: &dyn DefDatabase, owner: ExprStoreOwnerId, expander: Expander, - krate: CrateId, + krate: Crate, span_map: Option<Arc<ExpansionSpanMap>>, ) -> ExprCollector<'_> { + let (def_map, local_def_map) = expander.module.local_def_map(db); ExprCollector { db, owner, krate, - def_map: expander.module.def_map(db), + def_map, + local_def_map, source_map: ExpressionStoreSourceMap::default(), ast_id_map: db.ast_id_map(expander.current_file_id()), store: ExpressionStoreBuilder::default(), @@ -1306,6 +1309,7 @@ impl ExprCollector<'_> { None => self.expander.enter_expand(self.db, mcall, |path| { self.def_map .resolve_path( + &self.local_def_map, self.db, module, path, @@ -1608,6 +1612,7 @@ impl ExprCollector<'_> { // This could also be a single-segment path pattern. To // decide that, we need to try resolving the name. let (resolved, _) = self.def_map.resolve_path( + &self.local_def_map, self.db, self.expander.module.local_id, &name.clone().into(), |