diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 0815cdcf..25e9508b 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -219,10 +219,10 @@ impl Renderer { let mut message_iter = group.elements.iter().enumerate().peekable(); if let Some(title) = &group.title { let peek = message_iter.peek().map(|(_, s)| s).copied(); - let title_style = if g == 0 { - TitleStyle::MainHeader - } else { + let title_style = if title.allows_styling { TitleStyle::Header + } else { + TitleStyle::MainHeader }; let buffer_msg_line_offset = buffer.num_lines(); self.render_title( diff --git a/tests/color/main.rs b/tests/color/main.rs index fe088acf..4faaf28d 100644 --- a/tests/color/main.rs +++ b/tests/color/main.rs @@ -12,6 +12,7 @@ mod fold_trailing; mod issue_9; mod multiline_removal_suggestion; mod multiple_annotations; +mod primary_title_second_group; mod simple; mod strip_line; mod strip_line_char; diff --git a/tests/color/primary_title_second_group.rs b/tests/color/primary_title_second_group.rs new file mode 100644 index 00000000..dfab58d0 --- /dev/null +++ b/tests/color/primary_title_second_group.rs @@ -0,0 +1,25 @@ +use annotate_snippets::{AnnotationKind, Group, Level, Renderer, Snippet}; + +use snapbox::{assert_data_eq, file}; + +#[test] +fn case() { + let report = + &[ + Group::with_title(Level::ERROR.primary_title("mismatched types").id("E0308")).element( + Snippet::source(" slices: vec![\"A\",") + .line_start(13) + .path("src/multislice.rs") + .annotation(AnnotationKind::Primary.span(21..24).label( + "expected struct `annotate_snippets::snippet::Slice`, found reference", + )), + ), + Group::with_title(Level::NOTE.primary_title( + "expected type: `snippet::Annotation`\n found type: `__&__snippet::Annotation`", + )), + ]; + + let expected = file!["primary_title_second_group.term.svg"]; + let renderer = Renderer::styled(); + assert_data_eq!(renderer.render(report), expected); +} diff --git a/tests/color/primary_title_second_group.term.svg b/tests/color/primary_title_second_group.term.svg new file mode 100644 index 00000000..56035a31 --- /dev/null +++ b/tests/color/primary_title_second_group.term.svg @@ -0,0 +1,41 @@ + + + + + + + error[E0308]: mismatched types + + --> src/multislice.rs:13:22 + + | + + 13 | slices: vec!["A", + + | ^^^ expected struct `annotate_snippets::snippet::Slice`, found reference + + | + + note: expected type: `snippet::Annotation` + + found type: `__&__snippet::Annotation` + + + +