Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-srv-cli/src/main_loop.rs')
-rw-r--r--crates/proc-macro-srv-cli/src/main_loop.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/crates/proc-macro-srv-cli/src/main_loop.rs b/crates/proc-macro-srv-cli/src/main_loop.rs
index 279eab06c0..76119b27a8 100644
--- a/crates/proc-macro-srv-cli/src/main_loop.rs
+++ b/crates/proc-macro-srv-cli/src/main_loop.rs
@@ -217,6 +217,31 @@ impl<C: Codec> proc_macro_srv::ProcMacroClientInterface for ProcMacroClientHandl
_ => None,
}
}
+
+ fn local_file(&mut self, file_id: u32) -> Option<String> {
+ let req = bidirectional::BidirectionalMessage::SubRequest(
+ bidirectional::SubRequest::LocalFileName { file_id },
+ );
+
+ if req.write::<_, C>(&mut self.stdout.lock()).is_err() {
+ return Some(String::new());
+ }
+
+ let msg = match bidirectional::BidirectionalMessage::read::<_, C>(
+ &mut self.stdin.lock(),
+ self.buf,
+ ) {
+ Ok(msg) => msg,
+ _ => return None,
+ };
+
+ match msg {
+ Some(bidirectional::BidirectionalMessage::SubResponse(
+ bidirectional::SubResponse::LocalFileNameResult { name },
+ )) => Some(name.unwrap_or_default()),
+ _ => None,
+ }
+ }
}
fn handle_expand_ra<C: Codec>(