mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-27 06:43:19 +08:00
hot-shots, a StatsD client compiled from its JavaScript, failed when a program constructed a client. Each gap on its UDP path is closed generically: - Sloppy-mode functions with named parameters may read `arguments` where the aliasing of their parameters cannot show: only `arguments.length`, or element reads without parameter or element writes. - An `any` slot admits any boxable function value, including functions with optional parameters (`C.prototype.m = function (...)` through an untyped receiver). - In a JavaScript file TypeScript does not check, a prototype method takes its documented parameters as checked-dynamic values, as constructors already did. - JavaScript dgram sends run completion callbacks, buffer lists, connected sends and the six-argument offset/length form. - A dgram socket crosses into the checked-dynamic tree as a handle (SCR_DYNH_DGRAM_SOCKET) whose methods are function values, with untyped listeners that survive 'close'. The handle lives in its own runtime unit (scr_dgram_dyn.c, the dgramDyn feature), linked only when a program converts a socket to or from an untyped value. - `String.prototype.concat` on strings, and `parseInt` over a possibly missing or untyped value in JavaScript. Corpus programs 6590-6596 and the hot-shots-udp npm case (hot-shots 8.5.0 vendored) match Node in both lanes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 lines
1.2 KiB
Plaintext
8 lines
1.2 KiB
Plaintext
- **Function values:** Immutable aliases of overloaded program functions retain per-call overload resolution and identity.
|
|
A function stored in a slot with a different signature remains the same function for equality, array searches, `length`, and own properties.
|
|
Typed rest-parameter functions can be stored and called indirectly, including through a slot with fixed parameters, where the slot's arguments arrive in the rest array.
|
|
Builtin function values have API-specific restrictions; see [Builtin function values](#builtin-function-values).
|
|
- **JavaScript parameters:** In a JavaScript file TypeScript does not check, a prototype method (`C.prototype.m = function (...) {}`) takes whatever values its callers pass; its JSDoc types document the usual values without constraining them.
|
|
A sloppy-mode function with named parameters may read `arguments` only where the aliasing of its parameters cannot show: it reads `arguments.length`, or reads elements and never writes a parameter or an element.
|
|
Other uses of `arguments` in such a function are refused with `SC1090`; ES modules, `'use strict'` code, classes, and functions with default, rest, or destructured parameters have no such restriction.
|