mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-12 02:13:04 +08:00
`this.cache?.warm()` refused whenever the receiver lowered to a dynamic value: the checked-dynamic receiver path treated any `?.` step as unhandled chain work and bailed, even inside a chain body whose guard had already proven the receiver present. Those steps are now gated on `chainBlocked`, the canonical "is this `?.` still unhandled" test, so the guarded body is the plain read-and-call it already is, with `dynCall` throwing Node's catchable "x.y is not a function" for a present but non-callable member. The string-only and primitive-method branches drop their raw `questionDotToken` checks the same way. A capture the checker itself types with an absent arm (`T | undefined`, an optional property or parameter) also refused as a "complex" use in a logical or conditional receiver, even though the union value flows into the surrounding operator, which handles the absent arm itself. The use now lowers to a plain read when both the checked type and the recorded storage carry an undefined arm; a hidden absence keeps its refusal. Corpus 8500 and 8501 pin optional method-call receivers and `(entries ?? []).map(...)`-shaped capture receivers against Node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>