Files
Malte Ubl a854b53e03 Count module TDZ checks, atomic counters and array appends as edge-preserving
A function is edge-preserving when it cannot remove a reference edge; callers then pass field projections borrowed. tsc-ts lost the property for its whole type-ordering family because compareTypeLists reads a module binding behind an import-cycle TDZ check (module.tdzCheck), and for compareSymbols because getSymbolId bumps a shared id counter with Atomics.add (atomics.op). Fresh array literals without spreads and the array operations that only read, copy into a fresh array or append (push and pushSpread retain the new element; moving the slot storage releases nothing) were rejected too. All of these may allocate or throw, which the summary already allows. Removals (pop, shift, splice), truncation, overwrites and Atomics.wait keep the conservative answer.

compareTypes now passes its field arguments borrowed: 42 retains and 118 releases in its body become 4 and 4, and compareSymbols, compareTypeNames and binarySearchTypes need none. Corpus 4621 covers a comparator behind a real import-cycle TDZ error, an atomic id counter, appends that move the storage of the array owning a borrowed argument, loop bindings over appending and draining calls, and callees that shift or truncate the owning array.
2026-10-10 15:05:02 -07:00
..
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00
2026-10-10 10:08:39 -05:00