Crate codemap2_diagnostic
source ·Expand description
A library for formatting compiler error messages, extracted from rustc and built on the types from the codemap crate.
Example
extern crate codemap2;
extern crate codemap2_diagnostic;
use codemap2::{CodeMap, DefaultFileData};
use codemap2_diagnostic::{ Level, SpanLabel, SpanStyle, Diagnostic, ColorConfig, Emitter };
fn main() {
let code = "foo + bar";
let mut codemap = CodeMap::new();
let file_span = codemap.add_file(DefaultFileData::new("test.rs".to_owned(), code.to_owned())).span;
let name_span = file_span.subspan(0, 3);
let label = SpanLabel {
span: name_span,
style: SpanStyle::Primary,
label: Some("undefined variable".to_owned())
};
let d = Diagnostic {
level: Level::Error,
message: "cannot find value `foo` in this scope".to_owned(),
code: Some("C000".to_owned()),
spans: vec![label]
};
let mut emitter = Emitter::stderr(ColorConfig::Always, Some(&codemap));
emitter.emit(&[d]);
}Re-exports
pub extern crate codemap2;
Structs
- A wrapper around a
Box<str>that meets the requirements forFileData::SourceandFileData::Name. This type is used inDefaultFileDatabecause - A data structure recording source code files for position lookup.
- A default implementation of
FileDatathat contains - A diagnostic message.
- Formats and prints diagnostic messages.
- A
CodeMap’s record of a source file. - A line and column.
- A file, and a line and column within it.
- A small,
Copy, value representing a position in aCodeMap’s file. - A range of text within a CodeMap.
- A labeled region of the code related to a Diagnostic.
- A file, and a line and column range within it.
- Associate a Span with a value of arbitrary type (e.g. an AST node).
Enums
- Settings for terminal styling.
- A level representing the severity of a Diagnostic.
- Underline style for a SpanLabel.
Traits
- A trait that represents file data