From 8ffbe86dfd24ffcc11ec37bceca9102260d59db2 Mon Sep 17 00:00:00 2001 From: Emil Lauridsen Date: Wed, 29 Jan 2020 13:40:27 +0100 Subject: Parse cargo output a line at a time. We previously used serde's stream deserializer to read json blobs from the cargo output. It has an issue though: If the deserializer encounters invalid input, it gets stuck reporting the same error again and again because it is unable to foward over the input until it reaches a new valid object. Reading a line at a time and manually deserializing fixes this issue, because cargo makes sure to only outpu one json blob per line, so should we encounter invalid input, we can just skip a line and continue. The main reason this would happen is stray printf-debugging in procedural macros, so we still report that an error occured, but we handle it gracefully now. Fixes #2935 --- crates/ra_cargo_watch/Cargo.toml | 1 + 1 file changed, 1 insertion(+) (limited to 'crates/ra_cargo_watch/Cargo.toml') diff --git a/crates/ra_cargo_watch/Cargo.toml b/crates/ra_cargo_watch/Cargo.toml index 49e06e0d3..dd814fc9d 100644 --- a/crates/ra_cargo_watch/Cargo.toml +++ b/crates/ra_cargo_watch/Cargo.toml @@ -11,6 +11,7 @@ log = "0.4.3" cargo_metadata = "0.9.1" jod-thread = "0.1.0" parking_lot = "0.10.0" +serde_json = "1.0.45" [dev-dependencies] insta = "0.13.0" -- cgit v1.2.3