Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/workspace.rs')
| -rw-r--r-- | crates/project-model/src/workspace.rs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index 0d2174073a..17e40e74de 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -76,7 +76,7 @@ pub enum ProjectWorkspaceKind { /// Environment variables set in the `.cargo/config` file. cargo_config_extra_env: FxHashMap<String, String>, }, - /// Project workspace was manually specified using a `rust-project.json` file. + /// Project workspace was specified using a `rust-project.json` file. Json(ProjectJson), // FIXME: The primary limitation of this approach is that the set of detached files needs to be fixed at the beginning. // That's not the end user experience we should strive for. @@ -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() } @@ -705,7 +715,7 @@ impl ProjectWorkspace { load: FileLoader<'_>, extra_env: &FxHashMap<String, String>, ) -> (CrateGraph, ProcMacroPaths) { - let _p = tracing::span!(tracing::Level::INFO, "ProjectWorkspace::to_crate_graph").entered(); + let _p = tracing::info_span!("ProjectWorkspace::to_crate_graph").entered(); let Self { kind, sysroot, cfg_overrides, rustc_cfg, .. } = self; let ((mut crate_graph, proc_macros), sysroot) = match kind { @@ -949,7 +959,7 @@ fn cargo_to_crate_graph( override_cfg: &CfgOverrides, build_scripts: &WorkspaceBuildScripts, ) -> (CrateGraph, ProcMacroPaths) { - let _p = tracing::span!(tracing::Level::INFO, "cargo_to_crate_graph").entered(); + let _p = tracing::info_span!("cargo_to_crate_graph").entered(); let mut res = (CrateGraph::default(), ProcMacroPaths::default()); let crate_graph = &mut res.0; let proc_macros = &mut res.1; @@ -1134,7 +1144,7 @@ fn detached_file_to_crate_graph( sysroot: &Sysroot, override_cfg: &CfgOverrides, ) -> (CrateGraph, ProcMacroPaths) { - let _p = tracing::span!(tracing::Level::INFO, "detached_file_to_crate_graph").entered(); + let _p = tracing::info_span!("detached_file_to_crate_graph").entered(); let mut crate_graph = CrateGraph::default(); let (public_deps, _libproc_macro) = sysroot_to_crate_graph(&mut crate_graph, sysroot, rustc_cfg.clone(), load); @@ -1365,7 +1375,7 @@ fn sysroot_to_crate_graph( rustc_cfg: Vec<CfgFlag>, load: FileLoader<'_>, ) -> (SysrootPublicDeps, Option<CrateId>) { - let _p = tracing::span!(tracing::Level::INFO, "sysroot_to_crate_graph").entered(); + let _p = tracing::info_span!("sysroot_to_crate_graph").entered(); match sysroot.mode() { SysrootMode::Workspace(cargo) => { let (mut cg, mut pm) = cargo_to_crate_graph( |