1extern crate codemap_diagnostic;
2extern crate codemap;
3use codemap::{ CodeMap };
4use codemap_diagnostic::{ Level, SpanLabel, SpanStyle, Diagnostic, ColorConfig, Emitter };
5
6
7fn main() {
8 let file = r#"
9pub fn look_up_pos(&self, pos: Pos) -> Loc {
10 let file = self.find_file(pos);
11 let position = file.find_line_col(pos);
12 Loc { file, position }
13}
14"#;
15
16 let mut codemap = CodeMap::new();
17 let file_span = codemap.add_file("test.rs".to_owned(), file.to_owned()).span;
18 let fn_span = file_span.subspan(8, 19);
19 let ret_span = file_span.subspan(40, 43);
20 let var_span = file_span.subspan(54, 58);
21
22 let sl = SpanLabel { span: fn_span, style: SpanStyle::Primary, label:Some("function name".to_owned()) };
23 let sl2 = SpanLabel { span: ret_span, style: SpanStyle::Primary, label:Some("returns".to_owned()) };
24 let d1 = Diagnostic { level:Level::Error, message:"Test error".to_owned(), code:Some("C000".to_owned()), spans: vec![sl, sl2] };
25
26 let sl3 = SpanLabel { span: var_span, style: SpanStyle::Primary, label:Some("variable".to_owned()) };
27 let d2 = Diagnostic { level:Level::Warning, message:"Test warning".to_owned(), code:Some("W000".to_owned()), spans: vec![sl3] };
28
29 let d3 = Diagnostic { level: Level::Help, message:"Help message".to_owned(), code: None, spans: vec![] };
30
31 let mut emitter = Emitter::stderr(ColorConfig::Auto, Some(&codemap));
32 emitter.emit(&[d1, d2, d3]);
33}