Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-srv/src/lib.rs')
| -rw-r--r-- | crates/proc-macro-srv/src/lib.rs | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/crates/proc-macro-srv/src/lib.rs b/crates/proc-macro-srv/src/lib.rs index ff5623f39e..687a4218b4 100644 --- a/crates/proc-macro-srv/src/lib.rs +++ b/crates/proc-macro-srv/src/lib.rs @@ -91,10 +91,10 @@ impl<'env> ProcMacroSrv<'env> { } } -pub type ProcMacroClientHandle = Box<dyn ProcMacroClientInterface + Send>; +pub type ProcMacroClientHandle<'a> = Box<dyn ProcMacroClientInterface + Send + 'a>; pub trait ProcMacroClientInterface { - fn source_text(&self, file_id: u32, start: u32, end: u32) -> Option<String>; + fn source_text(&mut self, file_id: u32, start: u32, end: u32) -> Option<String>; } const EXPANDER_STACK_SIZE: usize = 8 * 1024 * 1024; @@ -111,7 +111,7 @@ impl ProcMacroSrv<'_> { def_site: S, call_site: S, mixed_site: S, - callback: Option<ProcMacroClientHandle>, + callback: Option<ProcMacroClientHandle<'_>>, ) -> Result<token_stream::TokenStream<S>, PanicMessage> { let snapped_env = self.env; let expander = self.expander(lib.as_ref()).map_err(|err| PanicMessage { @@ -178,24 +178,26 @@ impl ProcMacroSrv<'_> { } pub trait ProcMacroSrvSpan: Copy + Send + Sync { - type Server: proc_macro::bridge::server::Server<TokenStream = crate::token_stream::TokenStream<Self>>; - fn make_server( + type Server<'a>: proc_macro::bridge::server::Server<TokenStream = crate::token_stream::TokenStream<Self>> + where + Self: 'a; + fn make_server<'a>( call_site: Self, def_site: Self, mixed_site: Self, - callback: Option<ProcMacroClientHandle>, - ) -> Self::Server; + callback: Option<ProcMacroClientHandle<'a>>, + ) -> Self::Server<'a>; } impl ProcMacroSrvSpan for SpanId { - type Server = server_impl::token_id::SpanIdServer; + type Server<'a> = server_impl::token_id::SpanIdServer<'a>; - fn make_server( + fn make_server<'a>( call_site: Self, def_site: Self, mixed_site: Self, - callback: Option<ProcMacroClientHandle>, - ) -> Self::Server { + callback: Option<ProcMacroClientHandle<'a>>, + ) -> Self::Server<'a> { Self::Server { call_site, def_site, @@ -208,13 +210,13 @@ impl ProcMacroSrvSpan for SpanId { } impl ProcMacroSrvSpan for Span { - type Server = server_impl::rust_analyzer_span::RaSpanServer; - fn make_server( + type Server<'a> = server_impl::rust_analyzer_span::RaSpanServer<'a>; + fn make_server<'a>( call_site: Self, def_site: Self, mixed_site: Self, - callback: Option<ProcMacroClientHandle>, - ) -> Self::Server { + callback: Option<ProcMacroClientHandle<'a>>, + ) -> Self::Server<'a> { Self::Server { call_site, def_site, |