Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/load-cargo/src/lib.rs')
-rw-r--r--crates/load-cargo/src/lib.rs27
1 files changed, 20 insertions, 7 deletions
diff --git a/crates/load-cargo/src/lib.rs b/crates/load-cargo/src/lib.rs
index abad7e9f7d..baa4517423 100644
--- a/crates/load-cargo/src/lib.rs
+++ b/crates/load-cargo/src/lib.rs
@@ -10,7 +10,7 @@ use hir_expand::proc_macro::{
ProcMacros,
};
use ide_db::{
- base_db::{CrateGraph, Env, SourceRoot, SourceRootId},
+ base_db::{CrateGraph, CrateWorkspaceData, Env, SourceRoot, SourceRootId},
prime_caches, ChangeWithProcMacros, FxHashMap, RootDatabase,
};
use itertools::Itertools;
@@ -447,12 +447,16 @@ fn load_crate_graph(
let source_roots = source_root_config.partition(vfs);
analysis_change.set_roots(source_roots);
- let num_crates = crate_graph.len();
- analysis_change.set_crate_graph(crate_graph);
+ let ws_data = crate_graph
+ .iter()
+ .zip(iter::repeat(From::from(CrateWorkspaceData {
+ proc_macro_cwd: None,
+ data_layout: target_layout.clone(),
+ toolchain: toolchain.clone(),
+ })))
+ .collect();
+ analysis_change.set_crate_graph(crate_graph, ws_data);
analysis_change.set_proc_macros(proc_macros);
- analysis_change
- .set_target_data_layouts(iter::repeat(target_layout.clone()).take(num_crates).collect());
- analysis_change.set_toolchains(iter::repeat(toolchain.clone()).take(num_crates).collect());
db.apply_change(analysis_change);
db
@@ -489,8 +493,17 @@ impl ProcMacroExpander for Expander {
def_site: Span,
call_site: Span,
mixed_site: Span,
+ current_dir: Option<String>,
) -> Result<tt::Subtree<Span>, ProcMacroExpansionError> {
- match self.0.expand(subtree, attrs, env.clone(), def_site, call_site, mixed_site) {
+ match self.0.expand(
+ subtree,
+ attrs,
+ env.clone(),
+ def_site,
+ call_site,
+ mixed_site,
+ current_dir,
+ ) {
Ok(Ok(subtree)) => Ok(subtree),
Ok(Err(err)) => Err(ProcMacroExpansionError::Panic(err.0)),
Err(err) => Err(ProcMacroExpansionError::System(err.to_string())),