Skip to content

Commit 3ad835f

Browse files
committed
Auto merge of rust-lang#14671 - Veykril:proc-macro-srv-conf, r=Veykril
fix: Fix proc-macro-srv path config not working
2 parents 62c81d6 + 3b97978 commit 3ad835f

File tree

2 files changed

+46
-6
lines changed

2 files changed

+46
-6
lines changed

crates/rust-analyzer/src/config.rs

+41-6
Original file line numberDiff line numberDiff line change
@@ -1102,12 +1102,8 @@ impl Config {
11021102
}
11031103

11041104
pub fn proc_macro_srv(&self) -> Option<AbsPathBuf> {
1105-
self.data
1106-
.procMacro_server
1107-
.clone()
1108-
.map(AbsPathBuf::try_from)?
1109-
.ok()
1110-
.map(|path| self.root_path.join(path))
1105+
let path = self.data.procMacro_server.clone()?;
1106+
Some(AbsPathBuf::try_from(path).unwrap_or_else(|path| self.root_path.join(&path)))
11111107
}
11121108

11131109
pub fn dummy_replacements(&self) -> &FxHashMap<Box<str>, Box<[Box<str>]>> {
@@ -2424,4 +2420,43 @@ mod tests {
24242420
fn remove_ws(text: &str) -> String {
24252421
text.replace(char::is_whitespace, "")
24262422
}
2423+
2424+
#[test]
2425+
fn proc_macro_srv_null() {
2426+
let mut config =
2427+
Config::new(AbsPathBuf::try_from(project_root()).unwrap(), Default::default(), vec![]);
2428+
config
2429+
.update(serde_json::json!({
2430+
"procMacro_server": null,
2431+
}))
2432+
.unwrap();
2433+
assert_eq!(config.proc_macro_srv(), None);
2434+
}
2435+
2436+
#[test]
2437+
fn proc_macro_srv_abs() {
2438+
let mut config =
2439+
Config::new(AbsPathBuf::try_from(project_root()).unwrap(), Default::default(), vec![]);
2440+
config
2441+
.update(serde_json::json!({
2442+
"procMacro": {"server": project_root().display().to_string()}
2443+
}))
2444+
.unwrap();
2445+
assert_eq!(config.proc_macro_srv(), Some(AbsPathBuf::try_from(project_root()).unwrap()));
2446+
}
2447+
2448+
#[test]
2449+
fn proc_macro_srv_rel() {
2450+
let mut config =
2451+
Config::new(AbsPathBuf::try_from(project_root()).unwrap(), Default::default(), vec![]);
2452+
config
2453+
.update(serde_json::json!({
2454+
"procMacro": {"server": "./server"}
2455+
}))
2456+
.unwrap();
2457+
assert_eq!(
2458+
config.proc_macro_srv(),
2459+
Some(AbsPathBuf::try_from(project_root().join("./server")).unwrap())
2460+
);
2461+
}
24272462
}

crates/rust-analyzer/src/reload.rs

+5
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,11 @@ impl GlobalState {
426426

427427
tracing::info!("Using proc-macro server at {}", path.display(),);
428428
ProcMacroServer::spawn(path.clone()).map_err(|err| {
429+
tracing::error!(
430+
"Failed to run proc-macro server from path {}, error: {:?}",
431+
path.display(),
432+
err
433+
);
429434
anyhow::anyhow!(
430435
"Failed to run proc-macro server from path {}, error: {:?}",
431436
path.display(),

0 commit comments

Comments
 (0)