# MoonProof · 官方错误码一致性验证报告

> 用 MoonProof 的 `--errorcodes` 对 MoonBit 官方 `error_codes` 目录的全部 **286 个错误码**
> （每个含 `NNNN_error` 报错示例 + `NNNN_fixed` 修复示例，共 572 个独立小项目）做真实
> `moon check` 的结论。所有项目在一次性隔离工作区中编译，不污染源目录。
>
> 工具链：`moon 0.1.20260904` · 验证时间：2026-10-04

## 结论速览

| 指标 | 数量 | 占比 | 说明 |
|---|---|---|---|
| error 示例**仍触发**报错 | 210 / 286 | 73.4% | 与当前工具链一致 |
| error 示例**已脱节**（不再报错） | **76 / 286** | **26.6%** | 只产生 warning 或已通过，示例失效 |
| fixed 示例**编译通过** | 284 / 286 | 99.3% | 修复版大多有效 |
| fixed 示例**本身编译失败** | **2 / 286** | 0.7% | 官方"修复版"自己都编译不过 |

**核心发现：76 个脱节的 error 错误码全部集中在低段（错误码 ≤ 0092）**；错误码编号 01xx 及以上的 error 示例全部触发成功。即 MoonBit 早期（编号小的）报错场景已被工具链演进淘汰或合并，而官方文档仍保留这些"演示报错"示例，如今已不再报错。

## 脱节的 error 错误码（76 个，编号 ≤ 0092）

```
0092 0091 0090 0089 0088 0087 0086 0085 0084 0083 0082 0081 0080 0079 0078 0075 0074 0073
0072 0071 0070 0069 0068 0067 0066 0065 0064 0063 0062 0061 0060 0059 0057 0056 0054 0053
0052 0051 0050 0049 0046 0043 0042 0041 0039 0038 0037 0036 0035 0032 0031 0030 0029 0028
0026 0025 0024 0023 0022 0021 0020 0018 0017 0014 0013 0012 0010 0009 0008 0007 0006 0005
0004 0003 0002 0001
```

这些 `NNNN_error` 示例在 `moon check` 下只产生 `warning`（如 `unused_value`）或直接通过，不再触发对应错误码。

## fixed 示例本身编译失败（2 个）

### 4214 — `pub extenum Event`
```
Error: [3002]
  1 │ pub extenum Event
    │                  ╰─ Unexpected line break here, missing `{` at the end of this line.
```
语法错误：`extenum` 声明写法不合法，官方"修复示例"本身就无法编译。

### 0093 — `#non_exhaustive`
```
Warning: [0042]  unknown attribute non_exhaustive
Error: [3002] ...
```
使用了不存在的属性 `non_exhaustive`（工具链已移除/更名），示例随之编译失败。

## 对官方文档仓库的建议

1. **低段（≤0092）error 示例**：优先处理 76 个脱节示例。建议：
   - 若错误码已废弃 → 在错误码文档标注 deprecated 或删除示例；
   - 若错误码仍存在但不再触发 → 更新示例以匹配当前触发条件；
   - 可考虑把这些示例标记为仅展示（no-check），避免误导学习者。
2. **4214、0093 fixed 示例**：直接修复语法/属性写法，让"修复版"真的能编译通过。

## 验证可复现

```bash
moon run --target native cmd/moonproof -- --errorcodes <error_codes 根目录>
```

完整结果（含逐码 `detail`）可通过 `--out <json 路径>` 导出为 JSON 清单，供 CI 或后续处理消费。
