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.rs20
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(