#编译器错误 #rustc #错误 #编译器 #错误信息 #格式 #警告

codemap2-diagnostic

codemap-diagnostic 库的维护分支。用于显示编译器错误信息的库,从 rustc 中提取

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2023年5月4日

#617命令行界面

28 每月下载量

MIT/Apache

86KB
1.5K SLoC

CodeMap2 Diagnostic

文档

Rust 库,用于格式化编译器错误信息,从 rustc 中提取并基于 codemap crate 中的类型构建。

screenshot

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确表示,否则根据 Apache-2.0 许可证定义,你提交给工作的任何贡献都将双重许可如上所述,不附加任何额外条款或条件。


lib.rs:

用于格式化编译器错误信息的库,从 rustc 中提取并基于 codemap crate 中的类型构建。

示例

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]);
}

依赖

~0.2–8.5MB
~48K SLoC