From a41226c5b93c8d86b76108d17800ead5a7aca758 Mon Sep 17 00:00:00 2001 From: Alexander Lopatin Date: Thu, 15 Oct 2020 00:38:53 +0300 Subject: [PATCH 1/2] Fix #132 Failed to parse compiler message --- Cargo.toml | 3 ++- src/messages.rs | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6e256ec5..d028bec7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,8 @@ edition = "2018" [dependencies] serde = { version = "1.0.107", features = ["derive"] } -serde_json = "1.0.1" +serde_json = { version = "1.0.59", features = ["unbounded_depth"] } +serde_stacker = "0.1" [dependencies.semver] features = ["serde"] diff --git a/src/messages.rs b/src/messages.rs index 2aded38f..7884a009 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -144,7 +144,12 @@ impl Iterator for MessageIter { type Item = io::Result; fn next(&mut self) -> Option { let line = self.lines.next()?; - let message = line.map(|it| serde_json::from_str(&it).unwrap_or(Message::TextLine(it))); + let message = line.map(|it| { + let mut deserializer = serde_json::Deserializer::from_str(&it); + deserializer.disable_recursion_limit(); + let deserializer = serde_stacker::Deserializer::new(&mut deserializer); + Message::deserialize(deserializer).unwrap_or(Message::TextLine(it)) + }); Some(message) } } From 5ccc24758c58e1a0684d9d108e71147b1772b520 Mon Sep 17 00:00:00 2001 From: Alexander Lopatin Date: Thu, 15 Oct 2020 21:46:00 +0300 Subject: [PATCH 2/2] Remove serde_stacker dependence --- Cargo.toml | 1 - src/messages.rs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index d028bec7..642079ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,6 @@ edition = "2018" [dependencies] serde = { version = "1.0.107", features = ["derive"] } serde_json = { version = "1.0.59", features = ["unbounded_depth"] } -serde_stacker = "0.1" [dependencies.semver] features = ["serde"] diff --git a/src/messages.rs b/src/messages.rs index 7884a009..9b4fceb1 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -147,8 +147,7 @@ impl Iterator for MessageIter { let message = line.map(|it| { let mut deserializer = serde_json::Deserializer::from_str(&it); deserializer.disable_recursion_limit(); - let deserializer = serde_stacker::Deserializer::new(&mut deserializer); - Message::deserialize(deserializer).unwrap_or(Message::TextLine(it)) + Message::deserialize(&mut deserializer).unwrap_or(Message::TextLine(it)) }); Some(message) }