10个版本 (5个破坏性更新)

0.6.1 2023年1月31日
0.6.0 2023年1月14日
0.5.1 2023年1月8日
0.4.2 2023年1月1日
0.1.0 2022年12月25日

#385 in 编程语言


用于 ara_parser

MIT/Apache

39KB
497 代码行

Ara Reporting

Actions Status Crates.io Docs

Ara编程语言的报告库 📃

内部,Ara报告使用codespan-reporting库来构建代码中发现的问题报告。

注意 如果您计划向Ara报告添加更多功能,请考虑如果可能的话将其添加到codespan

用法

ara_reporting添加到您的Cargo.toml中,您就可以开始了!

[dependencies]
ara_reporting = "0.6.1"

示例

use ara_reporting::annotation::Annotation;
use ara_reporting::builder::CharSet;
use ara_reporting::builder::ColorChoice;
use ara_reporting::builder::ReportBuilder;
use ara_reporting::error::Error;
use ara_reporting::issue::Issue;
use ara_reporting::Report;
use ara_reporting::ReportFooter;
use ara_source::source::Source;
use ara_source::source::SourceKind;
use ara_source::SourceMap;

fn main() -> Result<(), Error> {
    let origin = "example.ara";
    let code = r#"
$b = match $a {
    1 => 2,
    2 => 3,
    default => "string",
};
"#;

    let map = SourceMap::new(vec![Source::new(SourceKind::Script, origin, code)]);

    let report = Report::new()
        .with_issue(
            Issue::error("E0417", "`match` arms have incompatible types")
                .with_source(origin, 6, 67)
                .with_annotation(
                    Annotation::new(origin, 26, 27).with_message("this is found to be of type `{int}`"),
                )
                .with_annotation(
                    Annotation::new(origin, 38, 39).with_message("this is found to be of type `{int}`"),
                )
                .with_annotation(
                    Annotation::new(origin, 56, 64).with_message("expected `{int}`, found `{string}`"),
                )
                .with_note("for more information about this error, try `ara --explain E0417`"),
        )
        .with_footer(
            ReportFooter::new("this is a report footer message")
                .with_note("this is a note message"),
        );

    let builder = ReportBuilder::new(&map)
        .with_colors(ColorChoice::Always)
        .with_charset(CharSet::Unicode);

    builder.print(&report)
}

更多示例请参阅示例目录

许可

许可协议为以下之一:

任选其一。

贡献

除非您明确声明,否则您有意提交的任何贡献,按照Apache-2.0许可证定义,应双重许可如上所述,不附加任何额外条款或条件。

鸣谢

依赖项

~1.3–9.5MB
~81K SLoC