mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-07 21:25:08 +00:00

This merely adds the crate to our repository. Some cosmetic changes are made to make it work in our repo and follow our conventions, such as changing the name to `ruff_annotate_snippets`. We retain the original license information. We do drop some things, such as benchmarks, but keep tests and examples.
44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
use ruff_annotate_snippets::{Level, Renderer, Snippet};
|
|
|
|
fn main() {
|
|
let source = r#") -> Option<String> {
|
|
for ann in annotations {
|
|
match (ann.range.0, ann.range.1) {
|
|
(None, None) => continue,
|
|
(Some(start), Some(end)) if start > end_index => continue,
|
|
(Some(start), Some(end)) if start >= start_index => {
|
|
let label = if let Some(ref label) = ann.label {
|
|
format!(" {}", label)
|
|
} else {
|
|
String::from("")
|
|
};
|
|
|
|
return Some(format!(
|
|
"{}{}{}",
|
|
" ".repeat(start - start_index),
|
|
"^".repeat(end - start),
|
|
label
|
|
));
|
|
}
|
|
_ => continue,
|
|
}
|
|
}"#;
|
|
let message = Level::Error.title("mismatched types").id("E0308").snippet(
|
|
Snippet::source(source)
|
|
.line_start(51)
|
|
.origin("src/format.rs")
|
|
.annotation(
|
|
Level::Warning
|
|
.span(5..19)
|
|
.label("expected `Option<String>` because of return type"),
|
|
)
|
|
.annotation(
|
|
Level::Error
|
|
.span(26..724)
|
|
.label("expected enum `std::option::Option`"),
|
|
),
|
|
);
|
|
|
|
let renderer = Renderer::styled();
|
|
anstream::println!("{}", renderer.render(message));
|
|
}
|