diff options
| author | bors <bors@rust-lang.org> | 2016-01-15 01:52:01 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-01-15 01:52:01 +0000 |
| commit | d8869d3487a569b4a6b86c1b585cc15db48abc4a (patch) | |
| tree | f061c00a00e41e3518bf7f8b16579b5853ac6b3b /src/libsyntax/errors/mod.rs | |
| parent | 2fb0c5ebcf6d912224532265776fb96febea9797 (diff) | |
| parent | 82f8e5ce84c83b02fbfa720c6841f12db1a55603 (diff) | |
| download | rust-d8869d3487a569b4a6b86c1b585cc15db48abc4a.tar.gz rust-d8869d3487a569b4a6b86c1b585cc15db48abc4a.zip | |
Auto merge of #30711 - nrc:json-errs, r=huonw
The compiler can emit errors and warning in JSON format. This is a more easily machine readable form then the usual error output. Closes #10492, closes #14863.
Diffstat (limited to 'src/libsyntax/errors/mod.rs')
| -rw-r--r-- | src/libsyntax/errors/mod.rs | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/src/libsyntax/errors/mod.rs b/src/libsyntax/errors/mod.rs index a2fae975148..f269dee31d9 100644 --- a/src/libsyntax/errors/mod.rs +++ b/src/libsyntax/errors/mod.rs @@ -24,6 +24,7 @@ use std::rc::Rc; use term; pub mod emitter; +pub mod json; #[derive(Clone)] pub enum RenderSpan { @@ -275,12 +276,12 @@ pub struct Handler { } impl Handler { - pub fn new(color_config: ColorConfig, - registry: Option<diagnostics::registry::Registry>, - can_emit_warnings: bool, - treat_err_as_bug: bool, - cm: Rc<codemap::CodeMap>) - -> Handler { + pub fn with_tty_emitter(color_config: ColorConfig, + registry: Option<diagnostics::registry::Registry>, + can_emit_warnings: bool, + treat_err_as_bug: bool, + cm: Rc<codemap::CodeMap>) + -> Handler { let emitter = Box::new(EmitterWriter::stderr(color_config, registry, cm)); Handler::with_emitter(can_emit_warnings, treat_err_as_bug, emitter) } @@ -547,14 +548,7 @@ impl fmt::Display for Level { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { use std::fmt::Display; - match *self { - Bug => "error: internal compiler error".fmt(f), - Fatal | Error => "error".fmt(f), - Warning => "warning".fmt(f), - Note => "note".fmt(f), - Help => "help".fmt(f), - Cancelled => unreachable!(), - } + self.to_str().fmt(f) } } @@ -568,6 +562,17 @@ impl Level { Cancelled => unreachable!(), } } + + fn to_str(self) -> &'static str { + match self { + Bug => "error: internal compiler error", + Fatal | Error => "error", + Warning => "warning", + Note => "note", + Help => "help", + Cancelled => panic!("Shouldn't call on cancelled error"), + } + } } pub fn expect<T, M>(diag: &Handler, opt: Option<T>, msg: M) -> T where |
