Rollup merge of #128806 - estebank:color-config, r=jieyouxu
Split `ColorConfig` off of `HumanReadableErrorType` The previous setup tied two unrelated things together. Splitting these two is a better model. Identified by https://github.com/rust-lang/rust/pull/126597/files#r1667800754
This commit is contained in:
commit
f106496b82
9 changed files with 64 additions and 50 deletions
|
@ -43,19 +43,14 @@ const DEFAULT_COLUMN_WIDTH: usize = 140;
|
|||
/// Describes the way the content of the `rendered` field of the json output is generated
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum HumanReadableErrorType {
|
||||
Default(ColorConfig),
|
||||
AnnotateSnippet(ColorConfig),
|
||||
Short(ColorConfig),
|
||||
Default,
|
||||
AnnotateSnippet,
|
||||
Short,
|
||||
}
|
||||
|
||||
impl HumanReadableErrorType {
|
||||
/// Returns a (`short`, `color`) tuple
|
||||
pub fn unzip(self) -> (bool, ColorConfig) {
|
||||
match self {
|
||||
HumanReadableErrorType::Default(cc) => (false, cc),
|
||||
HumanReadableErrorType::Short(cc) => (true, cc),
|
||||
HumanReadableErrorType::AnnotateSnippet(cc) => (false, cc),
|
||||
}
|
||||
pub fn short(&self) -> bool {
|
||||
*self == HumanReadableErrorType::Short
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ pub struct JsonEmitter {
|
|||
ignored_directories_in_source_blocks: Vec<String>,
|
||||
#[setters(skip)]
|
||||
json_rendered: HumanReadableErrorType,
|
||||
color_config: ColorConfig,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
track_diagnostics: bool,
|
||||
|
@ -68,6 +69,7 @@ impl JsonEmitter {
|
|||
fallback_bundle: LazyFallbackBundle,
|
||||
pretty: bool,
|
||||
json_rendered: HumanReadableErrorType,
|
||||
color_config: ColorConfig,
|
||||
) -> JsonEmitter {
|
||||
JsonEmitter {
|
||||
dst: IntoDynSyncSend(dst),
|
||||
|
@ -79,6 +81,7 @@ impl JsonEmitter {
|
|||
ui_testing: false,
|
||||
ignored_directories_in_source_blocks: Vec::new(),
|
||||
json_rendered,
|
||||
color_config,
|
||||
diagnostic_width: None,
|
||||
macro_backtrace: false,
|
||||
track_diagnostics: false,
|
||||
|
@ -173,7 +176,7 @@ impl Emitter for JsonEmitter {
|
|||
}
|
||||
|
||||
fn should_show_explain(&self) -> bool {
|
||||
!matches!(self.json_rendered, HumanReadableErrorType::Short(_))
|
||||
!self.json_rendered.short()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -353,8 +356,8 @@ impl Diagnostic {
|
|||
|
||||
let buf = BufWriter::default();
|
||||
let mut dst: Destination = Box::new(buf.clone());
|
||||
let (short, color_config) = je.json_rendered.unzip();
|
||||
match color_config {
|
||||
let short = je.json_rendered.short();
|
||||
match je.color_config {
|
||||
ColorConfig::Always | ColorConfig::Auto => dst = Box::new(termcolor::Ansi::new(dst)),
|
||||
ColorConfig::Never => {}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,8 @@ fn test_positions(code: &str, span: (u32, u32), expected_output: SpanTestData) {
|
|||
sm,
|
||||
fallback_bundle,
|
||||
true, // pretty
|
||||
HumanReadableErrorType::Short(ColorConfig::Never),
|
||||
HumanReadableErrorType::Short,
|
||||
ColorConfig::Never,
|
||||
);
|
||||
|
||||
let span = Span::with_root_ctxt(BytePos(span.0), BytePos(span.1));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue