mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-02 07:43:42 +08:00
The overlay validation suites (npm, npm-static, three, Effect 3 and 4) now pass with the overlay on. Each cause had an npm repro or suite case that failed with the overlay and passed without it: Analysis facts: - Symbol members: Symbol.for/keyFor are functions, well-known symbols are symbols, other members unknown. - Reads that may answer undefined: index reads past the end (unless the enclosing for loop proves them in bounds of an array that never shrinks or has holes), computed reads of objects, keys an object literal lacks at creation, optional-chain short circuits, `let x;` before assignment. - Object.create(proto) inherits proto members; arguments past the declared parameters are unknown; `new` of a primitive answers nothing. - Arithmetic on bigints answers bigints (number|bigint is never printed). Overlay: - Package JSDoc is a declaration: it stays as written and the overlay adds only types the JSDoc does not declare. - Objects held by module-level bindings (and what they hold) are never typed as records: a typed return would copy them. - Only checks of overlay facts carry the inferred-fact message. - static-objects ignores nullish receivers outside optional chains; folded literal keys are unparenthesized. Fallback (the overlay never adds a failure the default build lacks): - the overlay state is kept per load (a later load reset it, so the fallback never ran); - deferred refusals in unreached code count; - a preflight, deferred refusals or IR the program without the overlay does not have make the build compile without the overlay. CI: the shape_overlay job builds its own native packages; a manual run with scope shape_overlay runs it alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>