@scriptc/compiler 0.3.5 → 0.4.0
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 +960 -82
- 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 +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +6 -0
- package/dist/backend/library-pack.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.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 +11 -0
- package/dist/backend/llvm/classes.js +71 -14
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +58 -8
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.js +1 -0
- 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 +12 -3
- package/dist/backend/llvm/dense-array-access.js +72 -14
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +59 -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 +28 -4
- package/dist/backend/llvm/dyn.js +324 -179
- 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 +1190 -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 +1535 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +58 -0
- package/dist/backend/llvm/emit-statements.js +1964 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +576 -268
- package/dist/backend/llvm/emitter.js +801 -4447
- 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 +71 -53
- 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 +39 -15
- 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-dispatch.js +1 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +92 -63
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +132 -25
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +2 -2
- 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 +54 -12
- 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.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/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 +488 -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 +217 -24
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +102 -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 +77 -25
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +100 -50
- 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 +229 -5
- 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 +57 -8
- 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 +2 -2
- 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.js +2 -2
- 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 +151 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +70 -9
- package/dist/backend/llvm/nullable-unions.js +105 -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 +4 -0
- package/dist/backend/llvm/publish.js +14 -2
- 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 +13 -2
- package/dist/backend/llvm/record-results.js +66 -6
- 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 +143 -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 +9 -6
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +1 -1
- package/dist/backend/llvm/shapes.d.ts +69 -43
- package/dist/backend/llvm/shapes.js +285 -21
- 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 +74 -0
- package/dist/backend/llvm/speculative-integers.js +571 -0
- package/dist/backend/llvm/speculative-integers.js.map +1 -0
- package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
- package/dist/backend/llvm/speculative-integers.test.js +148 -0
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
- 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-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 +110 -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 +7 -0
- package/dist/backend/mangle.js +11 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +6 -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 +37 -0
- package/dist/backend/native/executable.js +192 -134
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -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 +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-pack-core.d.ts +9 -1
- package/dist/backend/runtime-pack-core.js +10 -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 +5 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -3
- package/dist/backend/runtime-pack.js +12 -6
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +20 -6
- 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 +8 -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 +5 -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 +44 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +11 -1
- package/dist/cli/usage.js +20 -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 +13 -0
- package/dist/contracts/check.js +25 -6
- 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 +19 -6
- 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 +11 -7
- package/dist/diagnostics/diagnostic.js +35 -23
- 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 +17 -0
- package/dist/executable/executable-cache.js +13 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +7 -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/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/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/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 +72 -4
- 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 +23 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +45 -6
- 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 +18 -0
- package/dist/frontend/lowering/builtins/compression.js +230 -52
- 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 +19 -0
- package/dist/frontend/lowering/builtins/crypto.js +223 -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/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 +174 -6
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +136 -113
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
- package/dist/frontend/lowering/builtins/filesystem.js +213 -76
- 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/hash-stream.d.ts +12 -0
- package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
- 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 +232 -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 +67 -46
- 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 +32 -1
- package/dist/frontend/lowering/builtins/process.js +468 -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 +37 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +320 -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 +55 -13
- package/dist/frontend/lowering/builtins/readline.js +931 -69
- 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 +16 -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 +75 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- 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 +16 -0
- package/dist/frontend/lowering/builtins/workers.js +246 -3
- 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 +19 -1
- package/dist/frontend/lowering/call-signatures.js +254 -47
- 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 +528 -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 +1115 -89
- 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 +55 -0
- package/dist/frontend/lowering/class-protocols.js +738 -22
- 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 +80 -18
- 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 +261 -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/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
- 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 +9 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
- 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 +51 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +19 -0
- package/dist/frontend/lowering/containers/array-from-async.js +427 -0
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
- package/dist/frontend/lowering/containers/array-methods.js +89 -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.js +161 -101
- 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 +219 -27
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +81 -48
- 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 +419 -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 +4 -0
- package/dist/frontend/lowering/cycle-initialization.js +39 -0
- 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 +238 -128
- 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 +703 -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 +2483 -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 +1797 -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 +40 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -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 +1322 -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 +253 -85
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
- package/dist/frontend/lowering/expressions/property-access.js +3544 -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 +1679 -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 +538 -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-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 +39 -0
- package/dist/frontend/lowering/generic-functions.js +393 -75
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- 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/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-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 +32 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1298 -452
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +50 -3
- package/dist/frontend/lowering/lower-classes.js +1499 -456
- 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 +179 -8
- 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 +268 -71
- 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 +1493 -12407
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +68 -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 +29 -16
- 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 +354 -99
- 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 +19 -2
- package/dist/frontend/lowering/lower-mock.js +557 -74
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +268 -61
- 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 +45 -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 +638 -105
- 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 +151 -109
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
- package/dist/frontend/lowering/lower-stmts.js +1589 -398
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +4 -3
- package/dist/frontend/lowering/lower-stream.js +714 -75
- 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 +574 -100
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +80 -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 +409 -26
- package/dist/frontend/lowering/lowerer.js +1918 -305
- 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/null-prototype.d.ts +13 -0
- package/dist/frontend/lowering/null-prototype.js +33 -0
- package/dist/frontend/lowering/null-prototype.js.map +1 -0
- 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/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/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 +10 -10
- 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 +15 -6
- package/dist/frontend/lowering/surfaces.js +278 -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/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.d.ts +5 -0
- package/dist/frontend/mock-shapes.js +39 -7
- 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-bundled-chunks.d.ts +51 -0
- package/dist/frontend/npm-static-bundled-chunks.js +810 -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 +287 -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 +768 -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 +207 -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-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 +17 -1
- package/dist/frontend/npm-static.js +167 -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/pipeline.js +164 -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 +92 -2
- package/dist/frontend/program.js +1557 -254
- 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 +36 -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 +20 -1
- package/dist/frontend/services.js +40 -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 +5 -1
- package/dist/frontend/ts7/program-host.js +12 -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 +54 -24
- package/dist/frontend/ts7/semantic-model.js +88 -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 +11 -11
- 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 +2612 -695
- 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 +3 -1
- package/dist/index.js +47 -10
- 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 +30 -0
- package/dist/ir/array-length-stability.js +236 -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 +113 -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 +139 -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 +655 -25
- 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 +10 -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 +119 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +29 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +16 -6
- package/dist/ir/integer-loop-facts.js +143 -38
- 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 +3 -0
- package/dist/ir/integer-ranges.js +4 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +142 -1
- 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 +234 -58
- package/dist/ir/ir.js +123 -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/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +365 -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 +150 -33
- package/dist/ir/runtime-features.js +672 -339
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +62 -0
- package/dist/ir/runtime-features.test.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 +107 -94
- 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 +220 -71
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +64 -9
- 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 +18 -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 +5 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +2 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/prepare.js +7 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +12 -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 +21 -20
- package/surface-manifest.json +332 -36
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { stdinKeypressListener } from "./readline.js";
|
|
1
2
|
import { envSnapshotHelper, lowerProcessLoadEnvFile } from "./environment.js";
|
|
2
3
|
import { dynUndefinedExpr, boolLit, numLit, strLit, varRef } from "../../../ir/build.js";
|
|
3
4
|
import { timerStyleCallback } from "../lower-timers.js";
|
|
4
5
|
import * as ts from "../../ts7/adapter.js";
|
|
6
|
+
import { requestGeneralStreamSurface } from "../general-streams.js";
|
|
5
7
|
import { own } from "../lowerer.js";
|
|
6
8
|
import { isJsSourceFile, locOf } from "../../program.js";
|
|
7
9
|
import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
|
|
@@ -9,8 +11,150 @@ import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "../opti
|
|
|
9
11
|
import { voidizedCallback } from "../lower-server.js";
|
|
10
12
|
import { BOOL, BYTES_U8, DYN, F64, PROCSTREAM_T, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, funcOf, } from "../../../ir/ir.js";
|
|
11
13
|
import { lowerBuiltinLoaderValue } from "../lower-builtin-values.js";
|
|
14
|
+
import { builtinFunctionValue } from "../lower-exprs.js";
|
|
15
|
+
import { canonicalBuiltinModule } from "../../builtin-modules.js";
|
|
12
16
|
import { lowerProcessIpcSend, ipcMessageListener, ipcDisconnectListener } from "./ipc.js";
|
|
13
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
|
+
}
|
|
14
158
|
/** The pinned Node release the runtime reports as process.versions.node
|
|
15
159
|
* (packages/runtime/src/scr_lib.c SCR_NODE_COMPAT_VERSION, kept equal to
|
|
16
160
|
* internal/compatibility/node-v24.json by test/node-pin.test.ts). */
|
|
@@ -30,40 +174,42 @@ export function lowerProcStreamMethodCall(lowerer, call, access) {
|
|
|
30
174
|
return null;
|
|
31
175
|
const name = access.name.text;
|
|
32
176
|
const loc = locOf(call);
|
|
33
|
-
if (isJsSourceFile(
|
|
177
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
34
178
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
35
179
|
if (receiver.type.kind === "dyn") {
|
|
36
180
|
return {
|
|
37
181
|
kind: "dynInvoke",
|
|
38
182
|
recv: receiver,
|
|
39
183
|
method: name,
|
|
40
|
-
calleeName: call.expression
|
|
41
|
-
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)),
|
|
42
186
|
type: DYN,
|
|
43
187
|
loc,
|
|
44
188
|
};
|
|
45
189
|
}
|
|
46
190
|
}
|
|
47
|
-
if (name === "getWindowSize" && call.arguments.length === 0) {
|
|
191
|
+
if (name === "getWindowSize" && call.arguments.nodes.length === 0) {
|
|
48
192
|
const receiver = lowerer.coerceToExpected(lowerer.lowerExpr(access.expression), DYN);
|
|
49
193
|
return lowerer.coerceInto(call, {
|
|
50
194
|
kind: "dynInvoke",
|
|
51
195
|
recv: receiver,
|
|
52
196
|
method: name,
|
|
53
|
-
calleeName: call.expression
|
|
197
|
+
calleeName: ts.getTextOfNode(call.expression),
|
|
54
198
|
args: [],
|
|
55
199
|
type: DYN,
|
|
56
200
|
loc,
|
|
57
201
|
}, lowerer.irTypeOf(call));
|
|
58
202
|
}
|
|
59
|
-
if (name === "write" && call.arguments.length === 1) {
|
|
203
|
+
if (name === "write" && call.arguments.nodes.length === 1) {
|
|
60
204
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
61
|
-
const data = lowerer.lowerExpr(call.arguments[0]);
|
|
205
|
+
const data = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
62
206
|
if (data.type.kind !== "string") {
|
|
63
|
-
|
|
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");
|
|
64
209
|
}
|
|
65
210
|
return { kind: "libCall", fn: "procStream.write", args: [receiver, data], type: BOOL, loc };
|
|
66
211
|
}
|
|
212
|
+
requestGeneralStreamSurface(lowerer, access.expression);
|
|
67
213
|
lowerer.noLowering(`WritableStream.${name}`, call, "write(data) with one string and getWindowSize() are the supported stream-value methods", lowerer.checker.getSymbolAtLocation(access.name));
|
|
68
214
|
}
|
|
69
215
|
/** Standard streams expose optional terminal properties: pipes have no
|
|
@@ -90,7 +236,7 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
90
236
|
const direct = ts.isPropertyAccessExpression(expr.expression)
|
|
91
237
|
? lowerer.stdlibGlobalMember(expr.expression, "process")
|
|
92
238
|
: null;
|
|
93
|
-
if (isJsSourceFile(
|
|
239
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
|
|
94
240
|
(direct === "stdin" ||
|
|
95
241
|
direct === "stdout" ||
|
|
96
242
|
direct === "stderr" ||
|
|
@@ -105,6 +251,18 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
105
251
|
loc: locOf(expr),
|
|
106
252
|
};
|
|
107
253
|
}
|
|
254
|
+
// `if (process.stdin.setRawMode)`: Node's stdin has the method only
|
|
255
|
+
// when it is a TTY. The runtime's stream object answers the same
|
|
256
|
+
// presence (the method or undefined); calls keep their direct lowering.
|
|
257
|
+
if (direct === "stdin" && member === "setRawMode") {
|
|
258
|
+
return {
|
|
259
|
+
kind: "dynKeyGet",
|
|
260
|
+
value: lowerer.lowerExpr(expr.expression),
|
|
261
|
+
key: strLit(member, locOf(expr.name)),
|
|
262
|
+
type: DYN,
|
|
263
|
+
loc: locOf(expr),
|
|
264
|
+
};
|
|
265
|
+
}
|
|
108
266
|
if (member !== "isTTY" && member !== "columns" && member !== "rows")
|
|
109
267
|
return null;
|
|
110
268
|
let recv = expr.expression;
|
|
@@ -182,6 +340,36 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
182
340
|
* read in source order). Method members referenced without a call are
|
|
183
341
|
* rejected specifically. Null for non-process receivers (the chain keeps
|
|
184
342
|
* trying other property lowerings). */
|
|
343
|
+
/** The value of a DATA member of the process global taken off by
|
|
344
|
+
* destructuring (`const { env, argv } = process` in JavaScript, the
|
|
345
|
+
* supports-color opening): the same values the spelled `process.env` /
|
|
346
|
+
* `process.argv` reads produce, typed by the binding. Null for members
|
|
347
|
+
* this does not cover (methods keep the destructuring fence). */
|
|
348
|
+
export function processDataMemberValue(lowerer, member, binding, loc) {
|
|
349
|
+
switch (member) {
|
|
350
|
+
case "env": {
|
|
351
|
+
const mapped = lowerer.mapTypeOf(lowerer.typeOf(binding));
|
|
352
|
+
if (mapped?.kind !== "record")
|
|
353
|
+
return null;
|
|
354
|
+
const helper = envSnapshotHelper(lowerer, mapped.shapeId, loc);
|
|
355
|
+
return helper === null ? null : { kind: "call", callee: helper, args: [], type: mapped, loc };
|
|
356
|
+
}
|
|
357
|
+
case "argv":
|
|
358
|
+
return { kind: "libCall", fn: "process.argv", args: [], type: arrayOf(STRING), loc };
|
|
359
|
+
case "platform":
|
|
360
|
+
return { kind: "libCall", fn: "process.platform", args: [], type: STRING, loc };
|
|
361
|
+
case "arch":
|
|
362
|
+
return { kind: "libCall", fn: "process.arch", args: [], type: STRING, loc };
|
|
363
|
+
case "pid":
|
|
364
|
+
return { kind: "libCall", fn: "process.pid", args: [], type: F64, loc };
|
|
365
|
+
case "execPath":
|
|
366
|
+
return { kind: "libCall", fn: "process.execPath", args: [], type: STRING, loc };
|
|
367
|
+
case "versions":
|
|
368
|
+
return { kind: "libCall", fn: "process.versions", args: [], type: DYN, loc };
|
|
369
|
+
default:
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
185
373
|
export function lowerProcessProperty(lowerer, expr) {
|
|
186
374
|
if (!expr.questionDotToken &&
|
|
187
375
|
expr.name.text === "bigint" &&
|
|
@@ -260,9 +448,46 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
260
448
|
if (member === null)
|
|
261
449
|
return null;
|
|
262
450
|
const loc = locOf(expr);
|
|
451
|
+
// `if (process.send)`: Node defines process.send and process.disconnect
|
|
452
|
+
// only when the process has an IPC channel. A read whose value only
|
|
453
|
+
// feeds a truthiness test answers that presence; other value uses keep
|
|
454
|
+
// the member fence.
|
|
455
|
+
if ((member === "send" || member === "disconnect") &&
|
|
456
|
+
!expr.questionDotToken &&
|
|
457
|
+
isTruthinessOnlyRead(lowerer, expr)) {
|
|
458
|
+
return processHasIpc(lowerer, loc);
|
|
459
|
+
}
|
|
263
460
|
if (member === "versions") {
|
|
264
461
|
return { kind: "libCall", fn: "process.versions", args: [], type: DYN, loc };
|
|
265
462
|
}
|
|
463
|
+
// process.exitCode: undefined until something assigns it, then the
|
|
464
|
+
// assigned code. A read the checker narrowed to number follows an
|
|
465
|
+
// assignment, so the code is set.
|
|
466
|
+
if (member === "exitCode" && !expr.questionDotToken) {
|
|
467
|
+
const current = {
|
|
468
|
+
kind: "libCall",
|
|
469
|
+
fn: "process.currentExitCode",
|
|
470
|
+
args: [],
|
|
471
|
+
type: F64,
|
|
472
|
+
loc,
|
|
473
|
+
};
|
|
474
|
+
if (lowerer.mapTypeOf(lowerer.typeOf(expr))?.kind === "f64")
|
|
475
|
+
return current;
|
|
476
|
+
const type = { kind: "union", unionId: lowerer.unions.intern([F64, UNDEFINED_T]) };
|
|
477
|
+
return {
|
|
478
|
+
kind: "ternary",
|
|
479
|
+
cond: { kind: "libCall", fn: "process.hasExitCode", args: [], type: BOOL, loc },
|
|
480
|
+
then: lowerer.coerceToExpected(current, type),
|
|
481
|
+
else_: lowerer.coerceToExpected({ kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc }, type),
|
|
482
|
+
type,
|
|
483
|
+
loc,
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
// process.features as a value (`"sea" in process.features`): an object
|
|
487
|
+
// holding none of the flags, consistent with the member reads above.
|
|
488
|
+
if (member === "features") {
|
|
489
|
+
return { kind: "dynObjLit", type: DYN, loc };
|
|
490
|
+
}
|
|
266
491
|
// process.noDeprecation / process.throwDeprecation: the values the
|
|
267
492
|
// program assigned (undefined before that — no Node flags reach a
|
|
268
493
|
// compiled binary).
|
|
@@ -284,6 +509,11 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
284
509
|
if (member === "hrtime") {
|
|
285
510
|
return { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc };
|
|
286
511
|
}
|
|
512
|
+
// A stored process.nextTick in JavaScript (`cond ? setImmediate :
|
|
513
|
+
// process.nextTick`): the interned builtin function value.
|
|
514
|
+
if (member === "nextTick" && isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
515
|
+
return builtinFunctionValue("process.nextTick", loc);
|
|
516
|
+
}
|
|
287
517
|
if (member === "getBuiltinModule") {
|
|
288
518
|
// Keep the native loader's argument validation when the function is
|
|
289
519
|
// stored. The declaration's string signature must not insert a checked
|
|
@@ -296,10 +526,10 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
296
526
|
if (member === "connected") {
|
|
297
527
|
return { kind: "libCall", fn: "process.connected", args: [], type: BOOL, loc };
|
|
298
528
|
}
|
|
299
|
-
// process.execArgv: the
|
|
300
|
-
//
|
|
529
|
+
// process.execArgv: the Node runtime flags kept out of process.argv —
|
|
530
|
+
// a leading --test-update-snapshots in node:test programs, else [].
|
|
301
531
|
if (member === "execArgv") {
|
|
302
|
-
return { kind: "
|
|
532
|
+
return { kind: "libCall", fn: "process.execArgv", args: [], type: arrayOf(STRING), loc };
|
|
303
533
|
}
|
|
304
534
|
// process._exiting — the runtime's exit-sequence flag (true while
|
|
305
535
|
// 'exit' listeners run), Node's own undocumented member.
|
|
@@ -359,7 +589,7 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
359
589
|
// (`process.stdout.isTTY`, `.write(...)`) never reach here — their
|
|
360
590
|
// OUTER expressions dispatch first.
|
|
361
591
|
if (member === "stdin" ||
|
|
362
|
-
((member === "stdout" || member === "stderr") && isJsSourceFile(
|
|
592
|
+
((member === "stdout" || member === "stderr") && isJsSourceFile(ts.getSourceFileOfNode(expr)))) {
|
|
363
593
|
return {
|
|
364
594
|
kind: "libCall",
|
|
365
595
|
fn: "process.stdio",
|
|
@@ -384,17 +614,18 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
384
614
|
export function lowerProcessMethodCall(lowerer, call, access) {
|
|
385
615
|
if (call.questionDotToken)
|
|
386
616
|
return null;
|
|
387
|
-
if (isJsSourceFile(
|
|
617
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(call)) &&
|
|
618
|
+
ts.isPropertyAccessExpression(access.expression)) {
|
|
388
619
|
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
389
620
|
if (stream === "stdin" || stream === "stdout" || stream === "stderr") {
|
|
390
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
621
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
391
622
|
lowerer.noLowering("process stream spread arguments", call);
|
|
392
623
|
return {
|
|
393
624
|
kind: "dynInvoke",
|
|
394
625
|
recv: lowerer.lowerExpr(access.expression),
|
|
395
626
|
method: access.name.text,
|
|
396
|
-
calleeName:
|
|
397
|
-
args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
627
|
+
calleeName: ts.getTextOfNode(access),
|
|
628
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
398
629
|
type: DYN,
|
|
399
630
|
loc: locOf(call),
|
|
400
631
|
};
|
|
@@ -404,31 +635,31 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
404
635
|
if (directProcessMember === "loadEnvFile")
|
|
405
636
|
return lowerProcessLoadEnvFile(lowerer, call);
|
|
406
637
|
if (directProcessMember === "hrtime") {
|
|
407
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
638
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
408
639
|
lowerer.noLowering("process.hrtime with spread arguments", call);
|
|
409
640
|
const loc = locOf(call);
|
|
410
641
|
return {
|
|
411
642
|
kind: "dynCall",
|
|
412
643
|
callee: { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc },
|
|
413
|
-
args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
644
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
414
645
|
calleeName: "process.hrtime",
|
|
415
646
|
type: DYN,
|
|
416
647
|
loc,
|
|
417
648
|
};
|
|
418
649
|
}
|
|
419
650
|
if (directProcessMember === "getBuiltinModule") {
|
|
420
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
651
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
421
652
|
lowerer.noLowering("process.getBuiltinModule with spread arguments", call);
|
|
422
653
|
const loc = locOf(call);
|
|
423
|
-
const id = call.arguments[0]
|
|
424
|
-
? lowerer.lowerExprExpecting(call.arguments[0], DYN)
|
|
654
|
+
const id = call.arguments.nodes[0]
|
|
655
|
+
? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
|
|
425
656
|
: dynUndefinedExpr(loc);
|
|
426
657
|
const binding = lowerer.declareHiddenLocal("%builtinId", DYN);
|
|
427
658
|
return {
|
|
428
659
|
kind: "seqExpr",
|
|
429
660
|
stmts: [
|
|
430
661
|
{ kind: "varDecl", localId: binding.id, init: id, loc },
|
|
431
|
-
...call.arguments.slice(1).map((arg) => ({
|
|
662
|
+
...call.arguments.nodes.slice(1).map((arg) => ({
|
|
432
663
|
kind: "exprStmt",
|
|
433
664
|
expr: lowerer.lowerExpr(arg),
|
|
434
665
|
loc: locOf(arg),
|
|
@@ -448,8 +679,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
448
679
|
if (directProcessMember === "send")
|
|
449
680
|
return lowerProcessIpcSend(lowerer, call);
|
|
450
681
|
if (directProcessMember === "disconnect") {
|
|
451
|
-
if (call.arguments.length !== 0) {
|
|
452
|
-
lowerer.noLowering(`process.disconnect with ${call.arguments.length} arguments`, call);
|
|
682
|
+
if (call.arguments.nodes.length !== 0) {
|
|
683
|
+
lowerer.noLowering(`process.disconnect with ${call.arguments.nodes.length} arguments`, call);
|
|
453
684
|
}
|
|
454
685
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
455
686
|
lowerer.unsupported("SC1090", call, "using the result of process.disconnect() (call it as its own statement)");
|
|
@@ -469,7 +700,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
469
700
|
if (access.name.text === "destroy" &&
|
|
470
701
|
ts.isPropertyAccessExpression(access.expression) &&
|
|
471
702
|
lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
|
|
472
|
-
if (call.arguments.length !== 0) {
|
|
703
|
+
if (call.arguments.nodes.length !== 0) {
|
|
473
704
|
lowerer.noLowering("stdin.destroy with arguments", call);
|
|
474
705
|
}
|
|
475
706
|
return { kind: "libCall", fn: "process.stdinDestroy", args: [], type: VOID, loc: locOf(call) };
|
|
@@ -489,15 +720,77 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
489
720
|
if (!ts.isExpressionStatement(call.parent) && !ts.isArrowFunction(call.parent)) {
|
|
490
721
|
lowerer.unsupported("SC1090", call, "using the result of stdin.setRawMode(...) (the ReadStream chain — call it as its own statement)");
|
|
491
722
|
}
|
|
492
|
-
if (call.arguments.length !== 1) {
|
|
493
|
-
lowerer.noLowering(`stdin.setRawMode with ${call.arguments.length} arguments`, call, "the supported form is setRawMode(mode) with one boolean");
|
|
723
|
+
if (call.arguments.nodes.length !== 1) {
|
|
724
|
+
lowerer.noLowering(`stdin.setRawMode with ${call.arguments.nodes.length} arguments`, call, "the supported form is setRawMode(mode) with one boolean");
|
|
494
725
|
}
|
|
495
|
-
const mode = lowerer.lowerExpr(call.arguments[0]);
|
|
726
|
+
const mode = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
496
727
|
if (mode.type.kind !== "bool") {
|
|
497
|
-
lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments[0], "the mode is a boolean here — narrow unions first");
|
|
728
|
+
lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments.nodes[0], "the mode is a boolean here — narrow unions first");
|
|
498
729
|
}
|
|
499
730
|
return { kind: "libCall", fn: "process.stdinSetRawMode", args: [mode], type: VOID, loc };
|
|
500
731
|
}
|
|
732
|
+
// process.stdout.on("resize", cb) (and once/off/removeListener/
|
|
733
|
+
// addListener, stderr too): the terminal resize event, registered on the
|
|
734
|
+
// runtime's process stream object (a SIGWINCH listener that emits when a
|
|
735
|
+
// TTY's size changed; it never keeps the loop alive). Statement position:
|
|
736
|
+
// Node returns the stream.
|
|
737
|
+
if (["on", "once", "off", "removeListener", "addListener"].includes(access.name.text) &&
|
|
738
|
+
ts.isPropertyAccessExpression(access.expression) &&
|
|
739
|
+
call.arguments.nodes.length === 2 &&
|
|
740
|
+
!call.arguments.nodes.some(ts.isSpreadElement) &&
|
|
741
|
+
ts.isExpressionStatement(call.parent)) {
|
|
742
|
+
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
743
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
744
|
+
if ((stream === "stdout" || stream === "stderr") &&
|
|
745
|
+
evT.isStringLiteralType() &&
|
|
746
|
+
evT.value === "resize") {
|
|
747
|
+
const loc = locOf(call);
|
|
748
|
+
const receiverLocal = lowerer.declareHiddenLocal("%stdioReceiver", DYN);
|
|
749
|
+
const receiver = varRef(receiverLocal.id, DYN, loc);
|
|
750
|
+
const method = access.name.text === "off"
|
|
751
|
+
? "removeListener"
|
|
752
|
+
: access.name.text === "addListener"
|
|
753
|
+
? "on"
|
|
754
|
+
: access.name.text;
|
|
755
|
+
return {
|
|
756
|
+
kind: "seqExpr",
|
|
757
|
+
stmts: [
|
|
758
|
+
{
|
|
759
|
+
kind: "varDecl",
|
|
760
|
+
localId: receiverLocal.id,
|
|
761
|
+
init: {
|
|
762
|
+
kind: "libCall",
|
|
763
|
+
fn: "process.stdio",
|
|
764
|
+
args: [numLit(stream === "stdout" ? 1 : 2, loc)],
|
|
765
|
+
type: DYN,
|
|
766
|
+
loc,
|
|
767
|
+
},
|
|
768
|
+
loc,
|
|
769
|
+
},
|
|
770
|
+
],
|
|
771
|
+
result: {
|
|
772
|
+
kind: "dynCall",
|
|
773
|
+
callee: {
|
|
774
|
+
kind: "dynKeyGet",
|
|
775
|
+
value: receiver,
|
|
776
|
+
key: strLit(method, locOf(access.name)),
|
|
777
|
+
type: DYN,
|
|
778
|
+
loc,
|
|
779
|
+
},
|
|
780
|
+
receiver,
|
|
781
|
+
calleeName: ts.getTextOfNode(access),
|
|
782
|
+
args: [
|
|
783
|
+
lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN),
|
|
784
|
+
lowerer.lowerExprExpecting(call.arguments.nodes[1], DYN),
|
|
785
|
+
],
|
|
786
|
+
type: DYN,
|
|
787
|
+
loc,
|
|
788
|
+
},
|
|
789
|
+
type: DYN,
|
|
790
|
+
loc,
|
|
791
|
+
};
|
|
792
|
+
}
|
|
793
|
+
}
|
|
501
794
|
// process.stdin.on/once("data" | "end" | "error", cb): the piped-stdin
|
|
502
795
|
// event slice. A 'data' listener keeps the event loop alive until EOF
|
|
503
796
|
// (Node's flowing stdin); 'end'/'error' listeners alone do not. `once`
|
|
@@ -508,37 +801,48 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
508
801
|
lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
|
|
509
802
|
const loc = locOf(call);
|
|
510
803
|
const once = access.name.text === "once";
|
|
511
|
-
if (call.arguments.length !== 2) {
|
|
512
|
-
lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.length} arguments`, call);
|
|
804
|
+
if (call.arguments.nodes.length !== 2) {
|
|
805
|
+
lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.nodes.length} arguments`, call);
|
|
513
806
|
}
|
|
514
|
-
const evT = lowerer.typeOf(call.arguments[0]);
|
|
807
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
515
808
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
516
|
-
if (event !== "data" && event !== "end" && event !== "error") {
|
|
517
|
-
lowerer.noLowering(`stdin.${access.name.text}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, call.arguments[0], '"data", "end", and "
|
|
809
|
+
if (event !== "data" && event !== "end" && event !== "error" && event !== "keypress") {
|
|
810
|
+
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)');
|
|
518
811
|
}
|
|
519
812
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
520
813
|
lowerer.unsupported("SC1090", call, "chaining stdin listener registration (the result is void here — register each listener as its own statement)");
|
|
521
814
|
}
|
|
522
|
-
|
|
815
|
+
if (event === "keypress") {
|
|
816
|
+
// readline.emitKeypressEvents' (str, key) events
|
|
817
|
+
const listener = stdinKeypressListener(lowerer, call.arguments.nodes[1]);
|
|
818
|
+
const onceKp = { kind: "boolLit", value: once, type: BOOL, loc };
|
|
819
|
+
return { kind: "libCall", fn: "stdin.onKeypress", args: [listener, onceKp], type: VOID, loc };
|
|
820
|
+
}
|
|
821
|
+
const cb = lowerer.lowerExpr(call.arguments.nodes[1]);
|
|
523
822
|
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
|
|
524
|
-
lowerer.unsupported("SC1090", call.arguments[1], "stdin listeners with more than one parameter or a return value");
|
|
823
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "stdin listeners with more than one parameter or a return value");
|
|
525
824
|
}
|
|
526
825
|
const param = cb.type.params[0];
|
|
527
826
|
const onceArg = { kind: "boolLit", value: once, type: BOOL, loc };
|
|
528
827
|
if (event === "data") {
|
|
529
|
-
|
|
530
|
-
|
|
828
|
+
// A string parameter receives the chunks process.stdin.setEncoding
|
|
829
|
+
// decodes (pi-tui's terminal input); the runtime refuses a delivery
|
|
830
|
+
// while no encoding is set, where Node would pass a Buffer.
|
|
831
|
+
if (param !== undefined &&
|
|
832
|
+
!(param.kind === "bytes" && param.elem === "u8") &&
|
|
833
|
+
param.kind !== "string") {
|
|
834
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `data listeners whose parameter is not 'Uint8Array' or 'string' (got '${lowerer.fmt(param)}')`);
|
|
531
835
|
}
|
|
532
836
|
return { kind: "libCall", fn: "stdin.onData", args: [cb, onceArg], type: VOID, loc };
|
|
533
837
|
}
|
|
534
838
|
if (event === "end") {
|
|
535
839
|
if (param !== undefined) {
|
|
536
|
-
lowerer.unsupported("SC1090", call.arguments[1], "end listeners with parameters (use ())");
|
|
840
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "end listeners with parameters (use ())");
|
|
537
841
|
}
|
|
538
842
|
return { kind: "libCall", fn: "stdin.onEnd", args: [cb, onceArg], type: VOID, loc };
|
|
539
843
|
}
|
|
540
844
|
if (param !== undefined && !(param.kind === "object" && param.className === "%Error")) {
|
|
541
|
-
lowerer.unsupported("SC1090", call.arguments[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
|
|
845
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
|
|
542
846
|
}
|
|
543
847
|
return { kind: "libCall", fn: "stdin.onError", args: [cb, onceArg], type: VOID, loc };
|
|
544
848
|
}
|
|
@@ -546,7 +850,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
546
850
|
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
547
851
|
if (stream === "stdout" || stream === "stderr") {
|
|
548
852
|
const loc = locOf(call);
|
|
549
|
-
const args = call.arguments;
|
|
853
|
+
const args = call.arguments.nodes;
|
|
550
854
|
if (args.length < 1 || args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
551
855
|
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");
|
|
552
856
|
}
|
|
@@ -628,7 +932,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
628
932
|
// `writeOut: (str) => process.stdout.write(str)` — str untyped):
|
|
629
933
|
// a runtime string writes; anything else throws the dynCheck's
|
|
630
934
|
// honest TypeError at the call.
|
|
631
|
-
if (data.type.kind === "dyn" && isJsSourceFile(
|
|
935
|
+
if (data.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
632
936
|
data = { kind: "dynCheck", value: data, type: STRING, loc };
|
|
633
937
|
}
|
|
634
938
|
const isBytes = data.type.kind === "bytes" && data.type.elem === "u8";
|
|
@@ -638,7 +942,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
638
942
|
let callback;
|
|
639
943
|
if (callbackNode) {
|
|
640
944
|
callback = lowerer.lowerExpr(callbackNode);
|
|
641
|
-
if (callback.type.kind === "dyn" && isJsSourceFile(
|
|
945
|
+
if (callback.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
642
946
|
callback = {
|
|
643
947
|
kind: "dynCheck",
|
|
644
948
|
value: callback,
|
|
@@ -733,8 +1037,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
733
1037
|
!access.questionDotToken &&
|
|
734
1038
|
ts.isPropertyAccessExpression(access.expression) &&
|
|
735
1039
|
lowerer.stdlibGlobalMember(access.expression, "process") === "memoryUsage") {
|
|
736
|
-
if (call.arguments.length !== 0) {
|
|
737
|
-
lowerer.noLowering(`process.memoryUsage.rss with ${call.arguments.length} arguments`, call);
|
|
1040
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1041
|
+
lowerer.noLowering(`process.memoryUsage.rss with ${call.arguments.nodes.length} arguments`, call);
|
|
738
1042
|
}
|
|
739
1043
|
return { kind: "libCall", fn: "process.rss", args: [], type: F64, loc: locOf(call) };
|
|
740
1044
|
}
|
|
@@ -753,18 +1057,18 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
753
1057
|
// `removeListener` IS `off` — Node aliases them.
|
|
754
1058
|
const isOff = member === "off" || member === "removeListener";
|
|
755
1059
|
if (member === "on" || member === "once" || isOff) {
|
|
756
|
-
if (call.arguments.length !== 2) {
|
|
757
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1060
|
+
if (call.arguments.nodes.length !== 2) {
|
|
1061
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
758
1062
|
}
|
|
759
|
-
const evT = lowerer.typeOf(call.arguments[0]);
|
|
1063
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
760
1064
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
761
1065
|
if ((event === "message" || event === "disconnect") && !isOff) {
|
|
762
1066
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
763
1067
|
lowerer.unsupported("SC1090", call, "chaining process IPC listener registration (register each listener as its own statement)");
|
|
764
1068
|
}
|
|
765
1069
|
const callback = event === "message"
|
|
766
|
-
? ipcMessageListener(lowerer, call.arguments[1])
|
|
767
|
-
: ipcDisconnectListener(lowerer, call.arguments[1]);
|
|
1070
|
+
? ipcMessageListener(lowerer, call.arguments.nodes[1])
|
|
1071
|
+
: ipcDisconnectListener(lowerer, call.arguments.nodes[1]);
|
|
768
1072
|
return {
|
|
769
1073
|
kind: "libCall",
|
|
770
1074
|
fn: event === "message" ? "process.onMessage" : "process.onDisconnect",
|
|
@@ -777,7 +1081,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
777
1081
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
778
1082
|
lowerer.unsupported("SC1090", call, "chaining process exception listener registration");
|
|
779
1083
|
}
|
|
780
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1084
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
781
1085
|
const monitor = boolLit(event === "uncaughtExceptionMonitor", loc);
|
|
782
1086
|
return {
|
|
783
1087
|
kind: "libCall",
|
|
@@ -799,7 +1103,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
799
1103
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
800
1104
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
801
1105
|
}
|
|
802
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1106
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
803
1107
|
const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
|
|
804
1108
|
const fn = event === "unhandledRejection"
|
|
805
1109
|
? isOff
|
|
@@ -817,7 +1121,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
817
1121
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
818
1122
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
819
1123
|
}
|
|
820
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1124
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
821
1125
|
return {
|
|
822
1126
|
kind: "libCall",
|
|
823
1127
|
fn: isOff ? "process.offWarning" : "process.onWarning",
|
|
@@ -830,14 +1134,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
830
1134
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
831
1135
|
lowerer.unsupported("SC1090", call, "chaining process signal listener registration");
|
|
832
1136
|
}
|
|
833
|
-
const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments[0]), STRING);
|
|
1137
|
+
const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments.nodes[0]), STRING);
|
|
834
1138
|
if (name.type.kind !== "string" && name.type.kind !== "dyn") {
|
|
835
|
-
lowerer.noLowering("process signal event name that is not a string", call.arguments[0]);
|
|
1139
|
+
lowerer.noLowering("process signal event name that is not a string", call.arguments.nodes[0]);
|
|
836
1140
|
}
|
|
837
1141
|
const signal = name.type.kind === "string"
|
|
838
1142
|
? name
|
|
839
1143
|
: { kind: "dynCheck", value: name, type: STRING, loc };
|
|
840
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1144
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
841
1145
|
return {
|
|
842
1146
|
kind: "libCall",
|
|
843
1147
|
fn: isOff ? "process.offSignal" : "process.onSignal",
|
|
@@ -847,12 +1151,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
847
1151
|
};
|
|
848
1152
|
}
|
|
849
1153
|
if (event !== "exit") {
|
|
850
|
-
lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments[0]);
|
|
1154
|
+
lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments.nodes[0]);
|
|
851
1155
|
}
|
|
852
1156
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
853
1157
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
854
1158
|
}
|
|
855
|
-
let cb = lowerer.lowerExpr(call.arguments[1]);
|
|
1159
|
+
let cb = lowerer.lowerExpr(call.arguments.nodes[1]);
|
|
856
1160
|
// The checked-dynamic listener (test/common's `process.on('exit',
|
|
857
1161
|
// runCallChecks)` — an implicit-any JS function, func(dyn)=>dyn, or
|
|
858
1162
|
// a dyn VALUE that rode an untyped binding): adapt through the dyn
|
|
@@ -883,12 +1187,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
883
1187
|
}
|
|
884
1188
|
}
|
|
885
1189
|
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
|
|
886
|
-
lowerer.unsupported("SC1090", call.arguments[1], "process listeners with more than one parameter or a return value");
|
|
1190
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "process listeners with more than one parameter or a return value");
|
|
887
1191
|
}
|
|
888
1192
|
const param = cb.type.params[0];
|
|
889
1193
|
const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
|
|
890
1194
|
if (param !== undefined && param.kind !== "f64") {
|
|
891
|
-
lowerer.unsupported("SC1090", call.arguments[1], `exit listeners whose parameter is not 'number' (got '${lowerer.fmt(param)}')`);
|
|
1195
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `exit listeners whose parameter is not 'number' (got '${lowerer.fmt(param)}')`);
|
|
892
1196
|
}
|
|
893
1197
|
if (isOff) {
|
|
894
1198
|
return { kind: "libCall", fn: "process.offExit", args: [cb], type: VOID, loc };
|
|
@@ -903,17 +1207,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
903
1207
|
// shape: `.forEach((args) => process.emitWarning(...args))`).
|
|
904
1208
|
if (member === "emitWarning") {
|
|
905
1209
|
let argsArr = null;
|
|
906
|
-
if (call.arguments.length === 1 && ts.isSpreadElement(call.arguments[0])) {
|
|
907
|
-
const spread = lowerer.lowerExpr(call.arguments[0].expression);
|
|
1210
|
+
if (call.arguments.nodes.length === 1 && ts.isSpreadElement(call.arguments.nodes[0])) {
|
|
1211
|
+
const spread = lowerer.lowerExpr(call.arguments.nodes[0].expression);
|
|
908
1212
|
if (spread.type.kind === "dyn") {
|
|
909
1213
|
argsArr = spread;
|
|
910
1214
|
}
|
|
911
1215
|
else {
|
|
912
|
-
lowerer.noLowering("process.emitWarning with a typed spread argument", call.arguments[0], "spread an untyped (checked-dynamic) array, or write the arguments positionally");
|
|
1216
|
+
lowerer.noLowering("process.emitWarning with a typed spread argument", call.arguments.nodes[0], "spread an untyped (checked-dynamic) array, or write the arguments positionally");
|
|
913
1217
|
}
|
|
914
1218
|
}
|
|
915
1219
|
else {
|
|
916
|
-
argsArr = lowerTracingArguments(lowerer, call.arguments, loc);
|
|
1220
|
+
argsArr = lowerTracingArguments(lowerer, call.arguments.nodes, loc);
|
|
917
1221
|
}
|
|
918
1222
|
return { kind: "libCall", fn: "process.emitWarning", args: [argsArr], type: VOID, loc };
|
|
919
1223
|
}
|
|
@@ -928,17 +1232,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
928
1232
|
// through, boxable parameterized shapes ride the checked-dynamic
|
|
929
1233
|
// boundary, trailing call arguments ride the interned dyn thunk.
|
|
930
1234
|
if (member === "nextTick") {
|
|
931
|
-
if (call.arguments.length === 0) {
|
|
1235
|
+
if (call.arguments.nodes.length === 0) {
|
|
932
1236
|
lowerer.noLowering("process.nextTick with 0 arguments", call, "the supported form is process.nextTick(callback, ...args)");
|
|
933
1237
|
}
|
|
934
|
-
const cb = timerStyleCallback(lowerer, call.arguments, "process.nextTick", loc);
|
|
1238
|
+
const cb = timerStyleCallback(lowerer, call.arguments.nodes, "process.nextTick", loc);
|
|
935
1239
|
return { kind: "libCall", fn: "process.nextTick", args: [cb], type: VOID, loc };
|
|
936
1240
|
}
|
|
937
1241
|
// The process introspection statics — plain reads of the process's
|
|
938
1242
|
// own clocks and counters, Node's shapes exactly.
|
|
939
1243
|
if (member === "uptime" || member === "availableMemory" || member === "constrainedMemory") {
|
|
940
|
-
if (call.arguments.length !== 0) {
|
|
941
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1244
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1245
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
942
1246
|
}
|
|
943
1247
|
const fn = member === "uptime"
|
|
944
1248
|
? "process.uptime"
|
|
@@ -970,7 +1274,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
970
1274
|
type: F64,
|
|
971
1275
|
loc,
|
|
972
1276
|
});
|
|
973
|
-
if (call.arguments.length === 0) {
|
|
1277
|
+
if (call.arguments.nodes.length === 0) {
|
|
974
1278
|
return {
|
|
975
1279
|
kind: "recordLit",
|
|
976
1280
|
fields: shape.fields.map((f) => ({ name: f.name, value: sampleField(f.name) })),
|
|
@@ -978,15 +1282,15 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
978
1282
|
loc,
|
|
979
1283
|
};
|
|
980
1284
|
}
|
|
981
|
-
if (call.arguments.length !== 1) {
|
|
982
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1285
|
+
if (call.arguments.nodes.length !== 1) {
|
|
1286
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
983
1287
|
}
|
|
984
|
-
const prev = lowerer.lowerExpr(call.arguments[0]);
|
|
1288
|
+
const prev = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
985
1289
|
const prevShape = prev.type.kind === "record" ? lowerer.shapes.get(prev.type.shapeId) : undefined;
|
|
986
1290
|
const prevOk = prevShape !== undefined &&
|
|
987
1291
|
["user", "system"].every((n) => prevShape.fields.some((f) => f.name === n && f.type.kind === "f64"));
|
|
988
1292
|
if (prev.type.kind !== "record" || !prevOk) {
|
|
989
|
-
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");
|
|
1293
|
+
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");
|
|
990
1294
|
}
|
|
991
1295
|
const prevT = prev.type;
|
|
992
1296
|
const key = `${prefix}usage.diff:${prevT.shapeId}:${t.shapeId}`;
|
|
@@ -1052,8 +1356,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1052
1356
|
// storage lives in the same heap). One sample per call: the interned
|
|
1053
1357
|
// helper takes it, then the record reads it field by field.
|
|
1054
1358
|
if (member === "memoryUsage") {
|
|
1055
|
-
if (call.arguments.length !== 0) {
|
|
1056
|
-
lowerer.noLowering(`process.memoryUsage with ${call.arguments.length} arguments`, call);
|
|
1359
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1360
|
+
lowerer.noLowering(`process.memoryUsage with ${call.arguments.nodes.length} arguments`, call);
|
|
1057
1361
|
}
|
|
1058
1362
|
const t = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
1059
1363
|
if (t?.kind !== "record")
|
|
@@ -1107,8 +1411,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1107
1411
|
// process.resourceUsage() — getrusage's 16 fields in Node's names and
|
|
1108
1412
|
// units (CPU times in microseconds, maxRSS in kilobytes).
|
|
1109
1413
|
if (member === "resourceUsage") {
|
|
1110
|
-
if (call.arguments.length !== 0) {
|
|
1111
|
-
lowerer.noLowering(`process.resourceUsage with ${call.arguments.length} arguments`, call);
|
|
1414
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1415
|
+
lowerer.noLowering(`process.resourceUsage with ${call.arguments.nodes.length} arguments`, call);
|
|
1112
1416
|
}
|
|
1113
1417
|
const t = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
1114
1418
|
if (t?.kind !== "record")
|
|
@@ -1158,8 +1462,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1158
1462
|
// DIVERGENCE (SEMANTICS.md): resources this runtime does not model
|
|
1159
1463
|
// as loop handles (TCP wraps, FS requests) are absent from the answer.
|
|
1160
1464
|
if (member === "getActiveResourcesInfo") {
|
|
1161
|
-
if (call.arguments.length !== 0) {
|
|
1162
|
-
lowerer.noLowering(`process.getActiveResourcesInfo with ${call.arguments.length} arguments`, call);
|
|
1465
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1466
|
+
lowerer.noLowering(`process.getActiveResourcesInfo with ${call.arguments.nodes.length} arguments`, call);
|
|
1163
1467
|
}
|
|
1164
1468
|
return { kind: "libCall", fn: "process.activeResources", args: [], type: arrayOf(STRING), loc };
|
|
1165
1469
|
}
|
|
@@ -1167,25 +1471,25 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1167
1471
|
// completes it to the -1 read sentinel); umask(mask) sets and answers
|
|
1168
1472
|
// the previous mask, Node's shape either way.
|
|
1169
1473
|
if (member === "umask") {
|
|
1170
|
-
if (call.arguments.length > 1) {
|
|
1171
|
-
lowerer.noLowering(`process.umask with ${call.arguments.length} arguments`, call);
|
|
1474
|
+
if (call.arguments.nodes.length > 1) {
|
|
1475
|
+
lowerer.noLowering(`process.umask with ${call.arguments.nodes.length} arguments`, call);
|
|
1172
1476
|
}
|
|
1173
|
-
const mask = call.arguments.length === 1
|
|
1174
|
-
? lowerer.lowerExpr(call.arguments[0])
|
|
1477
|
+
const mask = call.arguments.nodes.length === 1
|
|
1478
|
+
? lowerer.lowerExpr(call.arguments.nodes[0])
|
|
1175
1479
|
: { kind: "numLit", value: -1, type: F64, loc };
|
|
1176
1480
|
if (mask.type.kind !== "f64") {
|
|
1177
|
-
lowerer.noLowering("process.umask of non-number masks", call.arguments[0]);
|
|
1481
|
+
lowerer.noLowering("process.umask of non-number masks", call.arguments.nodes[0]);
|
|
1178
1482
|
}
|
|
1179
1483
|
return { kind: "libCall", fn: "process.umask", args: [mask], type: F64, loc };
|
|
1180
1484
|
}
|
|
1181
1485
|
// chdir(2) — throws Node's fs-shaped error on failure.
|
|
1182
1486
|
if (member === "chdir") {
|
|
1183
|
-
if (call.arguments.length !== 1) {
|
|
1184
|
-
lowerer.noLowering(`process.chdir with ${call.arguments.length} arguments`, call);
|
|
1487
|
+
if (call.arguments.nodes.length !== 1) {
|
|
1488
|
+
lowerer.noLowering(`process.chdir with ${call.arguments.nodes.length} arguments`, call);
|
|
1185
1489
|
}
|
|
1186
|
-
const dir = lowerer.lowerExpr(call.arguments[0]);
|
|
1490
|
+
const dir = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
1187
1491
|
if (dir.type.kind !== "string") {
|
|
1188
|
-
lowerer.noLowering("process.chdir of non-string paths", call.arguments[0]);
|
|
1492
|
+
lowerer.noLowering("process.chdir of non-string paths", call.arguments.nodes[0]);
|
|
1189
1493
|
}
|
|
1190
1494
|
return { kind: "libCall", fn: "process.chdir", args: [dir], type: VOID, loc };
|
|
1191
1495
|
}
|
|
@@ -1194,8 +1498,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1194
1498
|
// the member optional (that optionality covers Windows). The `?.()`
|
|
1195
1499
|
// spelling routes here through lowerProcessOptionalMethodCall.
|
|
1196
1500
|
if (PROCESS_CREDENTIAL_FNS.has(member)) {
|
|
1197
|
-
if (call.arguments.length !== 0) {
|
|
1198
|
-
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1501
|
+
if (call.arguments.nodes.length !== 0) {
|
|
1502
|
+
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
1199
1503
|
}
|
|
1200
1504
|
return processCredentialCall(member, loc);
|
|
1201
1505
|
}
|
|
@@ -1207,11 +1511,11 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1207
1511
|
// Node's `kill ESRCH`/`kill EPERM` Error. The result is Node's
|
|
1208
1512
|
// constant true.
|
|
1209
1513
|
if (member === "kill") {
|
|
1210
|
-
if (call.arguments.length < 1 || call.arguments.length > 2) {
|
|
1211
|
-
lowerer.noLowering(`process.kill with ${call.arguments.length} arguments`, call);
|
|
1514
|
+
if (call.arguments.nodes.length < 1 || call.arguments.nodes.length > 2) {
|
|
1515
|
+
lowerer.noLowering(`process.kill with ${call.arguments.nodes.length} arguments`, call);
|
|
1212
1516
|
}
|
|
1213
|
-
const pid = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
1214
|
-
const sigNode = call.arguments[1];
|
|
1517
|
+
const pid = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
|
|
1518
|
+
const sigNode = call.arguments.nodes[1];
|
|
1215
1519
|
if (!sigNode) {
|
|
1216
1520
|
const dflt = { kind: "strLit", value: "SIGTERM", type: STRING, loc };
|
|
1217
1521
|
return { kind: "libCall", fn: "process.kill", args: [pid, dflt], type: BOOL, loc };
|
|
@@ -1226,10 +1530,36 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1226
1530
|
lowerer.noLowering(`process.kill with a '${lowerer.fmt(sig.type)}' signal`, sigNode, "pass a signal name string or number (narrow unions first)");
|
|
1227
1531
|
}
|
|
1228
1532
|
if (member === "exit") {
|
|
1229
|
-
const arg = call.arguments[0];
|
|
1230
|
-
|
|
1533
|
+
const arg = call.arguments.nodes[0];
|
|
1534
|
+
let code = arg !== undefined
|
|
1231
1535
|
? lowerer.lowerExprExpecting(arg, F64)
|
|
1232
1536
|
: { kind: "libCall", fn: "process.currentExitCode", args: [], type: F64, loc };
|
|
1537
|
+
// process.exit(code) assigns process.exitCode before the 'exit'
|
|
1538
|
+
// listeners run. Only a program that reads the property can observe
|
|
1539
|
+
// that, so only such a program records the assignment.
|
|
1540
|
+
if (arg !== undefined && programReadsExitCode(lowerer)) {
|
|
1541
|
+
const binding = lowerer.declareHiddenLocal("%exitCode", F64);
|
|
1542
|
+
code = {
|
|
1543
|
+
kind: "seqExpr",
|
|
1544
|
+
stmts: [
|
|
1545
|
+
{ kind: "varDecl", localId: binding.id, init: code, loc },
|
|
1546
|
+
{
|
|
1547
|
+
kind: "exprStmt",
|
|
1548
|
+
expr: {
|
|
1549
|
+
kind: "libCall",
|
|
1550
|
+
fn: "process.setExitCodeTracked",
|
|
1551
|
+
args: [varRef(binding.id, F64, loc)],
|
|
1552
|
+
type: VOID,
|
|
1553
|
+
loc,
|
|
1554
|
+
},
|
|
1555
|
+
loc,
|
|
1556
|
+
},
|
|
1557
|
+
],
|
|
1558
|
+
result: varRef(binding.id, F64, loc),
|
|
1559
|
+
type: F64,
|
|
1560
|
+
loc,
|
|
1561
|
+
};
|
|
1562
|
+
}
|
|
1233
1563
|
return { kind: "libCall", fn: "process.exit", args: [code], type: VOID, loc };
|
|
1234
1564
|
}
|
|
1235
1565
|
return null; // process.argv(...) etc. are tsc errors before lowering
|
|
@@ -1241,6 +1571,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1241
1571
|
* BEFORE the optional-chain machinery: `process.getuid` has no value
|
|
1242
1572
|
* lowering for the chain to guard. Null when this isn't that shape. */
|
|
1243
1573
|
export function lowerProcessOptionalMethodCall(lowerer, expr) {
|
|
1574
|
+
// `process.send!(message)`: the asserted direct call of the optional
|
|
1575
|
+
// member (the @types/node spelling under strict null checks).
|
|
1576
|
+
if (!expr.questionDotToken &&
|
|
1577
|
+
ts.isNonNullExpression(expr.expression) &&
|
|
1578
|
+
ts.isPropertyAccessExpression(expr.expression.expression) &&
|
|
1579
|
+
!expr.expression.expression.questionDotToken &&
|
|
1580
|
+
lowerer.stdlibGlobalMember(expr.expression.expression, "process") === "send")
|
|
1581
|
+
return lowerProcessIpcSend(lowerer, expr);
|
|
1244
1582
|
if (!expr.questionDotToken)
|
|
1245
1583
|
return null;
|
|
1246
1584
|
if (!ts.isPropertyAccessExpression(expr.expression))
|
|
@@ -1250,8 +1588,8 @@ export function lowerProcessOptionalMethodCall(lowerer, expr) {
|
|
|
1250
1588
|
return lowerProcessIpcSend(lowerer, expr);
|
|
1251
1589
|
if (member === null || !PROCESS_CREDENTIAL_FNS.has(member))
|
|
1252
1590
|
return null;
|
|
1253
|
-
if (expr.arguments.length !== 0) {
|
|
1254
|
-
lowerer.noLowering(`process.${member} with ${expr.arguments.length} arguments`, expr);
|
|
1591
|
+
if (expr.arguments.nodes.length !== 0) {
|
|
1592
|
+
lowerer.noLowering(`process.${member} with ${expr.arguments.nodes.length} arguments`, expr);
|
|
1255
1593
|
}
|
|
1256
1594
|
return processCredentialCall(member, locOf(expr));
|
|
1257
1595
|
}
|
|
@@ -1277,4 +1615,35 @@ function processCredentialCall(member, loc) {
|
|
|
1277
1615
|
loc,
|
|
1278
1616
|
};
|
|
1279
1617
|
}
|
|
1618
|
+
/** `process.getBuiltinModule("node:os")`: a string-literal id naming a
|
|
1619
|
+
* supported builtin whose call the checker types as that module's
|
|
1620
|
+
* namespace (@types/node's BuiltInModule map) answers the namespace value
|
|
1621
|
+
* `import * as ns` binds, so its members key the builtin tables at their
|
|
1622
|
+
* use sites. The receiver may be cast (`(process as P)`) and the call
|
|
1623
|
+
* optional: Node 24's process always has the member, and the cast changes
|
|
1624
|
+
* no runtime value. Other ids keep the dynamic loader (undefined for
|
|
1625
|
+
* unknown ids, Node's argument errors). */
|
|
1626
|
+
export function lowerProcessBuiltinModuleNamespace(lowerer, call) {
|
|
1627
|
+
const callee = call.expression;
|
|
1628
|
+
if (!ts.isPropertyAccessExpression(callee) || callee.name.text !== "getBuiltinModule")
|
|
1629
|
+
return null;
|
|
1630
|
+
const id = call.arguments.nodes[0];
|
|
1631
|
+
if (call.arguments.nodes.length !== 1 || !id || !ts.isStringLiteralLike(id))
|
|
1632
|
+
return null;
|
|
1633
|
+
let receiver = callee.expression;
|
|
1634
|
+
while (ts.isParenthesizedExpression(receiver) ||
|
|
1635
|
+
ts.isAsExpression(receiver) ||
|
|
1636
|
+
ts.isSatisfiesExpression(receiver) ||
|
|
1637
|
+
ts.isNonNullExpression(receiver))
|
|
1638
|
+
receiver = receiver.expression;
|
|
1639
|
+
if (!lowerer.isStdlibGlobal(receiver, "process"))
|
|
1640
|
+
return null;
|
|
1641
|
+
const module = canonicalBuiltinModule(id.text);
|
|
1642
|
+
if (module === null)
|
|
1643
|
+
return null;
|
|
1644
|
+
const type = lowerer.mapTypeOf(lowerer.checker.getNonNullableType(lowerer.typeOf(call)));
|
|
1645
|
+
if (type?.kind !== "moduleNs" || type.moduleId !== `builtin:${module}`)
|
|
1646
|
+
return null;
|
|
1647
|
+
return { kind: "moduleNsRef", moduleId: type.moduleId, type, loc: locOf(call) };
|
|
1648
|
+
}
|
|
1280
1649
|
//# sourceMappingURL=process.js.map
|