about summary refs log tree commit diff
diff options
context:
space:
mode:
author许杰友 Jieyou Xu (Joe) <jieyouxu@outlook.com>2023-06-28 23:51:12 +0800
committer许杰友 Jieyou Xu (Joe) <jieyouxu@outlook.com>2023-06-29 23:31:24 +0800
commit53245a17bbe3f99b0ce1bec254df431e8c09d132 (patch)
tree765b29bd0cfb6faa06f0626483b433575dd996dd
parent5bd28f5eac1ba3569bfa8d49ec3f5acbdfdff7a0 (diff)
downloadrust-53245a17bbe3f99b0ce1bec254df431e8c09d132.tar.gz
rust-53245a17bbe3f99b0ce1bec254df431e8c09d132.zip
Set error handler output format as soon as possible
-rw-r--r--compiler/rustc_session/src/config.rs2
-rw-r--r--tests/ui/diagnostic-flags/colored-session-opt-error.rs3
-rw-r--r--tests/ui/diagnostic-flags/colored-session-opt-error.stderr2
3 files changed, 7 insertions, 0 deletions
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs
index 480d2478e81..91fa3db811f 100644
--- a/compiler/rustc_session/src/config.rs
+++ b/compiler/rustc_session/src/config.rs
@@ -2405,6 +2405,8 @@ pub fn build_session_options(
 
     let error_format = parse_error_format(handler, matches, color, json_rendered);
 
+    handler.abort_if_error_and_set_error_format(error_format);
+
     let diagnostic_width = matches.opt_get("diagnostic-width").unwrap_or_else(|_| {
         handler.early_error("`--diagnostic-width` must be an positive integer");
     });
diff --git a/tests/ui/diagnostic-flags/colored-session-opt-error.rs b/tests/ui/diagnostic-flags/colored-session-opt-error.rs
new file mode 100644
index 00000000000..5511ff0193f
--- /dev/null
+++ b/tests/ui/diagnostic-flags/colored-session-opt-error.rs
@@ -0,0 +1,3 @@
+// check-pass
+// compile-flags: -Cremark=foo --error-format=human --color always
+fn main() {}
diff --git a/tests/ui/diagnostic-flags/colored-session-opt-error.stderr b/tests/ui/diagnostic-flags/colored-session-opt-error.stderr
new file mode 100644
index 00000000000..ef79d5b0f2f
--- /dev/null
+++ b/tests/ui/diagnostic-flags/colored-session-opt-error.stderr
@@ -0,0 +1,2 @@
+warning: -C remark requires "-C debuginfo=n" to show source locations
+