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
new file mode 100644
index 000000000000..415845c0bdc7
--- /dev/null
+++ b/src/tools/rust-analyzer/crates/proc-macro-api/src/json.rs
@@ -0,0 +1,34 @@
+use std::io::{self, BufRead, Write};
+
+pub fn read_json<'a>(
+ inp: &mut impl BufRead,
+ buf: &'a mut String,
+) -> io::Result