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

Structs

  • A wrapper around a Box<str> that meets the requirements for FileData::Source and FileData::Name. This type is used in DefaultFileData because
  • A data structure recording source code files for position lookup.
  • A default implementation of FileData that 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 a CodeMap’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