报错与诊断 - inline-function/Sublimation GitHub Wiki

报错与诊断(v2.0 增强)

编译器诊断分四级:错误(E-,阻断编译)、警告(W-,不阻断但提示风险)、提示(H-,改进建议)、补充(D-,类型推导结果,默认不输出)。现共 53+ 个诊断码。

源码片段上下文

每条带位置的诊断,check / compile 输出时自动附带源码行 + 行号 + 上箭头,一眼定位:

[错误][1:16] E-TYPE-MISMATCH: 函数 f 体类型 Str 与声明 Nat 不符
  1 | fun f(): Nat = "s"
    |                ^

explain <CODE> 子命令

不记得某个诊断码是什么意思?explain 直接给出含义与修复建议(不区分大小写):

sublimationc explain W-UNUSED
# => W-UNUSED — 变量/参数声明后从未使用(_ 前缀可抑制):删除或加 _ 前缀。

常用诊断码:

码 含义
E-TYPE-MISMATCH 表达式类型与预期不符(函数返回类型/实参/标注)
E-UNBOUND-NAME 未定义名字(拼写、作用域、模块前缀)
E-ARITY / E-NAMED-ARG 实参个数 / 命名实参冲突
E-MISSING-RETURN 块函数未在所有路径 return(Kotlin 语义)
E-NON-SEALED-MATCH 作为表达式的 when 未密封(穷尽性)
W-NON-EXHAUSTIVE when 对枚举/构造子未穷尽
E-PRE/POST-UNPROVEN 前件/后件未证明
E-NON-STRUCTURAL-REC 纯函数递归停止性存疑
E-IMMUT-ASSIGN / E-ASSIGN-TARGET 不可变赋值 / 赋值目标非变量
E-NO-INSTANCE / E-IMPL-INCOMPLETE 类型类实例缺失 / impl 不完整
E-IMPURE-CALL 纯上下文调用非纯函数
E-NEED-ASYNC 异步调用需在 @async 上下文(readFile 等)
E-TUPLE-VARARG @tuple 形参只收元组字面量
W-UNUSED 变量/参数声明后从未使用(加 _ 前缀可抑制)
W-UNREACHABLE / W-DIV-ZERO 不可达代码 / 除以零
H-ROOT-BUILTIN / H-FIELD-SHADOW / H-PARAM-REF 改进提示
E-DEEP-SATURATION 命题推理饱和深度超限

完整表见 explain 或源码 src/main/kotlin/Main.kt 的 EXPLAIN。实现见 doc/形式化规范.md、std/工程规范.md(内部文档)。

⚠️ **GitHub.com Fallback** ⚠️