mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-14 15:58:08 +08:00
A conditional spread whose arms are both populated, nested, or collide with an earlier contributor (or a required field, or an index-signature slot) was an SC1090 refusal. Those shapes now retry the whole literal as a checked-dynamic own-key copy validated into the target record: the one-entry-per-name desugar cannot express which arm runs at runtime. The syntax fence defers so the checked-dynamic build gets the first chance, and fires only where that declines. Inside a checked-dynamic literal a conditional source lowers arm by arm as the dyn value whose keys the copy reads, so a fresh arm literal is not reshaped against the enclosing record's contextual type. Corpus 8503 covers both arms populated with different shapes, a nested ternary, a conditional over an earlier contributor, an index-signature base with a conditional, and a `Headers | undefined` spread. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>