20 个稳定版本

2.0.0 2024年7月8日
1.12.0 2024年5月13日
1.11.0 2024年3月30日
1.10.0 2023年10月20日
1.6.1 2022年11月30日

#568 in 编程语言

Download history 32/week @ 2024-05-03 194/week @ 2024-05-10 73/week @ 2024-05-17 46/week @ 2024-05-24 42/week @ 2024-05-31 35/week @ 2024-06-07 50/week @ 2024-06-14 47/week @ 2024-06-21 18/week @ 2024-06-28 121/week @ 2024-07-05 42/week @ 2024-07-12 41/week @ 2024-07-19 43/week @ 2024-07-26 28/week @ 2024-08-02 29/week @ 2024-08-09 12/week @ 2024-08-16

119 每月下载量
17 个crate中(直接使用10个)

GPL-3.0 许可证

180KB
3.5K SLoC

leo-errors

Crates.io Authors License

此目录包含Leo所有crate的错误处理代码。

错误处理受到Rust语言的一些启发

  • 每个错误都有自己的唯一代码。
  • 稳定版本发布后,错误代码将不再更改。
    • 这意味着过时的错误将被弃用。
  • 此外,我们还有一个唯一的标识符,以告知编译器找到错误的位置。

这些错误的目的在于,使得在文档或网络上搜索错误以获得帮助变得更加容易。

常见

此crate的常见部分包含一些子文件

  • Backtraced Error:包含创建Leo可回溯错误所需的信息。
  • Formatted Error:包含创建Leo格式化错误所需的信息。
  • :它包含通过领域特定语言(DSL)使创建错误变得容易的逻辑。它还通过一种自上而下的方法确定每个错误的错误代码。这意味着所有新错误都应该添加到文件的底部。您可以通过在函数名上方的一个装饰器中指定是否格式化或回溯错误。默认情况下,格式化的错误需要一个 Span 作为参数。主体接受您希望提供给函数的任何其他参数,消息以及可选的错误帮助信息。这些附加参数仅用于实现特性,以避免在其他 Leo 软件包中进行尽可能多的类型转换。
  • Span:它包含用于 Leo 的其他软件包(除 Input 软件包外,见下文)中的 span 对象。
  • 特性:它包含在错误中使用的通用特性,以简化错误定义。

错误类型

这些是这个软件包中创建的不同类型的错误。注意,如果您想了解更多关于错误的信息,请查看软件包文档或错误索引。这里的所有错误,除了SnarkVM 错误外,其错误代码都以 037 开头。

ASG

leo-asg 软件包的错误。其错误代码的范围为 3_000-3_999,并以前缀字符 ASG 开头。

AST

leo-ast 软件包的错误。其错误代码的范围为 2_000-2_999,并以前缀字符 AST 开头。

CLI

leo-lang 软件包的错误。其错误代码的范围为 7_000-7_999,并以前缀字符 CLI 开头。

编译器

leo-compiler 软件包的错误。其错误代码的范围为 6_000-6_999,并以前缀字符 CMP 开头。

导入

leo-imports 软件包的错误。其错误代码的范围为 4_000-4_999,并以前缀字符 IMP 开头。

循环展开

leo-passes 软件包中循环展开的错误。其错误代码的范围为 9_000-9_999,并以前缀字符 LUN 开头。

leo-package 软件包的错误。其错误代码的范围为 5_000-5_999,并以前缀字符 PAK 开头。

解析器

leo-parser 软件包的错误。其错误代码的范围为 0-999,并以前缀字符 PAR 开头。

SnarkVM

在某些情况下从 SnarkVM 泡泡到 Leo 的错误。目前,它们有一个退出代码为 1。当 SnarkVM 实现更好的错误代码和消息时,我们可以将它们冒泡出来。

工具

utils 软件包中依赖项检索相关的错误。其错误代码的范围为 10_000-10_999,并以前缀字符 DEP 开头。

依赖关系

~7–19MB
~287K SLoC