aboutsummaryrefslogtreecommitdiff
path: root/crates/rust-analyzer/src/cli/load_cargo.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/rust-analyzer/src/cli/load_cargo.rs')
-rw-r--r--crates/rust-analyzer/src/cli/load_cargo.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/crates/rust-analyzer/src/cli/load_cargo.rs b/crates/rust-analyzer/src/cli/load_cargo.rs
index 54e2fa1a7..832f04226 100644
--- a/crates/rust-analyzer/src/cli/load_cargo.rs
+++ b/crates/rust-analyzer/src/cli/load_cargo.rs
@@ -7,7 +7,9 @@ use anyhow::Result;
7use crossbeam_channel::{unbounded, Receiver}; 7use crossbeam_channel::{unbounded, Receiver};
8use ra_db::{ExternSourceId, FileId, SourceRootId}; 8use ra_db::{ExternSourceId, FileId, SourceRootId};
9use ra_ide::{AnalysisChange, AnalysisHost}; 9use ra_ide::{AnalysisChange, AnalysisHost};
10use ra_project_model::{get_rustc_cfg_options, CargoFeatures, PackageRoot, ProjectWorkspace}; 10use ra_project_model::{
11 get_rustc_cfg_options, CargoFeatures, PackageRoot, ProcMacroClient, ProjectWorkspace,
12};
11use ra_vfs::{RootEntry, Vfs, VfsChange, VfsTask, Watch}; 13use ra_vfs::{RootEntry, Vfs, VfsChange, VfsTask, Watch};
12use rustc_hash::{FxHashMap, FxHashSet}; 14use rustc_hash::{FxHashMap, FxHashSet};
13 15
@@ -67,7 +69,9 @@ pub(crate) fn load_cargo(
67 (source_root_id, project_root) 69 (source_root_id, project_root)
68 }) 70 })
69 .collect::<FxHashMap<_, _>>(); 71 .collect::<FxHashMap<_, _>>();
70 let host = load(&source_roots, ws, &mut vfs, receiver, extern_dirs); 72
73 let proc_macro_client = ProcMacroClient::dummy();
74 let host = load(&source_roots, ws, &mut vfs, receiver, extern_dirs, &proc_macro_client);
71 Ok((host, source_roots)) 75 Ok((host, source_roots))
72} 76}
73 77
@@ -77,6 +81,7 @@ pub(crate) fn load(
77 vfs: &mut Vfs, 81 vfs: &mut Vfs,
78 receiver: Receiver<VfsTask>, 82 receiver: Receiver<VfsTask>,
79 extern_dirs: FxHashSet<PathBuf>, 83 extern_dirs: FxHashSet<PathBuf>,
84 proc_macro_client: &ProcMacroClient,
80) -> AnalysisHost { 85) -> AnalysisHost {
81 let lru_cap = std::env::var("RA_LRU_CAP").ok().and_then(|it| it.parse::<usize>().ok()); 86 let lru_cap = std::env::var("RA_LRU_CAP").ok().and_then(|it| it.parse::<usize>().ok());
82 let mut host = AnalysisHost::new(lru_cap); 87 let mut host = AnalysisHost::new(lru_cap);
@@ -143,12 +148,16 @@ pub(crate) fn load(
143 opts 148 opts
144 }; 149 };
145 150
146 let crate_graph = 151 let crate_graph = ws.to_crate_graph(
147 ws.to_crate_graph(&default_cfg_options, &extern_source_roots, &mut |path: &Path| { 152 &default_cfg_options,
153 &extern_source_roots,
154 proc_macro_client,
155 &mut |path: &Path| {
148 let vfs_file = vfs.load(path); 156 let vfs_file = vfs.load(path);
149 log::debug!("vfs file {:?} -> {:?}", path, vfs_file); 157 log::debug!("vfs file {:?} -> {:?}", path, vfs_file);
150 vfs_file.map(vfs_file_to_id) 158 vfs_file.map(vfs_file_to_id)
151 }); 159 },
160 );
152 log::debug!("crate graph: {:?}", crate_graph); 161 log::debug!("crate graph: {:?}", crate_graph);
153 analysis_change.set_crate_graph(crate_graph); 162 analysis_change.set_crate_graph(crate_graph);
154 163