From 39063ce3087663b29ffcb72ecc362684d30f935e Mon Sep 17 00:00:00 2001 From: camc314 <18101008+camc314@users.noreply.github.com> Date: Tue, 13 May 2025 08:49:38 +0000 Subject: [PATCH] fix(linter): reword diagnostic message for no-control-regex (#10993) --- ...xtures_linter_regexp_feature@index.ts.snap | 2 +- .../src/rules/eslint/no_control_regex.rs | 10 ++++------ .../snapshots/eslint_no_control_regex.snap | Bin 7198 -> 6385 bytes ..._control_regex@capture-group-indexing.snap | 8 ++++---- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/crates/oxc_language_server/src/snapshots/fixtures_linter_regexp_feature@index.ts.snap b/crates/oxc_language_server/src/snapshots/fixtures_linter_regexp_feature@index.ts.snap index ae1905f6443f0..d46ad5cba0688 100644 --- a/crates/oxc_language_server/src/snapshots/fixtures_linter_regexp_feature@index.ts.snap +++ b/crates/oxc_language_server/src/snapshots/fixtures_linter_regexp_feature@index.ts.snap @@ -4,7 +4,7 @@ input_file: crates/oxc_language_server/fixtures/linter/regexp_feature/index.ts --- code: "eslint(no-control-regex)" code_description.href: "https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-control-regex.html" -message: "Unexpected control character\nhelp: '\\u0000' is not a valid control character." +message: "Unexpected control character\nhelp: '\\u0000' is a control character." range: Range { start: Position { line: 1, character: 13 }, end: Position { line: 1, character: 32 } } related_information[0].message: "" related_information[0].location.uri: "file:///fixtures/linter/regexp_feature/index.ts" diff --git a/crates/oxc_linter/src/rules/eslint/no_control_regex.rs b/crates/oxc_linter/src/rules/eslint/no_control_regex.rs index fb6e66e60bab2..abd87a066edd5 100644 --- a/crates/oxc_linter/src/rules/eslint/no_control_regex.rs +++ b/crates/oxc_linter/src/rules/eslint/no_control_regex.rs @@ -40,7 +40,7 @@ fn no_control_regex_diagnostic(control_chars: &[Character], span: Span) -> OxcDi let regexes = other_chars.iter().join(", "); writeln!( help, - "'{regexes}' {} not {}valid control character{}.", + "'{regexes}' {} {}control character{}.", if other_chars.len() > 1 { "are" } else { "is" }, if other_chars.len() > 1 { "" } else { "a " }, if other_chars.len() > 1 { "s" } else { "" }, @@ -52,7 +52,7 @@ fn no_control_regex_diagnostic(control_chars: &[Character], span: Span) -> OxcDi let regexes = octal_chars.iter().join(", "); writeln!( help, - "'{regexes}' {} not {}valid control character{}. They look like backreferences, but there {} no corresponding capture group{}. If you are trying to match the octal character, consider using '\\xNN' or '\\u00NN' instead.", + "'{regexes}' {} {}control character{}. They look like backreferences, but there {} no corresponding capture group{}.", if octal_chars.len() > 1 { "are" } else { "is" }, if octal_chars.len() > 1 { "" } else { "a " }, if octal_chars.len() > 1 { "s" } else { "" }, @@ -62,10 +62,8 @@ fn no_control_regex_diagnostic(control_chars: &[Character], span: Span) -> OxcDi } if !null_chars.is_empty() { - writeln!( - help, - "'\\0' matches the null character (U+0000), which is a control character. If you intend to match the null character, consider using '\\x00' or '\\u0000' for clarity." - ).unwrap(); + writeln!(help, "'\\0' matches the null character (U+0000), which is a control character.") + .unwrap(); } debug_assert!(!help.is_empty()); diff --git a/crates/oxc_linter/src/snapshots/eslint_no_control_regex.snap b/crates/oxc_linter/src/snapshots/eslint_no_control_regex.snap index 80654e31f495c59bb2d7cddc7d179580458ee656..ef50818925d3f687b2376f61fb0cae5ea957dfa9 100644 GIT binary patch delta 358 zcmbPd@zHR?x5=tvB9jFK6DRgdOzvl5oji##4OOTd!4;o8hq(pHwVPZkp*(p$%Y@CA ztOAUaEm@~ee#O>0xsv@kO#S5h9Q8#@E#MAi?}dwn3&F(lCu<8M)G~{}#6cd>pL|usZ?djv z;^dd20l?4zi5X935r?RmDs)h@LR2w(Ct|)p(=bHFZ=)s(6NS;lv9d zapTUTkg%w$w^?JPDH}lP|$F*9mBzY((YXKERF=_IMp7~y&m@uWF zCU#-7E@Y{OV*y4#egczvKsn$w$^#|1UlXj$qDl)+0~YleRm_FkOF(->5bP0nGmO6f z8r@uf3i#RW<+J$Cx{^`LZrLwBm%xV6%{TZ;1jLu%6_`$BcT9cz-#>Vo9B69hH-5(N zbT4-GnBQ-Kfo9qUcoG7xfZ!v1Z^1O{CA{N7P&yi?KCygY(Bt(vKDnmOU9^Zb2ABIk}5E% z%;t)8PbM1&Rd{Lu5iCv|_oNNEVcyst8#-K2KARDekh6@LCwsz7%*t3x7%^KSCpSw6 zJ7+0}n5>0jN((8AmIQ0k$PSGHue9aYFUgTk9F=v~m`vzsxybtrMDK)GwtLv5!=rjd z^RO-rNhr)W_JW~CqKK&_Mbm@F@R{C>wT&tm;UZVV>^{8EXQ^lcU#)~ z_AJ@i!mfhT$nnkwAA4*7KIa$UdlwAO3B3@k!vqT`lT|nm6{sHmy)7SLRa6Kj`#f;H zpbM1rRfre6f`@%shxZ*A@Gu^$#6XWw9KH}md)f+cs)#=+s8)52ReCNH5K285iy_Cy z25^Bb+;Zu*7hw68xOELTJ`Be)#wMAJjRv8gvI*tW=N2B7DqQwFd@hzt$$Tw0nW`=n z2k!JVr!6j;B~~YrS?YENr%Zh!JT=&T86_Pmx_GozB$`l(qI%QWRcK)+_t!zgF%($iyFE9Ba8+^1Ljq?1#ssnMo!ndUX8* D