diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-06-30 17:03:03 +0200 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2024-06-30 17:03:03 +0200 |
| commit | fefcb46c3f48f53b09da7f9feafd4645dabcbd32 (patch) | |
| tree | 96a7020391bc2a795c7a6236190bed5f3e7a2cd2 /src | |
| parent | 45362de42f5143874671c3db82933eea1785d2c2 (diff) | |
| download | rust-fefcb46c3f48f53b09da7f9feafd4645dabcbd32.tar.gz rust-fefcb46c3f48f53b09da7f9feafd4645dabcbd32.zip | |
Arc proc-macro expander paths
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/rust-analyzer/crates/proc-macro-api/src/json.rs | 1 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/tools/rust-analyzer/crates/proc-macro-api/src/json.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/json.rs index 415845c0bdc..ec89f6a9e65 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/json.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-api/src/json.rs @@ -1,3 +1,4 @@ +//! Protocol functions for json. use std::io::{self, BufRead, Write}; pub fn read_json<'a>( diff --git a/src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs index d7f49013aee..4c65dd5969c 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-api/src/lib.rs @@ -65,7 +65,7 @@ impl MacroDylib { #[derive(Debug, Clone)] pub struct ProcMacro { process: Arc<ProcMacroProcessSrv>, - dylib_path: AbsPathBuf, + dylib_path: Arc<AbsPathBuf>, name: SmolStr, kind: ProcMacroKind, } @@ -75,7 +75,7 @@ impl PartialEq for ProcMacro { fn eq(&self, other: &Self) -> bool { self.name == other.name && self.kind == other.kind - && self.dylib_path == other.dylib_path + && Arc::ptr_eq(&self.dylib_path, &other.dylib_path) && Arc::ptr_eq(&self.process, &other.process) } } @@ -116,6 +116,7 @@ impl ProcMacroServer { let _p = tracing::info_span!("ProcMacroServer::load_dylib").entered(); let macros = self.process.find_proc_macros(&dylib.path)?; + let dylib_path = Arc::new(dylib.path); match macros { Ok(macros) => Ok(macros .into_iter() @@ -123,7 +124,7 @@ impl ProcMacroServer { process: self.process.clone(), name: name.into(), kind, - dylib_path: dylib.path.clone(), + dylib_path: dylib_path.clone(), }) .collect()), Err(message) => Err(ServerError { message, io: None }), |
