From 8f9da368f78b0dcd55e701b30daea8b45102a491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sun, 18 Oct 2020 16:26:05 +0200 Subject: refactor(lint): show hint for lint errors (#8016) This commit adds formatting of optional "hint" that can be present in lint diagnostic. --- cli/lint.rs | 25 +++++++++++++++++++------ cli/tests/lint/expected_quiet.out | 2 ++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/cli/lint.rs b/cli/lint.rs index 882ec4414..a2a1252c0 100644 --- a/cli/lint.rs +++ b/cli/lint.rs @@ -222,6 +222,7 @@ impl LintReporter for PrettyLintReporter { &pretty_message, &source_lines, d.range.clone(), + d.hint.as_ref(), &fmt_errors::format_location(&JsStackFrame::from_location( Some(d.filename.clone()), Some(d.range.start.line as i64), @@ -256,6 +257,7 @@ pub fn format_diagnostic( message_line: &str, source_lines: &[&str], range: deno_lint::diagnostic::Range, + maybe_hint: Option<&String>, formatted_location: &str, ) -> String { let mut lines = vec![]; @@ -284,12 +286,23 @@ pub fn format_diagnostic( } } - format!( - "{}\n{}\n at {}", - message_line, - lines.join("\n"), - formatted_location - ) + if let Some(hint) = maybe_hint { + format!( + "{}\n{}\n at {}\n\n {} {}", + message_line, + lines.join("\n"), + formatted_location, + colors::gray("hint:"), + hint, + ) + } else { + format!( + "{}\n{}\n at {}", + message_line, + lines.join("\n"), + formatted_location + ) + } } #[derive(Serialize)] diff --git a/cli/tests/lint/expected_quiet.out b/cli/tests/lint/expected_quiet.out index 45a308344..21fd92be3 100644 --- a/cli/tests/lint/expected_quiet.out +++ b/cli/tests/lint/expected_quiet.out @@ -3,6 +3,8 @@ ^^^^^^^^^^^^^^^^^^^ at [WILDCARD]file1.js:1:0 + hint: [WILDCARD] + (no-empty) Empty block statement while (false) {} ^^ -- cgit v1.2.3