diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-06-09 12:54:50 +0200 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2024-06-09 12:54:50 +0200 |
| commit | 7053aed3dc1c097e8d84679e8714922e5a5e3c2d (patch) | |
| tree | 76bdcb22d9a67fac213c0c8db9d4789974f0b7c3 /src/tools/rust-analyzer/crates/project-model | |
| parent | 3243ea0c2ba86b1431286befa84cff19e032262a (diff) | |
Register virtual workspace Cargo.toml files in the VFS
Diffstat (limited to 'src/tools/rust-analyzer/crates/project-model')
| -rw-r--r-- | src/tools/rust-analyzer/crates/project-model/src/project_json.rs | 5 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/project-model/src/workspace.rs | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/project-model/src/project_json.rs b/src/tools/rust-analyzer/crates/project-model/src/project_json.rs index 5bee446f619..408593ea8a6 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/project_json.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/project_json.rs @@ -167,6 +167,11 @@ impl ProjectJson { &self.project_root } + /// Returns the path to the project's manifest file, if it exists. + pub fn manifest(&self) -> Option<&ManifestPath> { + self.manifest.as_ref() + } + /// Returns the path to the project's manifest or root folder, if no manifest exists. pub fn manifest_or_root(&self) -> &AbsPath { self.manifest.as_ref().map_or(&self.project_root, |manifest| manifest.as_ref()) 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 6b18b768cd8..4dba11eac3f 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs @@ -527,6 +527,16 @@ impl ProjectWorkspace { } } + pub fn manifest(&self) -> Option<&ManifestPath> { + match &self.kind { + ProjectWorkspaceKind::Cargo { cargo, .. } => Some(cargo.manifest_path()), + ProjectWorkspaceKind::Json(project) => project.manifest(), + ProjectWorkspaceKind::DetachedFile { cargo, .. } => { + Some(cargo.as_ref()?.0.manifest_path()) + } + } + } + pub fn find_sysroot_proc_macro_srv(&self) -> anyhow::Result<AbsPathBuf> { self.sysroot.discover_proc_macro_srv() } |
