mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 04:44:57 +00:00
Remove proc-macro server command from the rust-analyzer binary
This commit is contained in:
parent
943d2a8a1c
commit
c21860bd6a
15 changed files with 109 additions and 162 deletions
|
@ -459,18 +459,35 @@ impl ProjectWorkspace {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn find_sysroot_proc_macro_srv(&self) -> Option<AbsPathBuf> {
|
||||
pub fn find_sysroot_proc_macro_srv(&self) -> Result<AbsPathBuf> {
|
||||
match self {
|
||||
ProjectWorkspace::Cargo { sysroot: Ok(sysroot), .. }
|
||||
| ProjectWorkspace::Json { sysroot: Ok(sysroot), .. } => {
|
||||
| ProjectWorkspace::Json { sysroot: Ok(sysroot), .. }
|
||||
| ProjectWorkspace::DetachedFiles { sysroot: Ok(sysroot), .. } => {
|
||||
let standalone_server_name =
|
||||
format!("rust-analyzer-proc-macro-srv{}", std::env::consts::EXE_SUFFIX);
|
||||
["libexec", "lib"]
|
||||
.into_iter()
|
||||
.map(|segment| sysroot.root().join(segment).join(&standalone_server_name))
|
||||
.find(|server_path| std::fs::metadata(server_path).is_ok())
|
||||
.ok_or_else(|| {
|
||||
anyhow::anyhow!(
|
||||
"cannot find proc-macro server in sysroot `{}`",
|
||||
sysroot.root().display()
|
||||
)
|
||||
})
|
||||
}
|
||||
_ => None,
|
||||
ProjectWorkspace::DetachedFiles { .. } => {
|
||||
Err(anyhow::anyhow!("cannot find proc-macro server, no sysroot was found"))
|
||||
}
|
||||
ProjectWorkspace::Cargo { cargo, .. } => Err(anyhow::anyhow!(
|
||||
"cannot find proc-macro-srv, the workspace `{}` is missing a sysroot",
|
||||
cargo.workspace_root().display()
|
||||
)),
|
||||
ProjectWorkspace::Json { project, .. } => Err(anyhow::anyhow!(
|
||||
"cannot find proc-macro-srv, the workspace `{}` is missing a sysroot",
|
||||
project.path().display()
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue