Simpify workspace handling

This commit is contained in:
veetaha
2020-04-01 02:15:20 +03:00
parent 4b2bf9cf66
commit b7d5172f69
7 changed files with 62 additions and 82 deletions

View File

@@ -65,10 +65,10 @@ pub fn analysis_bench(
roots
.iter()
.find_map(|(source_root_id, project_root)| {
if project_root.is_member() {
if project_root.is_member {
for file_id in db.source_root(*source_root_id).walk() {
let rel_path = db.file_relative_path(file_id);
let abs_path = rel_path.to_path(project_root.path());
let abs_path = rel_path.to_path(&project_root.path);
if abs_path == path {
return Some(file_id);
}

View File

@@ -39,7 +39,7 @@ pub fn analysis_stats(
roots
.into_iter()
.filter_map(|(source_root_id, project_root)| {
if with_deps || project_root.is_member() {
if with_deps || project_root.is_member {
Some(source_root_id)
} else {
None

View File

@@ -36,8 +36,7 @@ pub(crate) fn load_cargo(
extern_dirs.extend(ws.out_dirs());
let mut project_roots = ws.to_roots();
project_roots
.extend(extern_dirs.iter().map(|path| PackageRoot::new(path.to_path_buf(), false)));
project_roots.extend(extern_dirs.iter().cloned().map(PackageRoot::new_non_member));
let (sender, receiver) = unbounded();
let sender = Box::new(move |t| sender.send(t).unwrap());
@@ -46,9 +45,9 @@ pub(crate) fn load_cargo(
.iter()
.map(|pkg_root| {
RootEntry::new(
pkg_root.path().clone(),
pkg_root.path.clone(),
RustPackageFilterBuilder::default()
.set_member(pkg_root.is_member())
.set_member(pkg_root.is_member)
.into_vfs_filter(),
)
})
@@ -58,14 +57,11 @@ pub(crate) fn load_cargo(
);
let source_roots = roots
.iter()
.map(|&vfs_root| {
.into_iter()
.map(|vfs_root| {
let source_root_id = vfs_root_to_id(vfs_root);
let project_root = project_roots
.iter()
.find(|it| it.path() == &vfs.root2path(vfs_root))
.unwrap()
.clone();
let project_root =
project_roots.iter().find(|it| it.path == vfs.root2path(vfs_root)).unwrap().clone();
(source_root_id, project_root)
})
.collect::<FxHashMap<_, _>>();
@@ -97,7 +93,7 @@ pub(crate) fn load(
match change {
VfsChange::AddRoot { root, files } => {
let source_root_id = vfs_root_to_id(root);
let is_local = source_roots[&source_root_id].is_member();
let is_local = source_roots[&source_root_id].is_member;
log::debug!(
"loaded source root {:?} with path {:?}",
source_root_id,
@@ -106,7 +102,7 @@ pub(crate) fn load(
analysis_change.add_root(source_root_id, is_local);
analysis_change.set_debug_root_path(
source_root_id,
source_roots[&source_root_id].path().display().to_string(),
source_roots[&source_root_id].path.display().to_string(),
);
let vfs_root_path = vfs.root2path(root);