diff options
| author | Igor Matuszewski <Xanewok@gmail.com> | 2019-04-17 21:34:35 +0200 |
|---|---|---|
| committer | Igor Matuszewski <Xanewok@gmail.com> | 2019-04-21 12:45:16 +0200 |
| commit | 25451967ee217b0d8a6db6195b84444f71f89d70 (patch) | |
| tree | 778c9f1f8568bc4eb3c3d6a737d8afe08120d81c /src | |
| parent | 4d9c6cd7226e1839a195f1b6e7d40a3ccf9bb062 (diff) | |
| download | rust-25451967ee217b0d8a6db6195b84444f71f89d70.tar.gz rust-25451967ee217b0d8a6db6195b84444f71f89d70.zip | |
save-analysis: Use serde instead of libserialize to dump JSON data
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_save_analysis/Cargo.toml | 3 | ||||
| -rw-r--r-- | src/librustc_save_analysis/json_dumper.rs | 6 | ||||
| -rw-r--r-- | src/librustc_save_analysis/lib.rs | 9 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/librustc_save_analysis/Cargo.toml b/src/librustc_save_analysis/Cargo.toml index 8bb2e722b57..aee827776fc 100644 --- a/src/librustc_save_analysis/Cargo.toml +++ b/src/librustc_save_analysis/Cargo.toml @@ -16,9 +16,8 @@ rustc_data_structures = { path = "../librustc_data_structures" } rustc_codegen_utils = { path = "../librustc_codegen_utils" } rustc_target = { path = "../librustc_target" } rustc_typeck = { path = "../librustc_typeck" } +serde_json = "1" syntax = { path = "../libsyntax" } syntax_pos = { path = "../libsyntax_pos" } rls-data = "0.18.1" rls-span = "0.4" -# FIXME(#40527) should move rustc serialize out of tree -rustc-serialize = "0.3" diff --git a/src/librustc_save_analysis/json_dumper.rs b/src/librustc_save_analysis/json_dumper.rs index 1840cf652e1..82b78369e13 100644 --- a/src/librustc_save_analysis/json_dumper.rs +++ b/src/librustc_save_analysis/json_dumper.rs @@ -1,7 +1,5 @@ use std::io::Write; -use rustc_serialize::json::as_json; - use rls_data::config::Config; use rls_data::{self, Analysis, CompilationOptions, CratePreludeData, Def, DefKind, Impl, Import, MacroRef, Ref, RefKind, Relation}; @@ -31,8 +29,8 @@ pub struct WriteOutput<'b, W: Write> { impl<'b, W: Write> DumpOutput for WriteOutput<'b, W> { fn dump(&mut self, result: &Analysis) { - if write!(self.output, "{}", as_json(&result)).is_err() { - error!("Error writing output"); + if let Err(e) = serde_json::to_writer(self.output.by_ref(), result) { + error!("Can't serialize save-analysis: {:?}", e); } } } diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs index d901fb2bff8..c173d51fd40 100644 --- a/src/librustc_save_analysis/lib.rs +++ b/src/librustc_save_analysis/lib.rs @@ -1141,10 +1141,15 @@ fn find_config(supplied: Option<Config>) -> Config { if let Some(config) = supplied { return config; } + match env::var_os("RUST_SAVE_ANALYSIS_CONFIG") { - Some(config_string) => rustc_serialize::json::decode(config_string.to_str().unwrap()) - .expect("Could not deserialize save-analysis config"), None => Config::default(), + Some(config) => config.to_str() + .ok_or(()) + .map_err(|_| error!("`RUST_SAVE_ANALYSIS_CONFIG` isn't UTF-8")) + .and_then(|cfg| serde_json::from_str(cfg) + .map_err(|_| error!("Could not deserialize save-analysis config")) + ).unwrap_or_default() } } |
