Honor --color option when emitting errors
Fixes issue 5717.
This commit is contained in:
parent
475396a03c
commit
a3b2bfc2db
@ -12,6 +12,7 @@ use rustc_span::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use crate::config::file_lines::LineRange;
|
use crate::config::file_lines::LineRange;
|
||||||
|
use crate::config::options::Color;
|
||||||
use crate::ignore_path::IgnorePathSet;
|
use crate::ignore_path::IgnorePathSet;
|
||||||
use crate::parse::parser::{ModError, ModulePathSuccess};
|
use crate::parse::parser::{ModError, ModulePathSuccess};
|
||||||
use crate::source_map::LineRangeUtils;
|
use crate::source_map::LineRangeUtils;
|
||||||
@ -107,15 +108,26 @@ impl Emitter for SilentOnIgnoredFilesEmitter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<Color> for ColorConfig {
|
||||||
|
fn from(color: Color) -> Self {
|
||||||
|
match color {
|
||||||
|
Color::Auto => ColorConfig::Auto,
|
||||||
|
Color::Always => ColorConfig::Always,
|
||||||
|
Color::Never => ColorConfig::Never,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn default_handler(
|
fn default_handler(
|
||||||
source_map: Lrc<SourceMap>,
|
source_map: Lrc<SourceMap>,
|
||||||
ignore_path_set: Lrc<IgnorePathSet>,
|
ignore_path_set: Lrc<IgnorePathSet>,
|
||||||
can_reset: Lrc<AtomicBool>,
|
can_reset: Lrc<AtomicBool>,
|
||||||
hide_parse_errors: bool,
|
hide_parse_errors: bool,
|
||||||
|
color: Color,
|
||||||
) -> Handler {
|
) -> Handler {
|
||||||
let supports_color = term::stderr().map_or(false, |term| term.supports_color());
|
let supports_color = term::stderr().map_or(false, |term| term.supports_color());
|
||||||
let color_cfg = if supports_color {
|
let emit_color = if supports_color {
|
||||||
ColorConfig::Auto
|
ColorConfig::from(color)
|
||||||
} else {
|
} else {
|
||||||
ColorConfig::Never
|
ColorConfig::Never
|
||||||
};
|
};
|
||||||
@ -126,7 +138,7 @@ fn default_handler(
|
|||||||
let fallback_bundle =
|
let fallback_bundle =
|
||||||
rustc_errors::fallback_fluent_bundle(rustc_errors::DEFAULT_LOCALE_RESOURCES, false);
|
rustc_errors::fallback_fluent_bundle(rustc_errors::DEFAULT_LOCALE_RESOURCES, false);
|
||||||
Box::new(EmitterWriter::stderr(
|
Box::new(EmitterWriter::stderr(
|
||||||
color_cfg,
|
emit_color,
|
||||||
Some(source_map.clone()),
|
Some(source_map.clone()),
|
||||||
None,
|
None,
|
||||||
fallback_bundle,
|
fallback_bundle,
|
||||||
@ -164,6 +176,7 @@ impl ParseSess {
|
|||||||
Lrc::clone(&ignore_path_set),
|
Lrc::clone(&ignore_path_set),
|
||||||
Lrc::clone(&can_reset_errors),
|
Lrc::clone(&can_reset_errors),
|
||||||
config.hide_parse_errors(),
|
config.hide_parse_errors(),
|
||||||
|
config.color(),
|
||||||
);
|
);
|
||||||
let parse_sess = RawParseSess::with_span_handler(handler, source_map);
|
let parse_sess = RawParseSess::with_span_handler(handler, source_map);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user