@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
|
@@ -3,7 +3,7 @@ import { keyedHelperName } from "./lowering/stable-names.js";
|
|
|
3
3
|
import { mockCallRecordType, mockContextType } from "./mock-shapes.js";
|
|
4
4
|
import * as ts from "./ts7/adapter.js";
|
|
5
5
|
import { bodyReadsArguments } from "./arguments-usage.js";
|
|
6
|
-
import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, iterableArmsElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
|
|
6
|
+
import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canBoxFuncIntoDyn, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, FOREIGN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, iterableArmsElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
|
|
7
7
|
import { BIGINT_T, KEY_ORDER_FIELD } from "../ir/ir.js";
|
|
8
8
|
import { literalValues } from "./literal-values.js";
|
|
9
9
|
import { remapUnionDiscriminant } from "./union-discriminants.js";
|
|
@@ -244,8 +244,31 @@ export class ShapeRegistry {
|
|
|
244
244
|
* writer after all priority candidates have closed. */
|
|
245
245
|
derivedDeclaredOrderFinalizers = [];
|
|
246
246
|
currentDeclaredOrderPriority = [0, 0];
|
|
247
|
+
/** The declared-order candidates and the attached names the registry
|
|
248
|
+
* holds, counted as they are added (journalSizes). */
|
|
249
|
+
candidateCount = 0;
|
|
250
|
+
extendedCount = 0;
|
|
247
251
|
/** All interned shapes in first-seen order. */
|
|
248
252
|
shapes = [];
|
|
253
|
+
/** The sizes of the registry's tables, which only grow while shapes are
|
|
254
|
+
* interned (unit-journal.ts). */
|
|
255
|
+
journalSizes() {
|
|
256
|
+
return [
|
|
257
|
+
this.revision,
|
|
258
|
+
this.shapes.length,
|
|
259
|
+
this.byKey.size,
|
|
260
|
+
this.byId.size,
|
|
261
|
+
this.keyedNameKeys.size,
|
|
262
|
+
this.declaredOrderPriority.size,
|
|
263
|
+
this.declaredOrderCandidates.size,
|
|
264
|
+
this.candidateCount,
|
|
265
|
+
this.derivedDeclaredOrderFinalizers.length,
|
|
266
|
+
this.recIds.size,
|
|
267
|
+
this.pendingRec.size,
|
|
268
|
+
this.extendedNames.size,
|
|
269
|
+
this.extendedCount,
|
|
270
|
+
];
|
|
271
|
+
}
|
|
249
272
|
/** ts.Types currently being mapped — a BACK-REFERENCE to one of these is
|
|
250
273
|
* the recursive knot (`interface TreeNode { children: TreeNode[] }`):
|
|
251
274
|
* mapType answers a NAMED RECURSIVE SHAPE (recursiveRef) whose fields
|
|
@@ -291,6 +314,7 @@ export class ShapeRegistry {
|
|
|
291
314
|
adoptDeclaredOrder(shape, declaredOrder) {
|
|
292
315
|
if (declaredOrder === undefined)
|
|
293
316
|
return;
|
|
317
|
+
this.candidateCount++;
|
|
294
318
|
const candidates = this.declaredOrderCandidates.get(shape.id);
|
|
295
319
|
const candidate = { order: declaredOrder, priority: this.currentDeclaredOrderPriority };
|
|
296
320
|
if (candidates)
|
|
@@ -424,6 +448,7 @@ export class ShapeRegistry {
|
|
|
424
448
|
this.byId.set(id, shape);
|
|
425
449
|
this.shapes.push(shape);
|
|
426
450
|
if (declaredOrder !== undefined) {
|
|
451
|
+
this.candidateCount++;
|
|
427
452
|
this.declaredOrderCandidates.set(id, [
|
|
428
453
|
{ order: declaredOrder, priority: this.currentDeclaredOrderPriority },
|
|
429
454
|
]);
|
|
@@ -482,6 +507,7 @@ export class ShapeRegistry {
|
|
|
482
507
|
if (fresh.length === 0)
|
|
483
508
|
return;
|
|
484
509
|
shape.fields = [...shape.fields, ...fresh].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
|
|
510
|
+
this.extendedCount += fresh.length;
|
|
485
511
|
this.extendedNames.set(shapeId, [
|
|
486
512
|
...(this.extendedNames.get(shapeId) ?? []),
|
|
487
513
|
...fresh.map((f) => f.name),
|
|
@@ -551,6 +577,99 @@ export class UnionRegistry {
|
|
|
551
577
|
armTags = new Map();
|
|
552
578
|
/** All interned unions in first-seen order. */
|
|
553
579
|
unions = [];
|
|
580
|
+
/** The sizes of the tables recursive unions change, which no unit
|
|
581
|
+
* record carries (unit-journal.ts). */
|
|
582
|
+
journalSizes() {
|
|
583
|
+
return [this.revision, this.recIds.size, this.pendingRec.size];
|
|
584
|
+
}
|
|
585
|
+
/** The interned unions as a table unit records carry (unit-journal.ts).
|
|
586
|
+
* An entry is a union's definition; applying it interns the union under
|
|
587
|
+
* the key its arms give. A unit that adds a recursive union changes
|
|
588
|
+
* journalSizes, so the unions past a unit's start are interned ones. */
|
|
589
|
+
journalTable() {
|
|
590
|
+
return {
|
|
591
|
+
name: "unions",
|
|
592
|
+
size: () => this.unions.length,
|
|
593
|
+
entries: (from) => {
|
|
594
|
+
const out = [];
|
|
595
|
+
for (const def of this.unions.slice(from)) {
|
|
596
|
+
// JSON writes a number that is not finite as null.
|
|
597
|
+
const text = JSON.stringify(def);
|
|
598
|
+
if (/[:,[]null\b/.test(text))
|
|
599
|
+
return null;
|
|
600
|
+
out.push(text);
|
|
601
|
+
}
|
|
602
|
+
return out;
|
|
603
|
+
},
|
|
604
|
+
apply: (entries) => {
|
|
605
|
+
for (const entry of entries) {
|
|
606
|
+
const def = JSON.parse(entry);
|
|
607
|
+
const key = unionKey(def.arms, def.discriminant);
|
|
608
|
+
if (this.byKey.has(key))
|
|
609
|
+
continue;
|
|
610
|
+
if (keyedHelperName(this, "u", key, "") !== def.id)
|
|
611
|
+
throw new InternalCompilerError(`union record ${def.id} does not match its arms`);
|
|
612
|
+
this.byKey.set(key, def.id);
|
|
613
|
+
this.byId.set(def.id, def);
|
|
614
|
+
this.unions.push(def);
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
truncate: (from) => {
|
|
618
|
+
while (this.unions.length > from) {
|
|
619
|
+
const def = this.unions.pop();
|
|
620
|
+
this.byKey.delete(unionKey(def.arms, def.discriminant));
|
|
621
|
+
this.byId.delete(def.id);
|
|
622
|
+
this.keyedNameKeys.delete(def.id);
|
|
623
|
+
}
|
|
624
|
+
},
|
|
625
|
+
contents: () => {
|
|
626
|
+
// A recursive placeholder still pending fills in place when its
|
|
627
|
+
// outer frame completes, which changes journalSizes.
|
|
628
|
+
const texts = [];
|
|
629
|
+
const indexes = new Map();
|
|
630
|
+
const differs = (index) => {
|
|
631
|
+
const text = texts[index] ?? null;
|
|
632
|
+
return (text !== null &&
|
|
633
|
+
index < this.unions.length &&
|
|
634
|
+
JSON.stringify(this.unions[index]) !== text);
|
|
635
|
+
};
|
|
636
|
+
const held = {
|
|
637
|
+
extend: () => {
|
|
638
|
+
for (let index = texts.length; index < this.unions.length; index++) {
|
|
639
|
+
const def = this.unions[index];
|
|
640
|
+
texts.push(this.pendingRec.has(def.id) ? null : JSON.stringify(def));
|
|
641
|
+
indexes.set(def.id, index);
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
changed: () => {
|
|
645
|
+
for (let index = 0; index < texts.length; index++)
|
|
646
|
+
if (differs(index))
|
|
647
|
+
return this.unions[index].id;
|
|
648
|
+
return null;
|
|
649
|
+
},
|
|
650
|
+
changedAmong: (keys) => {
|
|
651
|
+
for (const key of keys) {
|
|
652
|
+
const index = indexes.get(key);
|
|
653
|
+
if (index !== undefined && differs(index))
|
|
654
|
+
return key;
|
|
655
|
+
}
|
|
656
|
+
return null;
|
|
657
|
+
},
|
|
658
|
+
refresh: (keys) => {
|
|
659
|
+
for (const key of keys) {
|
|
660
|
+
const index = indexes.get(key);
|
|
661
|
+
if (index !== undefined &&
|
|
662
|
+
index < this.unions.length &&
|
|
663
|
+
(texts[index] ?? null) !== null)
|
|
664
|
+
texts[index] = JSON.stringify(this.unions[index]);
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
};
|
|
668
|
+
held.extend();
|
|
669
|
+
return held;
|
|
670
|
+
},
|
|
671
|
+
};
|
|
672
|
+
}
|
|
554
673
|
/** ts.Types currently being mapped — a back-reference to one is the
|
|
555
674
|
* recursive knot passing through a union (`type Tree = Leaf | Branch`
|
|
556
675
|
* whose Branch arm carries `Tree[]`, the optional field `a?: A` of a
|
|
@@ -590,6 +709,11 @@ export class UnionRegistry {
|
|
|
590
709
|
const id = this.recIds.get(t);
|
|
591
710
|
return id !== undefined && this.pendingRec.has(id);
|
|
592
711
|
}
|
|
712
|
+
/** True when `unionId` is a recursive placeholder whose arms are not
|
|
713
|
+
* known yet (its outer frame is still mapping, or failed). */
|
|
714
|
+
isPendingPlaceholder(unionId) {
|
|
715
|
+
return this.pendingRec.has(unionId);
|
|
716
|
+
}
|
|
593
717
|
/** Completes a recursive placeholder with its canonical arm list and
|
|
594
718
|
* registers the structural key (first writer wins, like shapes). */
|
|
595
719
|
finalizeRecursive(t, arms, discriminant) {
|
|
@@ -612,7 +736,7 @@ export class UnionRegistry {
|
|
|
612
736
|
}
|
|
613
737
|
/** Interns canonical arms and discriminator cases, returning their unionId. */
|
|
614
738
|
intern(arms, discriminant) {
|
|
615
|
-
const key =
|
|
739
|
+
const key = unionKey(arms, discriminant);
|
|
616
740
|
let id = this.byKey.get(key);
|
|
617
741
|
if (id === undefined) {
|
|
618
742
|
id = keyedHelperName(this, "u", key, "");
|
|
@@ -654,6 +778,10 @@ export class UnionRegistry {
|
|
|
654
778
|
return tags.get(typeKey(arm))?.find((tag) => typeEquals(def.arms[tag], arm)) ?? -1;
|
|
655
779
|
}
|
|
656
780
|
}
|
|
781
|
+
/** The key UnionRegistry interns a union's arms and discriminant under. */
|
|
782
|
+
function unionKey(arms, discriminant) {
|
|
783
|
+
return JSON.stringify([arms.map(typeKey), discriminant]);
|
|
784
|
+
}
|
|
657
785
|
/** Human-readable rendering of an IrType for diagnostics (records expand to
|
|
658
786
|
* their canonical field list, unions to their arms; `checker.typeToString`
|
|
659
787
|
* can't — it never sees IR types). Bound the traversal as well as its output:
|
|
@@ -837,6 +965,8 @@ export function formatIrType(t, shapes, unions, seen = new Set()) {
|
|
|
837
965
|
return append("bigint");
|
|
838
966
|
case "stats":
|
|
839
967
|
return append("Stats");
|
|
968
|
+
case "bigintStats":
|
|
969
|
+
return append("BigIntStats");
|
|
840
970
|
case "fileHandle":
|
|
841
971
|
return append("FileHandle");
|
|
842
972
|
case "dir":
|
|
@@ -1164,6 +1294,23 @@ export function isLegacyUrlSymbol(symbol, ctx) {
|
|
|
1164
1294
|
* (errno, dlopen, priority) and SignalConstants, and the fallback's twins:
|
|
1165
1295
|
* the runtime's checked-dynamic constants object, whose members vary by
|
|
1166
1296
|
* platform. */
|
|
1297
|
+
/** True for node:path's platform-specific namespaces ("path/posix",
|
|
1298
|
+
* "path/win32"). Their values are the path module object, so they map to
|
|
1299
|
+
* the checked-dynamic module value (see pathModuleValue in
|
|
1300
|
+
* lowering/lower-builtin-values.ts), not to a module declaration. */
|
|
1301
|
+
export function isPathPlatformNamespaceId(moduleId) {
|
|
1302
|
+
return moduleId === "builtin:path/posix" || moduleId === "builtin:path/win32";
|
|
1303
|
+
}
|
|
1304
|
+
/** @types/node's `PlatformPath` interface (module "path"): the declared type
|
|
1305
|
+
* of `path.posix`/`path.win32`. Its values are the path module object. */
|
|
1306
|
+
function isPlatformPathType(type, ctx) {
|
|
1307
|
+
const sym = type.getSymbol();
|
|
1308
|
+
if (sym === undefined || ts.symbolName(sym) !== "PlatformPath")
|
|
1309
|
+
return false;
|
|
1310
|
+
return sym.declarations.some((decl) => ts.isInterfaceDeclaration(decl) &&
|
|
1311
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(decl)) &&
|
|
1312
|
+
isDeclaredInAmbientModule(decl, "path"));
|
|
1313
|
+
}
|
|
1167
1314
|
export function isOsConstantsType(type, ctx) {
|
|
1168
1315
|
return (isOsConstantsSymbol(type.getAliasSymbol(), ctx, true) ||
|
|
1169
1316
|
isOsConstantsSymbol(type.getSymbol(), ctx, true));
|
|
@@ -1431,7 +1578,46 @@ export function isFetchHandleType(type, ctx) {
|
|
|
1431
1578
|
}
|
|
1432
1579
|
return handle;
|
|
1433
1580
|
}
|
|
1581
|
+
/** The array type a class declared `extends Array` maps to (its base type,
|
|
1582
|
+
* `T[]`), or null for every other class. */
|
|
1583
|
+
function arrayClassBaseType(classDecl, instance, ctx) {
|
|
1584
|
+
const heritage = classDecl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0];
|
|
1585
|
+
if (heritage === undefined || !ts.isIdentifier(heritage.expression))
|
|
1586
|
+
return null;
|
|
1587
|
+
if (heritage.expression.text !== "Array")
|
|
1588
|
+
return null;
|
|
1589
|
+
// The polymorphic `this` type of the class names the class's own type.
|
|
1590
|
+
const symbol = instance.getSymbol();
|
|
1591
|
+
const declared = (instance.flags & ts.TypeFlags.TypeParameter) !== 0 && symbol !== undefined
|
|
1592
|
+
? ctx.checker.getDeclaredTypeOfSymbol(symbol)
|
|
1593
|
+
: instance;
|
|
1594
|
+
if ((declared.flags & ts.TypeFlags.Object) === 0)
|
|
1595
|
+
return null;
|
|
1596
|
+
const target = declared.isTypeReference() ? (declared.getTarget() ?? declared) : declared;
|
|
1597
|
+
const bases = ctx.checker.getBaseTypes(target);
|
|
1598
|
+
const base = bases[0];
|
|
1599
|
+
if (base === undefined || !ctx.checker.isArrayType(base))
|
|
1600
|
+
return null;
|
|
1601
|
+
const mapped = mapType(base, ctx);
|
|
1602
|
+
if (mapped?.kind === "array")
|
|
1603
|
+
return mapped;
|
|
1604
|
+
// `extends Array` in JavaScript reads `any[]`: dyn elements (the class's
|
|
1605
|
+
// arrayClassBase).
|
|
1606
|
+
return isJsSourceFile(ts.getSourceFileOfNode(classDecl)) ? { kind: "array", elem: DYN } : null;
|
|
1607
|
+
}
|
|
1434
1608
|
export function mapType(type, ctx) {
|
|
1609
|
+
const shadow = ctx.canonShadow;
|
|
1610
|
+
if (shadow === undefined || mapTypeDepth !== 0)
|
|
1611
|
+
return mapTypeEntry(type, ctx);
|
|
1612
|
+
// Shadow mode observes every successful top-level mapping, including the
|
|
1613
|
+
// intrinsic primitives, local class values and memo hits that return
|
|
1614
|
+
// before the mapping proper.
|
|
1615
|
+
const mapped = mapTypeEntry(type, ctx);
|
|
1616
|
+
if (mapped !== null)
|
|
1617
|
+
shadow(type, mapped, ctx);
|
|
1618
|
+
return mapped;
|
|
1619
|
+
}
|
|
1620
|
+
function mapTypeEntry(type, ctx) {
|
|
1435
1621
|
if (mapTypeDepth >= MAP_TYPE_MAX_DEPTH)
|
|
1436
1622
|
return null;
|
|
1437
1623
|
// These intrinsic domains cannot depend on generic bindings, declaration
|
|
@@ -1446,6 +1632,8 @@ export function mapType(type, ctx) {
|
|
|
1446
1632
|
if (flags & (ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLiteral))
|
|
1447
1633
|
return BOOL;
|
|
1448
1634
|
}
|
|
1635
|
+
if (ctx.foreignType !== undefined && ctx.foreignType(type))
|
|
1636
|
+
return FOREIGN;
|
|
1449
1637
|
const localValue = ctx.localClassValue?.(type);
|
|
1450
1638
|
if (localValue) {
|
|
1451
1639
|
contextResolutions++;
|
|
@@ -1456,8 +1644,8 @@ export function mapType(type, ctx) {
|
|
|
1456
1644
|
const memoizable = typeId !== undefined && (ctx.canMemoizeType?.() ?? true);
|
|
1457
1645
|
// An empty literal's type maps to the empty record as an unreduced union's
|
|
1458
1646
|
// arm (emptyLiteralArm) and to the checked-dynamic value elsewhere: the two
|
|
1459
|
-
// answers keep separate memo entries.
|
|
1460
|
-
const memoKey = memoizable ?
|
|
1647
|
+
// answers keep separate memo entries. Type ids are non-negative integers.
|
|
1648
|
+
const memoKey = memoizable ? typeId * 2 + (ctx.emptyLiteralArm ? 1 : 0) : null;
|
|
1461
1649
|
if (memoKey !== null) {
|
|
1462
1650
|
const memo = ctx.typeMemo?.get(memoKey);
|
|
1463
1651
|
if (memo !== undefined)
|
|
@@ -1478,10 +1666,39 @@ export function mapType(type, ctx) {
|
|
|
1478
1666
|
throw e;
|
|
1479
1667
|
mapped = null;
|
|
1480
1668
|
}
|
|
1669
|
+
// A generic alias the body spells over its own type parameters (`x as
|
|
1670
|
+
// Catalog<G, P>`) stays symbolic in the checker; when that form does not
|
|
1671
|
+
// map, the instance's concrete instantiation of the same alias does.
|
|
1672
|
+
if (mapped === null && ctx.resolveBoundAliasTs) {
|
|
1673
|
+
const concrete = ctx.resolveBoundAliasTs(type);
|
|
1674
|
+
if (concrete !== null && concrete !== type) {
|
|
1675
|
+
mapped = mapType(concrete, ctx);
|
|
1676
|
+
if (mapped !== null)
|
|
1677
|
+
contextResolutions++;
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
// Localized failure: a type that failed at a committed slot maps to its
|
|
1681
|
+
// lenient form. It counts as a context resolution so neither it nor a
|
|
1682
|
+
// type containing it is memoized: the strict form may map elsewhere.
|
|
1683
|
+
if (mapped === null && ctx.degradedType) {
|
|
1684
|
+
const lenient = ctx.degradedType(type);
|
|
1685
|
+
if (lenient !== null) {
|
|
1686
|
+
mapped = lenient;
|
|
1687
|
+
contextResolutions++;
|
|
1688
|
+
}
|
|
1689
|
+
}
|
|
1690
|
+
// Push-down (stage L3): in a lenient mapping, the smallest failing
|
|
1691
|
+
// component is the checked dynamic.
|
|
1692
|
+
if (mapped === null && ctx.lenient === true && !topLevel) {
|
|
1693
|
+
mapped = DYN;
|
|
1694
|
+
contextResolutions++;
|
|
1695
|
+
ctx.onLenientPiece?.(type);
|
|
1696
|
+
}
|
|
1481
1697
|
if (mapped !== null &&
|
|
1482
1698
|
memoKey !== null &&
|
|
1483
1699
|
topLevel &&
|
|
1484
1700
|
contextResolutions === sensitivityAtEntry &&
|
|
1701
|
+
ctx.erasingSignature === undefined &&
|
|
1485
1702
|
(ctx.canMemoizeType?.() ?? true)) {
|
|
1486
1703
|
ctx.typeMemo?.set(memoKey, mapped);
|
|
1487
1704
|
}
|
|
@@ -1543,8 +1760,16 @@ function mapTypeInner(type, ctx) {
|
|
|
1543
1760
|
}
|
|
1544
1761
|
{
|
|
1545
1762
|
const moduleId = ctx.moduleNamespaceId?.(type) ?? null;
|
|
1546
|
-
|
|
1763
|
+
// node:path's platform namespaces (`path.posix`, `path.win32`) are
|
|
1764
|
+
// ordinary objects at run time: the same module object the whole
|
|
1765
|
+
// namespace lowers to (pathModuleValue). Typing them as a module
|
|
1766
|
+
// namespace declaration made every value read a static type with no
|
|
1767
|
+
// value lowering; the checked-dynamic module value is the honest
|
|
1768
|
+
// type, and a union with a plain record arm collapses onto it.
|
|
1769
|
+
if (moduleId !== null && !isPathPlatformNamespaceId(moduleId))
|
|
1547
1770
|
return { kind: "moduleNs", moduleId };
|
|
1771
|
+
if (moduleId !== null)
|
|
1772
|
+
return DYN;
|
|
1548
1773
|
}
|
|
1549
1774
|
// A TypeScript object literal that spreads a checked-dynamic value
|
|
1550
1775
|
// (`{ ...requestOptions, path, timeout }`): its keys are the source's
|
|
@@ -1590,6 +1815,11 @@ function mapTypeInner(type, ctx) {
|
|
|
1590
1815
|
isDeclaredInAmbientModule(decl, "child_process"))) {
|
|
1591
1816
|
return { kind: "object", className: "%Error" };
|
|
1592
1817
|
}
|
|
1818
|
+
// @types/node declares the platform-path namespace value as the
|
|
1819
|
+
// `PlatformPath` interface of module "path"; its values ARE the path
|
|
1820
|
+
// module object (the checked-dynamic module value).
|
|
1821
|
+
if (isPlatformPathType(type, ctx))
|
|
1822
|
+
return DYN;
|
|
1593
1823
|
if (isOsConstantsType(type, ctx) || isLegacyUrlType(type, ctx))
|
|
1594
1824
|
return DYN;
|
|
1595
1825
|
// The WebAssembly API's values have the checked-dynamic representation, so
|
|
@@ -1627,7 +1857,8 @@ function mapTypeInner(type, ctx) {
|
|
|
1627
1857
|
!checker.getCallSignatures(type).some((sig) => sig === ctx.erasingSignature) &&
|
|
1628
1858
|
!ERASURE_KEPT_CONTAINERS.has(ts.symbolNameOf(type.getSymbol()) ?? "") &&
|
|
1629
1859
|
mentionsErasedTypeParam(type, ctx, 0)) {
|
|
1630
|
-
|
|
1860
|
+
if (!ctx.erasedMember || ctx.erasedMember.outerConsulted)
|
|
1861
|
+
contextResolutions++;
|
|
1631
1862
|
return DYN;
|
|
1632
1863
|
}
|
|
1633
1864
|
// Readonly<C> over a program class (Object.freeze's result type) is the
|
|
@@ -1638,7 +1869,8 @@ function mapTypeInner(type, ctx) {
|
|
|
1638
1869
|
if (resolveTypeParam && type.flags & ts.TypeFlags.TypeParameter) {
|
|
1639
1870
|
const bound = resolveTypeParam(type);
|
|
1640
1871
|
if (bound) {
|
|
1641
|
-
|
|
1872
|
+
if (!ctx.erasedMember?.own.has(type))
|
|
1873
|
+
contextResolutions++;
|
|
1642
1874
|
return bound;
|
|
1643
1875
|
}
|
|
1644
1876
|
}
|
|
@@ -1693,6 +1925,11 @@ function mapTypeInner(type, ctx) {
|
|
|
1693
1925
|
return viaConditional;
|
|
1694
1926
|
}
|
|
1695
1927
|
}
|
|
1928
|
+
const viaDistribution = mapDistributedConditional(type, ctx);
|
|
1929
|
+
if (viaDistribution !== null) {
|
|
1930
|
+
contextResolutions++;
|
|
1931
|
+
return viaDistribution;
|
|
1932
|
+
}
|
|
1696
1933
|
}
|
|
1697
1934
|
}
|
|
1698
1935
|
const widened = checker.getBaseTypeOfLiteralType(type);
|
|
@@ -2196,6 +2433,13 @@ function mapTypeInner(type, ctx) {
|
|
|
2196
2433
|
return viaMixin;
|
|
2197
2434
|
}
|
|
2198
2435
|
}
|
|
2436
|
+
// A class declared `extends Array` (frontend/lowering/builtins/
|
|
2437
|
+
// array-classes.ts): its instances are arrays of the base's elements.
|
|
2438
|
+
{
|
|
2439
|
+
const arrayBase = arrayClassBaseType(classDecl, widened, ctx);
|
|
2440
|
+
if (arrayBase !== null)
|
|
2441
|
+
return arrayBase;
|
|
2442
|
+
}
|
|
2199
2443
|
if (classExprNeedsContext(classDecl)) {
|
|
2200
2444
|
const local = ctx.localClassInstance?.(classDecl, widened);
|
|
2201
2445
|
if (local)
|
|
@@ -2555,6 +2799,21 @@ function mapTypeInner(type, ctx) {
|
|
|
2555
2799
|
// stdio and env values. Keep it checked-dynamic for native normalization.
|
|
2556
2800
|
if (isStdlibInterface("SpawnOptions"))
|
|
2557
2801
|
return DYN;
|
|
2802
|
+
// util.inspect as a value (a custom inspect method's third parameter is
|
|
2803
|
+
// `typeof inspect`): the runtime's inspect function, called through the
|
|
2804
|
+
// checked-dynamic boundary.
|
|
2805
|
+
if (psym !== undefined &&
|
|
2806
|
+
ts.symbolName(psym) === "inspect" &&
|
|
2807
|
+
psym.declarations.some((d) => ts.isFunctionDeclaration(d) &&
|
|
2808
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
|
|
2809
|
+
isDeclaredInAmbientModule(d, "util")))
|
|
2810
|
+
return DYN;
|
|
2811
|
+
// util.inspect's options bag, which inspect and formatWithOptions read
|
|
2812
|
+
// at run time (its sorted option can be a comparator function), and the
|
|
2813
|
+
// options custom inspect functions receive.
|
|
2814
|
+
if ((isStdlibInterface("InspectOptions") || isStdlibInterface("InspectOptionsStylized")) &&
|
|
2815
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientModule(d, "util")))
|
|
2816
|
+
return DYN;
|
|
2558
2817
|
// dns.LookupAllOptions (`all: true`, the overload whose callback takes
|
|
2559
2818
|
// an address list): a lookup option bag dns.lookup reads at run time.
|
|
2560
2819
|
// It rides checked-dynamic storage, so the lookup function type that
|
|
@@ -2608,14 +2867,25 @@ function mapTypeInner(type, ctx) {
|
|
|
2608
2867
|
return null;
|
|
2609
2868
|
return genResultRecord(elem, VOID, ctx.shapes, ctx.unions);
|
|
2610
2869
|
}
|
|
2611
|
-
// node:net's SocketAddress and BlockList
|
|
2612
|
-
//
|
|
2870
|
+
// node:net's SocketAddress and BlockList (scr_net.c) and node:util's
|
|
2871
|
+
// MIMEType and MIMEParams (scr_mime.c): native handles whose getters and
|
|
2872
|
+
// methods dispatch through the handle.
|
|
2613
2873
|
if (((psym !== undefined && ts.symbolName(psym) === "SocketAddress") ||
|
|
2614
|
-
(psym !== undefined && ts.symbolName(psym) === "BlockList")
|
|
2874
|
+
(psym !== undefined && ts.symbolName(psym) === "BlockList") ||
|
|
2875
|
+
(psym !== undefined && ts.symbolName(psym) === "MIMEType") ||
|
|
2876
|
+
(psym !== undefined && ts.symbolName(psym) === "MIMEParams")) &&
|
|
2615
2877
|
psym.declarations.some((d) => (ts.isClassDeclaration(d) || ts.isInterfaceDeclaration(d)) &&
|
|
2616
2878
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2617
2879
|
return DYN;
|
|
2618
2880
|
}
|
|
2881
|
+
// The functions node:util's debounce and throttle return
|
|
2882
|
+
// (scr_util_timing.c): native functions with their own members and
|
|
2883
|
+
// getters.
|
|
2884
|
+
if (psym !== undefined &&
|
|
2885
|
+
(ts.symbolName(psym) === "DebouncedFunction" || ts.symbolName(psym) === "ThrottledFunction") &&
|
|
2886
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2887
|
+
return DYN;
|
|
2888
|
+
}
|
|
2619
2889
|
// WebCrypto: the crypto global and its subtle object are dynamic
|
|
2620
2890
|
// objects, CryptoKey values are native handles (scr_webcrypto.c), and
|
|
2621
2891
|
// the algorithm dictionaries the methods take and keys report are plain
|
|
@@ -2874,6 +3144,16 @@ function mapTypeInner(type, ctx) {
|
|
|
2874
3144
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2875
3145
|
return { kind: "stats" };
|
|
2876
3146
|
}
|
|
3147
|
+
// fs.BigIntStats: the SAME snapshot handle under Node's bigint member
|
|
3148
|
+
// table (`statSync(p, { bigint: true })`). Declared by @types/node as
|
|
3149
|
+
// `class BigIntStats` in "fs"; the fallback declarations keep the class
|
|
3150
|
+
// shape too. Provenance-checked like Stats.
|
|
3151
|
+
if (psym !== undefined &&
|
|
3152
|
+
ts.symbolName(psym) === "BigIntStats" &&
|
|
3153
|
+
psym.declarations.some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
|
|
3154
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
3155
|
+
return { kind: "bigintStats" };
|
|
3156
|
+
}
|
|
2877
3157
|
// Capacity snapshots and options keep their live object representation
|
|
2878
3158
|
// across numeric/BigInt overloads, runtime options, and callbacks.
|
|
2879
3159
|
if (((psym !== undefined && ts.symbolName(psym) === "StatsFs") ||
|
|
@@ -4198,6 +4478,8 @@ function mapTypeInner(type, ctx) {
|
|
|
4198
4478
|
parts.some((part) => (part.flags & nullish) === 0 &&
|
|
4199
4479
|
!checker.isNeverType(part) &&
|
|
4200
4480
|
!isEmptyObjectLiteralType(part, ctx));
|
|
4481
|
+
let neverConditionalPart = false;
|
|
4482
|
+
let undefinedPart;
|
|
4201
4483
|
for (const part of parts) {
|
|
4202
4484
|
if (hasArrayPart && emptyTuple(part))
|
|
4203
4485
|
continue;
|
|
@@ -4205,6 +4487,12 @@ function mapTypeInner(type, ctx) {
|
|
|
4205
4487
|
// distributed union. They have no inhabitants and no runtime tag.
|
|
4206
4488
|
if (checker.isNeverType(part))
|
|
4207
4489
|
continue;
|
|
4490
|
+
// A conditional over a bound parameter whose every member selects
|
|
4491
|
+
// `never` contributes no arm either.
|
|
4492
|
+
if (distributedConditionalParts(part, ctx)?.length === 0) {
|
|
4493
|
+
neverConditionalPart = true;
|
|
4494
|
+
continue;
|
|
4495
|
+
}
|
|
4208
4496
|
// A `void` PART is inhabited only by undefined (`Promise<void> |
|
|
4209
4497
|
// void` return types, `string | void`): it becomes the undefinedT
|
|
4210
4498
|
// unit arm, exactly like an undefined part — the value either
|
|
@@ -4212,6 +4500,7 @@ function mapTypeInner(type, ctx) {
|
|
|
4212
4500
|
// void stays VOID (the return-position mapping above).
|
|
4213
4501
|
if (part.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Void)) {
|
|
4214
4502
|
byKey.set(typeKey(UNDEFINED_T), UNDEFINED_T);
|
|
4503
|
+
undefinedPart ??= part;
|
|
4215
4504
|
continue;
|
|
4216
4505
|
}
|
|
4217
4506
|
if (part.flags & ts.TypeFlags.Null) {
|
|
@@ -4258,6 +4547,11 @@ function mapTypeInner(type, ctx) {
|
|
|
4258
4547
|
const arms = [...byKey.values()];
|
|
4259
4548
|
if (arms.length === 0)
|
|
4260
4549
|
return F64; // same unreachable placeholder as standalone never
|
|
4550
|
+
// `Cond<T> | undefined` whose conditional selects never for the
|
|
4551
|
+
// instance's binding is the plain `undefined` the concrete
|
|
4552
|
+
// instantiation's optional member has.
|
|
4553
|
+
if (neverConditionalPart && arms.length === 1 && undefinedPart !== undefined)
|
|
4554
|
+
return mapType(undefinedPart, ctx);
|
|
4261
4555
|
// A single surviving UNIT arm cannot stand alone (degenerate — the
|
|
4262
4556
|
// checker collapsed everything else away); anything else single is
|
|
4263
4557
|
// just that type. A single arm UNDER A MINTED PLACEHOLDER cannot
|
|
@@ -4296,19 +4590,42 @@ function mapTypeInner(type, ctx) {
|
|
|
4296
4590
|
!unions.recursivePending(widened)) {
|
|
4297
4591
|
return DYN;
|
|
4298
4592
|
}
|
|
4299
|
-
|
|
4593
|
+
// SEVERAL PROMISE ARMS are ONE: `Promise<A> | Promise<B>` is
|
|
4594
|
+
// `Promise<A | B>`. A promise arm's tag IS the `instanceof Promise`
|
|
4595
|
+
// test, so JavaScript cannot tell the arms apart at run time (both
|
|
4596
|
+
// answer true, both `await` to a value of their payload), and the
|
|
4597
|
+
// merged payload union is exactly what `await` produces either way.
|
|
4598
|
+
// The merge happens here, in the union the checker gave us, so every
|
|
4599
|
+
// use site (a declaration slot, an argument, an `await`, `.then`)
|
|
4600
|
+
// sees the same one-promise-arm layout; the conversion of a
|
|
4601
|
+
// `Promise<A>` value into it is the checked promise-payload widening
|
|
4602
|
+
// (promisePayloadWidens / promiseWiden). A payload that cannot ride
|
|
4603
|
+
// that union (a promise of a promise, a regex or generator payload)
|
|
4604
|
+
// keeps the whole union fenced.
|
|
4605
|
+
const mergedArms = mergePromiseArms(arms, ctx);
|
|
4606
|
+
if (mergedArms === null)
|
|
4607
|
+
return null;
|
|
4608
|
+
// Promise arms were the whole union (`Promise<void> | Promise<undefined>`
|
|
4609
|
+
// merges to the plain `Promise<void>`): a one-armed union has no
|
|
4610
|
+
// representation and needs none — the merge left the arm alone.
|
|
4611
|
+
if (mergedArms.length === 1) {
|
|
4612
|
+
if (unions.recursivePending(widened))
|
|
4613
|
+
return null;
|
|
4614
|
+
return mergedArms[0];
|
|
4615
|
+
}
|
|
4616
|
+
if (mergedArms.some((a) => a.kind === "void" ||
|
|
4300
4617
|
a.kind === "union" ||
|
|
4301
4618
|
a.kind === "dyn" ||
|
|
4302
4619
|
// A generator arm only comes from an Iterable<T> (an optional
|
|
4303
4620
|
// one keeps its unit arms beside the iterable union's).
|
|
4304
|
-
(a.kind === "generator" && iterableArmsElem(
|
|
4305
|
-
!maybePromiseUnionOk(parts,
|
|
4621
|
+
(a.kind === "generator" && iterableArmsElem(mergedArms) === null)) ||
|
|
4622
|
+
!maybePromiseUnionOk(parts, mergedArms, ctx)) {
|
|
4306
4623
|
return null;
|
|
4307
4624
|
}
|
|
4308
|
-
|
|
4309
|
-
const discriminant = unionDiscriminant(recordParts,
|
|
4625
|
+
mergedArms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
4626
|
+
const discriminant = unionDiscriminant(recordParts, mergedArms, ctx) ??
|
|
4310
4627
|
(substitutedUnions.length === 1
|
|
4311
|
-
? remapUnionDiscriminant(substitutedUnions[0],
|
|
4628
|
+
? remapUnionDiscriminant(substitutedUnions[0], mergedArms)
|
|
4312
4629
|
: undefined);
|
|
4313
4630
|
if (unions.recursivePending(widened)) {
|
|
4314
4631
|
// The knot closed through this union. A frame that resolved
|
|
@@ -4318,9 +4635,12 @@ function mapTypeInner(type, ctx) {
|
|
|
4318
4635
|
// recursive generic-open unions stay fenced.
|
|
4319
4636
|
if (contextResolutions !== sensitivityAtEntry)
|
|
4320
4637
|
return null;
|
|
4321
|
-
return {
|
|
4638
|
+
return {
|
|
4639
|
+
kind: "union",
|
|
4640
|
+
unionId: unions.finalizeRecursive(widened, mergedArms, discriminant),
|
|
4641
|
+
};
|
|
4322
4642
|
}
|
|
4323
|
-
return { kind: "union", unionId: unions.intern(
|
|
4643
|
+
return { kind: "union", unionId: unions.intern(mergedArms, discriminant) };
|
|
4324
4644
|
}
|
|
4325
4645
|
finally {
|
|
4326
4646
|
unions.inProgress.delete(widened);
|
|
@@ -4401,10 +4721,12 @@ function mapCallSignature(sig, ctx) {
|
|
|
4401
4721
|
// A parameter a TypeScript program types `any` takes whatever the
|
|
4402
4722
|
// caller passes: the checked-dynamic slot, as an `any`-typed binding
|
|
4403
4723
|
// already is (dynFallbackType). Declaration files keep their paths.
|
|
4404
|
-
// Only function declarations, spelled function types and
|
|
4405
|
-
//
|
|
4406
|
-
//
|
|
4407
|
-
//
|
|
4724
|
+
// Only function declarations, spelled function types, method and call
|
|
4725
|
+
// signatures of interfaces and type literals (`execute(params: any):
|
|
4726
|
+
// Promise<R>`), and lambda parameters whose default is the only source
|
|
4727
|
+
// of their type (`(n = lookup() ?? 5) => ...` with an `any` lookup):
|
|
4728
|
+
// other lambdas and methods in object literals keep their existing
|
|
4729
|
+
// checked-dynamic story.
|
|
4408
4730
|
if (!pt &&
|
|
4409
4731
|
!rest &&
|
|
4410
4732
|
decl !== undefined &&
|
|
@@ -4412,6 +4734,8 @@ function mapCallSignature(sig, ctx) {
|
|
|
4412
4734
|
decl.parent !== undefined &&
|
|
4413
4735
|
(ts.isFunctionDeclaration(decl.parent) ||
|
|
4414
4736
|
ts.isFunctionTypeNode(decl.parent) ||
|
|
4737
|
+
ts.isMethodSignatureDeclaration(decl.parent) ||
|
|
4738
|
+
ts.isCallSignatureDeclaration(decl.parent) ||
|
|
4415
4739
|
((ts.isArrowFunction(decl.parent) || ts.isFunctionExpression(decl.parent)) &&
|
|
4416
4740
|
decl.initializer !== undefined &&
|
|
4417
4741
|
decl.type === undefined &&
|
|
@@ -4474,8 +4798,18 @@ function mapCallSignature(sig, ctx) {
|
|
|
4474
4798
|
pt = jsOpenObjectType(decl, pt, ctx.shapes, ctx.unions);
|
|
4475
4799
|
// Belt and braces for non-strict type worlds: an optional param's
|
|
4476
4800
|
// ABI slot is always the undefined-armed union (strictNullChecks
|
|
4477
|
-
// already spells it that way; arm it here if the world didn't).
|
|
4478
|
-
|
|
4801
|
+
// already spells it that way; arm it here if the world didn't). A
|
|
4802
|
+
// back-reference to a union still being mapped (`options?: { then?:
|
|
4803
|
+
// (ctx: Sub) => void }` where Sub extends the interface declaring the
|
|
4804
|
+
// method) is a recursive placeholder with no arms yet; when the checker
|
|
4805
|
+
// spelled the parameter `X | undefined`, the placeholder receives that
|
|
4806
|
+
// undefined arm when its frame finishes.
|
|
4807
|
+
const pendingOptional = pt?.kind === "union" &&
|
|
4808
|
+
ctx.unions.isPendingPlaceholder(pt.unionId) &&
|
|
4809
|
+
ts
|
|
4810
|
+
.constituentTypes(checker.getTypeOfSymbol(p))
|
|
4811
|
+
.some((part) => (part.flags & ts.TypeFlags.Undefined) !== 0);
|
|
4812
|
+
if (optional && pt && pt.kind !== "void" && pt.kind !== "dyn" && !pendingOptional) {
|
|
4479
4813
|
const armed = withUndefinedArm(pt, ctx.unions);
|
|
4480
4814
|
if (!armed)
|
|
4481
4815
|
return null;
|
|
@@ -5278,6 +5612,121 @@ function mapGenericIndexedAccess(type, ctx) {
|
|
|
5278
5612
|
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
5279
5613
|
return { kind: "union", unionId: ctx.unions.intern(arms) };
|
|
5280
5614
|
}
|
|
5615
|
+
/** A distributive conditional (`T extends "a" ? A : T extends "b" ? B :
|
|
5616
|
+
* never`, its check type a naked type parameter) over a parameter the
|
|
5617
|
+
* instance binds: evaluated once per member of the binding (`"a" | "b"`,
|
|
5618
|
+
* or the open `"a" | (string & {})` spelling), as the checker distributes
|
|
5619
|
+
* it. Answers the non-never results (empty when every member selects
|
|
5620
|
+
* never, so an optional member of that type holds only undefined, as in
|
|
5621
|
+
* the concrete instantiation), or null when the conditional is another
|
|
5622
|
+
* shape or a member does not evaluate. */
|
|
5623
|
+
function distributedConditionalParts(type, ctx) {
|
|
5624
|
+
const { checker, resolveTypeParamTs } = ctx;
|
|
5625
|
+
if (!resolveTypeParamTs || !type.isConditionalType())
|
|
5626
|
+
return null;
|
|
5627
|
+
const checkType = type.getCheckType();
|
|
5628
|
+
if (!checkType || !(checkType.flags & ts.TypeFlags.TypeParameter))
|
|
5629
|
+
return null;
|
|
5630
|
+
const symbol = checkType.getSymbol();
|
|
5631
|
+
const bound = resolveTypeParamTs(checkType);
|
|
5632
|
+
if (!symbol || !bound)
|
|
5633
|
+
return null;
|
|
5634
|
+
// The answer depends on the instance's binding: a mapping that consults
|
|
5635
|
+
// it, even one that drops an all-never part, is not context-free.
|
|
5636
|
+
contextResolutions++;
|
|
5637
|
+
const parts = [];
|
|
5638
|
+
for (const member of bound.isUnionType() ? ts.constituentTypes(bound) : [bound]) {
|
|
5639
|
+
// `string & {}` (the open-union spelling) extends exactly what `string`
|
|
5640
|
+
// extends: the empty object adds nothing to a primitive.
|
|
5641
|
+
const emptyObject = (part) => (part.flags & ts.TypeFlags.Object) !== 0 &&
|
|
5642
|
+
checker.getPropertiesOfType(part).length === 0 &&
|
|
5643
|
+
checker.getIndexInfosOfType(part).length === 0 &&
|
|
5644
|
+
checker.getCallSignatures(part).length === 0 &&
|
|
5645
|
+
checker.getConstructSignatures(part).length === 0;
|
|
5646
|
+
const primitive = member.isIntersectionType()
|
|
5647
|
+
? ts.constituentTypes(member).filter((part) => !emptyObject(part))
|
|
5648
|
+
: [member];
|
|
5649
|
+
if (primitive.length !== 1)
|
|
5650
|
+
return null;
|
|
5651
|
+
const evaluated = evalMappedTemplate(type, new Map(), new Map([[symbol, primitive[0]]]), ctx);
|
|
5652
|
+
if (!evaluated)
|
|
5653
|
+
return null;
|
|
5654
|
+
if (checker.isNeverType(evaluated))
|
|
5655
|
+
continue;
|
|
5656
|
+
if (!parts.includes(evaluated))
|
|
5657
|
+
parts.push(evaluated);
|
|
5658
|
+
}
|
|
5659
|
+
return parts;
|
|
5660
|
+
}
|
|
5661
|
+
/** A unit-only type once its conditionals over bound parameters are
|
|
5662
|
+
* distributed: `Cond<T> | undefined` where every member of T's binding
|
|
5663
|
+
* selects never (the optional member's type in a generic body). */
|
|
5664
|
+
function neverConditionalUnitOnly(t, ctx) {
|
|
5665
|
+
const UNIT = ts.TypeFlags.Undefined | ts.TypeFlags.Void | ts.TypeFlags.Null;
|
|
5666
|
+
if (!t.isUnionType())
|
|
5667
|
+
return false;
|
|
5668
|
+
let conditional = false;
|
|
5669
|
+
for (const part of ts.constituentTypes(t)) {
|
|
5670
|
+
if ((part.flags & UNIT) !== 0)
|
|
5671
|
+
continue;
|
|
5672
|
+
if (distributedConditionalParts(part, ctx)?.length !== 0)
|
|
5673
|
+
return false;
|
|
5674
|
+
conditional = true;
|
|
5675
|
+
}
|
|
5676
|
+
return conditional;
|
|
5677
|
+
}
|
|
5678
|
+
/** mapType of a distributed conditional (distributedConditionalParts): the
|
|
5679
|
+
* union of its members' results, as the concrete conditional's union maps
|
|
5680
|
+
* them. An `unknown` or `any` result absorbs the rest (the checker's union
|
|
5681
|
+
* is that type), as does a result that maps to the checked-dynamic value
|
|
5682
|
+
* (`{}`, `object`, `Object`: the checker's union of one with a concrete
|
|
5683
|
+
* result is the top type), and `undefined` and `null` results are the unit
|
|
5684
|
+
* arms. Null when it does not distribute, when a result does not map, when
|
|
5685
|
+
* every member selects never (the enclosing union drops such a part), or
|
|
5686
|
+
* when only units remain. */
|
|
5687
|
+
function mapDistributedConditional(type, ctx) {
|
|
5688
|
+
const parts = distributedConditionalParts(type, ctx);
|
|
5689
|
+
if (!parts || parts.length === 0)
|
|
5690
|
+
return null;
|
|
5691
|
+
const top = parts.find((part) => (part.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0);
|
|
5692
|
+
if (top !== undefined)
|
|
5693
|
+
return mapType(top, ctx);
|
|
5694
|
+
const arms = [];
|
|
5695
|
+
for (const part of parts) {
|
|
5696
|
+
if (part.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Void)) {
|
|
5697
|
+
if (!arms.some((a) => typeEquals(a, UNDEFINED_T)))
|
|
5698
|
+
arms.push(UNDEFINED_T);
|
|
5699
|
+
continue;
|
|
5700
|
+
}
|
|
5701
|
+
if (part.flags & ts.TypeFlags.Null) {
|
|
5702
|
+
if (!arms.some((a) => typeEquals(a, NULL_T)))
|
|
5703
|
+
arms.push(NULL_T);
|
|
5704
|
+
continue;
|
|
5705
|
+
}
|
|
5706
|
+
const mapped = mapType(part, ctx);
|
|
5707
|
+
if (!mapped)
|
|
5708
|
+
return null;
|
|
5709
|
+
// A top-type result (`{}`, `object`, `Object`): the checker's union with
|
|
5710
|
+
// a concrete result is the top type itself, so the member is
|
|
5711
|
+
// checked-dynamic. A `dyn` arm would be invalid union IR (SC9001).
|
|
5712
|
+
if (mapped.kind === "dyn")
|
|
5713
|
+
return DYN;
|
|
5714
|
+
const members = mapped.kind === "union" ? (ctx.unions.get(mapped.unionId)?.arms ?? null) : [mapped];
|
|
5715
|
+
if (!members)
|
|
5716
|
+
return null;
|
|
5717
|
+
for (const arm of members)
|
|
5718
|
+
if (!arms.some((a) => typeEquals(a, arm)))
|
|
5719
|
+
arms.push(arm);
|
|
5720
|
+
}
|
|
5721
|
+
if (arms.every(isUnitType))
|
|
5722
|
+
return null;
|
|
5723
|
+
if (arms.length === 1)
|
|
5724
|
+
return arms[0];
|
|
5725
|
+
if (!unionContainerArmsOk(arms))
|
|
5726
|
+
return null;
|
|
5727
|
+
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
5728
|
+
return { kind: "union", unionId: ctx.unions.intern(arms) };
|
|
5729
|
+
}
|
|
5281
5730
|
/** `keyof T extends never ? A : B` over a bound record T (the lib's
|
|
5282
5731
|
* Object.entries element spelling): decided by whether the binding has any
|
|
5283
5732
|
* key. */
|
|
@@ -6297,7 +6746,9 @@ function isTypeOnlyNamespace(d) {
|
|
|
6297
6746
|
isTypeOnlyNamespace(statement));
|
|
6298
6747
|
}
|
|
6299
6748
|
function packageTypeFile(sf, ctx) {
|
|
6300
|
-
return (sf.isDeclarationFile &&
|
|
6749
|
+
return (sf.isDeclarationFile &&
|
|
6750
|
+
(/[\\/]node_modules[\\/]/.test(sf.fileName) || ctx.isExperimentalFile?.(sf) === true) &&
|
|
6751
|
+
!ctx.isStdlibFile(sf));
|
|
6301
6752
|
}
|
|
6302
6753
|
/** The record path's provenance fence. Declared shapes (object literals,
|
|
6303
6754
|
* interfaces, type literals) must come from user code or an explicitly
|
|
@@ -6411,10 +6862,23 @@ export function erasedGenericMemberType(t, ctx) {
|
|
|
6411
6862
|
const sig = sigs[0];
|
|
6412
6863
|
const own = new Set(sig.getTypeParameters());
|
|
6413
6864
|
const outer = ctx.resolveTypeParam;
|
|
6865
|
+
// Resolving only the member's own parameters does not make the erasure
|
|
6866
|
+
// context-sensitive, so a recursive record holding a generic method
|
|
6867
|
+
// (`interface Sub extends Base { send<T>(m: Msg<T>): void }` reached
|
|
6868
|
+
// from Base) still closes its knot. Consulting an enclosing binding does.
|
|
6869
|
+
const erasedMember = { own, outerConsulted: false };
|
|
6414
6870
|
const erased = mapType(t, {
|
|
6415
6871
|
...ctx,
|
|
6416
6872
|
erasingSignature: sig,
|
|
6417
|
-
|
|
6873
|
+
erasedMember,
|
|
6874
|
+
resolveTypeParam: (param) => {
|
|
6875
|
+
if (own.has(param))
|
|
6876
|
+
return DYN;
|
|
6877
|
+
if (outer === undefined)
|
|
6878
|
+
return null;
|
|
6879
|
+
erasedMember.outerConsulted = true;
|
|
6880
|
+
return outer(param);
|
|
6881
|
+
},
|
|
6418
6882
|
});
|
|
6419
6883
|
return erased?.kind === "func" ? erased : undefined;
|
|
6420
6884
|
}
|
|
@@ -7306,7 +7770,8 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
7306
7770
|
// absent-field idiom — and `{ p: undefined }` spellings): the
|
|
7307
7771
|
// unit-only union. The runtime value is the interned unit, JSON
|
|
7308
7772
|
// omits the undefined arm exactly like an omitted optional.
|
|
7309
|
-
if (pt?.kind === "void" &&
|
|
7773
|
+
if (pt?.kind === "void" &&
|
|
7774
|
+
(isUnitOnlyTsType(fieldTs, ctx.resolveTypeParam) || neverConditionalUnitOnly(fieldTs, ctx)))
|
|
7310
7775
|
pt = unitOnlyUnion(ctx.unions);
|
|
7311
7776
|
if (pt !== null && isUnitOnlyIr(pt, ctx) && jsObjectLiteralProperty(p))
|
|
7312
7777
|
pt = DYN;
|
|
@@ -7402,6 +7867,12 @@ function dynSubsumableUnionArm(arm, ctx) {
|
|
|
7402
7867
|
// `string | URL | Request`, fetch's own input type under @types/node.
|
|
7403
7868
|
case "url":
|
|
7404
7869
|
return true;
|
|
7870
|
+
// A function the checked-dynamic tree can box (each parameter checks
|
|
7871
|
+
// in, the result converts out) is held by reference there, and
|
|
7872
|
+
// `typeof x === "function"` narrows it back out: `Progress | AbortSignal`
|
|
7873
|
+
// beside fetch's handles.
|
|
7874
|
+
case "func":
|
|
7875
|
+
return canBoxFuncIntoDyn(arm, (id) => ctx.shapes.get(id), (id) => ctx.unions.get(id));
|
|
7405
7876
|
case "record":
|
|
7406
7877
|
case "array":
|
|
7407
7878
|
// `T | Promise<T>` with T bound to `unknown`: the checked-dynamic value
|
|
@@ -7451,6 +7922,84 @@ function maybePromiseUnionOk(parts, arms, ctx) {
|
|
|
7451
7922
|
return false;
|
|
7452
7923
|
return maybePromiseThenableArm(parts, ctx) === null;
|
|
7453
7924
|
}
|
|
7925
|
+
/** Merge the promise arms of one union into a single `Promise<A | B>`
|
|
7926
|
+
* (mapTypeInner's union rule): JavaScript-wise the arms are
|
|
7927
|
+
* indistinguishable — `instanceof Promise` answers true for both, and
|
|
7928
|
+
* `await` settles to the payload union — so the merged arm is the same
|
|
7929
|
+
* value in the same slot. Payloads join like union arms: a `void` payload
|
|
7930
|
+
* becomes the undefined unit, a payload that is already a union flattens,
|
|
7931
|
+
* and a checked-dynamic payload (`Promise<unknown>`) absorbs the arms the
|
|
7932
|
+
* checked-dynamic representation holds faithfully (dynSubsumableUnionArm).
|
|
7933
|
+
* Null keeps the whole union fenced: a promise-of-a-promise payload, a
|
|
7934
|
+
* payload with no union home (regex, generator), or a dyn payload beside an
|
|
7935
|
+
* arm whose semantics would degrade. */
|
|
7936
|
+
function mergePromiseArms(arms, ctx) {
|
|
7937
|
+
let promiseArms = 0;
|
|
7938
|
+
for (const arm of arms)
|
|
7939
|
+
if (arm.kind === "promise")
|
|
7940
|
+
promiseArms++;
|
|
7941
|
+
if (promiseArms < 2)
|
|
7942
|
+
return arms;
|
|
7943
|
+
const payloads = [];
|
|
7944
|
+
let dynamic = false;
|
|
7945
|
+
for (const arm of arms) {
|
|
7946
|
+
if (arm.kind !== "promise")
|
|
7947
|
+
continue;
|
|
7948
|
+
const inner = arm.inner;
|
|
7949
|
+
if (inner.kind === "void") {
|
|
7950
|
+
payloads.push(UNDEFINED_T);
|
|
7951
|
+
continue;
|
|
7952
|
+
}
|
|
7953
|
+
if (inner.kind === "dyn") {
|
|
7954
|
+
dynamic = true;
|
|
7955
|
+
continue;
|
|
7956
|
+
}
|
|
7957
|
+
if (inner.kind === "union") {
|
|
7958
|
+
const substituted = ctx.unions.get(inner.unionId);
|
|
7959
|
+
if (!substituted?.arms.length)
|
|
7960
|
+
return null;
|
|
7961
|
+
payloads.push(...substituted.arms);
|
|
7962
|
+
continue;
|
|
7963
|
+
}
|
|
7964
|
+
payloads.push(inner);
|
|
7965
|
+
}
|
|
7966
|
+
if (dynamic) {
|
|
7967
|
+
if (!payloads.every((arm) => dynSubsumableUnionArm(arm, ctx)))
|
|
7968
|
+
return null;
|
|
7969
|
+
payloads.length = 0;
|
|
7970
|
+
payloads.push(DYN);
|
|
7971
|
+
}
|
|
7972
|
+
const byKey = new Map();
|
|
7973
|
+
for (const arm of payloads) {
|
|
7974
|
+
// A promise payload has no arm home beside the others: `await` of the
|
|
7975
|
+
// merged promise would adopt it as a thenable, which no union tag does.
|
|
7976
|
+
if (arm.kind === "promise")
|
|
7977
|
+
return null;
|
|
7978
|
+
byKey.set(typeKey(arm), arm);
|
|
7979
|
+
}
|
|
7980
|
+
const payload = [...byKey.values()];
|
|
7981
|
+
if (payload.length === 0)
|
|
7982
|
+
return null;
|
|
7983
|
+
// Every arm is the undefined unit: the promise never settles a value,
|
|
7984
|
+
// exactly `Promise<void>`.
|
|
7985
|
+
if (payload.every((arm) => arm.kind === "undefinedT"))
|
|
7986
|
+
payload.length = 0;
|
|
7987
|
+
// One payload arm is that arm itself (a regex or a promise payload has a
|
|
7988
|
+
// promise slot but no union arm); a JOINT payload is a union, so its arms
|
|
7989
|
+
// need union homes.
|
|
7990
|
+
const inner = payload.length === 0
|
|
7991
|
+
? VOID
|
|
7992
|
+
: payload.length === 1
|
|
7993
|
+
? payload[0]
|
|
7994
|
+
: payload.every((arm) => armHasUnionHome(arm))
|
|
7995
|
+
? {
|
|
7996
|
+
kind: "union",
|
|
7997
|
+
unionId: ctx.unions.intern([...payload].sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1))),
|
|
7998
|
+
}
|
|
7999
|
+
: null;
|
|
8000
|
+
const merged = inner === null ? null : { kind: "promise", inner };
|
|
8001
|
+
return merged === null ? null : [...arms.filter((arm) => arm.kind !== "promise"), merged];
|
|
8002
|
+
}
|
|
7454
8003
|
/** The first non-promise constituent of a promise-armed union whose type
|
|
7455
8004
|
* has a `then` member (a thenable data arm), or null. */
|
|
7456
8005
|
function maybePromiseThenableArm(parts, ctx) {
|
|
@@ -7587,7 +8136,7 @@ export function describeComponentBlocker(widened, ctx) {
|
|
|
7587
8136
|
}
|
|
7588
8137
|
const promiseArms = mappedArms.filter(({ mapped }) => mapped?.kind === "promise");
|
|
7589
8138
|
if (promiseArms.length > 1) {
|
|
7590
|
-
return `the union shape is supported, but
|
|
8139
|
+
return `the union shape is supported, but its promise arms ('${text(promiseArms[0].p)}' and '${text(promiseArms[1].p)}') do not merge into one promise (their payloads have no common union layout)`;
|
|
7591
8140
|
}
|
|
7592
8141
|
if (promiseArms.length === 1 && dataArms.length > 1) {
|
|
7593
8142
|
const callable = mappedArms.find(({ mapped }) => mapped?.kind === "func");
|