Skip to content

gen:docs 深度预算落地后,11 个单元格出现 object | object | object | object —— 同形变体是否该去重,落在 #6226 的裁决面上 #6569

Description

@os-project-manager

实现 #6374(形状深度预算)时量出来的观察类发现,未认领,按 PD#10 立案。
不在 #6374 的 PR 里顺手改,因为它落在 #6226 刚被维护者裁决过的那个面上。

现象

#6374 给内联形状摘要加了深度预算(SHAPE_DEPTH_LIMIT = 1,嵌套形状印 object)。
后果之一:一个联合的多个变体如果都是对象,它们现在会渲染成同一个字符串,
于是单元格里出现连续重复的 object。全语料实测 11 格,改前是 0 格:

页面 属性 现在印出
ai/conversation.mdx ConversationSession.messages content: (object | object | object | object)[]
ui/view.mdx / data/object.mdx / api/protocol.mdx View.list / .listViews / ViewItem.config 等 7 格 data?: object | object | object | object
kernel/manifest.mdx Manifest.navigationContributions items: (object | object | object | object | … +5 more)[]

最后一格尤其刺眼:… +5 more 在数「还有 5 个和已印出的这四个一样object」。

为什么 #6374 没有顺手收掉它

三条理由,都指向「这不是实施者能单方面决定的」:

  1. 它落在 gen:docs 联合类型的每个对象变体都印一遍完整摘要,一个单元格里出现近乎相同的形状 N 次(PageSlots.slots 1538 字符,枚举已省略后仍如此) #6226 的裁决面上。 gen:docs 联合类型的每个对象变体都印一遍完整摘要,一个单元格里出现近乎相同的形状 N 次(PageSlots.slots 1538 字符,枚举已省略后仍如此) #6226 的维护者裁决是「变体数上限 + 自报被省略的
    变体数
    」,理由是省略必须自报数量。把 4 个同形变体折叠成 1 个 object,丢掉的
    正是元数(arity)—— 这一格还剩的唯一事实(「你要在 N 个形状里选一个」)。
  2. 仓库已经有意在印这种重复了。 format-type.test.tsgen:docs 联合类型的每个对象变体都印一遍完整摘要,一个单元格里出现近乎相同的形状 N 次(PageSlots.slots 1538 字符,枚举已省略后仍如此) #6226 的一条现存 pin:
    string | string | string | string | string 逐字保留、不省略,理由写在测试注释里
    ——「标记比省下的还长」。也就是说「重复拼写同一个变体」是这个渲染器已经钉住的
    既有行为
    ,object | object | object | object 只是同一行为遇上了新的拼写,
    不是 gen:docs 第三种残留宽度:嵌套形状深度 —— INLINE_KEY_LIMIT 只管一层,摘要沿数组/Record/联合无预算下钻(Page.slots 1538 字符) #6374 造出来的新行为。
  3. 共享的「标记必须挣回自己的位置」守卫在这里是对的。 6 个 object 比替换掉
    其中两个的计数标记还窄,所以守卫拒绝加标记 —— 拒绝是正确的,只是结果好看不了。

待裁决的问题

同一个单元格内渲染结果逐字相同的联合变体,应该:

定性

相关

同文件面:packages/spec/scripts/lib/format-type.ts。与 #6374(本条的来源)、
#6226(裁决面)、#5340#6225 同源。须与该文件面的其他在飞单串行。
#6374 的 PR 已把 A 的行为明确钉在
format-type.test.tsprints an identical variant once per variant 一条里,
并在注释里写明这是待裁决项 —— 裁决若选 B/C,改的是那一条 pin。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions