Crate codemap_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 codemap;
extern crate codemap_diagnostic;
use codemap::CodeMap;
use codemap_diagnostic::{ Level, SpanLabel, SpanStyle, Diagnostic, ColorConfig, Emitter };

fn main() {
  let code = "foo + bar";
  let mut codemap = CodeMap::new();
  let file_span = codemap.add_file("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]);
}

Structs§

  • A diagnostic message.
  • Formats and prints diagnostic messages.
  • A labeled region of the code related to a Diagnostic.

Enums§

  • Settings for terminal styling.
  • A level representing the severity of a Diagnostic.
  • Underline style for a SpanLabel.