Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-expand/src/proc_macro.rs')
-rw-r--r--crates/hir-expand/src/proc_macro.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/crates/hir-expand/src/proc_macro.rs b/crates/hir-expand/src/proc_macro.rs
index 26bb3a3edd..fe09f0307c 100644
--- a/crates/hir-expand/src/proc_macro.rs
+++ b/crates/hir-expand/src/proc_macro.rs
@@ -29,6 +29,7 @@ pub trait ProcMacroExpander: fmt::Debug + Send + Sync + RefUnwindSafe {
def_site: Span,
call_site: Span,
mixed_site: Span,
+ current_dir: Option<String>,
) -> Result<tt::Subtree, ProcMacroExpansionError>;
}
@@ -234,8 +235,18 @@ impl CustomProcMacroExpander {
let krate_graph = db.crate_graph();
// Proc macros have access to the environment variables of the invoking crate.
let env = &krate_graph[calling_crate].env;
- match proc_macro.expander.expand(tt, attr_arg, env, def_site, call_site, mixed_site)
- {
+ match proc_macro.expander.expand(
+ tt,
+ attr_arg,
+ env,
+ def_site,
+ call_site,
+ mixed_site,
+ db.crate_workspace_data()[&calling_crate]
+ .proc_macro_cwd
+ .as_ref()
+ .map(ToString::to_string),
+ ) {
Ok(t) => ExpandResult::ok(t),
Err(err) => match err {
// Don't discard the item in case something unexpected happened while expanding attributes