Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/lib.rs')
-rw-r--r--crates/hir-def/src/lib.rs44
1 files changed, 19 insertions, 25 deletions
diff --git a/crates/hir-def/src/lib.rs b/crates/hir-def/src/lib.rs
index eb235f9b9f..0213bd904b 100644
--- a/crates/hir-def/src/lib.rs
+++ b/crates/hir-def/src/lib.rs
@@ -77,7 +77,7 @@ use base_db::{
use hir_expand::{
builtin::{BuiltinAttrExpander, BuiltinDeriveExpander, BuiltinFnLikeExpander, EagerExpander},
db::ExpandDatabase,
- eager::{expand_eager_macro_input, expand_module_path_as_eager},
+ eager::expand_eager_macro_input,
impl_intern_lookup,
name::Name,
proc_macro::{CustomProcMacroExpander, ProcMacroKind},
@@ -1400,19 +1400,26 @@ pub trait AsMacroCall {
fn as_call_id(
&self,
db: &dyn ExpandDatabase,
- module: ModuleId,
+ krate: CrateId,
+ resolver: impl Fn(&path::ModPath) -> Option<MacroDefId> + Copy,
+ ) -> Option<MacroCallId> {
+ self.as_call_id_with_errors(db, krate, resolver).ok()?.value
+ }
+
+ fn as_call_id_with_errors(
+ &self,
+ db: &dyn ExpandDatabase,
+ krate: CrateId,
resolver: impl Fn(&path::ModPath) -> Option<MacroDefId> + Copy,
- mod_path: impl FnOnce(ModuleId) -> String,
) -> Result<ExpandResult<Option<MacroCallId>>, UnresolvedMacro>;
}
impl AsMacroCall for InFile<&ast::MacroCall> {
- fn as_call_id(
+ fn as_call_id_with_errors(
&self,
db: &dyn ExpandDatabase,
- module: ModuleId,
+ krate: CrateId,
resolver: impl Fn(&path::ModPath) -> Option<MacroDefId> + Copy,
- mod_path: impl FnOnce(ModuleId) -> String,
) -> Result<ExpandResult<Option<MacroCallId>>, UnresolvedMacro> {
let expands_to = hir_expand::ExpandTo::from_call_site(self.value);
let ast_id = AstId::new(self.file_id, db.ast_id_map(self.file_id).ast_id(self.value));
@@ -1439,10 +1446,9 @@ impl AsMacroCall for InFile<&ast::MacroCall> {
&path,
call_site.ctx,
expands_to,
- module,
+ krate,
resolver,
resolver,
- mod_path,
)
}
}
@@ -1469,9 +1475,8 @@ fn macro_call_as_call_id(
call: &AstIdWithPath<ast::MacroCall>,
call_site: SyntaxContextId,
expand_to: ExpandTo,
- module: ModuleId,
+ krate: CrateId,
resolver: impl Fn(&path::ModPath) -> Option<MacroDefId> + Copy,
- mod_path: impl FnOnce(ModuleId) -> String,
) -> Result<Option<MacroCallId>, UnresolvedMacro> {
macro_call_as_call_id_with_eager(
db,
@@ -1479,10 +1484,9 @@ fn macro_call_as_call_id(
&call.path,
call_site,
expand_to,
- module,
+ krate,
resolver,
resolver,
- mod_path,
)
.map(|res| res.value)
}
@@ -1493,26 +1497,16 @@ fn macro_call_as_call_id_with_eager(
path: &path::ModPath,
call_site: SyntaxContextId,
expand_to: ExpandTo,
- module: ModuleId,
+ krate: CrateId,
resolver: impl FnOnce(&path::ModPath) -> Option<MacroDefId>,
eager_resolver: impl Fn(&path::ModPath) -> Option<MacroDefId>,
- mod_path: impl FnOnce(ModuleId) -> String,
) -> Result<ExpandResult<Option<MacroCallId>>, UnresolvedMacro> {
let def = resolver(path).ok_or_else(|| UnresolvedMacro { path: path.clone() })?;
let res = match def.kind {
- MacroDefKind::BuiltInEager(_, EagerExpander::ModulePath) => expand_module_path_as_eager(
- db,
- module.krate,
- mod_path(module),
- &ast_id.to_node(db),
- ast_id,
- def,
- call_site,
- ),
MacroDefKind::BuiltInEager(..) => expand_eager_macro_input(
db,
- module.krate,
+ krate,
&ast_id.to_node(db),
ast_id,
def,
@@ -1522,7 +1516,7 @@ fn macro_call_as_call_id_with_eager(
_ if def.is_fn_like() => ExpandResult {
value: Some(def.make_call(
db,
- module.krate,
+ krate,
MacroCallKind::FnLike { ast_id, expand_to, eager: None },
call_site,
)),