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