Skip to content

Commit 3529df9

Browse files
committed
chore(deps): update rust crate annotate-snippets to 0.12.1
1 parent 7c4e67c commit 3529df9

28 files changed

+157
-205
lines changed

Cargo.lock

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ homepage = "https://github.com/rust-lang/cargo"
1818
repository = "https://github.com/rust-lang/cargo"
1919

2020
[workspace.dependencies]
21-
annotate-snippets = "0.11.5"
21+
annotate-snippets = { version = "0.12.1", features = ["simd"] }
2222
anstream = "0.6.20"
2323
anstyle = "1.0.11"
2424
anyhow = "1.0.98"

src/cargo/core/shell.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::fmt;
22
use std::io::IsTerminal;
33
use std::io::prelude::*;
44

5-
use annotate_snippets::{Message, Renderer};
5+
use annotate_snippets::{Group, Renderer};
66
use anstream::AutoStream;
77
use anstyle::Style;
88

@@ -406,16 +406,16 @@ impl Shell {
406406
Ok(())
407407
}
408408

409-
/// Prints the passed in [Message] to stderr
410-
pub fn print_message(&mut self, message: Message<'_>) -> std::io::Result<()> {
409+
/// Prints the passed in &[[`Group`]] to stderr
410+
pub fn print_report(&mut self, groups: &[Group<'_>]) -> std::io::Result<()> {
411411
let term_width = self
412412
.err_width()
413413
.diagnostic_terminal_width()
414414
.unwrap_or(annotate_snippets::renderer::DEFAULT_TERM_WIDTH);
415415
writeln!(
416416
self.err(),
417417
"{}",
418-
Renderer::styled().term_width(term_width).render(message)
418+
Renderer::styled().term_width(term_width).render(groups)
419419
)
420420
}
421421
}

src/cargo/util/lints.rs

Lines changed: 84 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::core::{Edition, Feature, Features, Manifest, Package};
22
use crate::{CargoResult, GlobalContext};
3-
use annotate_snippets::{Level, Snippet};
3+
use annotate_snippets::{AnnotationKind, Group, Level, Snippet};
44
use cargo_util_schemas::manifest::{TomlLintLevel, TomlToolLints};
55
use pathdiff::diff_paths;
66
use std::fmt::Display;
@@ -133,18 +133,16 @@ fn verify_feature_enabled(
133133
dash_feature_name
134134
);
135135

136-
let message = if let Some(span) =
137-
get_span(manifest.document(), &["lints", "cargo", lint_name], false)
138-
{
139-
Level::Error
140-
.title(&title)
141-
.snippet(
142-
Snippet::source(manifest.contents())
143-
.origin(&manifest_path)
144-
.annotation(Level::Error.span(span).label(&label))
145-
.fold(true),
146-
)
147-
.footer(Level::Help.title(&help))
136+
let mut groups = Vec::new();
137+
let mut group = Group::with_title(Level::ERROR.primary_title(title));
138+
139+
if let Some(span) = get_span(manifest.document(), &["lints", "cargo", lint_name], false) {
140+
group = group.element(
141+
Snippet::source(manifest.contents())
142+
.path(manifest_path)
143+
.annotation(AnnotationKind::Primary.span(span).label(label)),
144+
);
145+
group = group.element(Level::HELP.message(help));
148146
} else {
149147
let lint_span = get_span(
150148
ws_document,
@@ -154,37 +152,37 @@ fn verify_feature_enabled(
154152
.unwrap_or_else(|| {
155153
panic!("could not find `cargo::{lint_name}` in `[lints]`, or `[workspace.lints]` ")
156154
});
155+
group = group.element(
156+
Snippet::source(ws_contents)
157+
.path(ws_path)
158+
.annotation(AnnotationKind::Primary.span(lint_span).label(&label)),
159+
);
157160

158-
let inherited_note = if let (Some(inherit_span_key), Some(inherit_span_value)) = (
161+
if let (Some(inherit_span_key), Some(inherit_span_value)) = (
159162
get_span(manifest.document(), &["lints", "workspace"], false),
160163
get_span(manifest.document(), &["lints", "workspace"], true),
161164
) {
162-
Level::Note.title(&second_title).snippet(
165+
let mut temp_group = Group::with_title(Level::NOTE.secondary_title(second_title));
166+
std::mem::swap(&mut group, &mut temp_group);
167+
groups.push(temp_group);
168+
169+
group = group.element(
163170
Snippet::source(manifest.contents())
164-
.origin(&manifest_path)
171+
.path(manifest_path)
165172
.annotation(
166-
Level::Note.span(inherit_span_key.start..inherit_span_value.end),
167-
)
168-
.fold(true),
169-
)
173+
AnnotationKind::Context
174+
.span(inherit_span_key.start..inherit_span_value.end),
175+
),
176+
);
170177
} else {
171-
Level::Note.title(&second_title)
178+
group = group.element(Level::NOTE.message(second_title));
172179
};
173180

174-
Level::Error
175-
.title(&title)
176-
.snippet(
177-
Snippet::source(ws_contents)
178-
.origin(&ws_path)
179-
.annotation(Level::Error.span(lint_span).label(&label))
180-
.fold(true),
181-
)
182-
.footer(inherited_note)
183-
.footer(Level::Help.title(&help))
181+
group = group.element(Level::HELP.message(help));
184182
};
185-
183+
groups.push(group);
186184
*error_count += 1;
187-
gctx.shell().print_message(message)?;
185+
gctx.shell().print_report(&groups)?;
188186
}
189187
Ok(())
190188
}
@@ -337,12 +335,12 @@ impl LintLevel {
337335
self == &LintLevel::Forbid || self == &LintLevel::Deny
338336
}
339337

340-
pub fn to_diagnostic_level(self) -> Level {
338+
pub fn to_diagnostic_level(self) -> Level<'static> {
341339
match self {
342340
LintLevel::Allow => unreachable!("allow does not map to a diagnostic level"),
343-
LintLevel::Warn => Level::Warning,
344-
LintLevel::Deny => Level::Error,
345-
LintLevel::Forbid => Level::Error,
341+
LintLevel::Warn => Level::WARNING,
342+
LintLevel::Deny => Level::ERROR,
343+
LintLevel::Forbid => Level::ERROR,
346344
}
347345
}
348346
}
@@ -457,17 +455,15 @@ pub fn check_im_a_teapot(
457455

458456
let key_span = get_span(manifest.document(), &["package", "im-a-teapot"], false).unwrap();
459457
let value_span = get_span(manifest.document(), &["package", "im-a-teapot"], true).unwrap();
460-
let message = level
461-
.title(IM_A_TEAPOT.desc)
462-
.snippet(
458+
let message = &[Group::with_title(level.primary_title(IM_A_TEAPOT.desc))
459+
.element(
463460
Snippet::source(manifest.contents())
464-
.origin(&manifest_path)
465-
.annotation(level.span(key_span.start..value_span.end))
466-
.fold(true),
461+
.path(&manifest_path)
462+
.annotation(AnnotationKind::Primary.span(key_span.start..value_span.end)),
467463
)
468-
.footer(Level::Note.title(&emitted_reason));
464+
.element(Level::NOTE.message(&emitted_reason))];
469465

470-
gctx.shell().print_message(message)?;
466+
gctx.shell().print_report(message)?;
471467
}
472468
Ok(())
473469
}
@@ -535,21 +531,23 @@ fn output_unknown_lints(
535531
let help =
536532
matching.map(|(name, kind)| format!("there is a {kind} with a similar name: `{name}`"));
537533

538-
let mut footers = Vec::new();
539-
if emitted_source.is_none() {
540-
emitted_source = Some(UNKNOWN_LINTS.emitted_source(lint_level, reason));
541-
footers.push(Level::Note.title(emitted_source.as_ref().unwrap()));
542-
}
534+
let mut groups = Vec::new();
535+
let mut group = Group::with_title(level.clone().primary_title(title));
543536

544-
let mut message = if let Some(span) =
545-
get_span(manifest.document(), &["lints", "cargo", lint_name], false)
546-
{
547-
level.title(&title).snippet(
537+
if let Some(span) = get_span(manifest.document(), &["lints", "cargo", lint_name], false) {
538+
group = group.element(
548539
Snippet::source(manifest.contents())
549-
.origin(&manifest_path)
550-
.annotation(Level::Error.span(span))
551-
.fold(true),
552-
)
540+
.path(manifest_path)
541+
.annotation(AnnotationKind::Primary.span(span)),
542+
);
543+
if emitted_source.is_none() {
544+
emitted_source = Some(UNKNOWN_LINTS.emitted_source(lint_level, reason));
545+
group = group.element(Level::NOTE.message(emitted_source.as_ref().unwrap()));
546+
}
547+
548+
if let Some(help) = help.as_ref() {
549+
group = group.element(Level::HELP.message(help));
550+
}
553551
} else {
554552
let lint_span = get_span(
555553
ws_document,
@@ -560,39 +558,43 @@ fn output_unknown_lints(
560558
panic!("could not find `cargo::{lint_name}` in `[lints]`, or `[workspace.lints]` ")
561559
});
562560

563-
let inherited_note = if let (Some(inherit_span_key), Some(inherit_span_value)) = (
561+
group = group.element(
562+
Snippet::source(ws_contents)
563+
.path(ws_path)
564+
.annotation(AnnotationKind::Primary.span(lint_span)),
565+
);
566+
if emitted_source.is_none() {
567+
emitted_source = Some(UNKNOWN_LINTS.emitted_source(lint_level, reason));
568+
group = group.element(Level::NOTE.message(emitted_source.as_ref().unwrap()));
569+
}
570+
571+
if let Some(help) = help.as_ref() {
572+
group = group.element(Level::HELP.message(help));
573+
}
574+
575+
if let (Some(inherit_span_key), Some(inherit_span_value)) = (
564576
get_span(manifest.document(), &["lints", "workspace"], false),
565577
get_span(manifest.document(), &["lints", "workspace"], true),
566578
) {
567-
Level::Note.title(&second_title).snippet(
579+
let mut temp_group = Group::with_title(Level::NOTE.secondary_title(second_title));
580+
std::mem::swap(&mut group, &mut temp_group);
581+
groups.push(temp_group);
582+
583+
group = group.element(
568584
Snippet::source(manifest.contents())
569-
.origin(&manifest_path)
585+
.path(manifest_path)
570586
.annotation(
571-
Level::Note.span(inherit_span_key.start..inherit_span_value.end),
572-
)
573-
.fold(true),
574-
)
587+
AnnotationKind::Context
588+
.span(inherit_span_key.start..inherit_span_value.end),
589+
),
590+
);
575591
} else {
576-
Level::Note.title(&second_title)
592+
group = group.element(Level::NOTE.message(second_title));
577593
};
578-
footers.push(inherited_note);
579-
580-
level.title(&title).snippet(
581-
Snippet::source(ws_contents)
582-
.origin(&ws_path)
583-
.annotation(Level::Error.span(lint_span))
584-
.fold(true),
585-
)
586594
};
587595

588-
if let Some(help) = help.as_ref() {
589-
footers.push(Level::Help.title(help));
590-
}
591-
for footer in footers {
592-
message = message.footer(footer);
593-
}
594-
595-
gctx.shell().print_message(message)?;
596+
groups.push(group);
597+
gctx.shell().print_report(&groups)?;
596598
}
597599

598600
Ok(())

src/cargo/util/toml/mod.rs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use annotate_snippets::{Level, Snippet};
1+
use annotate_snippets::{AnnotationKind, Group, Level, Snippet};
22
use std::borrow::Cow;
33
use std::collections::{BTreeMap, BTreeSet, HashMap};
44
use std::ffi::OsStr;
@@ -1879,12 +1879,11 @@ fn missing_dep_diagnostic(
18791879
"`{}` is an unused optional dependency since no feature enables it",
18801880
&dep_name
18811881
);
1882-
let message = Level::Error.title(&title);
1883-
let snippet = Snippet::source(&contents)
1884-
.origin(&manifest_path)
1885-
.fold(true)
1886-
.annotation(Level::Error.span(feature_value_span.start..feature_value_span.end));
1887-
let message = if missing_dep.weak_optional {
1882+
let group = Group::with_title(Level::ERROR.primary_title(&title));
1883+
let snippet = Snippet::source(contents)
1884+
.path(manifest_path)
1885+
.annotation(AnnotationKind::Primary.span(feature_value_span.start..feature_value_span.end));
1886+
let group = if missing_dep.weak_optional {
18881887
let mut orig_deps = vec![
18891888
(
18901889
orig_toml.dependencies.as_ref(),
@@ -1920,17 +1919,19 @@ fn missing_dep_diagnostic(
19201919
.collect::<Vec<_>>();
19211920
let dep_span = get_span(&document, &toml_path, false).unwrap();
19221921

1923-
message
1924-
.snippet(snippet.annotation(Level::Warning.span(dep_span).label(&info_label)))
1925-
.footer(Level::Help.title(&help))
1922+
group
1923+
.element(
1924+
snippet.annotation(AnnotationKind::Context.span(dep_span).label(info_label)),
1925+
)
1926+
.element(Level::HELP.message(help))
19261927
} else {
1927-
message.snippet(snippet)
1928+
group.element(snippet)
19281929
}
19291930
} else {
1930-
message.snippet(snippet)
1931+
group.element(snippet)
19311932
};
19321933

1933-
if let Err(err) = gctx.shell().print_message(message) {
1934+
if let Err(err) = gctx.shell().print_report(&[group]) {
19341935
return Err(err.into());
19351936
}
19361937
Err(AlreadyPrintedError::new(anyhow!("").into()).into())
@@ -2792,13 +2793,13 @@ fn emit_diagnostic(
27922793
.unwrap_or_else(|| manifest_file.to_path_buf())
27932794
.display()
27942795
.to_string();
2795-
let message = Level::Error.title(e.message()).snippet(
2796+
let group = Group::with_title(Level::ERROR.primary_title(e.message())).element(
27962797
Snippet::source(contents)
2797-
.origin(&manifest_path)
2798-
.fold(true)
2799-
.annotation(Level::Error.span(span)),
2798+
.path(manifest_path)
2799+
.annotation(AnnotationKind::Primary.span(span)),
28002800
);
2801-
if let Err(err) = gctx.shell().print_message(message) {
2801+
2802+
if let Err(err) = gctx.shell().print_report(&[group]) {
28022803
return err.into();
28032804
}
28042805
return AlreadyPrintedError::new(e.into()).into();

tests/testsuite/alt_registry.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -749,13 +749,12 @@ fn bad_registry_name() {
749749
.with_status(101)
750750
.with_stderr_data(str![[r#"
751751
[ERROR] invalid character ` ` in registry name: `bad name`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters)
752-
753-
752+
753+
754754
--> Cargo.toml:8:17
755755
|
756756
8 | [dependencies.bar]
757757
| ^^^^^^^^^^^^^^^^^^
758-
|
759758
760759
"#]])
761760
.run();
@@ -1976,13 +1975,12 @@ fn empty_dependency_registry() {
19761975
.with_status(101)
19771976
.with_stderr_data(str![[r#"
19781977
[ERROR] registry name cannot be empty
1979-
1980-
1978+
1979+
19811980
--> Cargo.toml:8:23
19821981
|
19831982
8 | bar = { version = "0.1.0", registry = "" }
19841983
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1985-
|
19861984
19871985
"#]])
19881986
.run();

0 commit comments

Comments
 (0)