summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2017-11-03 13:38:26 +0100
committerOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2017-11-03 13:38:26 +0100
commitc7cb2cf8b5a9c7b5b57128a4969b0b577ecaf5d9 (patch)
treea3d9efc3e308a9962204565cc9c9d9553850e9f3 /src/libsyntax
parent65c899edfe889118af594c37d16e93f6c4b194f6 (diff)
downloadrust-c7cb2cf8b5a9c7b5b57128a4969b0b577ecaf5d9.tar.gz
rust-c7cb2cf8b5a9c7b5b57128a4969b0b577ecaf5d9.zip
Pretty print json in ui tests
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/json.rs22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/libsyntax/json.rs b/src/libsyntax/json.rs
index a304173f36d..74a762f2f62 100644
--- a/src/libsyntax/json.rs
+++ b/src/libsyntax/json.rs
@@ -30,36 +30,41 @@ use std::rc::Rc;
 use std::io::{self, Write};
 use std::vec;
 
-use rustc_serialize::json::as_json;
+use rustc_serialize::json::{as_json, as_pretty_json};
 
 pub struct JsonEmitter {
     dst: Box<Write + Send>,
     registry: Option<Registry>,
     cm: Rc<CodeMapper + 'static>,
+    pretty: bool,
 }
 
 impl JsonEmitter {
     pub fn stderr(registry: Option<Registry>,
-                  code_map: Rc<CodeMap>) -> JsonEmitter {
+                  code_map: Rc<CodeMap>,
+                  pretty: bool) -> JsonEmitter {
         JsonEmitter {
             dst: Box::new(io::stderr()),
             registry,
             cm: code_map,
+            pretty,
         }
     }
 
-    pub fn basic() -> JsonEmitter {
+    pub fn basic(pretty: bool) -> JsonEmitter {
         let file_path_mapping = FilePathMapping::empty();
-        JsonEmitter::stderr(None, Rc::new(CodeMap::new(file_path_mapping)))
+        JsonEmitter::stderr(None, Rc::new(CodeMap::new(file_path_mapping)), pretty)
     }
 
     pub fn new(dst: Box<Write + Send>,
                registry: Option<Registry>,
-               code_map: Rc<CodeMap>) -> JsonEmitter {
+               code_map: Rc<CodeMap>,
+               pretty: bool) -> JsonEmitter {
         JsonEmitter {
             dst,
             registry,
             cm: code_map,
+            pretty,
         }
     }
 }
@@ -67,7 +72,12 @@ impl JsonEmitter {
 impl Emitter for JsonEmitter {
     fn emit(&mut self, db: &DiagnosticBuilder) {
         let data = Diagnostic::from_diagnostic_builder(db, self);
-        if let Err(e) = writeln!(&mut self.dst, "{}", as_json(&data)) {
+        let result = if self.pretty {
+            writeln!(&mut self.dst, "{}", as_pretty_json(&data))
+        } else {
+            writeln!(&mut self.dst, "{}", as_json(&data))
+        };
+        if let Err(e) = result {
             panic!("failed to print diagnostics: {:?}", e);
         }
     }