Skip to content

v1.2.1

Choose a tag to compare

@harshmandan harshmandan released this 30 Jul 07:26
· 79 commits to main since this release

Parity patch. Two classes of real error were being dropped.

Fixes

  • Errors on the generated render signature are reported instead of discarded. Under declaration: true (or composite: true) the compiler must be able to name a component's props type to write its .d.ts. A component declaring generics="T, Y" plus a props interface that closes over those parameters puts that interface inside the render function's scope, out of the declaration writer's reach — TS4060 Return type of exported function has or is using private name 'Props'. (e377a8c)
  • Keyed {#each} key expressions are type-checked. {#each rows as row (rowKey(row))} never emitted the key at all, so type errors inside it were invisible, and anything referenced only from a key looked dead. (5bf3d2d)
  • --emit-ts output is stable across machines. The $$render_<hash> token hashed the absolute source path, so overlays differed by checkout location; it is now keyed to the workspace-relative path, and multi-file output is sorted so filesystem traversal order no longer shuffles it. (16515ae, 0541a89)

Known limitation

Declaration-family errors (TS4060/TS4023/TS4025) come from the declaration writer, which the compiler only runs under noEmit when the program is otherwise clean. They therefore stay hidden behind any unrelated type error and surface once it is fixed — one extra iteration, never a lost error. Upstream's default engine avoids this by querying the language service per file; upstream --tsgo behaves as we do.

Internal

  • oxc 0.140 → 0.141, adapting to the MetaProperty split (805f2c6)
  • dependency bumps: cargo group ×7, actions/checkout (0b00bd2, 567a76a)
  • CI: environment-free unit + emit-snapshot workflow, cargo-deny on every PR
    (81437dc, 459c55d, 6f8533a)