Skip to content

Commit 73ab709

Browse files
committed
Auto merge of #13289 - rust-lang:analysis-stats-proc-server, r=Veykril
Use the sysroot proc-macro server for analysis-stats Should fix the metrics issues
2 parents fa38c10 + 73f6af5 commit 73ab709

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

crates/rust-analyzer/src/cli/load_cargo.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,26 @@ pub fn load_workspace(
6060
};
6161

6262
let proc_macro_client = if load_config.with_proc_macro {
63-
let path = AbsPathBuf::assert(std::env::current_exe()?);
64-
Ok(ProcMacroServer::spawn(path, &["proc-macro"]).unwrap())
63+
let mut path = AbsPathBuf::assert(std::env::current_exe()?);
64+
let mut args = vec!["proc-macro"];
65+
66+
if let ProjectWorkspace::Cargo { sysroot, .. } | ProjectWorkspace::Json { sysroot, .. } =
67+
&ws
68+
{
69+
if let Some(sysroot) = sysroot.as_ref() {
70+
let standalone_server_name =
71+
format!("rust-analyzer-proc-macro-srv{}", std::env::consts::EXE_SUFFIX);
72+
let server_path = sysroot.root().join("libexec").join(&standalone_server_name);
73+
if std::fs::metadata(&server_path).is_ok() {
74+
path = server_path;
75+
args = vec![];
76+
}
77+
}
78+
}
79+
80+
ProcMacroServer::spawn(path.clone(), args.clone()).map_err(|e| e.to_string())
6581
} else {
66-
Err("proc macro server not started".to_owned())
82+
Err("proc macro server disabled".to_owned())
6783
};
6884

6985
let crate_graph = ws.to_crate_graph(

0 commit comments

Comments
 (0)