复现步骤
对一个无内联 mcpp = {} 表的描述符(构建信息来自源码自己的 mcpp.toml)执行:
mcpp xpkg parse forma.lua --json
描述符含正常的三平台 xpm 版本表。
实际行为
输出只有三个键:
{"namespace":"demo","name":"forma","form":"A"}
而 cmd_xpkg_parse 在进入 Form A 分支之前就已经算好了 linux/macosx/windows 三平台的版本表(src/cli/cmd_xpkg.cppm 的 versions 循环),计算结果被直接丢弃。文本模式同样不打印任何 versions 行。
期望行为
两种输出拼写的 payload 都携带 versions(与 Form B 内联表形态同形状):JSON 含 "versions" 对象,文本打印 versions 行。xpm 表全平台为空时维持现有的报错退出不变。
影响
mcpp-vscode 补全层实测:mcpplibs 索引 81 个描述符中 18 个走 Form A 路径,它们被当作无版本包,「官方解析器零漂移」对完整索引不成立(mcpp-community/mcpp-vscode#8,亦见 #379 评论中 wellwei 的核对「Form A 分支当前不输出已经计算出的 versions」)。
环境
- mcpp 版本:2026.8.21.3(main @ e56c13e 复核确认仍存在)
- OS:macOS ARM64
复现步骤
对一个无内联
mcpp = {}表的描述符(构建信息来自源码自己的 mcpp.toml)执行:描述符含正常的三平台
xpm版本表。实际行为
输出只有三个键:
{"namespace":"demo","name":"forma","form":"A"}而
cmd_xpkg_parse在进入 Form A 分支之前就已经算好了 linux/macosx/windows 三平台的版本表(src/cli/cmd_xpkg.cppm的 versions 循环),计算结果被直接丢弃。文本模式同样不打印任何 versions 行。期望行为
两种输出拼写的 payload 都携带
versions(与 Form B 内联表形态同形状):JSON 含 "versions" 对象,文本打印 versions 行。xpm 表全平台为空时维持现有的报错退出不变。影响
mcpp-vscode 补全层实测:mcpplibs 索引 81 个描述符中 18 个走 Form A 路径,它们被当作无版本包,「官方解析器零漂移」对完整索引不成立(mcpp-community/mcpp-vscode#8,亦见 #379 评论中 wellwei 的核对「Form A 分支当前不输出已经计算出的 versions」)。
环境