现象
xpkg 描述符 mcpp = { ... } 段中的未知键被静默忽略,没有任何警告或报错。
实际踩坑路径:声明包间依赖时把 deps 误写成 dependencies(TOML manifest 里是
[dependencies],很自然地带过来),结果依赖被整体丢弃,报错发生在下游很远处
——依赖包的头文件找不到:
mcpp = {
language = "c++23",
include_dirs = { "gena" },
sources = { "gena/toya.cpp" },
dependencies = { ["compat.toyb"] = "0.1.0" }, -- 静默忽略;正确拼写是 deps
...
}
fatal error: toyb.h: No such file or directory
从报错完全看不出是描述符键拼错。(deps = { ["compat.toyb"] = "0.1.0" } 一切正常
——0.0.97 的 compat-依赖-compat 链路本身验证是通的,传递解析/头传播/链接闭包都对。)
期望
与 0.0.97 给 manifest 加的 closed-grammar 守卫([[x]] 非白名单段硬报错)对齐:
描述符 mcpp 段遇到未知键至少 warning,理想是硬报错(键集合是封闭的,
src/manifest/xpkg.cppm 的 else-if 链就是白名单)。dependencies 可特判提示
"did you mean deps"。
环境
mcpp 0.0.97 · linux x86_64
现象
xpkg 描述符
mcpp = { ... }段中的未知键被静默忽略,没有任何警告或报错。实际踩坑路径:声明包间依赖时把
deps误写成dependencies(TOML manifest 里是[dependencies],很自然地带过来),结果依赖被整体丢弃,报错发生在下游很远处——依赖包的头文件找不到:
从报错完全看不出是描述符键拼错。(
deps = { ["compat.toyb"] = "0.1.0" }一切正常——0.0.97 的 compat-依赖-compat 链路本身验证是通的,传递解析/头传播/链接闭包都对。)
期望
与 0.0.97 给 manifest 加的 closed-grammar 守卫([[x]] 非白名单段硬报错)对齐:
描述符 mcpp 段遇到未知键至少 warning,理想是硬报错(键集合是封闭的,
src/manifest/xpkg.cppm的 else-if 链就是白名单)。dependencies可特判提示"did you mean
deps"。环境
mcpp 0.0.97 · linux x86_64