diff --git a/crates/oxc_linter/src/rules/eslint/no_console.rs b/crates/oxc_linter/src/rules/eslint/no_console.rs index 2b4bd6703f244..53aba59c4afb4 100644 --- a/crates/oxc_linter/src/rules/eslint/no_console.rs +++ b/crates/oxc_linter/src/rules/eslint/no_console.rs @@ -10,8 +10,14 @@ use crate::{ rule::Rule, }; -fn no_console_diagnostic(span: Span) -> OxcDiagnostic { - OxcDiagnostic::warn("eslint(no-console): Unexpected console statement.") +fn no_console_diagnostic(span: Span, allow: &[CompactStr]) -> OxcDiagnostic { + let only_msg = if allow.is_empty() { + String::new() + } else { + format!("Only supported methods: {}", allow.join(",")) + }; + + OxcDiagnostic::warn(format!("eslint(no-console): Unexpected console statement. {only_msg}")) .with_label(span) .with_help("Delete this console statement.") } @@ -90,9 +96,11 @@ impl Rule for NoConsole { { if let Some((mem_span, _)) = mem.static_property_info() { let diagnostic_span = ident.span().merge(mem_span); - ctx.diagnostic_with_suggestion(no_console_diagnostic(diagnostic_span), |fixer| { - remove_console(fixer, ctx, node) - }); + + ctx.diagnostic_with_suggestion( + no_console_diagnostic(diagnostic_span, &self.allow), + |fixer| remove_console(fixer, ctx, node), + ); } } } diff --git a/crates/oxc_linter/src/snapshots/eslint_no_console.snap b/crates/oxc_linter/src/snapshots/eslint_no_console.snap index efda2e83cf95b..f8d04c43747cf 100644 --- a/crates/oxc_linter/src/snapshots/eslint_no_console.snap +++ b/crates/oxc_linter/src/snapshots/eslint_no_console.snap @@ -1,5 +1,6 @@ --- source: crates/oxc_linter/src/tester.rs +assertion_line: 357 --- ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. ╭─[no_console.tsx:1:1] @@ -50,56 +51,56 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: error ╭─[no_console.tsx:1:1] 1 │ console.log(foo) · ─────────── ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: warn ╭─[no_console.tsx:1:1] 1 │ console.error(foo) · ───────────── ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: log ╭─[no_console.tsx:1:1] 1 │ console.info(foo) · ──────────── ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: error ╭─[no_console.tsx:1:1] 1 │ console.warn(foo) · ──────────── ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: warn,info ╭─[no_console.tsx:1:1] 1 │ console.log(foo) · ─────────── ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: warn,info,log ╭─[no_console.tsx:1:1] 1 │ console.error(foo) · ───────────── ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: warn,error,log ╭─[no_console.tsx:1:1] 1 │ console.info(foo) · ──────────── ╰──── help: Delete this console statement. - ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. + ⚠ eslint(no-console): eslint(no-console): Unexpected console statement. Only supported methods: info,log ╭─[no_console.tsx:1:1] 1 │ console.warn(foo) · ────────────