玄铁类型系统哲学设计
具体看 02_类型系统哲学设计.md 是由两套方案组成:
多档开关——在执行编译指令时加入指令参数
--严格、--禁止、--默认即可切换编译器语法检查等级,具体分级制度如下- 错误等级:
- 宽松级:未使用的变量 | 静默处理
- 警告级:隐式类型、若抑否逻辑表达式出现多个
否编译器会只采用第一个否、隐式动态、可推断未声明 | 编译期输出警告,强烈建议开发者修复这个问题 - 错误级:完全错误的语法 | 编译器完全退出并中断编译任务
- 默认:按原分级处理(宽松→静默,警告→提示,错误→中断)
- 严格:所有等级提升一档(宽松→警告,警告→错误,错误→错误)
- 禁止:所有非错误提升为错误(宽松→错误,警告→错误,错误→错误)
- 错误等级:
项目配置文件——
玄铁.配置.toml[编译] 严格度 = 禁止 警告即错误 = ["隐式类型", "未使用变量"] 忽略警告 = ["注释格式", "W001"]项目根的判定(重要):编译器与 LSP 都以源文件所在目录为起点,逐级向上查找
玄铁.配置.toml——找到的第一个即为项目根配置(与 Go 的go.mod同理)。所以:- 一个项目只需在根目录放一份配置,下属所有子目录的
.xt文件都受其管辖,无需每个目录都放。 - 一路向上都找不到 → 视为独立散文件,按无配置处理。
- 命令行参数(如
--严格)优先级高于配置文件。
支持的键:
键 取值 作用 严格度默认/严格/禁止全局检查等级(命令行同名参数优先) 忽略警告["W001","隐式类型",...]按警告码或类别名静默指定警告(编译器与 LSP 诊断同时生效) 警告即错误["类别名",...]指定类别的警告提升为错误 LSP 侧:
忽略警告对编辑器里的红色/黄色波浪线同样生效——例如填入"W001"后,「变量未标注类型」的黄色提醒不再出现;@允许(码)注解则可做语句级抑制。- 一个项目只需在根目录放一份配置,下属所有子目录的
编译期错误与运行时诊断明细(错误格式、触发示例、健壮性诊断对照)见 02_类型系统哲学设计.md 末尾章节。