mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-11-03 21:24:29 +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));
 | 
						|
}
 |