Skip to content

Commit 9ea63cd

Browse files
authored
Merge pull request #261 from Muscraft/primary-first
fix!: Make the first snippet or origin primary
2 parents b6ccd6f + ffa7a88 commit 9ea63cd

File tree

4 files changed

+106
-25
lines changed

4 files changed

+106
-25
lines changed

src/renderer/mod.rs

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -243,33 +243,11 @@ impl Renderer {
243243
.elements
244244
.iter()
245245
.find_map(|s| match &s {
246-
Element::Cause(cause) => {
247-
if cause.markers.iter().any(|m| m.kind.is_primary()) {
248-
Some(cause.path.as_ref())
249-
} else {
250-
None
251-
}
252-
}
253-
Element::Origin(origin) => {
254-
if origin.primary {
255-
Some(Some(&origin.path))
256-
} else {
257-
None
258-
}
259-
}
246+
Element::Cause(cause) => Some(cause.path.as_ref()),
247+
Element::Origin(origin) => Some(Some(&origin.path)),
260248
_ => None,
261249
})
262-
.unwrap_or(
263-
group
264-
.elements
265-
.iter()
266-
.find_map(|s| match &s {
267-
Element::Cause(cause) => Some(cause.path.as_ref()),
268-
Element::Origin(origin) => Some(Some(&origin.path)),
269-
_ => None,
270-
})
271-
.unwrap_or_default(),
272-
);
250+
.unwrap_or_default();
273251
if og_primary_path.is_none() && primary_path.is_some() {
274252
og_primary_path = primary_path;
275253
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
use annotate_snippets::{AnnotationKind, Group, Level, Renderer, Snippet};
2+
3+
use snapbox::{assert_data_eq, file};
4+
5+
#[test]
6+
fn case() {
7+
let file_txt_source = r#"this is from a txt file"#;
8+
9+
let rust_source = r#"fn main() {
10+
let b: &[u8] = include_str!("file.txt");
11+
let s: &str = include_bytes!("file.txt");
12+
}"#;
13+
14+
let input = &[
15+
Group::with_title(Level::ERROR.title("mismatched types").id("E0308"))
16+
.element(
17+
Snippet::source(file_txt_source)
18+
.line_start(3)
19+
.path("$DIR/file.txt")
20+
.annotation(
21+
AnnotationKind::Context
22+
.span(0..23)
23+
.label("the macro expands to this string"),
24+
),
25+
)
26+
.element(
27+
Snippet::source(rust_source)
28+
.path("$DIR/mismatched-types.rs")
29+
.annotation(
30+
AnnotationKind::Context
31+
.span(23..28)
32+
.label("expected due to this"),
33+
)
34+
.annotation(
35+
AnnotationKind::Primary
36+
.span(31..55)
37+
.label("expected `&[u8]`, found `&str`"),
38+
),
39+
)
40+
.element(
41+
Level::NOTE
42+
.message("expected reference `&[u8]`\n found reference `&'static str`"),
43+
),
44+
];
45+
let expected = file!["first_snippet_is_primary.term.svg"];
46+
let renderer = Renderer::styled();
47+
assert_data_eq!(renderer.render(input), expected);
48+
}
Lines changed: 54 additions & 0 deletions
Loading

tests/color/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ mod ann_multiline;
44
mod ann_multiline2;
55
mod ann_removed_nl;
66
mod ensure_emoji_highlight_width;
7+
mod first_snippet_is_primary;
78
mod fold_ann_multiline;
89
mod fold_bad_origin_line;
910
mod fold_leading;

0 commit comments

Comments
 (0)