diff options
Diffstat (limited to 'crates/rust-analyzer/src/cli/load_cargo.rs')
-rw-r--r-- | crates/rust-analyzer/src/cli/load_cargo.rs | 19 |
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; | |||
7 | use crossbeam_channel::{unbounded, Receiver}; | 7 | use crossbeam_channel::{unbounded, Receiver}; |
8 | use ra_db::{ExternSourceId, FileId, SourceRootId}; | 8 | use ra_db::{ExternSourceId, FileId, SourceRootId}; |
9 | use ra_ide::{AnalysisChange, AnalysisHost}; | 9 | use ra_ide::{AnalysisChange, AnalysisHost}; |
10 | use ra_project_model::{get_rustc_cfg_options, CargoFeatures, PackageRoot, ProjectWorkspace}; | 10 | use ra_project_model::{ |
11 | get_rustc_cfg_options, CargoFeatures, PackageRoot, ProcMacroClient, ProjectWorkspace, | ||
12 | }; | ||
11 | use ra_vfs::{RootEntry, Vfs, VfsChange, VfsTask, Watch}; | 13 | use ra_vfs::{RootEntry, Vfs, VfsChange, VfsTask, Watch}; |
12 | use rustc_hash::{FxHashMap, FxHashSet}; | 14 | use 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 | ||