From 1b1e47550f3b2899beb8e2bb1a3a983ae2be39f0 Mon Sep 17 00:00:00 2001 From: steamproof <93405617+pbkx@users.noreply.github.com> Date: Mon, 8 Jun 2026 16:39:02 -0700 Subject: [PATCH] Add multibyte JSON diagnostic regression test --- .../multibyte-rendered-ansi-issue-157148.rs | 16 ++++++++++++++++ ...multibyte-rendered-ansi-issue-157148.stderr | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 tests/ui/json/multibyte-rendered-ansi-issue-157148.rs create mode 100644 tests/ui/json/multibyte-rendered-ansi-issue-157148.stderr diff --git a/tests/ui/json/multibyte-rendered-ansi-issue-157148.rs b/tests/ui/json/multibyte-rendered-ansi-issue-157148.rs new file mode 100644 index 0000000000000..72e39856db9c2 --- /dev/null +++ b/tests/ui/json/multibyte-rendered-ansi-issue-157148.rs @@ -0,0 +1,16 @@ +// Regression test for . +// JSON rendered diagnostics should not ICE when spans involve non-ASCII source text. + +//@ edition: 2021 +//@ check-pass +//@ compile-flags: --error-format=json --json=diagnostic-rendered-ansi +//@ normalize-stderr: "(\\u001b\[[0-9;]+m)+" -> "[ANSI]" + +#![warn(unused_mut)] + +fn main() { + let mut x = 0; // 这是一段中文注释,用于在被下划线标注的行中加入多字节字符 + //~^ WARNING variable does not need to be mutable + //~| HELP remove this `mut` + let _ = x; +} diff --git a/tests/ui/json/multibyte-rendered-ansi-issue-157148.stderr b/tests/ui/json/multibyte-rendered-ansi-issue-157148.stderr new file mode 100644 index 0000000000000..268702281d88d --- /dev/null +++ b/tests/ui/json/multibyte-rendered-ansi-issue-157148.stderr @@ -0,0 +1,18 @@ +{"$message_type":"diagnostic","message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"$DIR/multibyte-rendered-ansi-issue-157148.rs","byte_start":365,"byte_end":370,"line_start":12,"line_end":12,"column_start":9,"column_end":14,"is_primary":true,"text":[{"text":" let mut x = 0; // 这是一段中文注释,用于在被下划线标注的行中加入多字节字符","highlight_start":9,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the lint level is defined here","code":null,"level":"note","spans":[{"file_name":"$DIR/multibyte-rendered-ansi-issue-157148.rs","byte_start":331,"byte_end":341,"line_start":9,"line_end":9,"column_start":9,"column_end":19,"is_primary":true,"text":[{"text":"#![warn(unused_mut)]","highlight_start":9,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"$DIR/multibyte-rendered-ansi-issue-157148.rs","byte_start":365,"byte_end":369,"line_start":12,"line_end":12,"column_start":9,"column_end":13,"is_primary":true,"text":[{"text":" let mut x = 0; // 这是一段中文注释,用于在被下划线标注的行中加入多字节字符","highlight_start":9,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"[ANSI]warning[ANSI]: variable does not need to be mutable[ANSI] + [ANSI]--> [ANSI]$DIR/multibyte-rendered-ansi-issue-157148.rs:12:9 + [ANSI]|[ANSI] +[ANSI]LL[ANSI] [ANSI]|[ANSI] let mut x = 0; // 这是一段中文注释,用于在被下划线标注的行中加入多字节字符 + [ANSI]|[ANSI] [ANSI]----[ANSI]^[ANSI] + [ANSI]|[ANSI] [ANSI]|[ANSI] + [ANSI]|[ANSI] [ANSI]help: remove this `mut`[ANSI] + [ANSI]|[ANSI] +[ANSI]note[ANSI]: the lint level is defined here + [ANSI]--> [ANSI]$DIR/multibyte-rendered-ansi-issue-157148.rs:9:9 + [ANSI]|[ANSI] +[ANSI]LL[ANSI] [ANSI]|[ANSI] #![warn(unused_mut)] + [ANSI]|[ANSI] [ANSI]^^^^^^^^^^[ANSI] + +"} +{"$message_type":"diagnostic","message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"[ANSI]warning[ANSI]: 1 warning emitted[ANSI] + +"}