mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-24 06:14:01 +08:00
- Establishment/containment: miss-first ternary polarity, else-if head exits, bare-block vs alias guards, break/continue exit guards, post-loop re-tests, while-condition guards, born-narrowed declarations (2390-2396) - Kill routing: branch/switch-arm/reassignment-polarity kills at merges, and kills riding return/break/labeled-break/continue/throw edges (2397-2406) - Terminality: infinite-loop sealing and re-opening, loop-body returns, stacked and trailing-empty case labels, defaultless exhaustive switches (2407-2411) - do-while trailing tests under body guards, kills, continue, and break, plus spread-arm ternary lowering shapes, ?? null identity, float-lane bounds, IEEE remainder corners, and parameter null reassignment (2412-2423) - Order-parity baselines re-recorded for the new entries (pure addition)
14 lines
485 B
TypeScript
14 lines
485 B
TypeScript
// A null guard in a while CONDITION re-tests per iteration; a body reassignment that may produce null feeds the next test.
|
|
interface Sel { readonly at: number; readonly len: number; }
|
|
function walk(start: Sel | null): number {
|
|
let cur: Sel | null = start;
|
|
let hops = 0;
|
|
while (cur !== null && cur.len > 0) {
|
|
hops += cur.len;
|
|
cur = cur.len > 2 ? { at: cur.at, len: cur.len - 1 } : null;
|
|
}
|
|
return hops;
|
|
}
|
|
console.log(walk({ at: 0, len: 4 }));
|
|
console.log(walk(null));
|