@scriptc/compiler 0.4.5 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/node-fallback/assert-strict.d.ts +47 -0
- package/ambient/node-fallback/assert.d.ts +86 -0
- package/ambient/node-fallback/async_hooks.d.ts +41 -0
- package/ambient/node-fallback/buffer.d.ts +23 -0
- package/ambient/node-fallback/child_process.d.ts +242 -0
- package/ambient/node-fallback/cluster.d.ts +17 -0
- package/ambient/node-fallback/constants.d.ts +15 -0
- package/ambient/node-fallback/crypto.d.ts +837 -0
- package/ambient/node-fallback/dgram.d.ts +58 -0
- package/ambient/node-fallback/diagnostics_channel.d.ts +87 -0
- package/ambient/node-fallback/dns-promises.d.ts +27 -0
- package/ambient/node-fallback/dns.d.ts +65 -0
- package/ambient/node-fallback/events.d.ts +60 -0
- package/ambient/node-fallback/fs-promises.d.ts +225 -0
- package/ambient/node-fallback/fs.d.ts +641 -0
- package/ambient/node-fallback/graceful-fs.d.ts +9 -0
- package/ambient/node-fallback/http.d.ts +326 -0
- package/ambient/node-fallback/http2.d.ts +816 -0
- package/ambient/node-fallback/https.d.ts +59 -0
- package/ambient/node-fallback/module.d.ts +10 -0
- package/ambient/node-fallback/net.d.ts +374 -0
- package/ambient/node-fallback/os.d.ts +288 -0
- package/ambient/node-fallback/path-posix.d.ts +22 -0
- package/ambient/node-fallback/path-win32.d.ts +22 -0
- package/ambient/node-fallback/path.d.ts +55 -0
- package/ambient/node-fallback/process.d.ts +11 -0
- package/ambient/node-fallback/punycode.d.ts +18 -0
- package/ambient/node-fallback/querystring.d.ts +55 -0
- package/ambient/node-fallback/stream-consumers.d.ts +21 -0
- package/ambient/node-fallback/stream-promises.d.ts +28 -0
- package/ambient/node-fallback/stream-web.d.ts +36 -0
- package/ambient/node-fallback/stream.d.ts +644 -0
- package/ambient/node-fallback/string_decoder.d.ts +20 -0
- package/ambient/node-fallback/test.d.ts +236 -0
- package/ambient/node-fallback/timers-promises.d.ts +31 -0
- package/ambient/node-fallback/timers.d.ts +28 -0
- package/ambient/node-fallback/tls.d.ts +169 -0
- package/ambient/node-fallback/url.d.ts +95 -0
- package/ambient/node-fallback/util-types.d.ts +50 -0
- package/ambient/node-fallback/util.d.ts +416 -0
- package/ambient/node-fallback/v8.d.ts +43 -0
- package/ambient/node-fallback/worker_threads.d.ts +113 -0
- package/ambient/node-fallback/zlib.d.ts +422 -0
- package/ambient/scriptc-node-fallback.d.ts +224 -6688
- package/dist/backend/cycle-analysis.js +4 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/executable-features.d.ts +1 -1
- package/dist/backend/executable-features.js +15 -2
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/huge-text.d.ts +16 -0
- package/dist/backend/huge-text.js +103 -0
- package/dist/backend/huge-text.js.map +1 -0
- package/dist/backend/huge-text.test.d.ts +1 -0
- package/dist/backend/huge-text.test.js +73 -0
- package/dist/backend/huge-text.test.js.map +1 -0
- package/dist/backend/library-pack.js +1 -1
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +10 -0
- package/dist/backend/link-plan-core.js +14 -2
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan-core.test.d.ts +1 -0
- package/dist/backend/link-plan-core.test.js +20 -0
- package/dist/backend/link-plan-core.test.js.map +1 -0
- package/dist/backend/link-plan.d.ts +8 -0
- package/dist/backend/link-plan.js +7 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/linker.js +37 -14
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +13 -0
- package/dist/backend/lld.js +18 -1
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +7 -1
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +2 -0
- package/dist/backend/llvm/alloc.js +1 -1
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +78 -0
- package/dist/backend/llvm/arenas.js +313 -0
- package/dist/backend/llvm/arenas.js.map +1 -0
- package/dist/backend/llvm/arenas.test.d.ts +1 -0
- package/dist/backend/llvm/arenas.test.js +140 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +11 -1
- package/dist/backend/llvm/blocks.js +23 -5
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.d.ts +19 -0
- package/dist/backend/llvm/bytes-headers.js +55 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +4 -3
- package/dist/backend/llvm/bytes-loop-versions.js +42 -7
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +39 -4
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +5 -0
- package/dist/backend/llvm/call-lifetimes.js +43 -8
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +26 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.d.ts +3 -0
- package/dist/backend/llvm/checked-narrows.js +8 -1
- package/dist/backend/llvm/checked-narrows.js.map +1 -1
- package/dist/backend/llvm/class-unions.d.ts +21 -0
- package/dist/backend/llvm/class-unions.js +141 -0
- package/dist/backend/llvm/class-unions.js.map +1 -0
- package/dist/backend/llvm/class-unions.test.d.ts +1 -0
- package/dist/backend/llvm/class-unions.test.js +137 -0
- package/dist/backend/llvm/class-unions.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +46 -8
- package/dist/backend/llvm/classes.js +259 -32
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +4 -0
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +23 -0
- package/dist/backend/llvm/common.js +34 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +39 -0
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/constant-choices.d.ts +32 -0
- package/dist/backend/llvm/constant-choices.js +209 -0
- package/dist/backend/llvm/constant-choices.js.map +1 -0
- package/dist/backend/llvm/constant-choices.test.d.ts +1 -0
- package/dist/backend/llvm/constant-choices.test.js +94 -0
- package/dist/backend/llvm/constant-choices.test.js.map +1 -0
- package/dist/backend/llvm/counted-loops.d.ts +14 -2
- package/dist/backend/llvm/counted-loops.js +60 -7
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/counted-loops.test.d.ts +1 -0
- package/dist/backend/llvm/counted-loops.test.js +34 -0
- package/dist/backend/llvm/counted-loops.test.js.map +1 -0
- package/dist/backend/llvm/cpu-dispatch.d.ts +26 -0
- package/dist/backend/llvm/cpu-dispatch.js +279 -0
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -0
- package/dist/backend/llvm/dense-array-access.d.ts +13 -2
- package/dist/backend/llvm/dense-array-access.js +60 -6
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +40 -14
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +28 -2
- package/dist/backend/llvm/dyn.js +176 -27
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +25 -3
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +1 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -1
- package/dist/backend/llvm/emit-module.d.ts +5 -3
- package/dist/backend/llvm/emit-module.js +362 -74
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +327 -59
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +223 -33
- package/dist/backend/llvm/emitter.js +713 -100
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +20 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +32 -6
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -1
- package/dist/backend/llvm/expr-bytes.js +105 -9
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-callbacks.js +29 -22
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +0 -4
- package/dist/backend/llvm/expr-calls.js +116 -14
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +77 -12
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +22 -0
- package/dist/backend/llvm/expr-control.d.ts +4 -0
- package/dist/backend/llvm/expr-control.js +485 -426
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +4 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +3 -3
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +6 -0
- package/dist/backend/llvm/expr-primitives.js +119 -58
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +36 -4
- package/dist/backend/llvm/expr-records.js +249 -37
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +124 -7
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +13 -14
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/frame-escapes.d.ts +11 -0
- package/dist/backend/llvm/frame-escapes.js +219 -0
- package/dist/backend/llvm/frame-escapes.js.map +1 -0
- package/dist/backend/llvm/function-layout.d.ts +15 -0
- package/dist/backend/llvm/function-layout.js +40 -0
- package/dist/backend/llvm/function-layout.js.map +1 -0
- package/dist/backend/llvm/heap-census.d.ts +34 -0
- package/dist/backend/llvm/heap-census.js +163 -0
- package/dist/backend/llvm/heap-census.js.map +1 -0
- package/dist/backend/llvm/inline-arrays.d.ts +41 -0
- package/dist/backend/llvm/inline-arrays.js +195 -0
- package/dist/backend/llvm/inline-arrays.js.map +1 -0
- package/dist/backend/llvm/int32-kind-loops.js +2 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -1
- package/dist/backend/llvm/integer-clones.d.ts +32 -5
- package/dist/backend/llvm/integer-clones.js +237 -44
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/integer-clones.test.js +120 -0
- package/dist/backend/llvm/integer-clones.test.js.map +1 -1
- package/dist/backend/llvm/iterative-teardown.test.d.ts +1 -0
- package/dist/backend/llvm/iterative-teardown.test.js +62 -0
- package/dist/backend/llvm/iterative-teardown.test.js.map +1 -0
- package/dist/backend/llvm/js-ic.js +246 -62
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +2 -2
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +153 -16
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.d.ts +8 -0
- package/dist/backend/llvm/lib-filesystem.js +48 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +4 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +1 -1
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +15 -1
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +32 -8
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +3 -0
- package/dist/backend/llvm/lib-shared.js +191 -28
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +1 -1
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +15 -1
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-extents.d.ts +22 -0
- package/dist/backend/llvm/local-extents.js +102 -0
- package/dist/backend/llvm/local-extents.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.js +15 -2
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-callees.d.ts +21 -0
- package/dist/backend/llvm/loop-callees.js +119 -0
- package/dist/backend/llvm/loop-callees.js.map +1 -0
- package/dist/backend/llvm/loop-callees.test.d.ts +1 -0
- package/dist/backend/llvm/loop-callees.test.js +65 -0
- package/dist/backend/llvm/loop-callees.test.js.map +1 -0
- package/dist/backend/llvm/loop-entry-versions.d.ts +17 -0
- package/dist/backend/llvm/loop-entry-versions.js +185 -0
- package/dist/backend/llvm/loop-entry-versions.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +13 -4
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +11 -0
- package/dist/backend/llvm/map-read-lifetimes.js +51 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +6 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +67 -10
- package/dist/backend/llvm/nullable-unions.js +218 -22
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +124 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/periodic-guards.d.ts +16 -0
- package/dist/backend/llvm/periodic-guards.js +91 -0
- package/dist/backend/llvm/periodic-guards.js.map +1 -0
- package/dist/backend/llvm/periodic-guards.test.d.ts +1 -0
- package/dist/backend/llvm/periodic-guards.test.js +64 -0
- package/dist/backend/llvm/periodic-guards.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +12 -2
- package/dist/backend/llvm/publish.js +15 -8
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/rebound-parameters.d.ts +4 -1
- package/dist/backend/llvm/rebound-parameters.js +17 -1
- package/dist/backend/llvm/rebound-parameters.js.map +1 -1
- package/dist/backend/llvm/receivers.d.ts +7 -0
- package/dist/backend/llvm/receivers.js +77 -10
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-union-keys.test.js +29 -0
- package/dist/backend/llvm/record-union-keys.test.js.map +1 -1
- package/dist/backend/llvm/record-views.d.ts +29 -0
- package/dist/backend/llvm/record-views.js +249 -0
- package/dist/backend/llvm/record-views.js.map +1 -0
- package/dist/backend/llvm/record-views.test.d.ts +1 -0
- package/dist/backend/llvm/record-views.test.js +118 -0
- package/dist/backend/llvm/record-views.test.js.map +1 -0
- package/dist/backend/llvm/reference-writes.js +21 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.js +42 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.d.ts +5 -1
- package/dist/backend/llvm/regex-matchers.js +173 -21
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +39 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/region-groups.d.ts +67 -0
- package/dist/backend/llvm/region-groups.js +1719 -0
- package/dist/backend/llvm/region-groups.js.map +1 -0
- package/dist/backend/llvm/region-groups.test.d.ts +1 -0
- package/dist/backend/llvm/region-groups.test.js +197 -0
- package/dist/backend/llvm/region-groups.test.js.map +1 -0
- package/dist/backend/llvm/region-ir.d.ts +31 -0
- package/dist/backend/llvm/region-ir.js +256 -0
- package/dist/backend/llvm/region-ir.js.map +1 -0
- package/dist/backend/llvm/region-sites.d.ts +20 -0
- package/dist/backend/llvm/region-sites.js +327 -0
- package/dist/backend/llvm/region-sites.js.map +1 -0
- package/dist/backend/llvm/region-sites.test.d.ts +1 -0
- package/dist/backend/llvm/region-sites.test.js +216 -0
- package/dist/backend/llvm/region-sites.test.js.map +1 -0
- package/dist/backend/llvm/repr-report.d.ts +9 -0
- package/dist/backend/llvm/repr-report.js +143 -0
- package/dist/backend/llvm/repr-report.js.map +1 -0
- package/dist/backend/llvm/repr-report.test.d.ts +1 -0
- package/dist/backend/llvm/repr-report.test.js +62 -0
- package/dist/backend/llvm/repr-report.test.js.map +1 -0
- package/dist/backend/llvm/runtime-registries.test.d.ts +1 -0
- package/dist/backend/llvm/runtime-registries.test.js +88 -0
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shape-union-tags.test.d.ts +1 -0
- package/dist/backend/llvm/shape-union-tags.test.js +75 -0
- package/dist/backend/llvm/shape-union-tags.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +60 -10
- package/dist/backend/llvm/shapes.js +233 -51
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -18
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +3 -0
- package/dist/backend/llvm/speculative-integers.js +20 -8
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/split.js +6 -1
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +23 -0
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-callbacks.js +4 -2
- package/dist/backend/llvm/stack-callbacks.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +12 -3
- package/dist/backend/llvm/stack-objects.js +110 -22
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +144 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +24 -1
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.js +2 -1
- package/dist/backend/llvm/string-lifetimes.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +4 -0
- package/dist/backend/llvm/string-reads.js +27 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/test-boxed-unions.d.ts +10 -8
- package/dist/backend/llvm/test-boxed-unions.js +20 -25
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -1
- package/dist/backend/llvm/union-repr.js +9 -8
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +45 -2
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +20 -8
- package/dist/backend/llvm/unwind-abi.js +177 -70
- package/dist/backend/llvm/unwind-abi.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.test.js +90 -3
- package/dist/backend/llvm/unwind-abi.test.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -2
- package/dist/backend/llvm/walk-borrows.js +2 -2
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.test.js +18 -0
- package/dist/backend/llvm/walk-borrows.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +14 -1
- package/dist/backend/llvm/walkers.js +103 -11
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +26 -6
- package/dist/backend/llvm/wrapping-sums.js +64 -12
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/loop-polls.d.ts +4 -2
- package/dist/backend/loop-polls.js +11 -2
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/mangle.d.ts +0 -5
- package/dist/backend/mangle.js +0 -9
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +10 -9
- package/dist/backend/may-throw.js +189 -27
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +44 -7
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/compiler-fingerprint.d.ts +5 -0
- package/dist/backend/native/compiler-fingerprint.js +62 -16
- package/dist/backend/native/compiler-fingerprint.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +31 -8
- package/dist/backend/native/executable.js +56 -32
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +3 -4
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/object-merge.d.ts +3 -1
- package/dist/backend/native/object-merge.js +24 -11
- package/dist/backend/native/object-merge.js.map +1 -1
- package/dist/backend/native/program-shards.js +6 -3
- package/dist/backend/native/program-shards.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +3 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native-codegen-core.d.ts +15 -6
- package/dist/backend/native-codegen-core.js +20 -9
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +51 -5
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +82 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +68 -4
- package/dist/backend/native-profile.js +86 -14
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +127 -4
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +1 -1
- package/dist/backend/native-toolchain.js +1 -1
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +58 -4
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +17 -3
- package/dist/backend/native-tools.js +12 -4
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/native-tools.test.d.ts +1 -0
- package/dist/backend/native-tools.test.js +76 -0
- package/dist/backend/native-tools.test.js.map +1 -0
- package/dist/backend/object-localize.js +69 -9
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +99 -10
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/publication.d.ts +2 -0
- package/dist/backend/publication.js +4 -0
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +19 -0
- package/dist/backend/runtime-pack-core.js +23 -3
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +48 -2
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +2 -0
- package/dist/backend/target-cpu.js +4 -0
- package/dist/backend/target-cpu.js.map +1 -1
- package/dist/backend/target-diagnostics.js +1 -19
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/backend/targets.d.ts +28 -0
- package/dist/backend/targets.js +70 -0
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +75 -1
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/backend/vendor-archives.d.ts +1 -1
- package/dist/backend/vendor-archives.js +25 -12
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +15 -2
- package/dist/backend/vendor-inputs.js +59 -3
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.d.ts +1 -0
- package/dist/backend/vendor-inputs.test.js +74 -0
- package/dist/backend/vendor-inputs.test.js.map +1 -0
- package/dist/cli/command.js +95 -5
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +3 -0
- package/dist/cli/output-options.js +8 -2
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +28 -1
- package/dist/cli/usage.js +56 -6
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +3 -0
- package/dist/compat/fetch-profile.js +23 -3
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +45 -0
- package/dist/contracts/check.js +70 -2
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +2 -1
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +5 -1
- package/dist/coverage/report.js +83 -2
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +5 -10
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/codes.d.ts +145 -0
- package/dist/diagnostics/codes.js +159 -0
- package/dist/diagnostics/codes.js.map +1 -0
- package/dist/diagnostics/codes.test.d.ts +1 -0
- package/dist/diagnostics/codes.test.js +78 -0
- package/dist/diagnostics/codes.test.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +101 -2
- package/dist/diagnostics/diagnostic.js +155 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-slots.d.ts +23 -0
- package/dist/diagnostics/dynamic-slots.js +29 -0
- package/dist/diagnostics/dynamic-slots.js.map +1 -0
- package/dist/diagnostics/dynamic-tier.d.ts +6 -0
- package/dist/diagnostics/dynamic-tier.js +8 -1
- package/dist/diagnostics/dynamic-tier.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +43 -1
- package/dist/diagnostics/envelope.js +19 -1
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/envelope.test.js.map +1 -1
- package/dist/diagnostics/render.d.ts +3 -1
- package/dist/diagnostics/render.js +27 -6
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +41 -0
- package/dist/executable/executable-cache.js +39 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +4 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +2 -1
- package/dist/executable/prepare.js +421 -10
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/canon-map.d.ts +17 -0
- package/dist/frontend/canon-map.js +177 -0
- package/dist/frontend/canon-map.js.map +1 -0
- package/dist/frontend/canon.d.ts +122 -0
- package/dist/frontend/canon.js +462 -0
- package/dist/frontend/canon.js.map +1 -0
- package/dist/frontend/contract-types.d.ts +9 -1
- package/dist/frontend/contract-types.js +46 -4
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +3 -0
- package/dist/frontend/decl-projection.js +121 -3
- package/dist/frontend/decl-projection.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +17 -4
- package/dist/frontend/dts-paths.js +149 -5
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/fork-target.js +4 -4
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +3 -3
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/heritage-elements.d.ts +15 -0
- package/dist/frontend/heritage-elements.js +18 -0
- package/dist/frontend/heritage-elements.js.map +1 -0
- package/dist/frontend/heritage-elements.test.d.ts +1 -0
- package/dist/frontend/heritage-elements.test.js +68 -0
- package/dist/frontend/heritage-elements.test.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +20 -0
- package/dist/frontend/input-tracker.js +74 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +66 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/any-collection-residue.d.ts +9 -0
- package/dist/frontend/lowering/any-collection-residue.js +42 -0
- package/dist/frontend/lowering/any-collection-residue.js.map +1 -0
- package/dist/frontend/lowering/array-values.d.ts +44 -2
- package/dist/frontend/lowering/array-values.js +193 -3
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +6 -2
- package/dist/frontend/lowering/builtin-namespaces.js +28 -6
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtins/array-classes.d.ts +69 -0
- package/dist/frontend/lowering/builtins/array-classes.js +729 -0
- package/dist/frontend/lowering/builtins/array-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +4 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +34 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js +1 -3
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +13 -9
- package/dist/frontend/lowering/builtins/errors.js +136 -56
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +85 -4
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +11 -6
- package/dist/frontend/lowering/builtins/filesystem.js +270 -24
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +7 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/mime.d.ts +25 -0
- package/dist/frontend/lowering/builtins/mime.js +167 -0
- package/dist/frontend/lowering/builtins/mime.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +3 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +6 -0
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +79 -12
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +7 -4
- package/dist/frontend/lowering/builtins/module-resolution.js +115 -13
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +3 -1
- package/dist/frontend/lowering/builtins/navigator.js +22 -8
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +49 -9
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +18 -3
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +6 -2
- package/dist/frontend/lowering/builtins/promisify-callback.js +19 -6
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +23 -5
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +42 -0
- package/dist/frontend/lowering/builtins/web-streams-dyn.js +321 -0
- package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/x509.js +35 -5
- package/dist/frontend/lowering/builtins/x509.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +14 -1
- package/dist/frontend/lowering/call-arguments.js +84 -70
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +108 -24
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-attributes.js +6 -5
- package/dist/frontend/lowering/class-attributes.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +40 -19
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +4 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +61 -1
- package/dist/frontend/lowering/class-protocols.js +297 -21
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +3 -2
- package/dist/frontend/lowering/class-to-primitive.js +15 -5
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/coercions/asserted.d.ts +16 -0
- package/dist/frontend/lowering/coercions/asserted.js +79 -0
- package/dist/frontend/lowering/coercions/asserted.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +13 -0
- package/dist/frontend/lowering/coercions/function-adapters.js +70 -3
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +23 -0
- package/dist/frontend/lowering/coercions/state.js +9 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +67 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.d.ts +10 -0
- package/dist/frontend/lowering/coercions/structural.js +134 -4
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +11 -0
- package/dist/frontend/lowering/coercions/unions.js +83 -4
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.js +3 -2
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +10 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +224 -81
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.d.ts +5 -2
- package/dist/frontend/lowering/containers/array-concat.js +76 -7
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +9 -4
- package/dist/frontend/lowering/containers/array-construction.js +112 -100
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +193 -45
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.d.ts +3 -0
- package/dist/frontend/lowering/containers/array-pipelines.js +81 -13
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +1 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +28 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +13 -3
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.js +34 -3
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +34 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +131 -72
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.js +43 -6
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/decl-origin.d.ts +49 -0
- package/dist/frontend/lowering/decl-origin.js +402 -0
- package/dist/frontend/lowering/decl-origin.js.map +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +2 -0
- package/dist/frontend/lowering/deferred-module-initializers.js +7 -0
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/divergences.js +5 -0
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +8 -2
- package/dist/frontend/lowering/dynamic-tier.js +111 -3
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +14 -1
- package/dist/frontend/lowering/expressions/array-literals.js +43 -5
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/asserted-receiver.d.ts +48 -0
- package/dist/frontend/lowering/expressions/asserted-receiver.js +233 -0
- package/dist/frontend/lowering/expressions/asserted-receiver.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.js +136 -1
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.d.ts +7 -0
- package/dist/frontend/lowering/expressions/element-access.js +363 -12
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.d.ts +3 -0
- package/dist/frontend/lowering/expressions/identifiers.js +78 -62
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/message-listeners.d.ts +3 -0
- package/dist/frontend/lowering/expressions/message-listeners.js +19 -0
- package/dist/frontend/lowering/expressions/message-listeners.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.js +224 -6
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +5 -2
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +282 -24
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +15 -3
- package/dist/frontend/lowering/expressions/property-access.js +397 -74
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +202 -70
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +9 -1
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +28 -8
- package/dist/frontend/lowering/expressions/union-fields.js +168 -14
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +8 -0
- package/dist/frontend/lowering/frozen-records.js +56 -9
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +3 -0
- package/dist/frontend/lowering/function-context.js +4 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.d.ts +4 -0
- package/dist/frontend/lowering/function-returns.js +231 -2
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.js +3 -2
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +26 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +294 -2
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +10 -0
- package/dist/frontend/lowering/generic-functions.js +67 -7
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-values.d.ts +37 -0
- package/dist/frontend/lowering/global-values.js +395 -0
- package/dist/frontend/lowering/global-values.js.map +1 -0
- package/dist/frontend/lowering/handle-properties.js +3 -2
- package/dist/frontend/lowering/handle-properties.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.test.d.ts +1 -0
- package/dist/frontend/lowering/handle-properties.test.js +25 -0
- package/dist/frontend/lowering/handle-properties.test.js.map +1 -0
- package/dist/frontend/lowering/import-meta.d.ts +3 -0
- package/dist/frontend/lowering/import-meta.js +8 -3
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +3 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +2 -0
- package/dist/frontend/lowering/key-order-witness.js +10 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +5 -1
- package/dist/frontend/lowering/lower-array-sort.js +16 -2
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +7 -0
- package/dist/frontend/lowering/lower-builtin-values.js +65 -16
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +222 -24
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +6 -0
- package/dist/frontend/lowering/lower-classes.js +154 -20
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +25 -2
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +29 -0
- package/dist/frontend/lowering/lower-exprs.js +544 -24
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +93 -18
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +4 -1
- package/dist/frontend/lowering/lower-global-value.js +10 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +44 -4
- package/dist/frontend/lowering/lower-inspect.js +723 -26
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +3 -1
- package/dist/frontend/lowering/lower-modules.js +189 -24
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +7 -0
- package/dist/frontend/lowering/lower-namespaces.js +23 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.d.ts +74 -0
- package/dist/frontend/lowering/lower-node-island.js +1931 -0
- package/dist/frontend/lowering/lower-node-island.js.map +1 -0
- package/dist/frontend/lowering/lower-server.js +44 -0
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-shared-modules.d.ts +27 -0
- package/dist/frontend/lowering/lower-shared-modules.js +611 -0
- package/dist/frontend/lowering/lower-shared-modules.js.map +1 -0
- package/dist/frontend/lowering/lower-stdlib.js +85 -9
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -6
- package/dist/frontend/lowering/lower-stmts.js +781 -143
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +548 -36
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +9 -0
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +514 -10
- package/dist/frontend/lowering/lowerer.js +2667 -163
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +44 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +6 -0
- package/dist/frontend/lowering/maybe-promise.js +13 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +12 -0
- package/dist/frontend/lowering/module-namespace-elements.js +114 -18
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +11 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -2
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +4 -0
- package/dist/frontend/lowering/narrowing-stability.js +14 -6
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/receiver-returns.d.ts +3 -0
- package/dist/frontend/lowering/receiver-returns.js +134 -0
- package/dist/frontend/lowering/receiver-returns.js.map +1 -0
- package/dist/frontend/lowering/record-inherited.d.ts +26 -0
- package/dist/frontend/lowering/record-inherited.js +807 -0
- package/dist/frontend/lowering/record-inherited.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +31 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +105 -13
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.d.ts +3 -0
- package/dist/frontend/lowering/runtime-optional-guards.js +35 -7
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +59 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/stable-names.d.ts +8 -0
- package/dist/frontend/lowering/stable-names.js +22 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -1
- package/dist/frontend/lowering/stable-names.test.d.ts +1 -0
- package/dist/frontend/lowering/stable-names.test.js +16 -0
- package/dist/frontend/lowering/stable-names.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +5 -4
- package/dist/frontend/lowering/static-typeof.js +10 -4
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +22 -0
- package/dist/frontend/lowering/structural-instances.js +282 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +108 -12
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +32 -0
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/type-failure.d.ts +17 -0
- package/dist/frontend/lowering/type-failure.js +163 -0
- package/dist/frontend/lowering/type-failure.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +5 -6
- package/dist/frontend/lowering/typed-arguments.js +10 -2
- package/dist/frontend/lowering/typed-arguments.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.d.ts +9 -1
- package/dist/frontend/lowering/union-narrow.js +31 -2
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +42 -2
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +194 -0
- package/dist/frontend/lowering/unit-journal.js +556 -0
- package/dist/frontend/lowering/unit-journal.js.map +1 -0
- package/dist/frontend/lowering/unit-journal.test.d.ts +1 -0
- package/dist/frontend/lowering/unit-journal.test.js +335 -0
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +19 -0
- package/dist/frontend/node-api-import.d.ts +21 -0
- package/dist/frontend/node-api-import.js +88 -0
- package/dist/frontend/node-api-import.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.js +4 -3
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -1
- package/dist/frontend/npm-static.js +9 -2
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +6 -2
- package/dist/frontend/package-shims.js +13 -2
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +11 -4
- package/dist/frontend/pipeline.js +249 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +3 -0
- package/dist/frontend/process-fork.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -0
- package/dist/frontend/program-analysis.js +4 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +12 -1
- package/dist/frontend/program.js +256 -36
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.js +8 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +23 -1
- package/dist/frontend/shape-inference/analyze.js +982 -97
- package/dist/frontend/shape-inference/analyze.js.map +1 -1
- package/dist/frontend/shape-inference/constant-graphs.d.ts +2 -0
- package/dist/frontend/shape-inference/constant-graphs.js +39 -4
- package/dist/frontend/shape-inference/constant-graphs.js.map +1 -1
- package/dist/frontend/shape-inference/domain.d.ts +2 -0
- package/dist/frontend/shape-inference/domain.js.map +1 -1
- package/dist/frontend/shape-inference/fallback.d.ts +17 -0
- package/dist/frontend/shape-inference/fallback.js +303 -0
- package/dist/frontend/shape-inference/fallback.js.map +1 -0
- package/dist/frontend/shape-inference/index.d.ts +75 -1
- package/dist/frontend/shape-inference/index.js +531 -2
- package/dist/frontend/shape-inference/index.js.map +1 -1
- package/dist/frontend/shape-inference/inferred-checks.d.ts +2 -0
- package/dist/frontend/shape-inference/inferred-checks.js +90 -0
- package/dist/frontend/shape-inference/inferred-checks.js.map +1 -0
- package/dist/frontend/shape-inference/memo.d.ts +30 -0
- package/dist/frontend/shape-inference/memo.js +99 -0
- package/dist/frontend/shape-inference/memo.js.map +1 -0
- package/dist/frontend/shape-inference/overlay.d.ts +81 -0
- package/dist/frontend/shape-inference/overlay.js +1160 -0
- package/dist/frontend/shape-inference/overlay.js.map +1 -0
- package/dist/frontend/shape-inference/registry.test.d.ts +1 -0
- package/dist/frontend/shape-inference/registry.test.js +34 -0
- package/dist/frontend/shape-inference/registry.test.js.map +1 -0
- package/dist/frontend/shape-inference/report.js +42 -8
- package/dist/frontend/shape-inference/report.js.map +1 -1
- package/dist/frontend/shape-inference/static-objects.d.ts +29 -0
- package/dist/frontend/shape-inference/static-objects.js +1951 -0
- package/dist/frontend/shape-inference/static-objects.js.map +1 -0
- package/dist/frontend/tier-analysis.d.ts +53 -1
- package/dist/frontend/tier-analysis.js +133 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- package/dist/frontend/ts7/api.js +4 -2
- package/dist/frontend/ts7/api.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +9 -0
- package/dist/frontend/ts7/ast-node.js +42 -10
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +23 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire-protocols.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-wire-protocols.test.js +93 -0
- package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.d.ts +18 -0
- package/dist/frontend/ts7/ast-wire.js +66 -4
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/checker-server.d.ts +12 -11
- package/dist/frontend/ts7/checker-server.js +28 -12
- package/dist/frontend/ts7/checker-server.js.map +1 -1
- package/dist/frontend/ts7/checker-server.test.js +8 -3
- package/dist/frontend/ts7/checker-server.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +4 -0
- package/dist/frontend/ts7/checker.js +9 -0
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +216 -205
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +71 -4
- package/dist/frontend/ts7/lib-diagnostics.js +337 -20
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.test.js +268 -5
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -1
- package/dist/frontend/ts7/native-api.d.ts +4 -0
- package/dist/frontend/ts7/native-api.js +36 -1
- package/dist/frontend/ts7/native-api.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +19 -2
- package/dist/frontend/ts7/program-host.js +69 -9
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +42 -1
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-filesystem.d.ts +4 -2
- package/dist/frontend/ts7/rpc-filesystem.js +23 -2
- package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
- package/dist/frontend/ts7/rpc-filesystem.test.js +28 -2
- package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.js +73 -5
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +106 -74
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +2 -6
- package/dist/frontend/ts7/semantic-model-71.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-model-71.test.js +131 -0
- package/dist/frontend/ts7/semantic-model-71.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.d.ts +121 -3
- package/dist/frontend/ts7/semantic-model.js +245 -8
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +19 -1
- package/dist/frontend/ts7/session.js +111 -11
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +259 -239
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/test-servers.d.ts +12 -0
- package/dist/frontend/ts7/test-servers.js +16 -0
- package/dist/frontend/ts7/test-servers.js.map +1 -0
- package/dist/frontend/tsc-codes.js +6 -3
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +61 -1
- package/dist/frontend/type-mapper.js +577 -28
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-patches/command.d.ts +19 -0
- package/dist/frontend/type-patches/command.js +352 -0
- package/dist/frontend/type-patches/command.js.map +1 -0
- package/dist/frontend/type-patches/layer.d.ts +45 -0
- package/dist/frontend/type-patches/layer.js +409 -0
- package/dist/frontend/type-patches/layer.js.map +1 -0
- package/dist/frontend/type-patches/locate.d.ts +41 -0
- package/dist/frontend/type-patches/locate.js +914 -0
- package/dist/frontend/type-patches/locate.js.map +1 -0
- package/dist/frontend/type-patches/locate.test.d.ts +1 -0
- package/dist/frontend/type-patches/locate.test.js +179 -0
- package/dist/frontend/type-patches/locate.test.js.map +1 -0
- package/dist/frontend/type-patches/selector.d.ts +43 -0
- package/dist/frontend/type-patches/selector.js +126 -0
- package/dist/frontend/type-patches/selector.js.map +1 -0
- package/dist/frontend/type-patches/selector.test.d.ts +1 -0
- package/dist/frontend/type-patches/selector.test.js +56 -0
- package/dist/frontend/type-patches/selector.test.js.map +1 -0
- package/dist/frontend/type-patches/semver.d.ts +19 -0
- package/dist/frontend/type-patches/semver.js +221 -0
- package/dist/frontend/type-patches/semver.js.map +1 -0
- package/dist/frontend/type-patches/semver.test.d.ts +1 -0
- package/dist/frontend/type-patches/semver.test.js +47 -0
- package/dist/frontend/type-patches/semver.test.js.map +1 -0
- package/dist/frontend/worker-target.test.js +2 -2
- package/dist/frontend/worker-target.test.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +292 -27
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +51 -5
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +4 -3
- package/dist/ir/builtin-signatures.js +277 -12
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.js +108 -67
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +7 -1
- package/dist/ir/capture-values.js +28 -5
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.js +38 -42
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/expression-inlining.js +12 -6
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +751 -0
- package/dist/ir/fields.generated.js +2071 -0
- package/dist/ir/fields.generated.js.map +1 -0
- package/dist/ir/fields.test.d.ts +1 -0
- package/dist/ir/fields.test.js +113 -0
- package/dist/ir/fields.test.js.map +1 -0
- package/dist/ir/function-references.js +4 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +25 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/inline-array-sources.d.ts +15 -0
- package/dist/ir/inline-array-sources.js +1825 -0
- package/dist/ir/inline-array-sources.js.map +1 -0
- package/dist/ir/inline-arrays.d.ts +41 -0
- package/dist/ir/inline-arrays.js +533 -0
- package/dist/ir/inline-arrays.js.map +1 -0
- package/dist/ir/inline-arrays.test.d.ts +1 -0
- package/dist/ir/inline-arrays.test.js +225 -0
- package/dist/ir/inline-arrays.test.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +6 -0
- package/dist/ir/int32-slots.js +154 -16
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +48 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +12 -0
- package/dist/ir/integer-loops.js +23 -0
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +7 -1
- package/dist/ir/integer-ranges.js +29 -2
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +2 -1
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +103 -5
- package/dist/ir/ir.js +38 -4
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +134 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/jsval.js +211 -29
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/jsval.test.js +120 -0
- package/dist/ir/jsval.test.js.map +1 -1
- package/dist/ir/loop-entry-ranges.d.ts +38 -0
- package/dist/ir/loop-entry-ranges.js +259 -0
- package/dist/ir/loop-entry-ranges.js.map +1 -0
- package/dist/ir/loop-entry-ranges.test.d.ts +1 -0
- package/dist/ir/loop-entry-ranges.test.js +191 -0
- package/dist/ir/loop-entry-ranges.test.js.map +1 -0
- package/dist/ir/node-index.d.ts +3 -0
- package/dist/ir/node-index.js +6 -0
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +9 -6
- package/dist/ir/numeric-call-specialization.js +164 -34
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.js +23 -19
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.js +6 -3
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/receiver-readers.d.ts +10 -0
- package/dist/ir/receiver-readers.js +65 -28
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +9 -1
- package/dist/ir/row-pairs.js +136 -43
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/row-pairs.test.js +25 -5
- package/dist/ir/row-pairs.test.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +33 -1
- package/dist/ir/runtime-features.js +104 -6
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +13 -0
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/saturating-loop-jams.d.ts +24 -0
- package/dist/ir/saturating-loop-jams.js +420 -0
- package/dist/ir/saturating-loop-jams.js.map +1 -0
- package/dist/ir/saturating-loop-jams.test.d.ts +1 -0
- package/dist/ir/saturating-loop-jams.test.js +196 -0
- package/dist/ir/saturating-loop-jams.test.js.map +1 -0
- package/dist/ir/scalar-records.js +9 -3
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.js +2 -1
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/serialize.d.ts +5 -1
- package/dist/ir/serialize.js +7 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +3 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +91 -9
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cache.js +2 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +54 -7
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +3 -0
- package/dist/native/compiler.js +173 -36
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +86 -3
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +20 -2
- package/dist/native/executable-cache.js +17 -10
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/executable-cache.test.js +38 -1
- package/dist/native/executable-cache.test.js.map +1 -1
- package/dist/native/linker-job.d.ts +71 -0
- package/dist/native/linker-job.js +242 -0
- package/dist/native/linker-job.js.map +1 -0
- package/dist/native/linker-job.test.d.ts +1 -0
- package/dist/native/linker-job.test.js +349 -0
- package/dist/native/linker-job.test.js.map +1 -0
- package/dist/native/prepare.js +15 -2
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +10 -15
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +152 -66
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +11 -2
- package/dist/native/toolchain.js +43 -17
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +75 -0
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +37 -0
- package/dist/node-islands/boundary.js +135 -0
- package/dist/node-islands/boundary.js.map +1 -0
- package/dist/node-islands/classify.js +1 -1
- package/dist/node-islands/classify.js.map +1 -1
- package/dist/node-islands/effect-gate.d.ts +11 -0
- package/dist/node-islands/effect-gate.js +746 -0
- package/dist/node-islands/effect-gate.js.map +1 -0
- package/dist/node-islands/effect-gate.test.d.ts +1 -0
- package/dist/node-islands/effect-gate.test.js +152 -0
- package/dist/node-islands/effect-gate.test.js.map +1 -0
- package/dist/node-islands/libnode-pack.d.ts +68 -0
- package/dist/node-islands/libnode-pack.js +199 -0
- package/dist/node-islands/libnode-pack.js.map +1 -0
- package/dist/node-islands/libnode-pack.test.d.ts +1 -0
- package/dist/node-islands/libnode-pack.test.js +258 -0
- package/dist/node-islands/libnode-pack.test.js.map +1 -0
- package/dist/node-islands/libnode.d.ts +32 -0
- package/dist/node-islands/libnode.js +212 -0
- package/dist/node-islands/libnode.js.map +1 -0
- package/dist/node-islands/libnode.test.d.ts +1 -0
- package/dist/node-islands/libnode.test.js +170 -0
- package/dist/node-islands/libnode.test.js.map +1 -0
- package/dist/node-islands/modules.d.ts +96 -0
- package/dist/node-islands/modules.js +803 -0
- package/dist/node-islands/modules.js.map +1 -0
- package/dist/node-islands/modules.test.d.ts +1 -0
- package/dist/node-islands/modules.test.js +276 -0
- package/dist/node-islands/modules.test.js.map +1 -0
- package/dist/node-islands/resolve.d.ts +8 -0
- package/dist/node-islands/resolve.js +10 -0
- package/dist/node-islands/resolve.js.map +1 -0
- package/dist/node-islands/snapshot.d.ts +16 -0
- package/dist/node-islands/snapshot.js +486 -0
- package/dist/node-islands/snapshot.js.map +1 -0
- package/dist/node-islands/snapshot.test.d.ts +1 -0
- package/dist/node-islands/snapshot.test.js +56 -0
- package/dist/node-islands/snapshot.test.js.map +1 -0
- package/dist/project-config.d.ts +37 -1
- package/dist/project-config.js +159 -7
- package/dist/project-config.js.map +1 -1
- package/dist/project-config.test.js +153 -0
- package/dist/project-config.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/package.json +24 -21
- package/surface-manifest.json +47 -7
|
@@ -1,21 +1,28 @@
|
|
|
1
|
+
import { widensReducedRecords } from "../function-returns.js";
|
|
2
|
+
import { widthNarrowHelper } from "../coercions/unions.js";
|
|
1
3
|
/* Property reads (`a.b`): lowerExprInner's property-access branch, intrinsic and union properties, field reads and targets, and match-group reads. */
|
|
4
|
+
import { jsSpecialGlobalValue } from "../global-values.js";
|
|
5
|
+
import { arrayClassMemberOwner, arrayClassReceiver, lowerArrayClassConstructorRead, } from "../builtins/array-classes.js";
|
|
2
6
|
import { indexedUnionArms, lowerIndexedUnionMember } from "../indexed-unions.js";
|
|
3
7
|
import { keyedHelperName } from "../stable-names.js";
|
|
4
8
|
import { builtinNamespaceValue } from "../builtin-namespaces.js";
|
|
5
9
|
import { staticallySelected } from "../static-typeof.js";
|
|
10
|
+
import { lowerWebStreamClassRead } from "../builtins/web-streams-dyn.js";
|
|
6
11
|
import * as ts from "../../ts7/adapter.js";
|
|
7
12
|
import { lowerHistogramProperty } from "../builtins/performance.js";
|
|
8
13
|
import { staticFunctionNameRead } from "../static-function-names.js";
|
|
9
14
|
import { typedArgumentsArity } from "../typed-arguments.js";
|
|
15
|
+
import { INSPECT_CUSTOM_DESCRIPTION, isInspectCustomAccess } from "../symbol-fields.js";
|
|
10
16
|
import { isThisParameter } from "../call-signatures.js";
|
|
11
17
|
import { argumentCountSlot, contextualCallCount, usedAsValue } from "../argument-counts.js";
|
|
12
18
|
import { checkedPrivateValue, localPrivateBrandClass, privateNameClass, } from "../private-brands.js";
|
|
13
|
-
import { PoisonError, jsFuncNameOf, neverTaintedJsType, own } from "../lowerer.js";
|
|
19
|
+
import { PoisonError, builtinValueNameOf, jsFuncNameOf, neverTaintedJsType, own, } from "../lowerer.js";
|
|
14
20
|
import { ARRAY_METHODS, MAP_METHODS, NARROW_FIRST, OBJECT_CALLABLE_VALUES, SET_METHODS, STDLIB_SURFACE, STRING_INDEX_METHODS, STR_METHODS, isChildSurfaceMember, stdlibGlobalNameOf, } from "../surfaces.js";
|
|
15
21
|
import { isGenericCallableMemberType, isLegacyUrlSymbol, isOsConstantsType, isParseArgsDynTypeName, } from "../../type-mapper.js";
|
|
16
|
-
import {
|
|
17
|
-
import { lowerNavigatorMember } from "../builtins/navigator.js";
|
|
22
|
+
import { BIGINT_T, BOOL, BYTES_U8, DYN, F64, NULL_T, SEARCH_PARAMS_T, STRING, SYMBOL_T, UNDEFINED_T, arrayOf, canBoxFuncIntoDyn, funcOf, isDynTypedRefType, isUnitType, typeEquals, typeKey, unionContainerArmsOk, BYTES_ELEMENT_SIZE, } from "../../../ir/ir.js";
|
|
23
|
+
import { lowerNavigatorMember, navigatorValue } from "../builtins/navigator.js";
|
|
18
24
|
import { lowerX509PublicKey } from "../builtins/x509.js";
|
|
25
|
+
import { fenceMimeStaticRead } from "../builtins/mime.js";
|
|
19
26
|
import { NODE_COMPAT_VERSION } from "../builtins/process.js";
|
|
20
27
|
import { inlineNamespaceRequireOf, lowerWithInlineRequireInit, wholeExportValue, } from "../cjs-inline-require.js";
|
|
21
28
|
import { cjsAccessorCall, constInitializerOf, exactUnionWidening, hasClassPayload, lowerExpr, matchAllCallbackRegexOf, matchAllRegexOf, namedCaptureGroupsOfPattern, primitiveCtorClosure, recordKeyResultOk, representedClassFieldTarget, staticRegexPatternOf, } from "../lower-exprs.js";
|
|
@@ -35,6 +42,8 @@ import { dynUndefinedExpr, nodeThrowExpr, numLit, strLit, varRef } from "../../.
|
|
|
35
42
|
import { typedArrayLacksMember } from "../builtins/typed-array-members.js";
|
|
36
43
|
import { TEMPORAL_GLOBAL } from "../../builtin-modules.js";
|
|
37
44
|
import { tryLowerExpression } from "./try-lower-expression.js";
|
|
45
|
+
import { applyDeferredAssertion, assertedReceiverNode, deferredMemberReadTarget, deferredProbeReadAccess, } from "./asserted-receiver.js";
|
|
46
|
+
import { lowerRecordInheritedMember } from "../record-inherited.js";
|
|
38
47
|
import { DATE_METHOD_HINT } from "../builtins/dates.js";
|
|
39
48
|
import { cjsClassExprWholeExportOf, cjsExportAssignmentOf, cjsExportDiscardReason, isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, isNodeEsmFile, locOf, } from "../../program.js";
|
|
40
49
|
import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, contextualUndefReadType, fenceEarlyNsMemberRef, nsMemberIdentOf, nsUndefRead, } from "../lower-namespaces.js";
|
|
@@ -53,7 +62,7 @@ import { blockedBindingUseDiag } from "../../../diagnostics/diagnostic.js";
|
|
|
53
62
|
import { npmStaticPackageOfPath } from "../../npm-static.js";
|
|
54
63
|
import { importMetaField, isImportMeta } from "../import-meta.js";
|
|
55
64
|
import { createRequireCalleeFileOf } from "../builtins/module-bindings.js";
|
|
56
|
-
import { createRequireResolveFenceValue } from "../builtins/module-resolution.js";
|
|
65
|
+
import { createRequireResolveFenceValue, createRequireResolveValue, } from "../builtins/module-resolution.js";
|
|
57
66
|
import { builtinPrototypeMethod, lowerArrayIsArrayValue, lowerCheckedPredicateValue, lowerNumberParserValue, lowerObjectAssignValue, lowerStringCodesValue, } from "../lower-builtin-values.js";
|
|
58
67
|
import { lowerArrayFromValue } from "../containers/array-construction.js";
|
|
59
68
|
import { lowerBufferPrototypeMember } from "../containers/bytes.js";
|
|
@@ -171,11 +180,15 @@ function isCreateRequireResolveValue(lowerer, expr) {
|
|
|
171
180
|
ts.isPropertyAccessExpression(expr.expression) &&
|
|
172
181
|
!expr.expression.questionDotToken)
|
|
173
182
|
resolve = expr.expression;
|
|
174
|
-
return (
|
|
183
|
+
return (!expr.questionDotToken &&
|
|
184
|
+
ts.isPropertyAccessExpression(resolve) &&
|
|
175
185
|
resolve.name.text === "resolve" &&
|
|
176
186
|
createRequireCalleeFileOf(lowerer, resolve.expression) !== null);
|
|
177
187
|
}
|
|
178
188
|
export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
189
|
+
const arrayClassConstructor = lowerArrayClassConstructorRead(lowerer, expr, loc);
|
|
190
|
+
if (arrayClassConstructor !== null)
|
|
191
|
+
return arrayClassConstructor;
|
|
179
192
|
// `value.#x` on a checked-dynamic value, or on a checked extraction of
|
|
180
193
|
// one: the field of the brand-checked receiver (checkedPrivateValue).
|
|
181
194
|
if (ts.isPrivateIdentifier(expr.name)) {
|
|
@@ -199,6 +212,16 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
199
212
|
const navigator = lowerNavigatorMember(lowerer, expr, NODE_COMPAT_VERSION);
|
|
200
213
|
if (navigator)
|
|
201
214
|
return navigator;
|
|
215
|
+
// util.inspect.custom: Symbol.for('nodejs.util.inspect.custom').
|
|
216
|
+
if (isInspectCustomAccess(lowerer, expr)) {
|
|
217
|
+
return {
|
|
218
|
+
kind: "libCall",
|
|
219
|
+
fn: "sym.for",
|
|
220
|
+
args: [{ kind: "strLit", value: INSPECT_CUSTOM_DESCRIPTION, type: STRING, loc }],
|
|
221
|
+
type: SYMBOL_T,
|
|
222
|
+
loc,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
202
225
|
{
|
|
203
226
|
const member = lowerBufferPrototypeMember(lowerer, expr);
|
|
204
227
|
if (member)
|
|
@@ -439,6 +462,12 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
439
462
|
if (lowerer.stdlibGlobalMember(expr, "globalThis") === "console") {
|
|
440
463
|
return { kind: "libCall", fn: "console.native", args: [], type: DYN, loc };
|
|
441
464
|
}
|
|
465
|
+
{
|
|
466
|
+
// `globalThis.ReadableStream` in JavaScript: the class value.
|
|
467
|
+
const webStream = lowerWebStreamClassRead(lowerer, expr);
|
|
468
|
+
if (webStream)
|
|
469
|
+
return webStream;
|
|
470
|
+
}
|
|
442
471
|
if (lowerer.stdlibGlobalMember(expr, "console") !== null) {
|
|
443
472
|
return {
|
|
444
473
|
kind: "dynKeyGet",
|
|
@@ -458,7 +487,8 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
458
487
|
// (`(_a = globalThis).__config ?? (_a.__config = {})`) reads back from
|
|
459
488
|
// the global object's own properties.
|
|
460
489
|
const globalType = lowerer.typeOf(staticallySelected(lowerer, expr.expression));
|
|
461
|
-
if (globalThisWrittenNames(lowerer, globalType).has(expr.name.text)
|
|
490
|
+
if (globalThisWrittenNames(lowerer, globalType).has(expr.name.text) ||
|
|
491
|
+
lowerer.globalThisComputedWrite) {
|
|
462
492
|
return {
|
|
463
493
|
kind: "dynKeyGet",
|
|
464
494
|
value: lowerer.coerceToExpected(lowerer.lowerExpr(expr.expression), DYN),
|
|
@@ -467,6 +497,10 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
467
497
|
loc,
|
|
468
498
|
};
|
|
469
499
|
}
|
|
500
|
+
// Node's navigator, which JavaScript reads as a free name when no
|
|
501
|
+
// declaration types it (isNavigatorGlobal).
|
|
502
|
+
if (expr.name.text === "navigator" && isJsSourceFile(ts.getSourceFileOfNode(expr)))
|
|
503
|
+
return navigatorValue(loc);
|
|
470
504
|
return dynUndefinedExpr(loc);
|
|
471
505
|
}
|
|
472
506
|
// `Uint8Array.prototype.toBase64` and its siblings, the base64/hex
|
|
@@ -769,6 +803,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
769
803
|
// prototype that no lowering above claimed keeps the SC2020 fence
|
|
770
804
|
// rather than reading undefined through the field and dynamic reads.
|
|
771
805
|
fenceBuiltinConstructorStaticRead(lowerer, expr) ??
|
|
806
|
+
fenceMimeStaticRead(lowerer, expr) ??
|
|
772
807
|
lowerer.lowerFieldRead(expr);
|
|
773
808
|
// A union-typed field read narrows like an identifier when the
|
|
774
809
|
// checker has narrowed this use to one arm.
|
|
@@ -810,18 +845,9 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
810
845
|
// Typed for the programs that name it, absent in Node 24.
|
|
811
846
|
if (canonical === TEMPORAL_GLOBAL)
|
|
812
847
|
return dynUndefinedExpr(loc);
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
return { kind: "libCall", fn: "fetch.function", args: [], type: DYN, loc };
|
|
817
|
-
if (Object.values(BYTES_ELEMENT_NAME).includes(canonical))
|
|
818
|
-
return {
|
|
819
|
-
kind: "libCall",
|
|
820
|
-
fn: "bytes.constructor",
|
|
821
|
-
args: [{ kind: "strLit", value: canonical, type: STRING, loc }],
|
|
822
|
-
type: DYN,
|
|
823
|
-
loc,
|
|
824
|
-
};
|
|
848
|
+
const value = jsSpecialGlobalValue(lowerer, canonical, loc);
|
|
849
|
+
if (value)
|
|
850
|
+
return value;
|
|
825
851
|
return (builtinGlobalValueAt(lowerer, expr, canonical, loc, true) ?? {
|
|
826
852
|
kind: "strLit",
|
|
827
853
|
value: `[builtin ${canonical}]`,
|
|
@@ -973,12 +999,14 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
973
999
|
if ((isJsSourceFile(ts.getSourceFileOfNode(expr)) || expr.name.text === "constructor") &&
|
|
974
1000
|
probed?.type.kind === "func" &&
|
|
975
1001
|
canBoxFuncIntoDyn(probed.type, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))) {
|
|
976
|
-
const
|
|
977
|
-
//
|
|
978
|
-
//
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
1002
|
+
// A function is named by its definition, through const aliases: a
|
|
1003
|
+
// builtin module member whose Node name differs from the member
|
|
1004
|
+
// (`process.cwd` is `wrappedCwd`) by the module table, anything else
|
|
1005
|
+
// by the property or function it reads. A builtin function value
|
|
1006
|
+
// keeps its length when that is not its adapter's parameter count
|
|
1007
|
+
// (`Math.max.length` is 2).
|
|
1008
|
+
const fnName = builtinValueNameOf(expr.expression, lowerer) ?? jsFuncNameOf(expr.expression, lowerer);
|
|
1009
|
+
const fnLength = lowerer.builtinFunctionIdentity(probed).fnLength;
|
|
982
1010
|
const boxed = {
|
|
983
1011
|
kind: "dynFrom",
|
|
984
1012
|
value: probed,
|
|
@@ -1124,10 +1152,13 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
1124
1152
|
}
|
|
1125
1153
|
}
|
|
1126
1154
|
// A createRequire loader's resolve read as a value (passed on, or
|
|
1127
|
-
// picked by `??`):
|
|
1128
|
-
//
|
|
1155
|
+
// picked by `??`): a function that resolves its request at run time.
|
|
1156
|
+
// resolve.paths read as a value has no run-time lowering: a function
|
|
1157
|
+
// that throws the fence when called.
|
|
1129
1158
|
if (isCreateRequireResolveValue(lowerer, expr))
|
|
1130
|
-
return
|
|
1159
|
+
return expr.name.text === "paths"
|
|
1160
|
+
? createRequireResolveFenceValue(lowerer, expr, loc)
|
|
1161
|
+
: createRequireResolveValue(lowerer, expr, loc);
|
|
1131
1162
|
// The lib fence's PROPERTY chokepoint: a stdlib-declared member that
|
|
1132
1163
|
// no lowering above claimed ([1,2].entries, Math.SQRT2, Promise.all,
|
|
1133
1164
|
// re.exec as a value, ...) reports SC2020 here.
|
|
@@ -1153,7 +1184,41 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
1153
1184
|
// honest one, not a generic recitation about the outer dot. A
|
|
1154
1185
|
// receiver that lowers cleanly means the MEMBER is the gap — name
|
|
1155
1186
|
// the property and the receiver's type instead of "property access".
|
|
1156
|
-
|
|
1187
|
+
let recvLowered = lowerer.lowerExpr(expr.expression);
|
|
1188
|
+
// A PRESENCE PROBE of a member read through an erased assertion
|
|
1189
|
+
// (`typeof (u as R).member`, `(u as R).member !== undefined`): Node
|
|
1190
|
+
// reads the property off the value actually stored, so an arm that does
|
|
1191
|
+
// not declare it answers undefined. lowerAsExpression deferred the
|
|
1192
|
+
// assertion's checked extraction for this read; answer it per arm
|
|
1193
|
+
// (assertedMemberRead), and only a member with no per-arm answer applies
|
|
1194
|
+
// the extraction the assertion would otherwise have taken (a lying
|
|
1195
|
+
// assertion still throws on a real use, never on the probe).
|
|
1196
|
+
{
|
|
1197
|
+
const assertion = assertedReceiverNode(expr.expression);
|
|
1198
|
+
const target = assertion
|
|
1199
|
+
? deferredMemberReadTarget(lowerer, assertion, expr, recvLowered)
|
|
1200
|
+
: null;
|
|
1201
|
+
if (target !== null) {
|
|
1202
|
+
const read = assertedMemberRead(lowerer, expr.expression, expr.name.text, recvLowered, loc);
|
|
1203
|
+
if (read)
|
|
1204
|
+
return read;
|
|
1205
|
+
recvLowered = applyDeferredAssertion(lowerer, recvLowered, target, loc);
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
// A receiver whose value union holds record types the checker's subtype
|
|
1209
|
+
// reduction folded into its type (`{ status } | { status, value }` typed
|
|
1210
|
+
// `{ status }`, a call of a function with an inferred return type): read
|
|
1211
|
+
// through the checker's type, converting the wider arms.
|
|
1212
|
+
if (recvLowered.type.kind === "union") {
|
|
1213
|
+
const declared = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
|
|
1214
|
+
if (declared !== null &&
|
|
1215
|
+
declared.kind === "record" &&
|
|
1216
|
+
widensReducedRecords(lowerer, declared, recvLowered.type)) {
|
|
1217
|
+
const helper = widthNarrowHelper(lowerer, recvLowered.type.unionId, declared, loc);
|
|
1218
|
+
if (helper !== null)
|
|
1219
|
+
recvLowered = lowerer.checkedNarrowCall(helper, recvLowered, declared, loc);
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1157
1222
|
// A dyn receiver — JSON.parse's `any`, or `unknown` the checker
|
|
1158
1223
|
// narrowed to `object` — reads through the dyn keyed read: member
|
|
1159
1224
|
// or undefined (JS's own-property answer), throwing JS's TypeError
|
|
@@ -1295,7 +1360,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
1295
1360
|
const mapped = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
1296
1361
|
return mapped && mapped.kind !== "void" ? lowerer.coerceInto(expr, read, mapped) : read;
|
|
1297
1362
|
}
|
|
1298
|
-
const asserted = assertedMemberRead(lowerer, expr, recvLowered, loc);
|
|
1363
|
+
const asserted = assertedMemberRead(lowerer, expr.expression, expr.name.text, recvLowered, loc);
|
|
1299
1364
|
if (asserted)
|
|
1300
1365
|
return asserted;
|
|
1301
1366
|
// A checker-`any` receiver whose value is a FRESH typed result of an
|
|
@@ -1371,14 +1436,17 @@ function isFreshCallResult(node) {
|
|
|
1371
1436
|
/** `(source as { repoName: string }).repoName` where the assertion names a
|
|
1372
1437
|
* member some arms of the stored union of records do not declare: Node
|
|
1373
1438
|
* reads the property off whichever object it is, so arms that declare it
|
|
1374
|
-
* answer their slot
|
|
1375
|
-
*
|
|
1376
|
-
*
|
|
1377
|
-
*
|
|
1378
|
-
*
|
|
1379
|
-
*
|
|
1380
|
-
|
|
1381
|
-
|
|
1439
|
+
* answer their slot (a getter arm calls its getter), an index-signature arm
|
|
1440
|
+
* answers its own key (a declared miss reads undefined), an arm with only a
|
|
1441
|
+
* setter of that name reads undefined, and the rest answer undefined
|
|
1442
|
+
* (native records are closed, so they cannot hold it). The result keeps
|
|
1443
|
+
* that undefined arm whatever the assertion claims; a consumer that needs
|
|
1444
|
+
* the asserted type checks it like any other narrowing. The arms that
|
|
1445
|
+
* declare the member must agree on its type. `receiverNode` is the asserted
|
|
1446
|
+
* expression and `name` the member read (the dot and bracket spellings
|
|
1447
|
+
* share this answer). Null when the receiver is not such an assertion over
|
|
1448
|
+
* records, or no arm answers the member. */
|
|
1449
|
+
export function assertedMemberRead(lowerer, receiverNode, name, recv, loc) {
|
|
1382
1450
|
while (ts.isParenthesizedExpression(receiverNode))
|
|
1383
1451
|
receiverNode = receiverNode.expression;
|
|
1384
1452
|
if (!ts.isAsExpression(receiverNode) && !ts.isTypeAssertion(receiverNode))
|
|
@@ -1387,10 +1455,14 @@ function assertedMemberRead(lowerer, expr, recv, loc) {
|
|
|
1387
1455
|
return null;
|
|
1388
1456
|
const unionId = recv.type.unionId;
|
|
1389
1457
|
const arms = lowerer.unions.get(unionId)?.arms ?? [];
|
|
1390
|
-
const name = expr.name.text;
|
|
1391
1458
|
let resultType = null;
|
|
1392
1459
|
let records = 0;
|
|
1460
|
+
// A getter arm answers by calling its getter, once per read, as Node's
|
|
1461
|
+
// read does; a data arm reads its slot.
|
|
1393
1462
|
const declaring = [];
|
|
1463
|
+
// An index-signature arm may hold the key in its overflow map: the read
|
|
1464
|
+
// probes it per value (the stored value, or undefined).
|
|
1465
|
+
const keyed = [];
|
|
1394
1466
|
const units = [];
|
|
1395
1467
|
for (let tag = 0; tag < arms.length; tag++) {
|
|
1396
1468
|
const arm = arms[tag];
|
|
@@ -1402,20 +1474,44 @@ function assertedMemberRead(lowerer, expr, recv, loc) {
|
|
|
1402
1474
|
return null;
|
|
1403
1475
|
records++;
|
|
1404
1476
|
const shape = lowerer.shapes.get(arm.shapeId);
|
|
1405
|
-
if (!shape || shape.tuple
|
|
1477
|
+
if (!shape || shape.tuple)
|
|
1406
1478
|
return null;
|
|
1407
|
-
const
|
|
1408
|
-
if (
|
|
1479
|
+
const getter = shape.fields.find((f) => f.name === `%get:${name}`);
|
|
1480
|
+
if (getter && getter.type.kind !== "func")
|
|
1481
|
+
return null;
|
|
1482
|
+
const field = getter ?? shape.fields.find((f) => f.name === name);
|
|
1483
|
+
if (!field) {
|
|
1484
|
+
// A setter-only arm reads undefined (Node never invokes a setter on
|
|
1485
|
+
// a read); an index-signature arm answers its own key.
|
|
1486
|
+
if (shape.indexValue)
|
|
1487
|
+
keyed.push({ tag, shapeId: arm.shapeId, type: shape.indexValue });
|
|
1409
1488
|
continue;
|
|
1489
|
+
}
|
|
1490
|
+
const fieldType = field.type.kind === "func" && getter ? field.type.ret : field.type;
|
|
1410
1491
|
// The declaring arms agree up to an undefined arm (`string` beside
|
|
1411
1492
|
// `string | undefined`).
|
|
1412
|
-
const armResult = lowerer.withUndefinedArmOf(
|
|
1493
|
+
const armResult = lowerer.withUndefinedArmOf(fieldType);
|
|
1413
1494
|
if (!armResult || (resultType && !typeEquals(resultType, armResult)))
|
|
1414
1495
|
return null;
|
|
1415
1496
|
resultType = armResult;
|
|
1416
|
-
declaring.push({ tag, shapeId: arm.shapeId, type: field.type });
|
|
1497
|
+
declaring.push({ tag, shapeId: arm.shapeId, type: field.type, getter: getter !== undefined });
|
|
1498
|
+
}
|
|
1499
|
+
// The index-signature arms answer their value type armed with undefined;
|
|
1500
|
+
// a union with several shapes uses the union of every arm's answer.
|
|
1501
|
+
for (const k of keyed) {
|
|
1502
|
+
const armResult = lowerer.withUndefinedArmOf(k.type);
|
|
1503
|
+
if (!armResult)
|
|
1504
|
+
return null;
|
|
1505
|
+
if (resultType === null || typeEquals(resultType, armResult)) {
|
|
1506
|
+
resultType = armResult;
|
|
1507
|
+
continue;
|
|
1508
|
+
}
|
|
1509
|
+
const merged = mergeReadTypes(lowerer, [resultType, armResult]);
|
|
1510
|
+
if (!merged)
|
|
1511
|
+
return null;
|
|
1512
|
+
resultType = merged;
|
|
1417
1513
|
}
|
|
1418
|
-
if (!resultType || declaring.length === records)
|
|
1514
|
+
if (!resultType || (declaring.length === records && declaring.every((d) => !d.getter)))
|
|
1419
1515
|
return null;
|
|
1420
1516
|
const stable = lowerer.declareHiddenLocal("%assertedRecv", recv.type);
|
|
1421
1517
|
const ref = () => ({ kind: "varRef", localId: stable.id, type: recv.type, loc });
|
|
@@ -1434,15 +1530,41 @@ function assertedMemberRead(lowerer, expr, recv, loc) {
|
|
|
1434
1530
|
loc,
|
|
1435
1531
|
};
|
|
1436
1532
|
}
|
|
1437
|
-
for (const { tag, shapeId, type: fieldType } of declaring) {
|
|
1438
|
-
const
|
|
1533
|
+
for (const { tag, shapeId, type: fieldType, getter } of declaring) {
|
|
1534
|
+
const slot = {
|
|
1439
1535
|
kind: "recordGet",
|
|
1440
1536
|
obj: { kind: "unionNarrow", unionId, tag, value: ref(), type: arms[tag], loc },
|
|
1441
1537
|
shapeId,
|
|
1442
|
-
field: name,
|
|
1538
|
+
field: getter ? `%get:${name}` : name,
|
|
1443
1539
|
type: fieldType,
|
|
1444
1540
|
loc,
|
|
1445
1541
|
};
|
|
1542
|
+
const read = getter && fieldType.kind === "func"
|
|
1543
|
+
? { kind: "callValue", callee: slot, args: [], type: fieldType.ret, loc }
|
|
1544
|
+
: slot;
|
|
1545
|
+
result = {
|
|
1546
|
+
kind: "ternary",
|
|
1547
|
+
cond: { kind: "unionIsTag", unionId, tag, negated: false, value: ref(), type: BOOL, loc },
|
|
1548
|
+
then: lowerer.coerceToExpected(read, resultType),
|
|
1549
|
+
else_: result,
|
|
1550
|
+
type: resultType,
|
|
1551
|
+
loc,
|
|
1552
|
+
};
|
|
1553
|
+
}
|
|
1554
|
+
for (const { tag, shapeId, type: valueType } of keyed) {
|
|
1555
|
+
const axis = { kind: "unionNarrow", unionId, tag, value: ref(), type: arms[tag], loc };
|
|
1556
|
+
const answer = lowerer.withUndefinedArmOf(valueType);
|
|
1557
|
+
if (!answer)
|
|
1558
|
+
return null;
|
|
1559
|
+
const read = {
|
|
1560
|
+
kind: "recordKeyGet",
|
|
1561
|
+
obj: axis,
|
|
1562
|
+
shapeId,
|
|
1563
|
+
key: { kind: "strLit", value: name, type: STRING, loc },
|
|
1564
|
+
overflowOnly: true,
|
|
1565
|
+
type: answer,
|
|
1566
|
+
loc,
|
|
1567
|
+
};
|
|
1446
1568
|
result = {
|
|
1447
1569
|
kind: "ternary",
|
|
1448
1570
|
cond: { kind: "unionIsTag", unionId, tag, negated: false, value: ref(), type: BOOL, loc },
|
|
@@ -1460,6 +1582,23 @@ function assertedMemberRead(lowerer, expr, recv, loc) {
|
|
|
1460
1582
|
loc,
|
|
1461
1583
|
};
|
|
1462
1584
|
}
|
|
1585
|
+
/** The union of two per-arm read answers (each already carries its
|
|
1586
|
+
* undefined arm), or null when the shapes cannot intern as one union. */
|
|
1587
|
+
function mergeReadTypes(lowerer, types) {
|
|
1588
|
+
const arms = [];
|
|
1589
|
+
for (const t of types) {
|
|
1590
|
+
const list = t.kind === "union" ? (lowerer.unions.get(t.unionId)?.arms ?? []) : [t];
|
|
1591
|
+
for (const arm of list)
|
|
1592
|
+
if (!arms.some((a) => typeEquals(a, arm)))
|
|
1593
|
+
arms.push(arm);
|
|
1594
|
+
}
|
|
1595
|
+
if (arms.length === 0)
|
|
1596
|
+
return null;
|
|
1597
|
+
if (arms.length === 1)
|
|
1598
|
+
return arms[0];
|
|
1599
|
+
const canonical = arms.sort((a, b) => typeKey(a) < typeKey(b) ? -1 : typeKey(a) > typeKey(b) ? 1 : 0);
|
|
1600
|
+
return { kind: "union", unionId: lowerer.unions.intern(canonical) };
|
|
1601
|
+
}
|
|
1463
1602
|
function importMetaProperty(lowerer, expr) {
|
|
1464
1603
|
return isImportMeta(expr.expression) ? importMetaField(lowerer, expr, expr.name.text) : null;
|
|
1465
1604
|
}
|
|
@@ -1666,6 +1805,7 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
1666
1805
|
kind !== "url" &&
|
|
1667
1806
|
kind !== "searchParams" &&
|
|
1668
1807
|
kind !== "stats" &&
|
|
1808
|
+
kind !== "bigintStats" &&
|
|
1669
1809
|
kind !== "spawnRes" &&
|
|
1670
1810
|
kind !== "child" &&
|
|
1671
1811
|
kind !== "bytes" &&
|
|
@@ -1745,6 +1885,19 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
1745
1885
|
const receiver = lowerer.lowerExpr(expr.expression);
|
|
1746
1886
|
return { kind: "libCall", fn: "child.killed", args: [receiver], type: BOOL, loc };
|
|
1747
1887
|
}
|
|
1888
|
+
// signalCode: `NodeJS.Signals | null`, the signal that terminated the
|
|
1889
|
+
// child (null while running, after a normal exit, and after a spawn
|
|
1890
|
+
// failure) — the exit listener's second parameter, read as a property.
|
|
1891
|
+
// The `string | null` union builds type-directedly over a has/get
|
|
1892
|
+
// runtime pair (the spawnRes.signal pattern).
|
|
1893
|
+
if (name === "signalCode") {
|
|
1894
|
+
const receiver = lowerer.lowerExpr(expr.expression);
|
|
1895
|
+
const type = {
|
|
1896
|
+
kind: "union",
|
|
1897
|
+
unionId: lowerer.unions.intern([STRING, NULL_T]),
|
|
1898
|
+
};
|
|
1899
|
+
return { kind: "libCall", fn: "child.signalCode", args: [receiver], type, loc };
|
|
1900
|
+
}
|
|
1748
1901
|
if (name === "on" || name === "once" || name === "kill" || name === "unref") {
|
|
1749
1902
|
lowerer.unsupported("SC1090", expr, `child methods as values (call '${name}' directly)`);
|
|
1750
1903
|
}
|
|
@@ -1790,15 +1943,24 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
1790
1943
|
}
|
|
1791
1944
|
lowerer.noLowering(`SpawnSyncReturns.${name}`, expr, "status, stdout, stderr, and error are the supported spawnSync-result members", lowerer.checker.getSymbolAtLocation(expr.name));
|
|
1792
1945
|
}
|
|
1793
|
-
if (kind === "stats") {
|
|
1946
|
+
if (kind === "stats" || kind === "bigintStats") {
|
|
1947
|
+
const bigintStats = kind === "bigintStats";
|
|
1794
1948
|
if (name === "size") {
|
|
1795
1949
|
const receiver = lowerer.lowerExpr(expr.expression);
|
|
1796
|
-
return {
|
|
1950
|
+
return {
|
|
1951
|
+
kind: "libCall",
|
|
1952
|
+
fn: bigintStats ? "bigstats.size" : "stats.size",
|
|
1953
|
+
args: [receiver],
|
|
1954
|
+
type: bigintStats ? BIGINT_T : F64,
|
|
1955
|
+
loc: locOf(expr),
|
|
1956
|
+
};
|
|
1797
1957
|
}
|
|
1798
1958
|
if (Object.hasOwn(STATS_TYPE_TESTS, name)) {
|
|
1799
|
-
lowerer.unsupported("SC1090", expr,
|
|
1959
|
+
lowerer.unsupported("SC1090", expr, `${bigintStats ? "BigIntStats" : "Stats"} methods as values (call '${name}' directly)`);
|
|
1800
1960
|
}
|
|
1801
|
-
lowerer.noLowering(
|
|
1961
|
+
lowerer.noLowering(`${bigintStats ? "BigIntStats" : "Stats"}.${name}`, expr, bigintStats
|
|
1962
|
+
? "BigIntStats' isFile(), isDirectory(), isSymbolicLink(), isBlockDevice(), isCharacterDevice(), isFIFO(), isSocket(), dev, mode, nlink, uid, gid, rdev, blksize, ino, size, blocks, atimeNs, mtimeNs, ctimeNs, birthtimeNs, atimeMs, mtimeMs, ctimeMs, birthtimeMs, atime, mtime, ctime, and birthtime are the supported members"
|
|
1963
|
+
: "isFile(), isDirectory(), isSymbolicLink(), isBlockDevice(), isCharacterDevice(), isFIFO(), isSocket(), dev, mode, nlink, uid, gid, rdev, blksize, ino, size, blocks, atimeMs, mtimeMs, ctimeMs, birthtimeMs, atime, mtime, ctime, and birthtime are the supported Stats members", lowerer.checker.getSymbolAtLocation(expr.name));
|
|
1802
1964
|
}
|
|
1803
1965
|
if (kind === "date") {
|
|
1804
1966
|
// A Date held as a checked-dynamic value (a Date a JavaScript file
|
|
@@ -2696,6 +2858,23 @@ export function lowerGroupsProjection(lowerer, recv, groups, loc) {
|
|
|
2696
2858
|
}
|
|
2697
2859
|
/** Field reads use the shared FieldTarget union. Native method reads select
|
|
2698
2860
|
* an interned unbound callable; invocation supplies its receiver separately. */
|
|
2861
|
+
/** Whether a receiver is a binding or `this`, or a chain of property reads
|
|
2862
|
+
* from one whose every member is a plain property (no accessor), so that
|
|
2863
|
+
* reading it has no effect. */
|
|
2864
|
+
function plainReadChain(lowerer, node) {
|
|
2865
|
+
let current = node;
|
|
2866
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
2867
|
+
if (current.questionDotToken)
|
|
2868
|
+
return false;
|
|
2869
|
+
const member = lowerer.checker.getSymbolAtLocation(current.name);
|
|
2870
|
+
if (member === undefined || (member.flags & ts.SymbolFlags.Property) === 0)
|
|
2871
|
+
return false;
|
|
2872
|
+
if ((member.flags & (ts.SymbolFlags.GetAccessor | ts.SymbolFlags.SetAccessor)) !== 0)
|
|
2873
|
+
return false;
|
|
2874
|
+
current = current.expression;
|
|
2875
|
+
}
|
|
2876
|
+
return ts.isIdentifier(current) || current.kind === ts.SyntaxKind.ThisKeyword;
|
|
2877
|
+
}
|
|
2699
2878
|
export function lowerFieldRead(lowerer, expr) {
|
|
2700
2879
|
// A checked receiver already owns its property table. An ambient
|
|
2701
2880
|
// generic method signature must not divert its value into native
|
|
@@ -2717,6 +2896,13 @@ export function lowerFieldRead(lowerer, expr) {
|
|
|
2717
2896
|
};
|
|
2718
2897
|
}
|
|
2719
2898
|
}
|
|
2899
|
+
// A presence probe of a member read through a record assertion
|
|
2900
|
+
// (`typeof (u as R).member`): the field target comes from the ASSERTED
|
|
2901
|
+
// checker type and would apply the checked extraction, trapping on the
|
|
2902
|
+
// very arm the probe exists to detect. Leave the read to the per-arm
|
|
2903
|
+
// answer in lowerPropertyAccessExpr (asserted-receiver.ts).
|
|
2904
|
+
if (deferredProbeReadAccess(lowerer, expr))
|
|
2905
|
+
return null;
|
|
2720
2906
|
const target = lowerer.fieldTarget(expr);
|
|
2721
2907
|
if (target)
|
|
2722
2908
|
return lowerer.fieldGetExpr(target, locOf(expr), expr);
|
|
@@ -2792,6 +2978,13 @@ export function lowerFieldRead(lowerer, expr) {
|
|
|
2792
2978
|
loc: locOf(expr),
|
|
2793
2979
|
};
|
|
2794
2980
|
}
|
|
2981
|
+
// Object.prototype's methods read as values: an own entry of the
|
|
2982
|
+
// member's function type, else the built-in.
|
|
2983
|
+
if (actual?.type.kind === "record") {
|
|
2984
|
+
const inherited = lowerRecordInheritedMember(lowerer, actual, expr);
|
|
2985
|
+
if (inherited)
|
|
2986
|
+
return inherited;
|
|
2987
|
+
}
|
|
2795
2988
|
// A member the checker declares on the receiver, stored in a pure
|
|
2796
2989
|
// index-signature record (an object literal that spread one, see
|
|
2797
2990
|
// dictSpreadLiteralShape): the key is always present, so the keyed
|
|
@@ -2812,23 +3005,89 @@ export function lowerFieldRead(lowerer, expr) {
|
|
|
2812
3005
|
}
|
|
2813
3006
|
}
|
|
2814
3007
|
// `t.length` on a tuple: the arity CONSTANT (tuples are fixed-shape —
|
|
2815
|
-
// the checker types it as the literal arity too).
|
|
2816
|
-
//
|
|
2817
|
-
//
|
|
3008
|
+
// the checker types it as the literal arity too). A binding or `this`,
|
|
3009
|
+
// or a chain of plain property reads from one, folds; any other receiver
|
|
3010
|
+
// (a call result, a ternary, an assertion, a chain through an accessor)
|
|
3011
|
+
// is evaluated first, for its side effects and exceptions, and its value
|
|
3012
|
+
// discarded.
|
|
2818
3013
|
if (receiverIr?.kind === "record" && expr.name.text === "length") {
|
|
2819
3014
|
const shape = lowerer.shapes.get(receiverIr.shapeId);
|
|
2820
3015
|
if (shape?.tuple) {
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
3016
|
+
const arity = {
|
|
3017
|
+
kind: "numLit",
|
|
3018
|
+
value: shape.fields.length,
|
|
3019
|
+
type: F64,
|
|
3020
|
+
loc: locOf(expr),
|
|
3021
|
+
};
|
|
3022
|
+
if (plainReadChain(lowerer, expr.expression))
|
|
3023
|
+
return arity;
|
|
3024
|
+
const receiver = checkerArray ?? lowerer.lowerExpr(expr.expression);
|
|
3025
|
+
const loc = locOf(expr);
|
|
3026
|
+
// An unchecked element read (`rows[i].length` with `rows: T[]`) answers
|
|
3027
|
+
// the element's optional value: a missing element is undefined, and
|
|
3028
|
+
// reading `length` from it throws Node's TypeError.
|
|
3029
|
+
if (receiver.type.kind === "union") {
|
|
3030
|
+
const unionId = receiver.type.unionId;
|
|
3031
|
+
const held = lowerer.declareHiddenLocal("%tupleLengthReceiver", receiver.type);
|
|
3032
|
+
let result = arity;
|
|
3033
|
+
for (const unit of ["undefined", "null"]) {
|
|
3034
|
+
const tag = lowerer.armTag(unionId, unit === "undefined" ? UNDEFINED_T : NULL_T);
|
|
3035
|
+
if (tag < 0)
|
|
3036
|
+
continue;
|
|
3037
|
+
result = {
|
|
3038
|
+
kind: "ternary",
|
|
3039
|
+
cond: {
|
|
3040
|
+
kind: "unionIsTag",
|
|
3041
|
+
unionId,
|
|
3042
|
+
tag,
|
|
3043
|
+
negated: false,
|
|
3044
|
+
value: varRef(held.id, receiver.type, loc),
|
|
3045
|
+
type: BOOL,
|
|
3046
|
+
loc,
|
|
3047
|
+
},
|
|
3048
|
+
then: nodeThrowExpr(1, "", `Cannot read properties of ${unit} (reading 'length')`, F64, loc),
|
|
3049
|
+
else_: result,
|
|
3050
|
+
type: F64,
|
|
3051
|
+
loc,
|
|
3052
|
+
};
|
|
3053
|
+
}
|
|
3054
|
+
return {
|
|
3055
|
+
kind: "seqExpr",
|
|
3056
|
+
stmts: [{ kind: "varDecl", localId: held.id, init: receiver, loc }],
|
|
3057
|
+
result,
|
|
3058
|
+
type: F64,
|
|
3059
|
+
loc,
|
|
3060
|
+
};
|
|
2826
3061
|
}
|
|
2827
|
-
return {
|
|
3062
|
+
return {
|
|
3063
|
+
kind: "seqExpr",
|
|
3064
|
+
stmts: [{ kind: "exprStmt", expr: receiver, loc: locOf(expr.expression) }],
|
|
3065
|
+
result: arity,
|
|
3066
|
+
type: F64,
|
|
3067
|
+
loc,
|
|
3068
|
+
};
|
|
2828
3069
|
}
|
|
2829
3070
|
}
|
|
2830
3071
|
return null;
|
|
2831
3072
|
}
|
|
3073
|
+
/** Whether a receiver is a value the checker ruled UNREACHABLE (`never`),
|
|
3074
|
+
* directly or through the parenthesized assertion chain that escapes it
|
|
3075
|
+
* (`(x as any)`, `(x as unknown)`, `x!`). The erasure is what hides the
|
|
3076
|
+
* value's stored union from the checker; the value itself still holds it. */
|
|
3077
|
+
function unreachableReceiver(lowerer, expr) {
|
|
3078
|
+
let node = expr.expression;
|
|
3079
|
+
for (;;) {
|
|
3080
|
+
if ((lowerer.typeOf(node).flags & ts.TypeFlags.Never) !== 0)
|
|
3081
|
+
return true;
|
|
3082
|
+
if (ts.isParenthesizedExpression(node) ||
|
|
3083
|
+
ts.isNonNullExpression(node) ||
|
|
3084
|
+
ts.isAssertionExpression(node)) {
|
|
3085
|
+
node = node.expression;
|
|
3086
|
+
continue;
|
|
3087
|
+
}
|
|
3088
|
+
return false;
|
|
3089
|
+
}
|
|
3090
|
+
}
|
|
2832
3091
|
/** Shared-field read `r.f` on a UNION receiver: supported exactly when
|
|
2833
3092
|
* every arm is a record/class possessing the field with ONE shared IR
|
|
2834
3093
|
* type — the discriminant pattern (`r.kind`, primitive) and the
|
|
@@ -2843,7 +3102,15 @@ export function lowerUnionProperty(lowerer, expr) {
|
|
|
2843
3102
|
return null;
|
|
2844
3103
|
const receiverIr = structuralReadType(lowerer, expr.expression) ??
|
|
2845
3104
|
lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
|
|
2846
|
-
|
|
3105
|
+
// The checker can rule the receiver UNREACHABLE and the assertion that
|
|
3106
|
+
// escapes it (`const x: never = event; (event as any).type` — the
|
|
3107
|
+
// `default:` branch of a switch that exhausts every arm) erases to
|
|
3108
|
+
// checked-dynamic, hiding the union the value actually holds. Node reads
|
|
3109
|
+
// the member off the object it is; the arms all declare it, so the read
|
|
3110
|
+
// is the shared-field read. `never` admits no reachable call site, so no
|
|
3111
|
+
// reachable program changes shape.
|
|
3112
|
+
const unreachable = receiverIr?.kind !== "union" && unreachableReceiver(lowerer, expr);
|
|
3113
|
+
if (receiverIr?.kind !== "union" && !unreachable)
|
|
2847
3114
|
return null;
|
|
2848
3115
|
// Lower the receiver first: its runtime value can still carry the full
|
|
2849
3116
|
// binding union even when the checker has removed several variants.
|
|
@@ -2851,7 +3118,9 @@ export function lowerUnionProperty(lowerer, expr) {
|
|
|
2851
3118
|
// A guard can remove several variants without selecting one record.
|
|
2852
3119
|
// Materialize that sub-union before looking for common fields; arms
|
|
2853
3120
|
// ruled out by the guard must not veto a field shared by the survivors.
|
|
2854
|
-
if (
|
|
3121
|
+
if (receiverIr?.kind === "union" &&
|
|
3122
|
+
value.type.kind === "union" &&
|
|
3123
|
+
!typeEquals(value.type, receiverIr)) {
|
|
2855
3124
|
const helper = lowerer.narrowedRetagHelper(expr.expression, value.type.unionId, receiverIr.unionId, locOf(expr));
|
|
2856
3125
|
if (helper)
|
|
2857
3126
|
value = { kind: "call", callee: helper, args: [value], type: receiverIr, loc: locOf(expr) };
|
|
@@ -2908,6 +3177,18 @@ export function lowerUnionProperty(lowerer, expr) {
|
|
|
2908
3177
|
if (getter)
|
|
2909
3178
|
return lowerer.fieldGetExpr({ container: "accessor", obj: value, className, field, fieldType: getter.sig.ret }, locOf(expr), expr);
|
|
2910
3179
|
}
|
|
3180
|
+
// An array the checker sees through a union of arrays (`readdirSync`'s
|
|
3181
|
+
// `string[] | Buffer[]`, whose lowering answers the string[] arm).
|
|
3182
|
+
if (value.type.kind === "array" && expr.name.text === "length") {
|
|
3183
|
+
return {
|
|
3184
|
+
kind: "arrIntrinsic",
|
|
3185
|
+
method: "length",
|
|
3186
|
+
receiver: value,
|
|
3187
|
+
args: [],
|
|
3188
|
+
type: F64,
|
|
3189
|
+
loc: locOf(expr),
|
|
3190
|
+
};
|
|
3191
|
+
}
|
|
2911
3192
|
if (value.type.kind !== "union") {
|
|
2912
3193
|
lowerer.unsupported("SC1090", expr, "shared property access without a represented union receiver");
|
|
2913
3194
|
}
|
|
@@ -3040,7 +3321,7 @@ export function lowerUnionProperty(lowerer, expr) {
|
|
|
3040
3321
|
* Array reads retain the ordinary invalid-index trap policy.
|
|
3041
3322
|
* Returns null when any arm cannot answer — the caller owns the fence
|
|
3042
3323
|
* message. The caller (the property/element dispatch) maybeNarrows. */
|
|
3043
|
-
export function lowerUnionKeyedRead(lowerer, expr, unionId, value, key, literalField) {
|
|
3324
|
+
export function lowerUnionKeyedRead(lowerer, expr, unionId, value, key, literalField, missingFieldAsUndefined = false) {
|
|
3044
3325
|
const def = lowerer.unions.get(unionId);
|
|
3045
3326
|
if (!def)
|
|
3046
3327
|
return null;
|
|
@@ -3099,6 +3380,14 @@ export function lowerUnionKeyedRead(lowerer, expr, unionId, value, key, literalF
|
|
|
3099
3380
|
if (!shape.indexValue) {
|
|
3100
3381
|
if (literalField === null && shape.fields.length > 0)
|
|
3101
3382
|
continue;
|
|
3383
|
+
// A record arm that does not declare the key at all answers
|
|
3384
|
+
// UNDEFINED in JS. Destructuring asks for that answer (its own
|
|
3385
|
+
// desugar reads a missing property as undefined, Node-exact); a
|
|
3386
|
+
// dotted read keeps refusing until narrowing proves the arm.
|
|
3387
|
+
if (literalField !== null && missingFieldAsUndefined) {
|
|
3388
|
+
push(UNDEFINED_T);
|
|
3389
|
+
continue;
|
|
3390
|
+
}
|
|
3102
3391
|
return null;
|
|
3103
3392
|
}
|
|
3104
3393
|
if (!pushAnswer(shape.indexValue))
|
|
@@ -3145,6 +3434,13 @@ export function lowerUnionKeyedRead(lowerer, expr, unionId, value, key, literalF
|
|
|
3145
3434
|
return null;
|
|
3146
3435
|
continue;
|
|
3147
3436
|
}
|
|
3437
|
+
if (literalField !== null && !shape.indexValue && missingFieldAsUndefined) {
|
|
3438
|
+
// The missing-field answer above must surface as the join's
|
|
3439
|
+
// undefined arm (the backend's keyed-read miss path stores it).
|
|
3440
|
+
if (!(type.kind === "union" && lowerer.armTag(type.unionId, UNDEFINED_T) >= 0))
|
|
3441
|
+
return null;
|
|
3442
|
+
continue;
|
|
3443
|
+
}
|
|
3148
3444
|
const ovfShape = literalField !== null && shape.indexValue ? { ...shape, fields: [] } : shape;
|
|
3149
3445
|
if (!recordKeyResultOk(lowerer, ovfShape, type))
|
|
3150
3446
|
return null;
|
|
@@ -3161,13 +3457,13 @@ export function classFieldTarget(lowerer, receiverNode, receiverType, fieldName,
|
|
|
3161
3457
|
!fieldName.startsWith("#")) {
|
|
3162
3458
|
return { container: "dynamic", obj: represented, field: fieldName, fieldType: DYN };
|
|
3163
3459
|
}
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3460
|
+
// A receiver typed as a class whose collection deferred: the deferred
|
|
3461
|
+
// diagnostics are what explains the miss (unless the flush registers
|
|
3462
|
+
// the class with dynamic slots, retryDeferred).
|
|
3463
|
+
const info = lowerer.classes.get(receiverType.className) ??
|
|
3168
3464
|
lowerer.flushDeferredClass(receiverType.className);
|
|
3465
|
+
if (!info)
|
|
3169
3466
|
return null;
|
|
3170
|
-
}
|
|
3171
3467
|
const fieldType = info.fields.get(fieldName);
|
|
3172
3468
|
const lowerObjectReceiver = () => {
|
|
3173
3469
|
let obj = represented;
|
|
@@ -3305,6 +3601,19 @@ export function fieldTarget(lowerer, access) {
|
|
|
3305
3601
|
return classFieldTarget(lowerer, access.expression, { kind: "object", className: owner.def.name }, access.name.text, receiver);
|
|
3306
3602
|
}
|
|
3307
3603
|
}
|
|
3604
|
+
// A field declared by a class that extends Array, on an instance (whose
|
|
3605
|
+
// type maps to its array): the class object's field.
|
|
3606
|
+
{
|
|
3607
|
+
const owner = arrayClassMemberOwner(lowerer, access);
|
|
3608
|
+
const name = access.name.text;
|
|
3609
|
+
if (owner !== null &&
|
|
3610
|
+
(owner.fields.has(name) ||
|
|
3611
|
+
lowerer.findMethodOn(owner, `get:${name}`) ||
|
|
3612
|
+
lowerer.findMethodOn(owner, `set:${name}`))) {
|
|
3613
|
+
const receiver = arrayClassReceiver(lowerer, owner, lowerer.lowerExpr(access.expression), access.expression);
|
|
3614
|
+
return classFieldTarget(lowerer, access.expression, { kind: "object", className: owner.def.name }, access.name.text, receiver);
|
|
3615
|
+
}
|
|
3616
|
+
}
|
|
3308
3617
|
const stored = ts.isIdentifier(access.expression)
|
|
3309
3618
|
? (lowerer.peekLocal(access.expression)?.type ?? lowerer.globalOf(access.expression)?.type)
|
|
3310
3619
|
: undefined;
|
|
@@ -3717,9 +4026,13 @@ const GLOBAL_CONSTRUCTOR_VALUES = new Set([
|
|
|
3717
4026
|
]);
|
|
3718
4027
|
/** The builtin global functions JavaScript sources read as interned
|
|
3719
4028
|
* function values (the `cond ? setImmediate : process.nextTick` feature
|
|
3720
|
-
* probe of bcryptjs and async libraries
|
|
3721
|
-
*
|
|
4029
|
+
* probe of bcryptjs and async libraries, and the known globals Node's test
|
|
4030
|
+
* harness collects): typeof answers "function", identity holds across
|
|
4031
|
+
* spellings, and calls run what the direct calls run. */
|
|
3722
4032
|
const GLOBAL_FUNCTION_VALUES = new Set([
|
|
4033
|
+
"atob",
|
|
4034
|
+
"btoa",
|
|
4035
|
+
"structuredClone",
|
|
3723
4036
|
"setTimeout",
|
|
3724
4037
|
"setInterval",
|
|
3725
4038
|
"setImmediate",
|
|
@@ -4056,10 +4369,20 @@ function globalThisWrittenNames(lowerer, globalType) {
|
|
|
4056
4369
|
(node.operatorToken.kind === ts.SyntaxKind.EqualsToken ||
|
|
4057
4370
|
node.operatorToken.kind === ts.SyntaxKind.QuestionQuestionEqualsToken ||
|
|
4058
4371
|
node.operatorToken.kind === ts.SyntaxKind.BarBarEqualsToken ||
|
|
4059
|
-
node.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandEqualsToken)
|
|
4060
|
-
ts.isPropertyAccessExpression(node.left) &&
|
|
4061
|
-
|
|
4062
|
-
|
|
4372
|
+
node.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandEqualsToken)) {
|
|
4373
|
+
if (ts.isPropertyAccessExpression(node.left) &&
|
|
4374
|
+
lowerer.typeOf(node.left.expression) === globalType)
|
|
4375
|
+
names.add(node.left.name.text);
|
|
4376
|
+
// A write by computed name may store any name: every read of a
|
|
4377
|
+
// name the program does not declare consults the global object.
|
|
4378
|
+
if (ts.isElementAccessExpression(node.left) &&
|
|
4379
|
+
lowerer.typeOf(node.left.expression) === globalType) {
|
|
4380
|
+
if (ts.isStringLiteralLike(node.left.argumentExpression))
|
|
4381
|
+
names.add(node.left.argumentExpression.text);
|
|
4382
|
+
else
|
|
4383
|
+
lowerer.globalThisComputedWrite = true;
|
|
4384
|
+
}
|
|
4385
|
+
}
|
|
4063
4386
|
return undefined;
|
|
4064
4387
|
});
|
|
4065
4388
|
}
|