Skip to content

fix: xpkg parse 的 Form A 输出丢弃了已计算的 versions #489

Description

@wellwei

复现步骤

对一个无内联 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions