Revert "fix: Canonicalize rust-project.json manifest path"
diff --git a/crates/paths/src/lib.rs b/crates/paths/src/lib.rs
index 083dfcf..d56d2d5 100644
--- a/crates/paths/src/lib.rs
+++ b/crates/paths/src/lib.rs
@@ -166,11 +166,6 @@
AbsPathBuf::try_from(self.0.to_path_buf()).unwrap()
}
- /// Equivalent of [`Path::canonicalize`] for `AbsPath`.
- pub fn canonicalize(&self) -> Result<AbsPathBuf, std::io::Error> {
- Ok(self.as_ref().canonicalize()?.try_into().unwrap())
- }
-
/// Equivalent of [`Path::strip_prefix`] for `AbsPath`.
///
/// Returns a relative path.
diff --git a/crates/project-model/src/manifest_path.rs b/crates/project-model/src/manifest_path.rs
index d675411..980d92d 100644
--- a/crates/project-model/src/manifest_path.rs
+++ b/crates/project-model/src/manifest_path.rs
@@ -34,11 +34,6 @@
pub fn parent(&self) -> &AbsPath {
self.file.parent().unwrap()
}
-
- /// Equivalent of [`Path::canonicalize`] for `ManifestPath`.
- pub fn canonicalize(&self) -> Result<ManifestPath, std::io::Error> {
- Ok((&**self).canonicalize()?.try_into().unwrap())
- }
}
impl ops::Deref for ManifestPath {
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs
index bfd2cab..e758464 100644
--- a/crates/project-model/src/workspace.rs
+++ b/crates/project-model/src/workspace.rs
@@ -4,7 +4,7 @@
use std::{collections::VecDeque, fmt, fs, process::Command, sync};
-use anyhow::{format_err, Context, Result};
+use anyhow::{bail, format_err, Context, Result};
use base_db::{
CrateDisplayName, CrateGraph, CrateId, CrateName, CrateOrigin, Dependency, Edition, Env,
FileId, LangCrateOrigin, ProcMacroPaths, ReleaseChannel, TargetLayoutLoadResult,
@@ -179,7 +179,12 @@
};
let res = match manifest {
ProjectManifest::ProjectJson(project_json) => {
- let project_json = project_json.canonicalize()?;
+ let metadata = fs::symlink_metadata(&project_json).with_context(|| {
+ format!("Failed to read json file {}", project_json.display())
+ })?;
+ if metadata.is_symlink() {
+ bail!("The project-json may not currently point to a symlink");
+ }
let file = fs::read_to_string(&project_json).with_context(|| {
format!("Failed to read json file {}", project_json.display())
})?;