diff options
| author | David Richey <davidrichey@fb.com> | 2024-09-26 11:58:30 -0400 |
|---|---|---|
| committer | David Richey <davidrichey@fb.com> | 2024-09-26 12:54:55 -0400 |
| commit | 75ca498a488729e16d856de8fd6fd58aabf6f3d3 (patch) | |
| tree | c1c2ab24c6627523eb6f713d2d10b1ea5930fac2 | |
| parent | 2904b35bdf82c8f73493639e7eaf81d23dbe5c23 (diff) | |
| download | rust-75ca498a488729e16d856de8fd6fd58aabf6f3d3.tar.gz rust-75ca498a488729e16d856de8fd6fd58aabf6f3d3.zip | |
Include buildfiles in vfs
| -rw-r--r-- | src/tools/rust-analyzer/crates/load-cargo/src/lib.rs | 5 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/project-model/src/workspace.rs | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs b/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs index baa45174236..2ffefa17305 100644 --- a/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs +++ b/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs @@ -265,6 +265,11 @@ impl ProjectFolders { entries.push(manifest.to_owned()); } + for buildfile in ws.buildfiles() { + file_set_roots.push(VfsPath::from(buildfile.to_owned())); + entries.push(buildfile.to_owned()); + } + // In case of detached files we do **not** look for a rust-analyzer.toml. if !matches!(ws.kind, ProjectWorkspaceKind::DetachedFile { .. }) { let ws_root = ws.workspace_root(); diff --git a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs index 17b40a87cda..c05c03340eb 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs @@ -539,6 +539,17 @@ impl ProjectWorkspace { } } + pub fn buildfiles(&self) -> Vec<AbsPathBuf> { + match &self.kind { + ProjectWorkspaceKind::Json(project) => project + .crates() + .filter_map(|(_, krate)| krate.build.as_ref().map(|build| build.build_file.clone())) + .map(AbsPathBuf::assert) + .collect(), + _ => vec![], + } + } + pub fn find_sysroot_proc_macro_srv(&self) -> anyhow::Result<AbsPathBuf> { self.sysroot.discover_proc_macro_srv() } |
