Highlight clarifying information in "expected/found" error
When the expected and found types have the same textual representation, we add clarifying in parentheses. We now visually highlight it in the output. Detect a corner case where the clarifying information would be the same for both types and skip it, as it doesn't add anything useful.
This commit is contained in:
parent
7f36543a48
commit
c75e601543
6 changed files with 160 additions and 27 deletions
|
@ -641,7 +641,14 @@ impl<'a, G: EmissionGuarantee> Diag<'a, G> {
|
|||
found_label: &dyn fmt::Display,
|
||||
found: DiagStyledString,
|
||||
) -> &mut Self {
|
||||
self.note_expected_found_extra(expected_label, expected, found_label, found, &"", &"")
|
||||
self.note_expected_found_extra(
|
||||
expected_label,
|
||||
expected,
|
||||
found_label,
|
||||
found,
|
||||
DiagStyledString::normal(""),
|
||||
DiagStyledString::normal(""),
|
||||
)
|
||||
}
|
||||
|
||||
#[rustc_lint_diagnostics]
|
||||
|
@ -651,8 +658,8 @@ impl<'a, G: EmissionGuarantee> Diag<'a, G> {
|
|||
expected: DiagStyledString,
|
||||
found_label: &dyn fmt::Display,
|
||||
found: DiagStyledString,
|
||||
expected_extra: &dyn fmt::Display,
|
||||
found_extra: &dyn fmt::Display,
|
||||
expected_extra: DiagStyledString,
|
||||
found_extra: DiagStyledString,
|
||||
) -> &mut Self {
|
||||
let expected_label = expected_label.to_string();
|
||||
let expected_label = if expected_label.is_empty() {
|
||||
|
@ -677,10 +684,13 @@ impl<'a, G: EmissionGuarantee> Diag<'a, G> {
|
|||
expected_label
|
||||
))];
|
||||
msg.extend(expected.0);
|
||||
msg.push(StringPart::normal(format!("`{expected_extra}\n")));
|
||||
msg.push(StringPart::normal(format!("`")));
|
||||
msg.extend(expected_extra.0);
|
||||
msg.push(StringPart::normal(format!("\n")));
|
||||
msg.push(StringPart::normal(format!("{}{} `", " ".repeat(found_padding), found_label)));
|
||||
msg.extend(found.0);
|
||||
msg.push(StringPart::normal(format!("`{found_extra}")));
|
||||
msg.push(StringPart::normal(format!("`")));
|
||||
msg.extend(found_extra.0);
|
||||
|
||||
// For now, just attach these as notes.
|
||||
self.highlighted_note(msg);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue