diff options
| author | Jonathan Turner <jturner@mozilla.com> | 2016-07-07 14:57:09 -0400 |
|---|---|---|
| committer | Jonathan Turner <jturner@mozilla.com> | 2016-07-14 07:57:46 -0400 |
| commit | a019c2c6bad2bae7e0f5c527ea8a11615acc037f (patch) | |
| tree | 07a67aeae42145e7a6ae8c1fb1762facc3f0e95e /src/librustc_errors | |
| parent | a6e7239e7b5db3a96fb6b84c41ecbced64b0ad2e (diff) | |
| download | rust-a019c2c6bad2bae7e0f5c527ea8a11615acc037f.tar.gz rust-a019c2c6bad2bae7e0f5c527ea8a11615acc037f.zip | |
Remove CoreEmitter and focus on Emitter
Diffstat (limited to 'src/librustc_errors')
| -rw-r--r-- | src/librustc_errors/emitter.rs | 79 |
1 files changed, 36 insertions, 43 deletions
diff --git a/src/librustc_errors/emitter.rs b/src/librustc_errors/emitter.rs index 697f9687b0a..a0d7120dd4f 100644 --- a/src/librustc_errors/emitter.rs +++ b/src/librustc_errors/emitter.rs @@ -25,47 +25,29 @@ use std::io; use std::rc::Rc; use term; -/// Emitter trait for emitting errors. Do not implement this directly: -/// implement `CoreEmitter` instead. +/// Emitter trait for emitting errors. pub trait Emitter { /// Emit a structured diagnostic. fn emit(&mut self, db: &DiagnosticBuilder); } -pub trait CoreEmitter { - fn emit_message(&mut self, - rsp: &RenderSpan, - msg: &str, - code: Option<&str>, - lvl: Level, - is_header: bool, - show_snippet: bool); -} - -impl<T: CoreEmitter> Emitter for T { +impl Emitter for EmitterWriter { fn emit(&mut self, db: &DiagnosticBuilder) { - let old_school = check_old_skool(); - let db_span = FullSpan(db.span.clone()); self.emit_message(&FullSpan(db.span.clone()), &db.message, db.code.as_ref().map(|s| &**s), db.level, true, true); - for child in &db.children { - let render_span = child.render_span - .clone() - .unwrap_or_else( - || FullSpan(child.span.clone())); - if !old_school { - self.emit_message(&render_span, - &child.message, - None, - child.level, - false, - true); - } else { + if check_old_skool() { + let db_span = FullSpan(db.span.clone()); + + for child in &db.children { + let render_span = child.render_span + .clone() + .unwrap_or_else( + || FullSpan(child.span.clone())); let (render_span, show_snippet) = match render_span.span().primary_span() { None => (db_span.clone(), false), _ => (render_span, true) @@ -77,6 +59,19 @@ impl<T: CoreEmitter> Emitter for T { false, show_snippet); } + } else { + for child in &db.children { + let render_span = child.render_span + .clone() + .unwrap_or_else( + || FullSpan(child.span.clone())); + self.emit_message(&render_span, + &child.message, + None, + child.level, + false, + true); + } } } } @@ -114,21 +109,6 @@ pub struct EmitterWriter { format_mode: FormatMode } -impl CoreEmitter for EmitterWriter { - fn emit_message(&mut self, - rsp: &RenderSpan, - msg: &str, - code: Option<&str>, - lvl: Level, - is_header: bool, - show_snippet: bool) { - match self.emit_message_(rsp, msg, code, lvl, is_header, show_snippet) { - Ok(()) => { } - Err(e) => panic!("failed to emit error: {}", e) - } - } -} - /// Do not use this for messages that end in `\n` – use `println_maybe_styled` instead. See /// `EmitterWriter::print_maybe_styled` for details. macro_rules! print_maybe_styled { @@ -177,6 +157,19 @@ impl EmitterWriter { format_mode: format_mode.clone() } } + fn emit_message(&mut self, + rsp: &RenderSpan, + msg: &str, + code: Option<&str>, + lvl: Level, + is_header: bool, + show_snippet: bool) { + match self.emit_message_(rsp, msg, code, lvl, is_header, show_snippet) { + Ok(()) => { } + Err(e) => panic!("failed to emit error: {}", e) + } + } + fn emit_message_(&mut self, rsp: &RenderSpan, msg: &str, |
