about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-03-25 14:44:53 +0000
committerbors <bors@rust-lang.org>2023-03-25 14:44:53 +0000
commit71b23360e781a00e51ed702a96e181261e92c6c5 (patch)
treed351e13c1fc4d7cfef95c154ce4cd5e9836a7788
parent992a0fc07488d1b40cbe43f0b718337c0206959c (diff)
parent3ae9bfe2661c4a3542a5b44cb1f9700cb17d8f30 (diff)
downloadrust-71b23360e781a00e51ed702a96e181261e92c6c5.tar.gz
rust-71b23360e781a00e51ed702a96e181261e92c6c5.zip
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
-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 90d06967e8f..4525d9dfdd7 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 1a6e1af2eb7..138b8446b90 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());