@scriptc/compiler 0.3.6 → 0.4.1
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/scriptc-node-fallback.d.ts +717 -55
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +20 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +9 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.js +3 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +38 -1
- package/dist/backend/llvm/classes.js +185 -35
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +79 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -3
- package/dist/backend/llvm/common.js +51 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +15 -4
- package/dist/backend/llvm/dense-array-access.js +125 -44
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +63 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +37 -4
- package/dist/backend/llvm/dyn.js +354 -183
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1193 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1557 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +59 -0
- package/dist/backend/llvm/emit-statements.js +2041 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +566 -291
- package/dist/backend/llvm/emitter.js +728 -4671
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +87 -56
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +45 -24
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +113 -66
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +124 -28
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +57 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +65 -27
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +616 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.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 +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +94 -53
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +209 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +42 -33
- 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-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +45 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +215 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +7 -0
- package/dist/backend/llvm/publish.js +50 -19
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +10 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +8 -2
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +74 -45
- package/dist/backend/llvm/shapes.js +289 -28
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +1 -1
- package/dist/backend/llvm/string-reads.js +4 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +111 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +12 -0
- package/dist/backend/mangle.js +18 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +57 -0
- package/dist/backend/native/executable.js +211 -139
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +2 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +6 -0
- package/dist/backend/native-codegen.js +19 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +27 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +48 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/publication.test.js +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 +13 -1
- package/dist/backend/runtime-pack-core.js +14 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +9 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +9 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +15 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +8 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +106 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +21 -1
- package/dist/cli/usage.js +43 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +22 -0
- package/dist/contracts/check.js +25 -8
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +27 -0
- package/dist/executable/executable-cache.js +19 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +12 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
- package/dist/frontend/lowering/builtins/crypto.js +215 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +284 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +41 -1
- package/dist/frontend/lowering/builtins/process.js +505 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +42 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +79 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +23 -1
- package/dist/frontend/lowering/call-signatures.js +379 -55
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +561 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +10 -0
- package/dist/frontend/lowering/class-protocols.js +76 -45
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +86 -19
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +264 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +58 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +94 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
- package/dist/frontend/lowering/containers/bytes.js +649 -113
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +126 -28
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
- package/dist/frontend/lowering/cycle-initialization.js +191 -35
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +723 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2557 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1804 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +301 -86
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
- package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
- package/dist/frontend/lowering/expressions/property-access.js +3787 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1724 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +551 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +43 -0
- package/dist/frontend/lowering/generic-functions.js +593 -118
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +33 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1404 -448
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +54 -3
- package/dist/frontend/lowering/lower-classes.js +1529 -472
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +241 -21
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1509 -12486
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +72 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +39 -20
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +900 -107
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +445 -94
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +65 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +514 -101
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +179 -118
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
- package/dist/frontend/lowering/lower-stmts.js +1950 -433
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +96 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +424 -27
- package/dist/frontend/lowering/lowerer.js +2062 -310
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +133 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +13 -12
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +282 -45
- 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 +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
- package/dist/frontend/npm-static-bundled-chunks.js +981 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +988 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +25 -1
- package/dist/frontend/npm-static.js +212 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +230 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +100 -2
- package/dist/frontend/program.js +1627 -262
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +49 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +26 -1
- package/dist/frontend/services.js +59 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +10 -5
- package/dist/frontend/ts7/program-host.js +19 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +57 -24
- package/dist/frontend/ts7/semantic-model.js +114 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +30 -15
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2735 -723
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +87 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +31 -0
- package/dist/ir/array-length-stability.js +249 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +134 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +116 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +540 -29
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +7 -0
- package/dist/ir/integer-loop-facts.js +103 -17
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +13 -1
- package/dist/ir/integer-ranges.js +125 -26
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +273 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +221 -58
- package/dist/ir/ir.js +127 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +399 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +183 -33
- package/dist/ir/runtime-features.js +795 -422
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +201 -150
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +196 -76
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +41 -11
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +14 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +35 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +10 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +19 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.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/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +22 -20
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +304 -22
|
@@ -3,6 +3,7 @@ import { envSnapshotHelper, lowerProcessLoadEnvFile } from "./environment.js";
|
|
|
3
3
|
import { dynUndefinedExpr, boolLit, numLit, strLit, varRef } from "../../../ir/build.js";
|
|
4
4
|
import { timerStyleCallback } from "../lower-timers.js";
|
|
5
5
|
import * as ts from "../../ts7/adapter.js";
|
|
6
|
+
import { requestGeneralStreamSurface } from "../general-streams.js";
|
|
6
7
|
import { own } from "../lowerer.js";
|
|
7
8
|
import { isJsSourceFile, locOf } from "../../program.js";
|
|
8
9
|
import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
|
|
@@ -10,8 +11,150 @@ import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "../opti
|
|
|
10
11
|
import { voidizedCallback } from "../lower-server.js";
|
|
11
12
|
import { BOOL, BYTES_U8, DYN, F64, PROCSTREAM_T, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, funcOf, } from "../../../ir/ir.js";
|
|
12
13
|
import { lowerBuiltinLoaderValue } from "../lower-builtin-values.js";
|
|
14
|
+
import { builtinFunctionValue } from "../lower-exprs.js";
|
|
15
|
+
import { canonicalBuiltinModule } from "../../builtin-modules.js";
|
|
13
16
|
import { lowerProcessIpcSend, ipcMessageListener, ipcDisconnectListener } from "./ipc.js";
|
|
14
17
|
import { lowerDiagnosticsSubscriber, lowerTracingArguments } from "./async-context.js";
|
|
18
|
+
/** Whether the process has an IPC channel, Node's test for defining
|
|
19
|
+
* process.send and process.disconnect: a channel this fork child opened
|
|
20
|
+
* (programs with fork targets only), or a non-empty NODE_CHANNEL_FD from a
|
|
21
|
+
* Node.js parent, the variable Node itself tests at startup. Built from the
|
|
22
|
+
* existing environment read, so the presence test links no runtime code. */
|
|
23
|
+
export function processHasIpc(lowerer, loc) {
|
|
24
|
+
const envT = lowerer.envValueType();
|
|
25
|
+
const unionId = envT.unionId;
|
|
26
|
+
const stringTag = lowerer.armTag(unionId, STRING);
|
|
27
|
+
const value = lowerer.declareHiddenLocal("%channelFd", envT);
|
|
28
|
+
const fromNode = {
|
|
29
|
+
kind: "seqExpr",
|
|
30
|
+
stmts: [
|
|
31
|
+
{
|
|
32
|
+
kind: "varDecl",
|
|
33
|
+
localId: value.id,
|
|
34
|
+
init: {
|
|
35
|
+
kind: "libCall",
|
|
36
|
+
fn: "process.envGet",
|
|
37
|
+
args: [strLit("NODE_CHANNEL_FD", loc)],
|
|
38
|
+
type: envT,
|
|
39
|
+
loc,
|
|
40
|
+
},
|
|
41
|
+
loc,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
result: {
|
|
45
|
+
kind: "logical",
|
|
46
|
+
op: "&&",
|
|
47
|
+
left: {
|
|
48
|
+
kind: "unionIsTag",
|
|
49
|
+
unionId,
|
|
50
|
+
tag: stringTag,
|
|
51
|
+
negated: false,
|
|
52
|
+
value: varRef(value.id, envT, loc),
|
|
53
|
+
type: BOOL,
|
|
54
|
+
loc,
|
|
55
|
+
},
|
|
56
|
+
right: {
|
|
57
|
+
kind: "toBool",
|
|
58
|
+
operand: {
|
|
59
|
+
kind: "unionNarrow",
|
|
60
|
+
unionId,
|
|
61
|
+
tag: stringTag,
|
|
62
|
+
value: varRef(value.id, envT, loc),
|
|
63
|
+
type: STRING,
|
|
64
|
+
loc,
|
|
65
|
+
},
|
|
66
|
+
type: BOOL,
|
|
67
|
+
loc,
|
|
68
|
+
},
|
|
69
|
+
type: BOOL,
|
|
70
|
+
loc,
|
|
71
|
+
},
|
|
72
|
+
type: BOOL,
|
|
73
|
+
loc,
|
|
74
|
+
};
|
|
75
|
+
if (lowerer.forkTargets.length === 0)
|
|
76
|
+
return fromNode;
|
|
77
|
+
return {
|
|
78
|
+
kind: "logical",
|
|
79
|
+
op: "||",
|
|
80
|
+
left: { kind: "libCall", fn: "process.ipcOpen", args: [], type: BOOL, loc },
|
|
81
|
+
right: fromNode,
|
|
82
|
+
type: BOOL,
|
|
83
|
+
loc,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** True when the value of `node` is consumed only by ToBoolean: a
|
|
87
|
+
* condition, the operand of `!`, `Boolean(node)`, or an operand of `&&` /
|
|
88
|
+
* `||` whose own value is consumed that way (or discarded, for the left
|
|
89
|
+
* operand). */
|
|
90
|
+
export function isTruthinessOnlyRead(lowerer, node) {
|
|
91
|
+
let child = node;
|
|
92
|
+
let parent = node.parent;
|
|
93
|
+
while (parent !== undefined && ts.isParenthesizedExpression(parent)) {
|
|
94
|
+
child = parent;
|
|
95
|
+
parent = parent.parent;
|
|
96
|
+
}
|
|
97
|
+
if (parent === undefined)
|
|
98
|
+
return false;
|
|
99
|
+
if (ts.isIfStatement(parent) || ts.isWhileStatement(parent) || ts.isDoStatement(parent))
|
|
100
|
+
return parent.expression === child;
|
|
101
|
+
if (ts.isForStatement(parent))
|
|
102
|
+
return parent.condition === child;
|
|
103
|
+
if (ts.isConditionalExpression(parent))
|
|
104
|
+
return parent.condition === child;
|
|
105
|
+
if (ts.isPrefixUnaryExpression(parent))
|
|
106
|
+
return parent.operator === ts.SyntaxKind.ExclamationToken;
|
|
107
|
+
if (ts.isCallExpression(parent)) {
|
|
108
|
+
return (!parent.questionDotToken &&
|
|
109
|
+
parent.arguments.nodes.length === 1 &&
|
|
110
|
+
parent.arguments.nodes[0] === child &&
|
|
111
|
+
lowerer.isStdlibGlobal(parent.expression, "Boolean"));
|
|
112
|
+
}
|
|
113
|
+
if (ts.isBinaryExpression(parent)) {
|
|
114
|
+
const op = parent.operatorToken.kind;
|
|
115
|
+
if (op !== ts.SyntaxKind.AmpersandAmpersandToken && op !== ts.SyntaxKind.BarBarToken)
|
|
116
|
+
return false;
|
|
117
|
+
if (isTruthinessOnlyRead(lowerer, parent))
|
|
118
|
+
return true;
|
|
119
|
+
let outer = parent.parent;
|
|
120
|
+
while (outer !== undefined && ts.isParenthesizedExpression(outer))
|
|
121
|
+
outer = outer.parent;
|
|
122
|
+
return parent.left === child && outer !== undefined && ts.isExpressionStatement(outer);
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
/** Whether a program source reads process.exitCode. Such a program
|
|
127
|
+
* records its exit-code assignments (process.setExitCodeTracked), so a
|
|
128
|
+
* read can tell an unset code from 0; other programs keep the untracked
|
|
129
|
+
* write. Computed once per lowering pass. */
|
|
130
|
+
export function programReadsExitCode(lowerer) {
|
|
131
|
+
if (lowerer.readsExitCode !== null)
|
|
132
|
+
return lowerer.readsExitCode;
|
|
133
|
+
let found = false;
|
|
134
|
+
const walk = (node) => {
|
|
135
|
+
if (found)
|
|
136
|
+
return;
|
|
137
|
+
if (ts.isPropertyAccessExpression(node) &&
|
|
138
|
+
node.name.text === "exitCode" &&
|
|
139
|
+
!(ts.isBinaryExpression(node.parent) &&
|
|
140
|
+
node.parent.left === node &&
|
|
141
|
+
node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken) &&
|
|
142
|
+
lowerer.stdlibGlobalMember(node, "process") === "exitCode") {
|
|
143
|
+
found = true;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
ts.forEachChild(node, walk);
|
|
147
|
+
};
|
|
148
|
+
for (const sf of lowerer.program.getImplementationSourceFiles()) {
|
|
149
|
+
if (sf.isDeclarationFile)
|
|
150
|
+
continue;
|
|
151
|
+
walk(sf);
|
|
152
|
+
if (found)
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
lowerer.readsExitCode = found;
|
|
156
|
+
return found;
|
|
157
|
+
}
|
|
15
158
|
/** The pinned Node release the runtime reports as process.versions.node
|
|
16
159
|
* (packages/runtime/src/scr_lib.c SCR_NODE_COMPAT_VERSION, kept equal to
|
|
17
160
|
* internal/compatibility/node-v24.json by test/node-pin.test.ts). */
|
|
@@ -31,40 +174,42 @@ export function lowerProcStreamMethodCall(lowerer, call, access) {
|
|
|
31
174
|
return null;
|
|
32
175
|
const name = access.name.text;
|
|
33
176
|
const loc = locOf(call);
|
|
34
|
-
if (isJsSourceFile(
|
|
177
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
35
178
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
36
179
|
if (receiver.type.kind === "dyn") {
|
|
37
180
|
return {
|
|
38
181
|
kind: "dynInvoke",
|
|
39
182
|
recv: receiver,
|
|
40
183
|
method: name,
|
|
41
|
-
calleeName: call.expression
|
|
42
|
-
args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
184
|
+
calleeName: ts.getTextOfNode(call.expression),
|
|
185
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
43
186
|
type: DYN,
|
|
44
187
|
loc,
|
|
45
188
|
};
|
|
46
189
|
}
|
|
47
190
|
}
|
|
48
|
-
if (name === "getWindowSize" && call.arguments.length === 0) {
|
|
191
|
+
if (name === "getWindowSize" && call.arguments.nodes.length === 0) {
|
|
49
192
|
const receiver = lowerer.coerceToExpected(lowerer.lowerExpr(access.expression), DYN);
|
|
50
193
|
return lowerer.coerceInto(call, {
|
|
51
194
|
kind: "dynInvoke",
|
|
52
195
|
recv: receiver,
|
|
53
196
|
method: name,
|
|
54
|
-
calleeName: call.expression
|
|
197
|
+
calleeName: ts.getTextOfNode(call.expression),
|
|
55
198
|
args: [],
|
|
56
199
|
type: DYN,
|
|
57
200
|
loc,
|
|
58
201
|
}, lowerer.irTypeOf(call));
|
|
59
202
|
}
|
|
60
|
-
if (name === "write" && call.arguments.length === 1) {
|
|
203
|
+
if (name === "write" && call.arguments.nodes.length === 1) {
|
|
61
204
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
62
|
-
const data = lowerer.lowerExpr(call.arguments[0]);
|
|
205
|
+
const data = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
63
206
|
if (data.type.kind !== "string") {
|
|
64
|
-
|
|
207
|
+
requestGeneralStreamSurface(lowerer, access.expression);
|
|
208
|
+
lowerer.noLowering(`write of '${lowerer.fmt(data.type)}' data on a stream value`, call.arguments.nodes[0], "one string is the supported form here — narrow unions first");
|
|
65
209
|
}
|
|
66
210
|
return { kind: "libCall", fn: "procStream.write", args: [receiver, data], type: BOOL, loc };
|
|
67
211
|
}
|
|
212
|
+
requestGeneralStreamSurface(lowerer, access.expression);
|
|
68
213
|
lowerer.noLowering(`WritableStream.${name}`, call, "write(data) with one string and getWindowSize() are the supported stream-value methods", lowerer.checker.getSymbolAtLocation(access.name));
|
|
69
214
|
}
|
|
70
215
|
/** Standard streams expose optional terminal properties: pipes have no
|
|
@@ -84,6 +229,50 @@ export function isOptionalProcessStreamProperty(lowerer, expr) {
|
|
|
84
229
|
}
|
|
85
230
|
return lowerer.mapTypeOf(lowerer.typeOf(expr.expression))?.kind === "procStream";
|
|
86
231
|
}
|
|
232
|
+
/** The process.versions entries @types/node declares as plain strings
|
|
233
|
+
* that the runtime's versions object (node and openssl only) lacks. */
|
|
234
|
+
const ABSENT_DECLARED_VERSIONS = new Set([
|
|
235
|
+
"http_parser",
|
|
236
|
+
"v8",
|
|
237
|
+
"ares",
|
|
238
|
+
"uv",
|
|
239
|
+
"zlib",
|
|
240
|
+
"modules",
|
|
241
|
+
]);
|
|
242
|
+
/** A process.versions member read whose declaration promises a string the
|
|
243
|
+
* runtime does not have. @types/node declares the entries above as plain
|
|
244
|
+
* strings, so a checked string read would throw on the absent entry and
|
|
245
|
+
* equality with undefined would fold to false. These reads keep the
|
|
246
|
+
* undefined arm, like the optional stream properties. The shipped fallback
|
|
247
|
+
* types declare other entries `string | undefined` and never reach this.
|
|
248
|
+
* An element read with a computed key qualifies when the checker types it
|
|
249
|
+
* as a plain string. */
|
|
250
|
+
export function isOptionalProcessVersionsRead(lowerer, node) {
|
|
251
|
+
let key;
|
|
252
|
+
if (ts.isPropertyAccessExpression(node))
|
|
253
|
+
key = node.name.text;
|
|
254
|
+
else if (ts.isElementAccessExpression(node))
|
|
255
|
+
key = ts.isStringLiteralLike(node.argumentExpression) ? node.argumentExpression.text : null;
|
|
256
|
+
else
|
|
257
|
+
return false;
|
|
258
|
+
if (key !== null && !ABSENT_DECLARED_VERSIONS.has(key))
|
|
259
|
+
return false;
|
|
260
|
+
if (!programMentionsVersions(lowerer))
|
|
261
|
+
return false;
|
|
262
|
+
const symbol = lowerer.typeOf(node.expression).getSymbol();
|
|
263
|
+
return (symbol !== undefined &&
|
|
264
|
+
ts.symbolName(symbol) === "ProcessVersions" &&
|
|
265
|
+
symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile())) &&
|
|
266
|
+
lowerer.mapTypeOf(lowerer.typeOf(node))?.kind === "string");
|
|
267
|
+
}
|
|
268
|
+
/** Whether any implementation source spells `versions`. Programs that
|
|
269
|
+
* never do skip the per-read checker queries above entirely. */
|
|
270
|
+
function programMentionsVersions(lowerer) {
|
|
271
|
+
lowerer.mentionsProcessVersions ??= lowerer.program
|
|
272
|
+
.getImplementationSourceFiles()
|
|
273
|
+
.some((sf) => !sf.isDeclarationFile && sf.text.includes("versions"));
|
|
274
|
+
return lowerer.mentionsProcessVersions;
|
|
275
|
+
}
|
|
87
276
|
export function lowerProcessStreamProperty(lowerer, expr) {
|
|
88
277
|
if (expr.questionDotToken)
|
|
89
278
|
return null;
|
|
@@ -91,7 +280,7 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
91
280
|
const direct = ts.isPropertyAccessExpression(expr.expression)
|
|
92
281
|
? lowerer.stdlibGlobalMember(expr.expression, "process")
|
|
93
282
|
: null;
|
|
94
|
-
if (isJsSourceFile(
|
|
283
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
|
|
95
284
|
(direct === "stdin" ||
|
|
96
285
|
direct === "stdout" ||
|
|
97
286
|
direct === "stderr" ||
|
|
@@ -106,6 +295,18 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
106
295
|
loc: locOf(expr),
|
|
107
296
|
};
|
|
108
297
|
}
|
|
298
|
+
// `if (process.stdin.setRawMode)`: Node's stdin has the method only
|
|
299
|
+
// when it is a TTY. The runtime's stream object answers the same
|
|
300
|
+
// presence (the method or undefined); calls keep their direct lowering.
|
|
301
|
+
if (direct === "stdin" && member === "setRawMode") {
|
|
302
|
+
return {
|
|
303
|
+
kind: "dynKeyGet",
|
|
304
|
+
value: lowerer.lowerExpr(expr.expression),
|
|
305
|
+
key: strLit(member, locOf(expr.name)),
|
|
306
|
+
type: DYN,
|
|
307
|
+
loc: locOf(expr),
|
|
308
|
+
};
|
|
309
|
+
}
|
|
109
310
|
if (member !== "isTTY" && member !== "columns" && member !== "rows")
|
|
110
311
|
return null;
|
|
111
312
|
let recv = expr.expression;
|
|
@@ -183,6 +384,36 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
183
384
|
* read in source order). Method members referenced without a call are
|
|
184
385
|
* rejected specifically. Null for non-process receivers (the chain keeps
|
|
185
386
|
* trying other property lowerings). */
|
|
387
|
+
/** The value of a DATA member of the process global taken off by
|
|
388
|
+
* destructuring (`const { env, argv } = process` in JavaScript, the
|
|
389
|
+
* supports-color opening): the same values the spelled `process.env` /
|
|
390
|
+
* `process.argv` reads produce, typed by the binding. Null for members
|
|
391
|
+
* this does not cover (methods keep the destructuring fence). */
|
|
392
|
+
export function processDataMemberValue(lowerer, member, binding, loc) {
|
|
393
|
+
switch (member) {
|
|
394
|
+
case "env": {
|
|
395
|
+
const mapped = lowerer.mapTypeOf(lowerer.typeOf(binding));
|
|
396
|
+
if (mapped?.kind !== "record")
|
|
397
|
+
return null;
|
|
398
|
+
const helper = envSnapshotHelper(lowerer, mapped.shapeId, loc);
|
|
399
|
+
return helper === null ? null : { kind: "call", callee: helper, args: [], type: mapped, loc };
|
|
400
|
+
}
|
|
401
|
+
case "argv":
|
|
402
|
+
return { kind: "libCall", fn: "process.argv", args: [], type: arrayOf(STRING), loc };
|
|
403
|
+
case "platform":
|
|
404
|
+
return { kind: "libCall", fn: "process.platform", args: [], type: STRING, loc };
|
|
405
|
+
case "arch":
|
|
406
|
+
return { kind: "libCall", fn: "process.arch", args: [], type: STRING, loc };
|
|
407
|
+
case "pid":
|
|
408
|
+
return { kind: "libCall", fn: "process.pid", args: [], type: F64, loc };
|
|
409
|
+
case "execPath":
|
|
410
|
+
return { kind: "libCall", fn: "process.execPath", args: [], type: STRING, loc };
|
|
411
|
+
case "versions":
|
|
412
|
+
return { kind: "libCall", fn: "process.versions", args: [], type: DYN, loc };
|
|
413
|
+
default:
|
|
414
|
+
return null;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
186
417
|
export function lowerProcessProperty(lowerer, expr) {
|
|
187
418
|
if (!expr.questionDotToken &&
|
|
188
419
|
expr.name.text === "bigint" &&
|
|
@@ -261,9 +492,46 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
261
492
|
if (member === null)
|
|
262
493
|
return null;
|
|
263
494
|
const loc = locOf(expr);
|
|
495
|
+
// `if (process.send)`: Node defines process.send and process.disconnect
|
|
496
|
+
// only when the process has an IPC channel. A read whose value only
|
|
497
|
+
// feeds a truthiness test answers that presence; other value uses keep
|
|
498
|
+
// the member fence.
|
|
499
|
+
if ((member === "send" || member === "disconnect") &&
|
|
500
|
+
!expr.questionDotToken &&
|
|
501
|
+
isTruthinessOnlyRead(lowerer, expr)) {
|
|
502
|
+
return processHasIpc(lowerer, loc);
|
|
503
|
+
}
|
|
264
504
|
if (member === "versions") {
|
|
265
505
|
return { kind: "libCall", fn: "process.versions", args: [], type: DYN, loc };
|
|
266
506
|
}
|
|
507
|
+
// process.exitCode: undefined until something assigns it, then the
|
|
508
|
+
// assigned code. A read the checker narrowed to number follows an
|
|
509
|
+
// assignment, so the code is set.
|
|
510
|
+
if (member === "exitCode" && !expr.questionDotToken) {
|
|
511
|
+
const current = {
|
|
512
|
+
kind: "libCall",
|
|
513
|
+
fn: "process.currentExitCode",
|
|
514
|
+
args: [],
|
|
515
|
+
type: F64,
|
|
516
|
+
loc,
|
|
517
|
+
};
|
|
518
|
+
if (lowerer.mapTypeOf(lowerer.typeOf(expr))?.kind === "f64")
|
|
519
|
+
return current;
|
|
520
|
+
const type = { kind: "union", unionId: lowerer.unions.intern([F64, UNDEFINED_T]) };
|
|
521
|
+
return {
|
|
522
|
+
kind: "ternary",
|
|
523
|
+
cond: { kind: "libCall", fn: "process.hasExitCode", args: [], type: BOOL, loc },
|
|
524
|
+
then: lowerer.coerceToExpected(current, type),
|
|
525
|
+
else_: lowerer.coerceToExpected({ kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc }, type),
|
|
526
|
+
type,
|
|
527
|
+
loc,
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
// process.features as a value (`"sea" in process.features`): an object
|
|
531
|
+
// holding none of the flags, consistent with the member reads above.
|
|
532
|
+
if (member === "features") {
|
|
533
|
+
return { kind: "dynObjLit", type: DYN, loc };
|
|
534
|
+
}
|
|
267
535
|
// process.noDeprecation / process.throwDeprecation: the values the
|
|
268
536
|
// program assigned (undefined before that — no Node flags reach a
|
|
269
537
|
// compiled binary).
|
|
@@ -285,6 +553,11 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
285
553
|
if (member === "hrtime") {
|
|
286
554
|
return { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc };
|
|
287
555
|
}
|
|
556
|
+
// A stored process.nextTick in JavaScript (`cond ? setImmediate :
|
|
557
|
+
// process.nextTick`): the interned builtin function value.
|
|
558
|
+
if (member === "nextTick" && isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
559
|
+
return builtinFunctionValue("process.nextTick", loc);
|
|
560
|
+
}
|
|
288
561
|
if (member === "getBuiltinModule") {
|
|
289
562
|
// Keep the native loader's argument validation when the function is
|
|
290
563
|
// stored. The declaration's string signature must not insert a checked
|
|
@@ -297,10 +570,10 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
297
570
|
if (member === "connected") {
|
|
298
571
|
return { kind: "libCall", fn: "process.connected", args: [], type: BOOL, loc };
|
|
299
572
|
}
|
|
300
|
-
// process.execArgv: the
|
|
301
|
-
//
|
|
573
|
+
// process.execArgv: the Node runtime flags kept out of process.argv —
|
|
574
|
+
// a leading --test-update-snapshots in node:test programs, else [].
|
|
302
575
|
if (member === "execArgv") {
|
|
303
|
-
return { kind: "
|
|
576
|
+
return { kind: "libCall", fn: "process.execArgv", args: [], type: arrayOf(STRING), loc };
|
|
304
577
|
}
|
|
305
578
|
// process._exiting — the runtime's exit-sequence flag (true while
|
|
306
579
|
// 'exit' listeners run), Node's own undocumented member.
|
|
@@ -360,7 +633,7 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
360
633
|
// (`process.stdout.isTTY`, `.write(...)`) never reach here — their
|
|
361
634
|
// OUTER expressions dispatch first.
|
|
362
635
|
if (member === "stdin" ||
|
|
363
|
-
((member === "stdout" || member === "stderr") && isJsSourceFile(
|
|
636
|
+
((member === "stdout" || member === "stderr") && isJsSourceFile(ts.getSourceFileOfNode(expr)))) {
|
|
364
637
|
return {
|
|
365
638
|
kind: "libCall",
|
|
366
639
|
fn: "process.stdio",
|
|
@@ -385,17 +658,18 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
385
658
|
export function lowerProcessMethodCall(lowerer, call, access) {
|
|
386
659
|
if (call.questionDotToken)
|
|
387
660
|
return null;
|
|
388
|
-
if (isJsSourceFile(
|
|
661
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(call)) &&
|
|
662
|
+
ts.isPropertyAccessExpression(access.expression)) {
|
|
389
663
|
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
390
664
|
if (stream === "stdin" || stream === "stdout" || stream === "stderr") {
|
|
391
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
665
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
392
666
|
lowerer.noLowering("process stream spread arguments", call);
|
|
393
667
|
return {
|
|
394
668
|
kind: "dynInvoke",
|
|
395
669
|
recv: lowerer.lowerExpr(access.expression),
|
|
396
670
|
method: access.name.text,
|
|
397
|
-
calleeName:
|
|
398
|
-
args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
671
|
+
calleeName: ts.getTextOfNode(access),
|
|
672
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
399
673
|
type: DYN,
|
|
400
674
|
loc: locOf(call),
|
|
401
675
|
};
|
|
@@ -405,31 +679,31 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
405
679
|
if (directProcessMember === "loadEnvFile")
|
|
406
680
|
return lowerProcessLoadEnvFile(lowerer, call);
|
|
407
681
|
if (directProcessMember === "hrtime") {
|
|
408
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
682
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
409
683
|
lowerer.noLowering("process.hrtime with spread arguments", call);
|
|
410
684
|
const loc = locOf(call);
|
|
411
685
|
return {
|
|
412
686
|
kind: "dynCall",
|
|
413
687
|
callee: { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc },
|
|
414
|
-
args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
688
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
415
689
|
calleeName: "process.hrtime",
|
|
416
690
|
type: DYN,
|
|
417
691
|
loc,
|
|
418
692
|
};
|
|
419
693
|
}
|
|
420
694
|
if (directProcessMember === "getBuiltinModule") {
|
|
421
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
695
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
422
696
|
lowerer.noLowering("process.getBuiltinModule with spread arguments", call);
|
|
423
697
|
const loc = locOf(call);
|
|
424
|
-
const id = call.arguments[0]
|
|
425
|
-
? lowerer.lowerExprExpecting(call.arguments[0], DYN)
|
|
698
|
+
const id = call.arguments.nodes[0]
|
|
699
|
+
? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
|
|
426
700
|
: dynUndefinedExpr(loc);
|
|
427
701
|
const binding = lowerer.declareHiddenLocal("%builtinId", DYN);
|
|
428
702
|
return {
|
|
429
703
|
kind: "seqExpr",
|
|
430
704
|
stmts: [
|
|
431
705
|
{ kind: "varDecl", localId: binding.id, init: id, loc },
|
|
432
|
-
...call.arguments.slice(1).map((arg) => ({
|
|
706
|
+
...call.arguments.nodes.slice(1).map((arg) => ({
|
|
433
707
|
kind: "exprStmt",
|
|
434
708
|
expr: lowerer.lowerExpr(arg),
|
|
435
709
|
loc: locOf(arg),
|
|
@@ -449,8 +723,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
449
723
|
if (directProcessMember === "send")
|
|
450
724
|
return lowerProcessIpcSend(lowerer, call);
|
|
451
725
|
if (directProcessMember === "disconnect") {
|
|
452
|
-
if (call.arguments.length !== 0) {
|
|
453
|
-
lowerer.noLowering(`process.disconnect with ${call.arguments.length} arguments`, call);
|
|
726
|
+
if (call.arguments.nodes.length !== 0) {
|
|
727
|
+
lowerer.noLowering(`process.disconnect with ${call.arguments.nodes.length} arguments`, call);
|
|
454
728
|
}
|
|
455
729
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
456
730
|
lowerer.unsupported("SC1090", call, "using the result of process.disconnect() (call it as its own statement)");
|
|
@@ -470,7 +744,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
470
744
|
if (access.name.text === "destroy" &&
|
|
471
745
|
ts.isPropertyAccessExpression(access.expression) &&
|
|
472
746
|
lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
|
|
473
|
-
if (call.arguments.length !== 0) {
|
|
747
|
+
if (call.arguments.nodes.length !== 0) {
|
|
474
748
|
lowerer.noLowering("stdin.destroy with arguments", call);
|
|
475
749
|
}
|
|
476
750
|
return { kind: "libCall", fn: "process.stdinDestroy", args: [], type: VOID, loc: locOf(call) };
|
|
@@ -490,15 +764,77 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
490
764
|
if (!ts.isExpressionStatement(call.parent) && !ts.isArrowFunction(call.parent)) {
|
|
491
765
|
lowerer.unsupported("SC1090", call, "using the result of stdin.setRawMode(...) (the ReadStream chain — call it as its own statement)");
|
|
492
766
|
}
|
|
493
|
-
if (call.arguments.length !== 1) {
|
|
494
|
-
lowerer.noLowering(`stdin.setRawMode with ${call.arguments.length} arguments`, call, "the supported form is setRawMode(mode) with one boolean");
|
|
767
|
+
if (call.arguments.nodes.length !== 1) {
|
|
768
|
+
lowerer.noLowering(`stdin.setRawMode with ${call.arguments.nodes.length} arguments`, call, "the supported form is setRawMode(mode) with one boolean");
|
|
495
769
|
}
|
|
496
|
-
const mode = lowerer.lowerExpr(call.arguments[0]);
|
|
770
|
+
const mode = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
497
771
|
if (mode.type.kind !== "bool") {
|
|
498
|
-
lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments[0], "the mode is a boolean here — narrow unions first");
|
|
772
|
+
lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments.nodes[0], "the mode is a boolean here — narrow unions first");
|
|
499
773
|
}
|
|
500
774
|
return { kind: "libCall", fn: "process.stdinSetRawMode", args: [mode], type: VOID, loc };
|
|
501
775
|
}
|
|
776
|
+
// process.stdout.on("resize", cb) (and once/off/removeListener/
|
|
777
|
+
// addListener, stderr too): the terminal resize event, registered on the
|
|
778
|
+
// runtime's process stream object (a SIGWINCH listener that emits when a
|
|
779
|
+
// TTY's size changed; it never keeps the loop alive). Statement position:
|
|
780
|
+
// Node returns the stream.
|
|
781
|
+
if (["on", "once", "off", "removeListener", "addListener"].includes(access.name.text) &&
|
|
782
|
+
ts.isPropertyAccessExpression(access.expression) &&
|
|
783
|
+
call.arguments.nodes.length === 2 &&
|
|
784
|
+
!call.arguments.nodes.some(ts.isSpreadElement) &&
|
|
785
|
+
ts.isExpressionStatement(call.parent)) {
|
|
786
|
+
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
787
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
788
|
+
if ((stream === "stdout" || stream === "stderr") &&
|
|
789
|
+
evT.isStringLiteralType() &&
|
|
790
|
+
evT.value === "resize") {
|
|
791
|
+
const loc = locOf(call);
|
|
792
|
+
const receiverLocal = lowerer.declareHiddenLocal("%stdioReceiver", DYN);
|
|
793
|
+
const receiver = varRef(receiverLocal.id, DYN, loc);
|
|
794
|
+
const method = access.name.text === "off"
|
|
795
|
+
? "removeListener"
|
|
796
|
+
: access.name.text === "addListener"
|
|
797
|
+
? "on"
|
|
798
|
+
: access.name.text;
|
|
799
|
+
return {
|
|
800
|
+
kind: "seqExpr",
|
|
801
|
+
stmts: [
|
|
802
|
+
{
|
|
803
|
+
kind: "varDecl",
|
|
804
|
+
localId: receiverLocal.id,
|
|
805
|
+
init: {
|
|
806
|
+
kind: "libCall",
|
|
807
|
+
fn: "process.stdio",
|
|
808
|
+
args: [numLit(stream === "stdout" ? 1 : 2, loc)],
|
|
809
|
+
type: DYN,
|
|
810
|
+
loc,
|
|
811
|
+
},
|
|
812
|
+
loc,
|
|
813
|
+
},
|
|
814
|
+
],
|
|
815
|
+
result: {
|
|
816
|
+
kind: "dynCall",
|
|
817
|
+
callee: {
|
|
818
|
+
kind: "dynKeyGet",
|
|
819
|
+
value: receiver,
|
|
820
|
+
key: strLit(method, locOf(access.name)),
|
|
821
|
+
type: DYN,
|
|
822
|
+
loc,
|
|
823
|
+
},
|
|
824
|
+
receiver,
|
|
825
|
+
calleeName: ts.getTextOfNode(access),
|
|
826
|
+
args: [
|
|
827
|
+
lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN),
|
|
828
|
+
lowerer.lowerExprExpecting(call.arguments.nodes[1], DYN),
|
|
829
|
+
],
|
|
830
|
+
type: DYN,
|
|
831
|
+
loc,
|
|
832
|
+
},
|
|
833
|
+
type: DYN,
|
|
834
|
+
loc,
|
|
835
|
+
};
|
|
836
|
+
}
|
|
837
|
+
}
|
|
502
838
|
// process.stdin.on/once("data" | "end" | "error", cb): the piped-stdin
|
|
503
839
|
// event slice. A 'data' listener keeps the event loop alive until EOF
|
|
504
840
|
// (Node's flowing stdin); 'end'/'error' listeners alone do not. `once`
|
|
@@ -509,43 +845,48 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
509
845
|
lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
|
|
510
846
|
const loc = locOf(call);
|
|
511
847
|
const once = access.name.text === "once";
|
|
512
|
-
if (call.arguments.length !== 2) {
|
|
513
|
-
lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.length} arguments`, call);
|
|
848
|
+
if (call.arguments.nodes.length !== 2) {
|
|
849
|
+
lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.nodes.length} arguments`, call);
|
|
514
850
|
}
|
|
515
|
-
const evT = lowerer.typeOf(call.arguments[0]);
|
|
851
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
516
852
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
517
853
|
if (event !== "data" && event !== "end" && event !== "error" && event !== "keypress") {
|
|
518
|
-
lowerer.noLowering(`stdin.${access.name.text}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, call.arguments[0], '"data", "end", "error", and "keypress" are the supported stdin events (as literals)');
|
|
854
|
+
lowerer.noLowering(`stdin.${access.name.text}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, call.arguments.nodes[0], '"data", "end", "error", and "keypress" are the supported stdin events (as literals)');
|
|
519
855
|
}
|
|
520
856
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
521
857
|
lowerer.unsupported("SC1090", call, "chaining stdin listener registration (the result is void here — register each listener as its own statement)");
|
|
522
858
|
}
|
|
523
859
|
if (event === "keypress") {
|
|
524
860
|
// readline.emitKeypressEvents' (str, key) events
|
|
525
|
-
const listener = stdinKeypressListener(lowerer, call.arguments[1]);
|
|
861
|
+
const listener = stdinKeypressListener(lowerer, call.arguments.nodes[1]);
|
|
526
862
|
const onceKp = { kind: "boolLit", value: once, type: BOOL, loc };
|
|
527
863
|
return { kind: "libCall", fn: "stdin.onKeypress", args: [listener, onceKp], type: VOID, loc };
|
|
528
864
|
}
|
|
529
|
-
const cb = lowerer.lowerExpr(call.arguments[1]);
|
|
865
|
+
const cb = lowerer.lowerExpr(call.arguments.nodes[1]);
|
|
530
866
|
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
|
|
531
|
-
lowerer.unsupported("SC1090", call.arguments[1], "stdin listeners with more than one parameter or a return value");
|
|
867
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "stdin listeners with more than one parameter or a return value");
|
|
532
868
|
}
|
|
533
869
|
const param = cb.type.params[0];
|
|
534
870
|
const onceArg = { kind: "boolLit", value: once, type: BOOL, loc };
|
|
535
871
|
if (event === "data") {
|
|
536
|
-
|
|
537
|
-
|
|
872
|
+
// A string parameter receives the chunks process.stdin.setEncoding
|
|
873
|
+
// decodes (pi-tui's terminal input); the runtime refuses a delivery
|
|
874
|
+
// while no encoding is set, where Node would pass a Buffer.
|
|
875
|
+
if (param !== undefined &&
|
|
876
|
+
!(param.kind === "bytes" && param.elem === "u8") &&
|
|
877
|
+
param.kind !== "string") {
|
|
878
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `data listeners whose parameter is not 'Uint8Array' or 'string' (got '${lowerer.fmt(param)}')`);
|
|
538
879
|
}
|
|
539
880
|
return { kind: "libCall", fn: "stdin.onData", args: [cb, onceArg], type: VOID, loc };
|
|
540
881
|
}
|
|
541
882
|
if (event === "end") {
|
|
542
883
|
if (param !== undefined) {
|
|
543
|
-
lowerer.unsupported("SC1090", call.arguments[1], "end listeners with parameters (use ())");
|
|
884
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "end listeners with parameters (use ())");
|
|
544
885
|
}
|
|
545
886
|
return { kind: "libCall", fn: "stdin.onEnd", args: [cb, onceArg], type: VOID, loc };
|
|
546
887
|
}
|
|
547
888
|
if (param !== undefined && !(param.kind === "object" && param.className === "%Error")) {
|
|
548
|
-
lowerer.unsupported("SC1090", call.arguments[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
|
|
889
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
|
|
549
890
|
}
|
|
550
891
|
return { kind: "libCall", fn: "stdin.onError", args: [cb, onceArg], type: VOID, loc };
|
|
551
892
|
}
|
|
@@ -553,7 +894,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
553
894
|
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
554
895
|
if (stream === "stdout" || stream === "stderr") {
|
|
555
896
|
const loc = locOf(call);
|
|
556
|
-
const args = call.arguments;
|
|
897
|
+
const args = call.arguments.nodes;
|
|
557
898
|
if (args.length < 1 || args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
558
899
|
lowerer.noLowering(`process.${stream}.write with ${args.length} arguments`, call, "the supported forms are write(data[, encoding][, callback]) with a static BufferEncoding and completion callback");
|
|
559
900
|
}
|
|
@@ -635,7 +976,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
635
976
|
// `writeOut: (str) => process.stdout.write(str)` — str untyped):
|
|
636
977
|
// a runtime string writes; anything else throws the dynCheck's
|
|
637
978
|
// honest TypeError at the call.
|
|
638
|
-
if (data.type.kind === "dyn" && isJsSourceFile(
|
|
979
|
+
if (data.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
639
980
|
data = { kind: "dynCheck", value: data, type: STRING, loc };
|
|
640
981
|
}
|
|
641
982
|
const isBytes = data.type.kind === "bytes" && data.type.elem === "u8";
|
|
@@ -645,7 +986,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
645
986
|
let callback;
|
|
646
987
|
if (callbackNode) {
|
|
647
988
|
callback = lowerer.lowerExpr(callbackNode);
|
|
648
|
-
if (callback.type.kind === "dyn" && isJsSourceFile(
|
|
989
|
+
if (callback.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
649
990
|
callback = {
|
|
650
991
|
kind: "dynCheck",
|
|
651
992
|
value: callback,
|
|
@@ -740,8 +1081,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
740
1081
|
!access.questionDotToken &&
|
|
741
1082
|
ts.isPropertyAccessExpression(access.expression) &&
|
|
742
1083
|
lowerer.stdlibGlobalMember(access.expression, "process") === "memoryUsage") {
|
|
743
|
-
if (call.arguments.length !== 0) {
|
|
744
|
-
lowerer.noLowering(`process.memoryUsage.rss with ${call.arguments.length} arguments`, call);
|
|
1084
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1085
|
+
lowerer.noLowering(`process.memoryUsage.rss with ${call.arguments.nodes.length} arguments`, call);
|
|
745
1086
|
}
|
|
746
1087
|
return { kind: "libCall", fn: "process.rss", args: [], type: F64, loc: locOf(call) };
|
|
747
1088
|
}
|
|
@@ -760,18 +1101,18 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
760
1101
|
// `removeListener` IS `off` — Node aliases them.
|
|
761
1102
|
const isOff = member === "off" || member === "removeListener";
|
|
762
1103
|
if (member === "on" || member === "once" || isOff) {
|
|
763
|
-
if (call.arguments.length !== 2) {
|
|
764
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1104
|
+
if (call.arguments.nodes.length !== 2) {
|
|
1105
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
765
1106
|
}
|
|
766
|
-
const evT = lowerer.typeOf(call.arguments[0]);
|
|
1107
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
767
1108
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
768
1109
|
if ((event === "message" || event === "disconnect") && !isOff) {
|
|
769
1110
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
770
1111
|
lowerer.unsupported("SC1090", call, "chaining process IPC listener registration (register each listener as its own statement)");
|
|
771
1112
|
}
|
|
772
1113
|
const callback = event === "message"
|
|
773
|
-
? ipcMessageListener(lowerer, call.arguments[1])
|
|
774
|
-
: ipcDisconnectListener(lowerer, call.arguments[1]);
|
|
1114
|
+
? ipcMessageListener(lowerer, call.arguments.nodes[1])
|
|
1115
|
+
: ipcDisconnectListener(lowerer, call.arguments.nodes[1]);
|
|
775
1116
|
return {
|
|
776
1117
|
kind: "libCall",
|
|
777
1118
|
fn: event === "message" ? "process.onMessage" : "process.onDisconnect",
|
|
@@ -784,7 +1125,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
784
1125
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
785
1126
|
lowerer.unsupported("SC1090", call, "chaining process exception listener registration");
|
|
786
1127
|
}
|
|
787
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1128
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
788
1129
|
const monitor = boolLit(event === "uncaughtExceptionMonitor", loc);
|
|
789
1130
|
return {
|
|
790
1131
|
kind: "libCall",
|
|
@@ -806,7 +1147,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
806
1147
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
807
1148
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
808
1149
|
}
|
|
809
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1150
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
810
1151
|
const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
|
|
811
1152
|
const fn = event === "unhandledRejection"
|
|
812
1153
|
? isOff
|
|
@@ -824,7 +1165,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
824
1165
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
825
1166
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
826
1167
|
}
|
|
827
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1168
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
828
1169
|
return {
|
|
829
1170
|
kind: "libCall",
|
|
830
1171
|
fn: isOff ? "process.offWarning" : "process.onWarning",
|
|
@@ -837,14 +1178,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
837
1178
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
838
1179
|
lowerer.unsupported("SC1090", call, "chaining process signal listener registration");
|
|
839
1180
|
}
|
|
840
|
-
const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments[0]), STRING);
|
|
1181
|
+
const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments.nodes[0]), STRING);
|
|
841
1182
|
if (name.type.kind !== "string" && name.type.kind !== "dyn") {
|
|
842
|
-
lowerer.noLowering("process signal event name that is not a string", call.arguments[0]);
|
|
1183
|
+
lowerer.noLowering("process signal event name that is not a string", call.arguments.nodes[0]);
|
|
843
1184
|
}
|
|
844
1185
|
const signal = name.type.kind === "string"
|
|
845
1186
|
? name
|
|
846
1187
|
: { kind: "dynCheck", value: name, type: STRING, loc };
|
|
847
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1188
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
848
1189
|
return {
|
|
849
1190
|
kind: "libCall",
|
|
850
1191
|
fn: isOff ? "process.offSignal" : "process.onSignal",
|
|
@@ -854,12 +1195,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
854
1195
|
};
|
|
855
1196
|
}
|
|
856
1197
|
if (event !== "exit") {
|
|
857
|
-
lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments[0]);
|
|
1198
|
+
lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments.nodes[0]);
|
|
858
1199
|
}
|
|
859
1200
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
860
1201
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
861
1202
|
}
|
|
862
|
-
let cb = lowerer.lowerExpr(call.arguments[1]);
|
|
1203
|
+
let cb = lowerer.lowerExpr(call.arguments.nodes[1]);
|
|
863
1204
|
// The checked-dynamic listener (test/common's `process.on('exit',
|
|
864
1205
|
// runCallChecks)` — an implicit-any JS function, func(dyn)=>dyn, or
|
|
865
1206
|
// a dyn VALUE that rode an untyped binding): adapt through the dyn
|
|
@@ -890,12 +1231,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
890
1231
|
}
|
|
891
1232
|
}
|
|
892
1233
|
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
|
|
893
|
-
lowerer.unsupported("SC1090", call.arguments[1], "process listeners with more than one parameter or a return value");
|
|
1234
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "process listeners with more than one parameter or a return value");
|
|
894
1235
|
}
|
|
895
1236
|
const param = cb.type.params[0];
|
|
896
1237
|
const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
|
|
897
1238
|
if (param !== undefined && param.kind !== "f64") {
|
|
898
|
-
lowerer.unsupported("SC1090", call.arguments[1], `exit listeners whose parameter is not 'number' (got '${lowerer.fmt(param)}')`);
|
|
1239
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `exit listeners whose parameter is not 'number' (got '${lowerer.fmt(param)}')`);
|
|
899
1240
|
}
|
|
900
1241
|
if (isOff) {
|
|
901
1242
|
return { kind: "libCall", fn: "process.offExit", args: [cb], type: VOID, loc };
|
|
@@ -910,17 +1251,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
910
1251
|
// shape: `.forEach((args) => process.emitWarning(...args))`).
|
|
911
1252
|
if (member === "emitWarning") {
|
|
912
1253
|
let argsArr = null;
|
|
913
|
-
if (call.arguments.length === 1 && ts.isSpreadElement(call.arguments[0])) {
|
|
914
|
-
const spread = lowerer.lowerExpr(call.arguments[0].expression);
|
|
1254
|
+
if (call.arguments.nodes.length === 1 && ts.isSpreadElement(call.arguments.nodes[0])) {
|
|
1255
|
+
const spread = lowerer.lowerExpr(call.arguments.nodes[0].expression);
|
|
915
1256
|
if (spread.type.kind === "dyn") {
|
|
916
1257
|
argsArr = spread;
|
|
917
1258
|
}
|
|
918
1259
|
else {
|
|
919
|
-
lowerer.noLowering("process.emitWarning with a typed spread argument", call.arguments[0], "spread an untyped (checked-dynamic) array, or write the arguments positionally");
|
|
1260
|
+
lowerer.noLowering("process.emitWarning with a typed spread argument", call.arguments.nodes[0], "spread an untyped (checked-dynamic) array, or write the arguments positionally");
|
|
920
1261
|
}
|
|
921
1262
|
}
|
|
922
1263
|
else {
|
|
923
|
-
argsArr = lowerTracingArguments(lowerer, call.arguments, loc);
|
|
1264
|
+
argsArr = lowerTracingArguments(lowerer, call.arguments.nodes, loc);
|
|
924
1265
|
}
|
|
925
1266
|
return { kind: "libCall", fn: "process.emitWarning", args: [argsArr], type: VOID, loc };
|
|
926
1267
|
}
|
|
@@ -935,17 +1276,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
935
1276
|
// through, boxable parameterized shapes ride the checked-dynamic
|
|
936
1277
|
// boundary, trailing call arguments ride the interned dyn thunk.
|
|
937
1278
|
if (member === "nextTick") {
|
|
938
|
-
if (call.arguments.length === 0) {
|
|
1279
|
+
if (call.arguments.nodes.length === 0) {
|
|
939
1280
|
lowerer.noLowering("process.nextTick with 0 arguments", call, "the supported form is process.nextTick(callback, ...args)");
|
|
940
1281
|
}
|
|
941
|
-
const cb = timerStyleCallback(lowerer, call.arguments, "process.nextTick", loc);
|
|
1282
|
+
const cb = timerStyleCallback(lowerer, call.arguments.nodes, "process.nextTick", loc);
|
|
942
1283
|
return { kind: "libCall", fn: "process.nextTick", args: [cb], type: VOID, loc };
|
|
943
1284
|
}
|
|
944
1285
|
// The process introspection statics — plain reads of the process's
|
|
945
1286
|
// own clocks and counters, Node's shapes exactly.
|
|
946
1287
|
if (member === "uptime" || member === "availableMemory" || member === "constrainedMemory") {
|
|
947
|
-
if (call.arguments.length !== 0) {
|
|
948
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1288
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1289
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
949
1290
|
}
|
|
950
1291
|
const fn = member === "uptime"
|
|
951
1292
|
? "process.uptime"
|
|
@@ -977,7 +1318,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
977
1318
|
type: F64,
|
|
978
1319
|
loc,
|
|
979
1320
|
});
|
|
980
|
-
if (call.arguments.length === 0) {
|
|
1321
|
+
if (call.arguments.nodes.length === 0) {
|
|
981
1322
|
return {
|
|
982
1323
|
kind: "recordLit",
|
|
983
1324
|
fields: shape.fields.map((f) => ({ name: f.name, value: sampleField(f.name) })),
|
|
@@ -985,15 +1326,15 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
985
1326
|
loc,
|
|
986
1327
|
};
|
|
987
1328
|
}
|
|
988
|
-
if (call.arguments.length !== 1) {
|
|
989
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1329
|
+
if (call.arguments.nodes.length !== 1) {
|
|
1330
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
990
1331
|
}
|
|
991
|
-
const prev = lowerer.lowerExpr(call.arguments[0]);
|
|
1332
|
+
const prev = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
992
1333
|
const prevShape = prev.type.kind === "record" ? lowerer.shapes.get(prev.type.shapeId) : undefined;
|
|
993
1334
|
const prevOk = prevShape !== undefined &&
|
|
994
1335
|
["user", "system"].every((n) => prevShape.fields.some((f) => f.name === n && f.type.kind === "f64"));
|
|
995
1336
|
if (prev.type.kind !== "record" || !prevOk) {
|
|
996
|
-
lowerer.noLowering(`process.${member} of a '${lowerer.fmt(prev.type)}' previous value`, call.arguments[0], "the previous value is the record a prior call answered ({ user, system } numbers) — Node's ERR_INVALID_ARG_TYPE shapes have no lowering");
|
|
1337
|
+
lowerer.noLowering(`process.${member} of a '${lowerer.fmt(prev.type)}' previous value`, call.arguments.nodes[0], "the previous value is the record a prior call answered ({ user, system } numbers) — Node's ERR_INVALID_ARG_TYPE shapes have no lowering");
|
|
997
1338
|
}
|
|
998
1339
|
const prevT = prev.type;
|
|
999
1340
|
const key = `${prefix}usage.diff:${prevT.shapeId}:${t.shapeId}`;
|
|
@@ -1059,8 +1400,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1059
1400
|
// storage lives in the same heap). One sample per call: the interned
|
|
1060
1401
|
// helper takes it, then the record reads it field by field.
|
|
1061
1402
|
if (member === "memoryUsage") {
|
|
1062
|
-
if (call.arguments.length !== 0) {
|
|
1063
|
-
lowerer.noLowering(`process.memoryUsage with ${call.arguments.length} arguments`, call);
|
|
1403
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1404
|
+
lowerer.noLowering(`process.memoryUsage with ${call.arguments.nodes.length} arguments`, call);
|
|
1064
1405
|
}
|
|
1065
1406
|
const t = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
1066
1407
|
if (t?.kind !== "record")
|
|
@@ -1114,8 +1455,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1114
1455
|
// process.resourceUsage() — getrusage's 16 fields in Node's names and
|
|
1115
1456
|
// units (CPU times in microseconds, maxRSS in kilobytes).
|
|
1116
1457
|
if (member === "resourceUsage") {
|
|
1117
|
-
if (call.arguments.length !== 0) {
|
|
1118
|
-
lowerer.noLowering(`process.resourceUsage with ${call.arguments.length} arguments`, call);
|
|
1458
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1459
|
+
lowerer.noLowering(`process.resourceUsage with ${call.arguments.nodes.length} arguments`, call);
|
|
1119
1460
|
}
|
|
1120
1461
|
const t = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
1121
1462
|
if (t?.kind !== "record")
|
|
@@ -1165,8 +1506,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1165
1506
|
// DIVERGENCE (SEMANTICS.md): resources this runtime does not model
|
|
1166
1507
|
// as loop handles (TCP wraps, FS requests) are absent from the answer.
|
|
1167
1508
|
if (member === "getActiveResourcesInfo") {
|
|
1168
|
-
if (call.arguments.length !== 0) {
|
|
1169
|
-
lowerer.noLowering(`process.getActiveResourcesInfo with ${call.arguments.length} arguments`, call);
|
|
1509
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1510
|
+
lowerer.noLowering(`process.getActiveResourcesInfo with ${call.arguments.nodes.length} arguments`, call);
|
|
1170
1511
|
}
|
|
1171
1512
|
return { kind: "libCall", fn: "process.activeResources", args: [], type: arrayOf(STRING), loc };
|
|
1172
1513
|
}
|
|
@@ -1174,25 +1515,25 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1174
1515
|
// completes it to the -1 read sentinel); umask(mask) sets and answers
|
|
1175
1516
|
// the previous mask, Node's shape either way.
|
|
1176
1517
|
if (member === "umask") {
|
|
1177
|
-
if (call.arguments.length > 1) {
|
|
1178
|
-
lowerer.noLowering(`process.umask with ${call.arguments.length} arguments`, call);
|
|
1518
|
+
if (call.arguments.nodes.length > 1) {
|
|
1519
|
+
lowerer.noLowering(`process.umask with ${call.arguments.nodes.length} arguments`, call);
|
|
1179
1520
|
}
|
|
1180
|
-
const mask = call.arguments.length === 1
|
|
1181
|
-
? lowerer.lowerExpr(call.arguments[0])
|
|
1521
|
+
const mask = call.arguments.nodes.length === 1
|
|
1522
|
+
? lowerer.lowerExpr(call.arguments.nodes[0])
|
|
1182
1523
|
: { kind: "numLit", value: -1, type: F64, loc };
|
|
1183
1524
|
if (mask.type.kind !== "f64") {
|
|
1184
|
-
lowerer.noLowering("process.umask of non-number masks", call.arguments[0]);
|
|
1525
|
+
lowerer.noLowering("process.umask of non-number masks", call.arguments.nodes[0]);
|
|
1185
1526
|
}
|
|
1186
1527
|
return { kind: "libCall", fn: "process.umask", args: [mask], type: F64, loc };
|
|
1187
1528
|
}
|
|
1188
1529
|
// chdir(2) — throws Node's fs-shaped error on failure.
|
|
1189
1530
|
if (member === "chdir") {
|
|
1190
|
-
if (call.arguments.length !== 1) {
|
|
1191
|
-
lowerer.noLowering(`process.chdir with ${call.arguments.length} arguments`, call);
|
|
1531
|
+
if (call.arguments.nodes.length !== 1) {
|
|
1532
|
+
lowerer.noLowering(`process.chdir with ${call.arguments.nodes.length} arguments`, call);
|
|
1192
1533
|
}
|
|
1193
|
-
const dir = lowerer.lowerExpr(call.arguments[0]);
|
|
1534
|
+
const dir = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
1194
1535
|
if (dir.type.kind !== "string") {
|
|
1195
|
-
lowerer.noLowering("process.chdir of non-string paths", call.arguments[0]);
|
|
1536
|
+
lowerer.noLowering("process.chdir of non-string paths", call.arguments.nodes[0]);
|
|
1196
1537
|
}
|
|
1197
1538
|
return { kind: "libCall", fn: "process.chdir", args: [dir], type: VOID, loc };
|
|
1198
1539
|
}
|
|
@@ -1201,8 +1542,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1201
1542
|
// the member optional (that optionality covers Windows). The `?.()`
|
|
1202
1543
|
// spelling routes here through lowerProcessOptionalMethodCall.
|
|
1203
1544
|
if (PROCESS_CREDENTIAL_FNS.has(member)) {
|
|
1204
|
-
if (call.arguments.length !== 0) {
|
|
1205
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1545
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1546
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
1206
1547
|
}
|
|
1207
1548
|
return processCredentialCall(member, loc);
|
|
1208
1549
|
}
|
|
@@ -1214,11 +1555,11 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1214
1555
|
// Node's `kill ESRCH`/`kill EPERM` Error. The result is Node's
|
|
1215
1556
|
// constant true.
|
|
1216
1557
|
if (member === "kill") {
|
|
1217
|
-
if (call.arguments.length < 1 || call.arguments.length > 2) {
|
|
1218
|
-
lowerer.noLowering(`process.kill with ${call.arguments.length} arguments`, call);
|
|
1558
|
+
if (call.arguments.nodes.length < 1 || call.arguments.nodes.length > 2) {
|
|
1559
|
+
lowerer.noLowering(`process.kill with ${call.arguments.nodes.length} arguments`, call);
|
|
1219
1560
|
}
|
|
1220
|
-
const pid = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
1221
|
-
const sigNode = call.arguments[1];
|
|
1561
|
+
const pid = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
|
|
1562
|
+
const sigNode = call.arguments.nodes[1];
|
|
1222
1563
|
if (!sigNode) {
|
|
1223
1564
|
const dflt = { kind: "strLit", value: "SIGTERM", type: STRING, loc };
|
|
1224
1565
|
return { kind: "libCall", fn: "process.kill", args: [pid, dflt], type: BOOL, loc };
|
|
@@ -1233,10 +1574,36 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1233
1574
|
lowerer.noLowering(`process.kill with a '${lowerer.fmt(sig.type)}' signal`, sigNode, "pass a signal name string or number (narrow unions first)");
|
|
1234
1575
|
}
|
|
1235
1576
|
if (member === "exit") {
|
|
1236
|
-
const arg = call.arguments[0];
|
|
1237
|
-
|
|
1577
|
+
const arg = call.arguments.nodes[0];
|
|
1578
|
+
let code = arg !== undefined
|
|
1238
1579
|
? lowerer.lowerExprExpecting(arg, F64)
|
|
1239
1580
|
: { kind: "libCall", fn: "process.currentExitCode", args: [], type: F64, loc };
|
|
1581
|
+
// process.exit(code) assigns process.exitCode before the 'exit'
|
|
1582
|
+
// listeners run. Only a program that reads the property can observe
|
|
1583
|
+
// that, so only such a program records the assignment.
|
|
1584
|
+
if (arg !== undefined && programReadsExitCode(lowerer)) {
|
|
1585
|
+
const binding = lowerer.declareHiddenLocal("%exitCode", F64);
|
|
1586
|
+
code = {
|
|
1587
|
+
kind: "seqExpr",
|
|
1588
|
+
stmts: [
|
|
1589
|
+
{ kind: "varDecl", localId: binding.id, init: code, loc },
|
|
1590
|
+
{
|
|
1591
|
+
kind: "exprStmt",
|
|
1592
|
+
expr: {
|
|
1593
|
+
kind: "libCall",
|
|
1594
|
+
fn: "process.setExitCodeTracked",
|
|
1595
|
+
args: [varRef(binding.id, F64, loc)],
|
|
1596
|
+
type: VOID,
|
|
1597
|
+
loc,
|
|
1598
|
+
},
|
|
1599
|
+
loc,
|
|
1600
|
+
},
|
|
1601
|
+
],
|
|
1602
|
+
result: varRef(binding.id, F64, loc),
|
|
1603
|
+
type: F64,
|
|
1604
|
+
loc,
|
|
1605
|
+
};
|
|
1606
|
+
}
|
|
1240
1607
|
return { kind: "libCall", fn: "process.exit", args: [code], type: VOID, loc };
|
|
1241
1608
|
}
|
|
1242
1609
|
return null; // process.argv(...) etc. are tsc errors before lowering
|
|
@@ -1248,6 +1615,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1248
1615
|
* BEFORE the optional-chain machinery: `process.getuid` has no value
|
|
1249
1616
|
* lowering for the chain to guard. Null when this isn't that shape. */
|
|
1250
1617
|
export function lowerProcessOptionalMethodCall(lowerer, expr) {
|
|
1618
|
+
// `process.send!(message)`: the asserted direct call of the optional
|
|
1619
|
+
// member (the @types/node spelling under strict null checks).
|
|
1620
|
+
if (!expr.questionDotToken &&
|
|
1621
|
+
ts.isNonNullExpression(expr.expression) &&
|
|
1622
|
+
ts.isPropertyAccessExpression(expr.expression.expression) &&
|
|
1623
|
+
!expr.expression.expression.questionDotToken &&
|
|
1624
|
+
lowerer.stdlibGlobalMember(expr.expression.expression, "process") === "send")
|
|
1625
|
+
return lowerProcessIpcSend(lowerer, expr);
|
|
1251
1626
|
if (!expr.questionDotToken)
|
|
1252
1627
|
return null;
|
|
1253
1628
|
if (!ts.isPropertyAccessExpression(expr.expression))
|
|
@@ -1257,8 +1632,8 @@ export function lowerProcessOptionalMethodCall(lowerer, expr) {
|
|
|
1257
1632
|
return lowerProcessIpcSend(lowerer, expr);
|
|
1258
1633
|
if (member === null || !PROCESS_CREDENTIAL_FNS.has(member))
|
|
1259
1634
|
return null;
|
|
1260
|
-
if (expr.arguments.length !== 0) {
|
|
1261
|
-
lowerer.noLowering(`process.${member} with ${expr.arguments.length} arguments`, expr);
|
|
1635
|
+
if (expr.arguments.nodes.length !== 0) {
|
|
1636
|
+
lowerer.noLowering(`process.${member} with ${expr.arguments.nodes.length} arguments`, expr);
|
|
1262
1637
|
}
|
|
1263
1638
|
return processCredentialCall(member, locOf(expr));
|
|
1264
1639
|
}
|
|
@@ -1284,4 +1659,35 @@ function processCredentialCall(member, loc) {
|
|
|
1284
1659
|
loc,
|
|
1285
1660
|
};
|
|
1286
1661
|
}
|
|
1662
|
+
/** `process.getBuiltinModule("node:os")`: a string-literal id naming a
|
|
1663
|
+
* supported builtin whose call the checker types as that module's
|
|
1664
|
+
* namespace (@types/node's BuiltInModule map) answers the namespace value
|
|
1665
|
+
* `import * as ns` binds, so its members key the builtin tables at their
|
|
1666
|
+
* use sites. The receiver may be cast (`(process as P)`) and the call
|
|
1667
|
+
* optional: Node 24's process always has the member, and the cast changes
|
|
1668
|
+
* no runtime value. Other ids keep the dynamic loader (undefined for
|
|
1669
|
+
* unknown ids, Node's argument errors). */
|
|
1670
|
+
export function lowerProcessBuiltinModuleNamespace(lowerer, call) {
|
|
1671
|
+
const callee = call.expression;
|
|
1672
|
+
if (!ts.isPropertyAccessExpression(callee) || callee.name.text !== "getBuiltinModule")
|
|
1673
|
+
return null;
|
|
1674
|
+
const id = call.arguments.nodes[0];
|
|
1675
|
+
if (call.arguments.nodes.length !== 1 || !id || !ts.isStringLiteralLike(id))
|
|
1676
|
+
return null;
|
|
1677
|
+
let receiver = callee.expression;
|
|
1678
|
+
while (ts.isParenthesizedExpression(receiver) ||
|
|
1679
|
+
ts.isAsExpression(receiver) ||
|
|
1680
|
+
ts.isSatisfiesExpression(receiver) ||
|
|
1681
|
+
ts.isNonNullExpression(receiver))
|
|
1682
|
+
receiver = receiver.expression;
|
|
1683
|
+
if (!lowerer.isStdlibGlobal(receiver, "process"))
|
|
1684
|
+
return null;
|
|
1685
|
+
const module = canonicalBuiltinModule(id.text);
|
|
1686
|
+
if (module === null)
|
|
1687
|
+
return null;
|
|
1688
|
+
const type = lowerer.mapTypeOf(lowerer.checker.getNonNullableType(lowerer.typeOf(call)));
|
|
1689
|
+
if (type?.kind !== "moduleNs" || type.moduleId !== `builtin:${module}`)
|
|
1690
|
+
return null;
|
|
1691
|
+
return { kind: "moduleNsRef", moduleId: type.moduleId, type, loc: locOf(call) };
|
|
1692
|
+
}
|
|
1287
1693
|
//# sourceMappingURL=process.js.map
|