diff --git a/src/tools/rust-analyzer/crates/proc-macro-api/src/transport/framing.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/transport/framing.rs index 1e29c1982acb..56c3b68e8cd2 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/transport/framing.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-api/src/transport/framing.rs @@ -3,7 +3,7 @@ use std::io::{self, BufRead, Write}; pub trait Framing { - type Buf: Default + Send; + type Buf: Default + Send + Sync; fn read<'a, R: BufRead + ?Sized>( inp: &mut R, diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv-cli/src/main_loop.rs b/src/tools/rust-analyzer/crates/proc-macro-srv-cli/src/main_loop.rs index 4d98a8e29d12..25a5104c5df3 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv-cli/src/main_loop.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv-cli/src/main_loop.rs @@ -243,7 +243,7 @@ fn handle_expand_ra( def_site, call_site, mixed_site, - Some(Box::new(ProcMacroClientHandle:: { stdin, stdout, buf })), + Some(&mut ProcMacroClientHandle:: { stdin, stdout, buf }), ) .map(|it| { ( diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs index 687a4218b4bb..17ffa29ce172 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs @@ -91,7 +91,7 @@ impl<'env> ProcMacroSrv<'env> { } } -pub type ProcMacroClientHandle<'a> = Box; +pub type ProcMacroClientHandle<'a> = &'a mut (dyn ProcMacroClientInterface + Sync + Send); pub trait ProcMacroClientInterface { fn source_text(&mut self, file_id: u32, start: u32, end: u32) -> Option; @@ -178,9 +178,7 @@ impl ProcMacroSrv<'_> { } pub trait ProcMacroSrvSpan: Copy + Send + Sync { - type Server<'a>: proc_macro::bridge::server::Server> - where - Self: 'a; + type Server<'a>: proc_macro::bridge::server::Server>; fn make_server<'a>( call_site: Self, def_site: Self,