mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 20:09:19 +00:00
Fix deep syntax tree bug generated by proc-macro
This commit is contained in:
parent
a9814fa9c0
commit
a65025604d
4 changed files with 46 additions and 4 deletions
|
@ -58,7 +58,14 @@ pub trait Message: Serialize + DeserializeOwned {
|
|||
fn read(inp: &mut impl BufRead) -> io::Result<Option<Self>> {
|
||||
Ok(match read_json(inp)? {
|
||||
None => None,
|
||||
Some(text) => Some(serde_json::from_str(&text)?),
|
||||
Some(text) => {
|
||||
let mut deserializer = serde_json::Deserializer::from_str(&text);
|
||||
// Note that some proc-macro generate very deep syntax tree
|
||||
// We have to disable the current limit of serde here
|
||||
deserializer.disable_recursion_limit();
|
||||
let deserializer = serde_stacker::Deserializer::new(&mut deserializer);
|
||||
Some(Self::deserialize(deserializer)?)
|
||||
}
|
||||
})
|
||||
}
|
||||
fn write(self, out: &mut impl Write) -> io::Result<()> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue