diff --git a/crates/rome_cli/src/commands/help.rs b/crates/rome_cli/src/commands/help.rs index 9d4ea3c706a..a4f015407d9 100644 --- a/crates/rome_cli/src/commands/help.rs +++ b/crates/rome_cli/src/commands/help.rs @@ -37,6 +37,7 @@ const CHECK: Markup = markup! { ""--apply"" Apply safe fixes ""--apply-suggested"" Apply safe and suggested fixes ""--max-diagnostics"" Cap the amount of diagnostics displayed (default: 20) + ""--verbose"" Print additional verbose advices on diagnostics " }; @@ -63,7 +64,8 @@ const CI: Markup = markup! { ""OPTIONS:"" ""--formatter-enabled"" Allow to enable or disable the formatter check. (default: true) ""--linter-enabled"" Allow to enable or disable the linter check. (default: true) - ""--max-diagnostics"" Cap the amount of diagnostics displayed (default: 50)" + ""--max-diagnostics"" Cap the amount of diagnostics displayed (default: 50) + ""--verbose"" Print additional verbose advices on diagnostics" {FORMAT_OPTIONS} }; @@ -78,7 +80,8 @@ const FORMAT: Markup = markup! { ""OPTIONS:"" ""--write"" Edit the files in place (beware!) instead of printing the diff to the console ""--skip-errors"" Skip over files containing syntax errors instead of emitting an error diagnostic. - ""--max-diagnostics"" Cap the amount of diagnostics displayed (default: 50)" + ""--max-diagnostics"" Cap the amount of diagnostics displayed (default: 50) + ""--verbose"" Print additional verbose advices on diagnostics" {FORMAT_OPTIONS} """--stdin-file-path "" A file name with its extension to pass when reading from standard in, e.g. echo 'let a;' | rome format --stdin-file-path file.js " diff --git a/crates/rome_cli/src/traversal.rs b/crates/rome_cli/src/traversal.rs index fb89d8b4151..fd9bbe20611 100644 --- a/crates/rome_cli/src/traversal.rs +++ b/crates/rome_cli/src/traversal.rs @@ -57,6 +57,8 @@ impl fmt::Display for CheckResult { pub(crate) fn traverse(execution: Execution, mut session: CliSession) -> Result<(), Termination> { init_thread_pool(); + let verbose = session.args.contains("--verbose"); + // Check that at least one input file / directory was specified in the command line let mut inputs = vec![]; @@ -116,6 +118,7 @@ pub(crate) fn traverse(execution: Execution, mut session: CliSession) -> Result< remaining_diagnostics: &remaining_diagnostics, errors: &mut errors, report: &mut report, + verbose, }); }) .expect("failed to spawn console thread"); @@ -262,6 +265,8 @@ struct ProcessMessagesOptions<'ctx> { /// Mutable handle to a [Report] instance the console thread should write /// stats into report: &'ctx mut Report, + /// Whether the console thread should print diagnostics in verbose mode + verbose: bool, } #[derive(Debug, Diagnostic)] @@ -328,6 +333,7 @@ fn process_messages(options: ProcessMessagesOptions) { remaining_diagnostics, errors, report, + verbose, } = options; let mut paths = HashMap::new(); @@ -412,7 +418,7 @@ fn process_messages(options: ProcessMessagesOptions) { if mode.should_report_to_terminal() { if should_print { console.error(markup! { - {PrintDiagnostic(&err)} + {if verbose { PrintDiagnostic::verbose(&err) } else { PrintDiagnostic::simple(&err) }} }); } } else { @@ -454,7 +460,7 @@ fn process_messages(options: ProcessMessagesOptions) { let diag = diag.with_file_path(&name).with_file_source_code(&content); console.error(markup! { - {PrintDiagnostic(&diag)} + {if verbose { PrintDiagnostic::verbose(&diag) } else { PrintDiagnostic::simple(&diag) }} }); } } else { @@ -480,7 +486,7 @@ fn process_messages(options: ProcessMessagesOptions) { let diag = diag.with_file_path(&name).with_file_source_code(&content); console.error(markup! { - {PrintDiagnostic(&diag)} + {if verbose { PrintDiagnostic::verbose(&diag) } else { PrintDiagnostic::simple(&diag) }} }); } } else { @@ -530,7 +536,7 @@ fn process_messages(options: ProcessMessagesOptions) { }; console.error(markup! { - {PrintDiagnostic(&diag)} + {if verbose { PrintDiagnostic::verbose(&diag) } else { PrintDiagnostic::simple(&diag) }} }); } else { let diag = FormatDiffDiagnostic { @@ -542,7 +548,7 @@ fn process_messages(options: ProcessMessagesOptions) { }; console.error(markup! { - {PrintDiagnostic(&diag)} + {if verbose { PrintDiagnostic::verbose(&diag) } else { PrintDiagnostic::simple(&diag) }} }); } } diff --git a/crates/rome_cli/tests/commands/check.rs b/crates/rome_cli/tests/commands/check.rs index 709823f9942..65490b21a44 100644 --- a/crates/rome_cli/tests/commands/check.rs +++ b/crates/rome_cli/tests/commands/check.rs @@ -1086,3 +1086,35 @@ a == b;", result, )); } + +#[test] +fn print_verbose() { + let mut fs = MemoryFileSystem::default(); + let mut console = BufferConsole::default(); + + let file_path = Path::new("check.js"); + fs.insert(file_path.into(), LINT_ERROR.as_bytes()); + + let result = run_cli( + DynRef::Borrowed(&mut fs), + DynRef::Borrowed(&mut console), + Arguments::from_vec(vec![ + OsString::from("check"), + OsString::from("--verbose"), + file_path.as_os_str().into(), + ]), + ); + + match result { + Err(Termination::CheckError) => {} + _ => panic!("run_cli returned {result:?} for a failed CI check, expected an error"), + } + + assert_cli_snapshot(SnapshotPayload::new( + module_path!(), + "print_verbose", + fs, + console, + result, + )); +} diff --git a/crates/rome_cli/tests/commands/ci.rs b/crates/rome_cli/tests/commands/ci.rs index 7a4e0fcd476..c8ff340d4a4 100644 --- a/crates/rome_cli/tests/commands/ci.rs +++ b/crates/rome_cli/tests/commands/ci.rs @@ -633,3 +633,35 @@ fn max_diagnostics() { assert_eq!(diagnostic_count, 10); } + +#[test] +fn print_verbose() { + let mut fs = MemoryFileSystem::default(); + + let file_path = Path::new("ci.js"); + fs.insert(file_path.into(), LINT_ERROR.as_bytes()); + + let mut console = BufferConsole::default(); + let result = run_cli( + DynRef::Borrowed(&mut fs), + DynRef::Borrowed(&mut console), + Arguments::from_vec(vec![ + OsString::from("ci"), + OsString::from("--verbose"), + file_path.as_os_str().into(), + ]), + ); + + match &result { + Err(Termination::CheckError) => {} + _ => panic!("run_cli returned {result:?} for a failed CI check, expected an error"), + } + + assert_cli_snapshot(SnapshotPayload::new( + module_path!(), + "print_verbose", + fs, + console, + result, + )); +} diff --git a/crates/rome_cli/tests/commands/format.rs b/crates/rome_cli/tests/commands/format.rs index ec88da15417..6de7a461787 100644 --- a/crates/rome_cli/tests/commands/format.rs +++ b/crates/rome_cli/tests/commands/format.rs @@ -1414,3 +1414,32 @@ fn no_supported_file_found() { result, )); } + +#[test] +fn print_verbose() { + let mut fs = MemoryFileSystem::default(); + let mut console = BufferConsole::default(); + + let file_path = Path::new("format.js"); + fs.insert(file_path.into(), UNFORMATTED.as_bytes()); + + let result = run_cli( + DynRef::Borrowed(&mut fs), + DynRef::Borrowed(&mut console), + Arguments::from_vec(vec![ + OsString::from("format"), + OsString::from("--verbose"), + file_path.as_os_str().into(), + ]), + ); + + assert!(result.is_ok(), "run_cli returned {result:?}"); + + assert_cli_snapshot(SnapshotPayload::new( + module_path!(), + "print_verbose", + fs, + console, + result, + )); +} diff --git a/crates/rome_cli/tests/snapshots/main_commands_check/print_verbose.snap b/crates/rome_cli/tests/snapshots/main_commands_check/print_verbose.snap new file mode 100644 index 00000000000..038f2f42a74 --- /dev/null +++ b/crates/rome_cli/tests/snapshots/main_commands_check/print_verbose.snap @@ -0,0 +1,56 @@ +--- +source: crates/rome_cli/tests/snap_test.rs +expression: content +--- +## `check.js` + +```js +for(;true;); + +``` + +# Termination Message + +```block +some errors were emitted while running checks +``` + +# Emitted Messages + +```block +check.js:1:1 lint/correctness/useWhile FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Use while loops instead of for loops. + + > 1 │ for(;true;); + │ ^^^^^^^^^^^ + 2 │ + + i Suggested fix: Use a while loop + + 1 │ - for(;true;); + 1 │ + while·(true); + 2 2 │ + + +``` + +```block +check.js:1:1 lint/style/useBlockStatements FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Block statements are preferred in this position. + + > 1 │ for(;true;); + │ ^^^^^^^^^^^^ + 2 │ + + i Suggested fix: Wrap the statement with a `JsBlockStatement` + + 1 │ - for(;true;); + 1 │ + for(;true;)·{} + 2 2 │ + + +``` + + diff --git a/crates/rome_cli/tests/snapshots/main_commands_ci/print_verbose.snap b/crates/rome_cli/tests/snapshots/main_commands_ci/print_verbose.snap new file mode 100644 index 00000000000..2c559500041 --- /dev/null +++ b/crates/rome_cli/tests/snapshots/main_commands_ci/print_verbose.snap @@ -0,0 +1,56 @@ +--- +source: crates/rome_cli/tests/snap_test.rs +expression: content +--- +## `ci.js` + +```js +for(;true;); + +``` + +# Termination Message + +```block +some errors were emitted while running checks +``` + +# Emitted Messages + +```block +ci.js:1:1 lint/correctness/useWhile FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Use while loops instead of for loops. + + > 1 │ for(;true;); + │ ^^^^^^^^^^^ + 2 │ + + i Suggested fix: Use a while loop + + 1 │ - for(;true;); + 1 │ + while·(true); + 2 2 │ + + +``` + +```block +ci.js:1:1 lint/style/useBlockStatements FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Block statements are preferred in this position. + + > 1 │ for(;true;); + │ ^^^^^^^^^^^^ + 2 │ + + i Suggested fix: Wrap the statement with a `JsBlockStatement` + + 1 │ - for(;true;); + 1 │ + for(;true;)·{} + 2 2 │ + + +``` + + diff --git a/crates/rome_cli/tests/snapshots/main_commands_format/print_verbose.snap b/crates/rome_cli/tests/snapshots/main_commands_format/print_verbose.snap new file mode 100644 index 00000000000..3136b73e098 --- /dev/null +++ b/crates/rome_cli/tests/snapshots/main_commands_format/print_verbose.snap @@ -0,0 +1,25 @@ +--- +source: crates/rome_cli/tests/snap_test.rs +expression: content +--- +## `format.js` + +```js + statement( ) +``` + +# Emitted Messages + +```block +format.js format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + i Formatter would have printed the following content: + + 1 │ - ··statement(··)·· + 1 │ + statement(); + 2 │ + + + +``` + + diff --git a/crates/rome_diagnostics/examples/cli.rs b/crates/rome_diagnostics/examples/cli.rs index 18014358c88..c41a7477cec 100644 --- a/crates/rome_diagnostics/examples/cli.rs +++ b/crates/rome_diagnostics/examples/cli.rs @@ -59,5 +59,5 @@ pub fn main() { }, }; - EnvConsole::default().error(markup!({ PrintDiagnostic(&diag) })); + EnvConsole::default().error(markup!({ PrintDiagnostic::verbose(&diag) })); } diff --git a/crates/rome_diagnostics/examples/fs.rs b/crates/rome_diagnostics/examples/fs.rs index 5c8cf4d0209..0115abaf644 100644 --- a/crates/rome_diagnostics/examples/fs.rs +++ b/crates/rome_diagnostics/examples/fs.rs @@ -68,5 +68,5 @@ pub fn main() { }, }; - EnvConsole::default().error(markup!({ PrintDiagnostic(&diag) })); + EnvConsole::default().error(markup!({ PrintDiagnostic::verbose(&diag) })); } diff --git a/crates/rome_diagnostics/examples/lint.rs b/crates/rome_diagnostics/examples/lint.rs index 6de97cc8a7e..b1305fb5a95 100644 --- a/crates/rome_diagnostics/examples/lint.rs +++ b/crates/rome_diagnostics/examples/lint.rs @@ -90,5 +90,5 @@ console.log(FOO);"; }, }; - EnvConsole::default().error(markup!({ PrintDiagnostic(&diag) })); + EnvConsole::default().error(markup!({ PrintDiagnostic::verbose(&diag) })); } diff --git a/crates/rome_diagnostics/examples/serde.rs b/crates/rome_diagnostics/examples/serde.rs index 428bc17226c..dd0dde3d7af 100644 --- a/crates/rome_diagnostics/examples/serde.rs +++ b/crates/rome_diagnostics/examples/serde.rs @@ -53,6 +53,6 @@ fn from_str(input: &str) -> Result { pub fn main() { if let Err(err) = from_str("{\"syntax_error\"") { - EnvConsole::default().error(markup!({ PrintDiagnostic(&err) })); + EnvConsole::default().error(markup!({ PrintDiagnostic::verbose(&err) })); }; } diff --git a/crates/rome_diagnostics/src/display.rs b/crates/rome_diagnostics/src/display.rs index a6e6c030e52..8248eebeebd 100644 --- a/crates/rome_diagnostics/src/display.rs +++ b/crates/rome_diagnostics/src/display.rs @@ -33,11 +33,30 @@ impl<'fmt, D: AsDiagnostic + ?Sized> std::fmt::Display for PrintDescription<'fmt /// Helper struct for printing a diagnostic as markup into any formatter /// implementing [rome_console::fmt::Write]. -pub struct PrintDiagnostic<'fmt, D: ?Sized>(pub &'fmt D); +pub struct PrintDiagnostic<'fmt, D: ?Sized> { + diag: &'fmt D, + verbose: bool, +} + +impl<'fmt, D: AsDiagnostic + ?Sized> PrintDiagnostic<'fmt, D> { + pub fn simple(diag: &'fmt D) -> Self { + Self { + diag, + verbose: false, + } + } + + pub fn verbose(diag: &'fmt D) -> Self { + Self { + diag, + verbose: true, + } + } +} impl<'fmt, D: AsDiagnostic + ?Sized> fmt::Display for PrintDiagnostic<'fmt, D> { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> io::Result<()> { - let diagnostic = self.0.as_diagnostic(); + let diagnostic = self.diag.as_diagnostic(); // Print the header for the diagnostic fmt.write_markup(markup! { @@ -49,7 +68,7 @@ impl<'fmt, D: AsDiagnostic + ?Sized> fmt::Display for PrintDiagnostic<'fmt, D> { let mut fmt = IndentWriter::wrap(fmt, &mut slot, true, " "); let mut visitor = PrintAdvices(&mut fmt); - print_advices(&mut visitor, diagnostic, true) + print_advices(&mut visitor, diagnostic, self.verbose) } } @@ -729,7 +748,7 @@ mod tests { fn test_header() { let diag = TestDiagnostic::::with_location(); - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "path:1:1 internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" @@ -753,7 +772,7 @@ mod tests { ..TestDiagnostic::empty() }; - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" @@ -783,7 +802,7 @@ mod tests { ..TestDiagnostic::empty() }; - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" @@ -808,7 +827,7 @@ mod tests { ..TestDiagnostic::empty() }; - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" @@ -833,7 +852,7 @@ mod tests { ..TestDiagnostic::empty() }; - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" @@ -858,7 +877,7 @@ mod tests { ..TestDiagnostic::empty() }; - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" @@ -884,7 +903,7 @@ mod tests { ..TestDiagnostic::empty() }; - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" @@ -908,7 +927,7 @@ mod tests { ..TestDiagnostic::empty() }; - let diag = markup!({ PrintDiagnostic(&diag) }).to_owned(); + let diag = markup!({ PrintDiagnostic::verbose(&diag) }).to_owned(); let expected = markup!{ "internalError/io "" FIXABLE "" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" diff --git a/crates/rome_js_analyze/src/lib.rs b/crates/rome_js_analyze/src/lib.rs index e4dd5954bb7..0936deb7155 100644 --- a/crates/rome_js_analyze/src/lib.rs +++ b/crates/rome_js_analyze/src/lib.rs @@ -178,7 +178,7 @@ mod tests { error_ranges.push(diag.location().span.unwrap()); let error = diag.with_file_path("ahahah").with_file_source_code(SOURCE); let text = markup_to_string(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); eprintln!("{text}"); } diff --git a/crates/rome_js_analyze/tests/spec_tests.rs b/crates/rome_js_analyze/tests/spec_tests.rs index e89208c4f1a..627fdcbe1ab 100644 --- a/crates/rome_js_analyze/tests/spec_tests.rs +++ b/crates/rome_js_analyze/tests/spec_tests.rs @@ -174,7 +174,7 @@ fn diagnostic_to_string(name: &str, source: &str, diag: AnalyzerDiagnostic) -> S .with_file_path((name, FileId::zero())) .with_file_source_code(source); let text = markup_to_string(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); text diff --git a/crates/rome_js_formatter/src/check_reformat.rs b/crates/rome_js_formatter/src/check_reformat.rs index 2533f0a82c3..7af12729449 100644 --- a/crates/rome_js_formatter/src/check_reformat.rs +++ b/crates/rome_js_formatter/src/check_reformat.rs @@ -38,7 +38,7 @@ pub fn check_reformat(params: CheckReformatParams) { .with_file_source_code(text.to_string()); Formatter::new(&mut Termcolor(&mut buffer)) .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .expect("failed to emit diagnostic"); } diff --git a/crates/rome_js_formatter/tests/check_reformat.rs b/crates/rome_js_formatter/tests/check_reformat.rs index 0098a080500..4e02fe09f7a 100644 --- a/crates/rome_js_formatter/tests/check_reformat.rs +++ b/crates/rome_js_formatter/tests/check_reformat.rs @@ -39,7 +39,7 @@ pub fn check_reformat(params: CheckReformatParams) { .with_file_source_code(text.to_string()); Formatter::new(&mut Termcolor(&mut buffer)) .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .expect("failed to emit diagnostic"); } diff --git a/crates/rome_js_formatter/tests/prettier_tests.rs b/crates/rome_js_formatter/tests/prettier_tests.rs index a4f2698bb7a..86691585fbd 100644 --- a/crates/rome_js_formatter/tests/prettier_tests.rs +++ b/crates/rome_js_formatter/tests/prettier_tests.rs @@ -226,7 +226,7 @@ fn test_snapshot(input: &'static str, _: &str, _: &str, _: &str) { .with_file_source_code(parse_input.clone()); Formatter::new(&mut Termcolor(&mut buffer)) .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .expect("failed to emit diagnostic"); } diff --git a/crates/rome_js_parser/src/lib.rs b/crates/rome_js_parser/src/lib.rs index c07da067118..d93e22cb362 100644 --- a/crates/rome_js_parser/src/lib.rs +++ b/crates/rome_js_parser/src/lib.rs @@ -516,7 +516,7 @@ impl ParseDiagnostic { /// .with_file_source_code(source.to_string()); /// Formatter::new(&mut Termcolor(&mut write)) /// .write_markup(markup! { - /// {PrintDiagnostic(&error)} + /// {PrintDiagnostic::verbose(&error)} /// }) /// .expect("failed to emit diagnostic"); /// @@ -574,7 +574,7 @@ impl ParseDiagnostic { /// .with_file_source_code(source.to_string()); /// Formatter::new(&mut Termcolor(&mut write)) /// .write_markup(markup! { - /// {PrintDiagnostic(&error)} + /// {PrintDiagnostic::verbose(&error)} /// }) /// .expect("failed to emit diagnostic"); /// diff --git a/crates/rome_js_parser/src/test_utils.rs b/crates/rome_js_parser/src/test_utils.rs index 5cf3f2993f3..879c8641c9f 100644 --- a/crates/rome_js_parser/src/test_utils.rs +++ b/crates/rome_js_parser/src/test_utils.rs @@ -51,7 +51,7 @@ where .with_file_source_code(syntax.to_string()); Formatter::new(&mut Termcolor(&mut buffer)) .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .unwrap(); } diff --git a/crates/rome_js_parser/src/tests.rs b/crates/rome_js_parser/src/tests.rs index 40c47f0ae18..ef138e6e533 100644 --- a/crates/rome_js_parser/src/tests.rs +++ b/crates/rome_js_parser/src/tests.rs @@ -125,7 +125,7 @@ fn run_and_expect_errors(path: &str, _: &str, _: &str, _: &str) { .with_file_source_code(text.to_string()); Formatter::new(&mut Termcolor(&mut write)) .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .expect("failed to emit diagnostic"); write!( @@ -378,7 +378,7 @@ fn diagnostics_print_correctly() { Formatter::new(&mut Termcolor(&mut write)) .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .expect("failed to emit diagnostic"); diff --git a/crates/rome_js_semantic/src/tests/assertions.rs b/crates/rome_js_semantic/src/tests/assertions.rs index 110f29a7be2..1366e8470d9 100644 --- a/crates/rome_js_semantic/src/tests/assertions.rs +++ b/crates/rome_js_semantic/src/tests/assertions.rs @@ -114,7 +114,7 @@ pub fn assert(code: &str, test_name: &str) { .with_file_path(FileId::zero()) .with_file_source_code(code); console.log(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); } panic!("Compilation error"); @@ -752,7 +752,7 @@ fn error_assertion_not_attached_to_a_declaration( let mut console = EnvConsole::default(); console.log(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); panic!("This assertion must be attached to a SemanticEvent::DeclarationFound."); } @@ -773,7 +773,7 @@ fn error_declaration_pointing_to_unknown_scope( let mut console = EnvConsole::default(); console.log(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); } @@ -798,7 +798,7 @@ fn error_assertion_name_clash( let mut console = EnvConsole::default(); console.log(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); panic!("Assertion label conflict"); @@ -821,7 +821,7 @@ fn error_scope_end_assertion_points_to_non_existing_scope_start_assertion( let mut console = EnvConsole::default(); console.log(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); panic!("Scope start assertion not found."); } @@ -848,7 +848,7 @@ fn error_scope_end_assertion_points_to_the_wrong_scope_start( let mut console = EnvConsole::default(); console.log(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }); panic!("Wrong scope start"); } diff --git a/crates/rome_json_parser/src/lib.rs b/crates/rome_json_parser/src/lib.rs index eaae2b5903a..164cf9ab513 100644 --- a/crates/rome_json_parser/src/lib.rs +++ b/crates/rome_json_parser/src/lib.rs @@ -123,7 +123,7 @@ impl ParseDiagnostic { /// .with_file_source_code(source.to_string()); /// Formatter::new(&mut Termcolor(&mut write)) /// .write_markup(markup! { - /// {PrintDiagnostic(&error)} + /// {PrintDiagnostic::verbose(&error)} /// }) /// .expect("failed to emit diagnostic"); /// @@ -181,7 +181,7 @@ impl ParseDiagnostic { /// .with_file_source_code(source.to_string()); /// Formatter::new(&mut Termcolor(&mut write)) /// .write_markup(markup! { - /// {PrintDiagnostic(&error)} + /// {PrintDiagnostic::verbose(&error)} /// }) /// .expect("failed to emit diagnostic"); /// diff --git a/crates/rome_json_parser/tests/spec_test.rs b/crates/rome_json_parser/tests/spec_test.rs index b065077e99a..3f858c0e3cf 100644 --- a/crates/rome_json_parser/tests/spec_test.rs +++ b/crates/rome_json_parser/tests/spec_test.rs @@ -57,7 +57,7 @@ pub fn run(test_case: &str, _snapshot_name: &str, test_directory: &str, outcome: formatter .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .expect("failed to emit diagnostic"); } diff --git a/crates/rome_wasm/src/utils.rs b/crates/rome_wasm/src/utils.rs index 99aaabd2d6d..aec9c9e3720 100644 --- a/crates/rome_wasm/src/utils.rs +++ b/crates/rome_wasm/src/utils.rs @@ -43,7 +43,19 @@ impl DiagnosticPrinter { } } - pub fn print(&mut self, diagnostic: IDiagnostic) -> Result<(), Error> { + pub fn print_simple(&mut self, diagnostic: IDiagnostic) -> Result<(), Error> { + self.print(diagnostic, |err| PrintDiagnostic::simple(err)) + } + + pub fn print_verbose(&mut self, diagnostic: IDiagnostic) -> Result<(), Error> { + self.print(diagnostic, |err| PrintDiagnostic::verbose(err)) + } + + fn print( + &mut self, + diagnostic: IDiagnostic, + printer: fn(&rome_diagnostics::Error) -> PrintDiagnostic, + ) -> Result<(), Error> { let diag: Diagnostic = diagnostic.into_serde().map_err(into_error)?; let err = diag .with_file_path(&self.file_name) @@ -51,7 +63,7 @@ impl DiagnosticPrinter { let mut html = HTML(&mut self.buffer); Formatter::new(&mut html) - .write_markup(markup!({ PrintDiagnostic(&err) })) + .write_markup(markup!({ printer(&err) })) .map_err(into_error)?; Ok(()) diff --git a/npm/js-api/tests/wasm/diagnosticPrinter.test.mjs b/npm/js-api/tests/wasm/diagnosticPrinter.test.mjs index ab324853253..618a0330fdf 100644 --- a/npm/js-api/tests/wasm/diagnosticPrinter.test.mjs +++ b/npm/js-api/tests/wasm/diagnosticPrinter.test.mjs @@ -10,7 +10,7 @@ if(expr()) { }`; const printer = new DiagnosticPrinter("file.js", SOURCE_CODE); - printer.print({ + printer.print_verbose({ advices: { advices: [], }, @@ -42,7 +42,7 @@ if(expr()) { }, }); - printer.print({ + printer.print_verbose({ advices: { advices: [], }, diff --git a/website/src/playground/workers/romeWorker.ts b/website/src/playground/workers/romeWorker.ts index 0f05dbc0c61..0cf1793f535 100644 --- a/website/src/playground/workers/romeWorker.ts +++ b/website/src/playground/workers/romeWorker.ts @@ -193,7 +193,7 @@ self.addEventListener("message", async (e) => { const printer = new DiagnosticPrinter(path.path, code); for (const diag of diagnosticsResult.diagnostics) { - printer.print(diag); + printer.print_verbose(diag); } const printed = workspace.formatFile({ diff --git a/xtask/bench/src/features/parser.rs b/xtask/bench/src/features/parser.rs index aefc4d6c354..c285b855aa7 100644 --- a/xtask/bench/src/features/parser.rs +++ b/xtask/bench/src/features/parser.rs @@ -106,7 +106,7 @@ impl Display for ParseMeasurement { .with_file_source_code(self.code.clone()); rome_diagnostics::console::fmt::Formatter::new(&mut Termcolor(&mut buffer)) .write_markup(markup! { - {PrintDiagnostic(&error)} + {PrintDiagnostic::verbose(&error)} }) .unwrap(); } diff --git a/xtask/coverage/src/runner.rs b/xtask/coverage/src/runner.rs index 019db627b1a..a4aa3bb8d77 100644 --- a/xtask/coverage/src/runner.rs +++ b/xtask/coverage/src/runner.rs @@ -150,7 +150,7 @@ impl TestCaseFiles { pub(crate) fn emit_errors(&self, errors: &[Error], buffer: &mut Buffer) { for error in errors { if let Err(err) = Formatter::new(&mut Termcolor(&mut *buffer)).write_markup(markup! { - {PrintDiagnostic(error)} + {PrintDiagnostic::verbose(error)} }) { eprintln!("Failed to print diagnostic: {}", err); } diff --git a/xtask/lintdoc/src/main.rs b/xtask/lintdoc/src/main.rs index 0153feffe6f..c22ab68a42b 100644 --- a/xtask/lintdoc/src/main.rs +++ b/xtask/lintdoc/src/main.rs @@ -466,7 +466,7 @@ fn assert_lint( let mut write_diagnostic = |code: &str, diag: rome_diagnostics::Error| { let category = diag.category().map_or("", |code| code.name()); Formatter::new(&mut write).write_markup(markup! { - {PrintDiagnostic(&diag)} + {PrintDiagnostic::verbose(&diag)} })?; all_diagnostics.push(diag); @@ -479,7 +479,7 @@ fn assert_lint( console.print( rome_console::LogLevel::Error, markup! { - {PrintDiagnostic(diag)} + {PrintDiagnostic::verbose(diag)} }, ); } @@ -497,7 +497,7 @@ fn assert_lint( console.print( rome_console::LogLevel::Error, markup! { - {PrintDiagnostic(diag)} + {PrintDiagnostic::verbose(diag)} }, ); }