Skip to content

附录 B:诊断代码索引 ​

用户向诊断代码速查。编译器实现细节见 docs/3_SemanticAnalysis.md。

当前版本: SYX 117.0 · Phase 139 · 文档指纹 diag-139(以编译器源码为准)

语义(S 系列) ​

代码含义
S001符号重复定义
S002未定义标识符
S003对不可变变量赋值
S004类型不匹配
S005跨模块访问 internal / private / fileprivate 符号
S006Iterator 协议缺少 next()
S007Sealed / exhaustiveness 相关(switch 缺 case)
S008类型窄化(如 Int64 → Int8)
S009有符号/无符号混合(部分)
S010协议不符合 / 泛型 where 约束不满足
S011借用 / 变异违规
S012关联类型错误
S013集合类型一致性
S014有符号 / 无符号混合
S015Hashable 协议不符
S016Equatable 协议不符
S017生命周期违规
S019Sendable channel
S020MainActor await 后违规 / guard let else 未退出 / 非 async 内 await
S022SIMD 在禁用模式下使用
S024集合 hosted op 禁止 legacy MethodCall(Phase 48)
S025语义层 hosted 方法须走 extension / CallHost(Phase 50)
S046is 数值目标禁止(1 is Int 等)
S050继承 override 校验相关(override 缺 / 父类未声明 / 签名不匹配)
S051override 缺关键字
S052override 父类未声明
S053继承 final 类
S054override 签名不匹配
S055override 父类 final 方法
S056计算属性观察器(拒绝)

Host 插件(H 系列) ​

代码含义
H001插件未加载或插件 Host 不存在
H002编译期插件 manifest 与运行期 / 锁文件不一致
H003插件 ABI 版本不匹配
H004插件 min_syx_version 不满足

词法(L 系列) ​

代码含义
L001未闭合字符串 / 无效词法(lexer)
L002–L012Lint 规则(见 9_UsageGuide)

Lint 摘录:

代码含义
L001函数名应小写开头(lint)
L002重复函数名
L003空函数体
L004public 函数应声明返回类型
L005async 函数应使用 await
L006非法字符(变量名)
L007全局变量缺少初始化
L008空 import 名
L009裸 return
L010行超过 120 字符
L011含 TODO/FIXME
L012建议使用结构化日志而非 print

语法(P 系列) ​

代码含义
P001解析错误(语法不合法)
P001编译时缺 syx.lock(manifest 未安装)

运行时(R 系列) ​

代码含义
R003as! 失败;Array / String 下标越界;整数窄化越界
R007对 nil 强制解包 !
R008readLine 失败
R011整数溢出 Display(≠ GA;现行算术恒 wrap)。同码亦可用于其它域(如 HTTP client)
R012整数除零
R013URL 解析失败
R014递归过深(栈溢出)
R016必填字段未初始化

并发(A / C 系列) ​

代码含义
A002Actor 隔离违规
A003GlobalActor 相关
C001actor 隔离违规(更细粒度)
C002distributed actor 边界
C003跨隔离传非 Sendable 类型
C004Task 取消相关
C005GlobalActor await 后违规
C006structured concurrency 父任务取消传播
C009Actor 同步同实例 reentrancy 拒绝(serial-no-reenter)
C010Channel 已关闭(post-close send)

宏(E / W 系列) ​

代码含义
W001#warning 触发
E001#error 触发
E002宏展开深度超限或循环展开
E003角色错位(如 @freestanding(expression) 用在语句位置)
E004external macro 在 WASM 编译期(SYX_TARGET_WASM=1)
E006@Service / @Component 错用在非类型上
E007无 @Lazy 环依赖
E008@Inject 缺依赖
E010DI typed resolve 动态变量

借用机器证明 ​

阶段触发
Phase 32+SYX_BORROW_MACHINE_PROOF=1 启用 proof obligation 导出
Phase 33+SYX_BORROW_COQ_LEAN_EXPORT=1 启用 Coq/Lean 导出
Phase 34+SYX_BORROW_COQ_LEAN_PROOF_PROD=1 prod 机器检验

完整工具链诊断 ​

详见 docs/9_UsageGuide.md — 诊断代码。


参见 → 语言参考:关于本参考 · 实现状态总表 · docs/3_SemanticAnalysis.md

SYX · Apache-2.0