aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_batch/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_batch/src/lib.rs')
-rw-r--r--crates/ra_batch/src/lib.rs20
1 files changed, 15 insertions, 5 deletions
diff --git a/crates/ra_batch/src/lib.rs b/crates/ra_batch/src/lib.rs
index c01574fbc..0db751465 100644
--- a/crates/ra_batch/src/lib.rs
+++ b/crates/ra_batch/src/lib.rs
@@ -1,5 +1,3 @@
1mod vfs_filter;
2
3use std::{collections::HashSet, error::Error, path::Path}; 1use std::{collections::HashSet, error::Error, path::Path};
4 2
5use rustc_hash::FxHashMap; 3use rustc_hash::FxHashMap;
@@ -7,8 +5,8 @@ use rustc_hash::FxHashMap;
7use ra_db::{CrateGraph, FileId, SourceRootId}; 5use ra_db::{CrateGraph, FileId, SourceRootId};
8use ra_ide_api::{AnalysisChange, AnalysisHost}; 6use ra_ide_api::{AnalysisChange, AnalysisHost};
9use ra_project_model::{PackageRoot, ProjectWorkspace}; 7use ra_project_model::{PackageRoot, ProjectWorkspace};
10use ra_vfs::{Vfs, VfsChange}; 8use ra_vfs::{RootEntry, Vfs, VfsChange};
11use vfs_filter::IncludeRustFiles; 9use ra_vfs_glob::RustPackageFilterBuilder;
12 10
13type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>; 11type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
14 12
@@ -23,7 +21,19 @@ pub fn load_cargo(root: &Path) -> Result<(AnalysisHost, FxHashMap<SourceRootId,
23 let root = std::env::current_dir()?.join(root); 21 let root = std::env::current_dir()?.join(root);
24 let ws = ProjectWorkspace::discover(root.as_ref())?; 22 let ws = ProjectWorkspace::discover(root.as_ref())?;
25 let project_roots = ws.to_roots(); 23 let project_roots = ws.to_roots();
26 let (mut vfs, roots) = Vfs::new(IncludeRustFiles::from_roots(project_roots.clone()).collect()); 24 let (mut vfs, roots) = Vfs::new(
25 project_roots
26 .iter()
27 .map(|pkg_root| {
28 RootEntry::new(
29 pkg_root.path().clone(),
30 RustPackageFilterBuilder::default()
31 .set_member(pkg_root.is_member())
32 .into_vfs_filter(),
33 )
34 })
35 .collect(),
36 );
27 let crate_graph = ws.to_crate_graph(&mut |path: &Path| { 37 let crate_graph = ws.to_crate_graph(&mut |path: &Path| {
28 let vfs_file = vfs.load(path); 38 let vfs_file = vfs.load(path);
29 log::debug!("vfs file {:?} -> {:?}", path, vfs_file); 39 log::debug!("vfs file {:?} -> {:?}", path, vfs_file);