Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #14404 - Veykril:proc-macro-loading, r=Veykril
Remove client side proc-macro version check The server already verifies versions due to ABI picking now so there shouldn't be a need for the client side check anymore
bors 2023-03-25
parent 992a0fc · parent 3ae9bfe · commit 71b2336
-rw-r--r--crates/proc-macro-api/src/lib.rs14
-rw-r--r--crates/rust-analyzer/src/reload.rs3
2 files changed, 3 insertions, 14 deletions
diff --git a/crates/proc-macro-api/src/lib.rs b/crates/proc-macro-api/src/lib.rs
index 90d06967e8..4525d9dfdd 100644
--- a/crates/proc-macro-api/src/lib.rs
+++ b/crates/proc-macro-api/src/lib.rs
@@ -54,18 +54,8 @@ pub struct MacroDylib {
}
impl MacroDylib {
- // FIXME: this is buggy due to TOCTOU, we should check the version in the
- // macro process instead.
- pub fn new(path: AbsPathBuf) -> io::Result<MacroDylib> {
- let _p = profile::span("MacroDylib::new");
-
- let info = version::read_dylib_info(&path)?;
- if info.version.0 < 1 || info.version.1 < 47 {
- let msg = format!("proc-macro {} built by {info:#?} is not supported by rust-analyzer, please update your Rust version.", path.display());
- return Err(io::Error::new(io::ErrorKind::InvalidData, msg));
- }
-
- Ok(MacroDylib { path })
+ pub fn new(path: AbsPathBuf) -> MacroDylib {
+ MacroDylib { path }
}
}
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index 1a6e1af2eb..138b8446b9 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -648,8 +648,7 @@ pub(crate) fn load_proc_macro(
) -> ProcMacroLoadResult {
let server = server.map_err(ToOwned::to_owned)?;
let res: Result<Vec<_>, String> = (|| {
- let dylib = MacroDylib::new(path.to_path_buf())
- .map_err(|io| format!("Proc-macro dylib loading failed: {io}"))?;
+ let dylib = MacroDylib::new(path.to_path_buf());
let vec = server.load_dylib(dylib).map_err(|e| format!("{e}"))?;
if vec.is_empty() {
return Err("proc macro library returned no proc macros".to_string());