@scriptc/compiler 0.3.6 → 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 +682 -50
- 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 +293 -178
- 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 +547 -283
- package/dist/backend/llvm/emitter.js +689 -4643
- 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-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +67 -62
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +121 -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 +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +90 -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 +187 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +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 +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +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 +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +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 +66 -43
- package/dist/backend/llvm/shapes.js +280 -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/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 +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +37 -0
- package/dist/backend/native/executable.js +192 -137
- 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 +1 -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.test.js +5 -0
- 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 +24 -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 +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +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 +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +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 +16 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
- package/dist/frontend/lowering/builtins/crypto.js +211 -37
- 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 +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +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 +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +32 -1
- package/dist/frontend/lowering/builtins/process.js +461 -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 +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +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 +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +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.js +25 -44
- 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 +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +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 +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +54 -25
- 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 +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +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 +1239 -442
- 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 +1473 -468
- 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 +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1481 -12489
- 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 +331 -96
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +267 -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 +488 -100
- 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 +1541 -391
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +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 +399 -26
- package/dist/frontend/lowering/lowerer.js +1910 -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/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 +12 -3
- package/dist/frontend/lowering/surfaces.js +252 -41
- 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.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-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 -255
- 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 +2545 -719
- 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 +29 -2
- 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 +103 -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 +494 -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 +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +2 -0
- package/dist/ir/integer-loop-facts.js +24 -3
- 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 +3 -1
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +82 -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 +221 -58
- package/dist/ir/ir.js +119 -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 +148 -33
- package/dist/ir/runtime-features.js +629 -386
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +103 -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 +175 -68
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +26 -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 +13 -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 +303 -19
|
@@ -3,6 +3,7 @@ import { envSnapshotHelper, lowerProcessLoadEnvFile } from "./environment.js";
|
|
|
3
3
|
import { dynUndefinedExpr, boolLit, numLit, strLit, varRef } from "../../../ir/build.js";
|
|
4
4
|
import { timerStyleCallback } from "../lower-timers.js";
|
|
5
5
|
import * as ts from "../../ts7/adapter.js";
|
|
6
|
+
import { requestGeneralStreamSurface } from "../general-streams.js";
|
|
6
7
|
import { own } from "../lowerer.js";
|
|
7
8
|
import { isJsSourceFile, locOf } from "../../program.js";
|
|
8
9
|
import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
|
|
@@ -10,8 +11,150 @@ import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "../opti
|
|
|
10
11
|
import { voidizedCallback } from "../lower-server.js";
|
|
11
12
|
import { BOOL, BYTES_U8, DYN, F64, PROCSTREAM_T, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, funcOf, } from "../../../ir/ir.js";
|
|
12
13
|
import { lowerBuiltinLoaderValue } from "../lower-builtin-values.js";
|
|
14
|
+
import { builtinFunctionValue } from "../lower-exprs.js";
|
|
15
|
+
import { canonicalBuiltinModule } from "../../builtin-modules.js";
|
|
13
16
|
import { lowerProcessIpcSend, ipcMessageListener, ipcDisconnectListener } from "./ipc.js";
|
|
14
17
|
import { lowerDiagnosticsSubscriber, lowerTracingArguments } from "./async-context.js";
|
|
18
|
+
/** Whether the process has an IPC channel, Node's test for defining
|
|
19
|
+
* process.send and process.disconnect: a channel this fork child opened
|
|
20
|
+
* (programs with fork targets only), or a non-empty NODE_CHANNEL_FD from a
|
|
21
|
+
* Node.js parent, the variable Node itself tests at startup. Built from the
|
|
22
|
+
* existing environment read, so the presence test links no runtime code. */
|
|
23
|
+
export function processHasIpc(lowerer, loc) {
|
|
24
|
+
const envT = lowerer.envValueType();
|
|
25
|
+
const unionId = envT.unionId;
|
|
26
|
+
const stringTag = lowerer.armTag(unionId, STRING);
|
|
27
|
+
const value = lowerer.declareHiddenLocal("%channelFd", envT);
|
|
28
|
+
const fromNode = {
|
|
29
|
+
kind: "seqExpr",
|
|
30
|
+
stmts: [
|
|
31
|
+
{
|
|
32
|
+
kind: "varDecl",
|
|
33
|
+
localId: value.id,
|
|
34
|
+
init: {
|
|
35
|
+
kind: "libCall",
|
|
36
|
+
fn: "process.envGet",
|
|
37
|
+
args: [strLit("NODE_CHANNEL_FD", loc)],
|
|
38
|
+
type: envT,
|
|
39
|
+
loc,
|
|
40
|
+
},
|
|
41
|
+
loc,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
result: {
|
|
45
|
+
kind: "logical",
|
|
46
|
+
op: "&&",
|
|
47
|
+
left: {
|
|
48
|
+
kind: "unionIsTag",
|
|
49
|
+
unionId,
|
|
50
|
+
tag: stringTag,
|
|
51
|
+
negated: false,
|
|
52
|
+
value: varRef(value.id, envT, loc),
|
|
53
|
+
type: BOOL,
|
|
54
|
+
loc,
|
|
55
|
+
},
|
|
56
|
+
right: {
|
|
57
|
+
kind: "toBool",
|
|
58
|
+
operand: {
|
|
59
|
+
kind: "unionNarrow",
|
|
60
|
+
unionId,
|
|
61
|
+
tag: stringTag,
|
|
62
|
+
value: varRef(value.id, envT, loc),
|
|
63
|
+
type: STRING,
|
|
64
|
+
loc,
|
|
65
|
+
},
|
|
66
|
+
type: BOOL,
|
|
67
|
+
loc,
|
|
68
|
+
},
|
|
69
|
+
type: BOOL,
|
|
70
|
+
loc,
|
|
71
|
+
},
|
|
72
|
+
type: BOOL,
|
|
73
|
+
loc,
|
|
74
|
+
};
|
|
75
|
+
if (lowerer.forkTargets.length === 0)
|
|
76
|
+
return fromNode;
|
|
77
|
+
return {
|
|
78
|
+
kind: "logical",
|
|
79
|
+
op: "||",
|
|
80
|
+
left: { kind: "libCall", fn: "process.ipcOpen", args: [], type: BOOL, loc },
|
|
81
|
+
right: fromNode,
|
|
82
|
+
type: BOOL,
|
|
83
|
+
loc,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** True when the value of `node` is consumed only by ToBoolean: a
|
|
87
|
+
* condition, the operand of `!`, `Boolean(node)`, or an operand of `&&` /
|
|
88
|
+
* `||` whose own value is consumed that way (or discarded, for the left
|
|
89
|
+
* operand). */
|
|
90
|
+
export function isTruthinessOnlyRead(lowerer, node) {
|
|
91
|
+
let child = node;
|
|
92
|
+
let parent = node.parent;
|
|
93
|
+
while (parent !== undefined && ts.isParenthesizedExpression(parent)) {
|
|
94
|
+
child = parent;
|
|
95
|
+
parent = parent.parent;
|
|
96
|
+
}
|
|
97
|
+
if (parent === undefined)
|
|
98
|
+
return false;
|
|
99
|
+
if (ts.isIfStatement(parent) || ts.isWhileStatement(parent) || ts.isDoStatement(parent))
|
|
100
|
+
return parent.expression === child;
|
|
101
|
+
if (ts.isForStatement(parent))
|
|
102
|
+
return parent.condition === child;
|
|
103
|
+
if (ts.isConditionalExpression(parent))
|
|
104
|
+
return parent.condition === child;
|
|
105
|
+
if (ts.isPrefixUnaryExpression(parent))
|
|
106
|
+
return parent.operator === ts.SyntaxKind.ExclamationToken;
|
|
107
|
+
if (ts.isCallExpression(parent)) {
|
|
108
|
+
return (!parent.questionDotToken &&
|
|
109
|
+
parent.arguments.nodes.length === 1 &&
|
|
110
|
+
parent.arguments.nodes[0] === child &&
|
|
111
|
+
lowerer.isStdlibGlobal(parent.expression, "Boolean"));
|
|
112
|
+
}
|
|
113
|
+
if (ts.isBinaryExpression(parent)) {
|
|
114
|
+
const op = parent.operatorToken.kind;
|
|
115
|
+
if (op !== ts.SyntaxKind.AmpersandAmpersandToken && op !== ts.SyntaxKind.BarBarToken)
|
|
116
|
+
return false;
|
|
117
|
+
if (isTruthinessOnlyRead(lowerer, parent))
|
|
118
|
+
return true;
|
|
119
|
+
let outer = parent.parent;
|
|
120
|
+
while (outer !== undefined && ts.isParenthesizedExpression(outer))
|
|
121
|
+
outer = outer.parent;
|
|
122
|
+
return parent.left === child && outer !== undefined && ts.isExpressionStatement(outer);
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
/** Whether a program source reads process.exitCode. Such a program
|
|
127
|
+
* records its exit-code assignments (process.setExitCodeTracked), so a
|
|
128
|
+
* read can tell an unset code from 0; other programs keep the untracked
|
|
129
|
+
* write. Computed once per lowering pass. */
|
|
130
|
+
export function programReadsExitCode(lowerer) {
|
|
131
|
+
if (lowerer.readsExitCode !== null)
|
|
132
|
+
return lowerer.readsExitCode;
|
|
133
|
+
let found = false;
|
|
134
|
+
const walk = (node) => {
|
|
135
|
+
if (found)
|
|
136
|
+
return;
|
|
137
|
+
if (ts.isPropertyAccessExpression(node) &&
|
|
138
|
+
node.name.text === "exitCode" &&
|
|
139
|
+
!(ts.isBinaryExpression(node.parent) &&
|
|
140
|
+
node.parent.left === node &&
|
|
141
|
+
node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken) &&
|
|
142
|
+
lowerer.stdlibGlobalMember(node, "process") === "exitCode") {
|
|
143
|
+
found = true;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
ts.forEachChild(node, walk);
|
|
147
|
+
};
|
|
148
|
+
for (const sf of lowerer.program.getImplementationSourceFiles()) {
|
|
149
|
+
if (sf.isDeclarationFile)
|
|
150
|
+
continue;
|
|
151
|
+
walk(sf);
|
|
152
|
+
if (found)
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
lowerer.readsExitCode = found;
|
|
156
|
+
return found;
|
|
157
|
+
}
|
|
15
158
|
/** The pinned Node release the runtime reports as process.versions.node
|
|
16
159
|
* (packages/runtime/src/scr_lib.c SCR_NODE_COMPAT_VERSION, kept equal to
|
|
17
160
|
* internal/compatibility/node-v24.json by test/node-pin.test.ts). */
|
|
@@ -31,40 +174,42 @@ export function lowerProcStreamMethodCall(lowerer, call, access) {
|
|
|
31
174
|
return null;
|
|
32
175
|
const name = access.name.text;
|
|
33
176
|
const loc = locOf(call);
|
|
34
|
-
if (isJsSourceFile(
|
|
177
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
35
178
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
36
179
|
if (receiver.type.kind === "dyn") {
|
|
37
180
|
return {
|
|
38
181
|
kind: "dynInvoke",
|
|
39
182
|
recv: receiver,
|
|
40
183
|
method: name,
|
|
41
|
-
calleeName: call.expression
|
|
42
|
-
args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
184
|
+
calleeName: ts.getTextOfNode(call.expression),
|
|
185
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
43
186
|
type: DYN,
|
|
44
187
|
loc,
|
|
45
188
|
};
|
|
46
189
|
}
|
|
47
190
|
}
|
|
48
|
-
if (name === "getWindowSize" && call.arguments.length === 0) {
|
|
191
|
+
if (name === "getWindowSize" && call.arguments.nodes.length === 0) {
|
|
49
192
|
const receiver = lowerer.coerceToExpected(lowerer.lowerExpr(access.expression), DYN);
|
|
50
193
|
return lowerer.coerceInto(call, {
|
|
51
194
|
kind: "dynInvoke",
|
|
52
195
|
recv: receiver,
|
|
53
196
|
method: name,
|
|
54
|
-
calleeName: call.expression
|
|
197
|
+
calleeName: ts.getTextOfNode(call.expression),
|
|
55
198
|
args: [],
|
|
56
199
|
type: DYN,
|
|
57
200
|
loc,
|
|
58
201
|
}, lowerer.irTypeOf(call));
|
|
59
202
|
}
|
|
60
|
-
if (name === "write" && call.arguments.length === 1) {
|
|
203
|
+
if (name === "write" && call.arguments.nodes.length === 1) {
|
|
61
204
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
62
|
-
const data = lowerer.lowerExpr(call.arguments[0]);
|
|
205
|
+
const data = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
63
206
|
if (data.type.kind !== "string") {
|
|
64
|
-
|
|
207
|
+
requestGeneralStreamSurface(lowerer, access.expression);
|
|
208
|
+
lowerer.noLowering(`write of '${lowerer.fmt(data.type)}' data on a stream value`, call.arguments.nodes[0], "one string is the supported form here — narrow unions first");
|
|
65
209
|
}
|
|
66
210
|
return { kind: "libCall", fn: "procStream.write", args: [receiver, data], type: BOOL, loc };
|
|
67
211
|
}
|
|
212
|
+
requestGeneralStreamSurface(lowerer, access.expression);
|
|
68
213
|
lowerer.noLowering(`WritableStream.${name}`, call, "write(data) with one string and getWindowSize() are the supported stream-value methods", lowerer.checker.getSymbolAtLocation(access.name));
|
|
69
214
|
}
|
|
70
215
|
/** Standard streams expose optional terminal properties: pipes have no
|
|
@@ -91,7 +236,7 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
91
236
|
const direct = ts.isPropertyAccessExpression(expr.expression)
|
|
92
237
|
? lowerer.stdlibGlobalMember(expr.expression, "process")
|
|
93
238
|
: null;
|
|
94
|
-
if (isJsSourceFile(
|
|
239
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
|
|
95
240
|
(direct === "stdin" ||
|
|
96
241
|
direct === "stdout" ||
|
|
97
242
|
direct === "stderr" ||
|
|
@@ -106,6 +251,18 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
106
251
|
loc: locOf(expr),
|
|
107
252
|
};
|
|
108
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
|
+
}
|
|
109
266
|
if (member !== "isTTY" && member !== "columns" && member !== "rows")
|
|
110
267
|
return null;
|
|
111
268
|
let recv = expr.expression;
|
|
@@ -183,6 +340,36 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
183
340
|
* read in source order). Method members referenced without a call are
|
|
184
341
|
* rejected specifically. Null for non-process receivers (the chain keeps
|
|
185
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
|
+
}
|
|
186
373
|
export function lowerProcessProperty(lowerer, expr) {
|
|
187
374
|
if (!expr.questionDotToken &&
|
|
188
375
|
expr.name.text === "bigint" &&
|
|
@@ -261,9 +448,46 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
261
448
|
if (member === null)
|
|
262
449
|
return null;
|
|
263
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
|
+
}
|
|
264
460
|
if (member === "versions") {
|
|
265
461
|
return { kind: "libCall", fn: "process.versions", args: [], type: DYN, loc };
|
|
266
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
|
+
}
|
|
267
491
|
// process.noDeprecation / process.throwDeprecation: the values the
|
|
268
492
|
// program assigned (undefined before that — no Node flags reach a
|
|
269
493
|
// compiled binary).
|
|
@@ -285,6 +509,11 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
285
509
|
if (member === "hrtime") {
|
|
286
510
|
return { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc };
|
|
287
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
|
+
}
|
|
288
517
|
if (member === "getBuiltinModule") {
|
|
289
518
|
// Keep the native loader's argument validation when the function is
|
|
290
519
|
// stored. The declaration's string signature must not insert a checked
|
|
@@ -297,10 +526,10 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
297
526
|
if (member === "connected") {
|
|
298
527
|
return { kind: "libCall", fn: "process.connected", args: [], type: BOOL, loc };
|
|
299
528
|
}
|
|
300
|
-
// process.execArgv: the
|
|
301
|
-
//
|
|
529
|
+
// process.execArgv: the Node runtime flags kept out of process.argv —
|
|
530
|
+
// a leading --test-update-snapshots in node:test programs, else [].
|
|
302
531
|
if (member === "execArgv") {
|
|
303
|
-
return { kind: "
|
|
532
|
+
return { kind: "libCall", fn: "process.execArgv", args: [], type: arrayOf(STRING), loc };
|
|
304
533
|
}
|
|
305
534
|
// process._exiting — the runtime's exit-sequence flag (true while
|
|
306
535
|
// 'exit' listeners run), Node's own undocumented member.
|
|
@@ -360,7 +589,7 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
360
589
|
// (`process.stdout.isTTY`, `.write(...)`) never reach here — their
|
|
361
590
|
// OUTER expressions dispatch first.
|
|
362
591
|
if (member === "stdin" ||
|
|
363
|
-
((member === "stdout" || member === "stderr") && isJsSourceFile(
|
|
592
|
+
((member === "stdout" || member === "stderr") && isJsSourceFile(ts.getSourceFileOfNode(expr)))) {
|
|
364
593
|
return {
|
|
365
594
|
kind: "libCall",
|
|
366
595
|
fn: "process.stdio",
|
|
@@ -385,17 +614,18 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
385
614
|
export function lowerProcessMethodCall(lowerer, call, access) {
|
|
386
615
|
if (call.questionDotToken)
|
|
387
616
|
return null;
|
|
388
|
-
if (isJsSourceFile(
|
|
617
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(call)) &&
|
|
618
|
+
ts.isPropertyAccessExpression(access.expression)) {
|
|
389
619
|
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
390
620
|
if (stream === "stdin" || stream === "stdout" || stream === "stderr") {
|
|
391
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
621
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
392
622
|
lowerer.noLowering("process stream spread arguments", call);
|
|
393
623
|
return {
|
|
394
624
|
kind: "dynInvoke",
|
|
395
625
|
recv: lowerer.lowerExpr(access.expression),
|
|
396
626
|
method: access.name.text,
|
|
397
|
-
calleeName:
|
|
398
|
-
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)),
|
|
399
629
|
type: DYN,
|
|
400
630
|
loc: locOf(call),
|
|
401
631
|
};
|
|
@@ -405,31 +635,31 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
405
635
|
if (directProcessMember === "loadEnvFile")
|
|
406
636
|
return lowerProcessLoadEnvFile(lowerer, call);
|
|
407
637
|
if (directProcessMember === "hrtime") {
|
|
408
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
638
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
409
639
|
lowerer.noLowering("process.hrtime with spread arguments", call);
|
|
410
640
|
const loc = locOf(call);
|
|
411
641
|
return {
|
|
412
642
|
kind: "dynCall",
|
|
413
643
|
callee: { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc },
|
|
414
|
-
args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
644
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
415
645
|
calleeName: "process.hrtime",
|
|
416
646
|
type: DYN,
|
|
417
647
|
loc,
|
|
418
648
|
};
|
|
419
649
|
}
|
|
420
650
|
if (directProcessMember === "getBuiltinModule") {
|
|
421
|
-
if (call.arguments.some(ts.isSpreadElement))
|
|
651
|
+
if (call.arguments.nodes.some(ts.isSpreadElement))
|
|
422
652
|
lowerer.noLowering("process.getBuiltinModule with spread arguments", call);
|
|
423
653
|
const loc = locOf(call);
|
|
424
|
-
const id = call.arguments[0]
|
|
425
|
-
? lowerer.lowerExprExpecting(call.arguments[0], DYN)
|
|
654
|
+
const id = call.arguments.nodes[0]
|
|
655
|
+
? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
|
|
426
656
|
: dynUndefinedExpr(loc);
|
|
427
657
|
const binding = lowerer.declareHiddenLocal("%builtinId", DYN);
|
|
428
658
|
return {
|
|
429
659
|
kind: "seqExpr",
|
|
430
660
|
stmts: [
|
|
431
661
|
{ kind: "varDecl", localId: binding.id, init: id, loc },
|
|
432
|
-
...call.arguments.slice(1).map((arg) => ({
|
|
662
|
+
...call.arguments.nodes.slice(1).map((arg) => ({
|
|
433
663
|
kind: "exprStmt",
|
|
434
664
|
expr: lowerer.lowerExpr(arg),
|
|
435
665
|
loc: locOf(arg),
|
|
@@ -449,8 +679,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
449
679
|
if (directProcessMember === "send")
|
|
450
680
|
return lowerProcessIpcSend(lowerer, call);
|
|
451
681
|
if (directProcessMember === "disconnect") {
|
|
452
|
-
if (call.arguments.length !== 0) {
|
|
453
|
-
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);
|
|
454
684
|
}
|
|
455
685
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
456
686
|
lowerer.unsupported("SC1090", call, "using the result of process.disconnect() (call it as its own statement)");
|
|
@@ -470,7 +700,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
470
700
|
if (access.name.text === "destroy" &&
|
|
471
701
|
ts.isPropertyAccessExpression(access.expression) &&
|
|
472
702
|
lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
|
|
473
|
-
if (call.arguments.length !== 0) {
|
|
703
|
+
if (call.arguments.nodes.length !== 0) {
|
|
474
704
|
lowerer.noLowering("stdin.destroy with arguments", call);
|
|
475
705
|
}
|
|
476
706
|
return { kind: "libCall", fn: "process.stdinDestroy", args: [], type: VOID, loc: locOf(call) };
|
|
@@ -490,15 +720,77 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
490
720
|
if (!ts.isExpressionStatement(call.parent) && !ts.isArrowFunction(call.parent)) {
|
|
491
721
|
lowerer.unsupported("SC1090", call, "using the result of stdin.setRawMode(...) (the ReadStream chain — call it as its own statement)");
|
|
492
722
|
}
|
|
493
|
-
if (call.arguments.length !== 1) {
|
|
494
|
-
lowerer.noLowering(`stdin.setRawMode with ${call.arguments.length} arguments`, call, "the supported form is setRawMode(mode) with one boolean");
|
|
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");
|
|
495
725
|
}
|
|
496
|
-
const mode = lowerer.lowerExpr(call.arguments[0]);
|
|
726
|
+
const mode = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
497
727
|
if (mode.type.kind !== "bool") {
|
|
498
|
-
lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments[0], "the mode is a boolean here — narrow unions first");
|
|
728
|
+
lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments.nodes[0], "the mode is a boolean here — narrow unions first");
|
|
499
729
|
}
|
|
500
730
|
return { kind: "libCall", fn: "process.stdinSetRawMode", args: [mode], type: VOID, loc };
|
|
501
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
|
+
}
|
|
502
794
|
// process.stdin.on/once("data" | "end" | "error", cb): the piped-stdin
|
|
503
795
|
// event slice. A 'data' listener keeps the event loop alive until EOF
|
|
504
796
|
// (Node's flowing stdin); 'end'/'error' listeners alone do not. `once`
|
|
@@ -509,43 +801,48 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
509
801
|
lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
|
|
510
802
|
const loc = locOf(call);
|
|
511
803
|
const once = access.name.text === "once";
|
|
512
|
-
if (call.arguments.length !== 2) {
|
|
513
|
-
lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.length} arguments`, call);
|
|
804
|
+
if (call.arguments.nodes.length !== 2) {
|
|
805
|
+
lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.nodes.length} arguments`, call);
|
|
514
806
|
}
|
|
515
|
-
const evT = lowerer.typeOf(call.arguments[0]);
|
|
807
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
516
808
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
517
809
|
if (event !== "data" && event !== "end" && event !== "error" && event !== "keypress") {
|
|
518
|
-
lowerer.noLowering(`stdin.${access.name.text}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, call.arguments[0], '"data", "end", "error", and "keypress" are the supported stdin events (as literals)');
|
|
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)');
|
|
519
811
|
}
|
|
520
812
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
521
813
|
lowerer.unsupported("SC1090", call, "chaining stdin listener registration (the result is void here — register each listener as its own statement)");
|
|
522
814
|
}
|
|
523
815
|
if (event === "keypress") {
|
|
524
816
|
// readline.emitKeypressEvents' (str, key) events
|
|
525
|
-
const listener = stdinKeypressListener(lowerer, call.arguments[1]);
|
|
817
|
+
const listener = stdinKeypressListener(lowerer, call.arguments.nodes[1]);
|
|
526
818
|
const onceKp = { kind: "boolLit", value: once, type: BOOL, loc };
|
|
527
819
|
return { kind: "libCall", fn: "stdin.onKeypress", args: [listener, onceKp], type: VOID, loc };
|
|
528
820
|
}
|
|
529
|
-
const cb = lowerer.lowerExpr(call.arguments[1]);
|
|
821
|
+
const cb = lowerer.lowerExpr(call.arguments.nodes[1]);
|
|
530
822
|
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
|
|
531
|
-
lowerer.unsupported("SC1090", call.arguments[1], "stdin listeners with more than one parameter or a return value");
|
|
823
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "stdin listeners with more than one parameter or a return value");
|
|
532
824
|
}
|
|
533
825
|
const param = cb.type.params[0];
|
|
534
826
|
const onceArg = { kind: "boolLit", value: once, type: BOOL, loc };
|
|
535
827
|
if (event === "data") {
|
|
536
|
-
|
|
537
|
-
|
|
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)}')`);
|
|
538
835
|
}
|
|
539
836
|
return { kind: "libCall", fn: "stdin.onData", args: [cb, onceArg], type: VOID, loc };
|
|
540
837
|
}
|
|
541
838
|
if (event === "end") {
|
|
542
839
|
if (param !== undefined) {
|
|
543
|
-
lowerer.unsupported("SC1090", call.arguments[1], "end listeners with parameters (use ())");
|
|
840
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "end listeners with parameters (use ())");
|
|
544
841
|
}
|
|
545
842
|
return { kind: "libCall", fn: "stdin.onEnd", args: [cb, onceArg], type: VOID, loc };
|
|
546
843
|
}
|
|
547
844
|
if (param !== undefined && !(param.kind === "object" && param.className === "%Error")) {
|
|
548
|
-
lowerer.unsupported("SC1090", call.arguments[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
|
|
845
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
|
|
549
846
|
}
|
|
550
847
|
return { kind: "libCall", fn: "stdin.onError", args: [cb, onceArg], type: VOID, loc };
|
|
551
848
|
}
|
|
@@ -553,7 +850,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
553
850
|
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
554
851
|
if (stream === "stdout" || stream === "stderr") {
|
|
555
852
|
const loc = locOf(call);
|
|
556
|
-
const args = call.arguments;
|
|
853
|
+
const args = call.arguments.nodes;
|
|
557
854
|
if (args.length < 1 || args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
558
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");
|
|
559
856
|
}
|
|
@@ -635,7 +932,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
635
932
|
// `writeOut: (str) => process.stdout.write(str)` — str untyped):
|
|
636
933
|
// a runtime string writes; anything else throws the dynCheck's
|
|
637
934
|
// honest TypeError at the call.
|
|
638
|
-
if (data.type.kind === "dyn" && isJsSourceFile(
|
|
935
|
+
if (data.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
639
936
|
data = { kind: "dynCheck", value: data, type: STRING, loc };
|
|
640
937
|
}
|
|
641
938
|
const isBytes = data.type.kind === "bytes" && data.type.elem === "u8";
|
|
@@ -645,7 +942,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
645
942
|
let callback;
|
|
646
943
|
if (callbackNode) {
|
|
647
944
|
callback = lowerer.lowerExpr(callbackNode);
|
|
648
|
-
if (callback.type.kind === "dyn" && isJsSourceFile(
|
|
945
|
+
if (callback.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
649
946
|
callback = {
|
|
650
947
|
kind: "dynCheck",
|
|
651
948
|
value: callback,
|
|
@@ -740,8 +1037,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
740
1037
|
!access.questionDotToken &&
|
|
741
1038
|
ts.isPropertyAccessExpression(access.expression) &&
|
|
742
1039
|
lowerer.stdlibGlobalMember(access.expression, "process") === "memoryUsage") {
|
|
743
|
-
if (call.arguments.length !== 0) {
|
|
744
|
-
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);
|
|
745
1042
|
}
|
|
746
1043
|
return { kind: "libCall", fn: "process.rss", args: [], type: F64, loc: locOf(call) };
|
|
747
1044
|
}
|
|
@@ -760,18 +1057,18 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
760
1057
|
// `removeListener` IS `off` — Node aliases them.
|
|
761
1058
|
const isOff = member === "off" || member === "removeListener";
|
|
762
1059
|
if (member === "on" || member === "once" || isOff) {
|
|
763
|
-
if (call.arguments.length !== 2) {
|
|
764
|
-
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);
|
|
765
1062
|
}
|
|
766
|
-
const evT = lowerer.typeOf(call.arguments[0]);
|
|
1063
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
767
1064
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
768
1065
|
if ((event === "message" || event === "disconnect") && !isOff) {
|
|
769
1066
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
770
1067
|
lowerer.unsupported("SC1090", call, "chaining process IPC listener registration (register each listener as its own statement)");
|
|
771
1068
|
}
|
|
772
1069
|
const callback = event === "message"
|
|
773
|
-
? ipcMessageListener(lowerer, call.arguments[1])
|
|
774
|
-
: ipcDisconnectListener(lowerer, call.arguments[1]);
|
|
1070
|
+
? ipcMessageListener(lowerer, call.arguments.nodes[1])
|
|
1071
|
+
: ipcDisconnectListener(lowerer, call.arguments.nodes[1]);
|
|
775
1072
|
return {
|
|
776
1073
|
kind: "libCall",
|
|
777
1074
|
fn: event === "message" ? "process.onMessage" : "process.onDisconnect",
|
|
@@ -784,7 +1081,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
784
1081
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
785
1082
|
lowerer.unsupported("SC1090", call, "chaining process exception listener registration");
|
|
786
1083
|
}
|
|
787
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1084
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
788
1085
|
const monitor = boolLit(event === "uncaughtExceptionMonitor", loc);
|
|
789
1086
|
return {
|
|
790
1087
|
kind: "libCall",
|
|
@@ -806,7 +1103,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
806
1103
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
807
1104
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
808
1105
|
}
|
|
809
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1106
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
810
1107
|
const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
|
|
811
1108
|
const fn = event === "unhandledRejection"
|
|
812
1109
|
? isOff
|
|
@@ -824,7 +1121,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
824
1121
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
825
1122
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
826
1123
|
}
|
|
827
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1124
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
828
1125
|
return {
|
|
829
1126
|
kind: "libCall",
|
|
830
1127
|
fn: isOff ? "process.offWarning" : "process.onWarning",
|
|
@@ -837,14 +1134,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
837
1134
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
838
1135
|
lowerer.unsupported("SC1090", call, "chaining process signal listener registration");
|
|
839
1136
|
}
|
|
840
|
-
const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments[0]), STRING);
|
|
1137
|
+
const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments.nodes[0]), STRING);
|
|
841
1138
|
if (name.type.kind !== "string" && name.type.kind !== "dyn") {
|
|
842
|
-
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]);
|
|
843
1140
|
}
|
|
844
1141
|
const signal = name.type.kind === "string"
|
|
845
1142
|
? name
|
|
846
1143
|
: { kind: "dynCheck", value: name, type: STRING, loc };
|
|
847
|
-
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
|
|
1144
|
+
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
848
1145
|
return {
|
|
849
1146
|
kind: "libCall",
|
|
850
1147
|
fn: isOff ? "process.offSignal" : "process.onSignal",
|
|
@@ -854,12 +1151,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
854
1151
|
};
|
|
855
1152
|
}
|
|
856
1153
|
if (event !== "exit") {
|
|
857
|
-
lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments[0]);
|
|
1154
|
+
lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments.nodes[0]);
|
|
858
1155
|
}
|
|
859
1156
|
if (!ts.isExpressionStatement(call.parent)) {
|
|
860
1157
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
861
1158
|
}
|
|
862
|
-
let cb = lowerer.lowerExpr(call.arguments[1]);
|
|
1159
|
+
let cb = lowerer.lowerExpr(call.arguments.nodes[1]);
|
|
863
1160
|
// The checked-dynamic listener (test/common's `process.on('exit',
|
|
864
1161
|
// runCallChecks)` — an implicit-any JS function, func(dyn)=>dyn, or
|
|
865
1162
|
// a dyn VALUE that rode an untyped binding): adapt through the dyn
|
|
@@ -890,12 +1187,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
890
1187
|
}
|
|
891
1188
|
}
|
|
892
1189
|
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
|
|
893
|
-
lowerer.unsupported("SC1090", call.arguments[1], "process listeners with more than one parameter or a return value");
|
|
1190
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], "process listeners with more than one parameter or a return value");
|
|
894
1191
|
}
|
|
895
1192
|
const param = cb.type.params[0];
|
|
896
1193
|
const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
|
|
897
1194
|
if (param !== undefined && param.kind !== "f64") {
|
|
898
|
-
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)}')`);
|
|
899
1196
|
}
|
|
900
1197
|
if (isOff) {
|
|
901
1198
|
return { kind: "libCall", fn: "process.offExit", args: [cb], type: VOID, loc };
|
|
@@ -910,17 +1207,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
910
1207
|
// shape: `.forEach((args) => process.emitWarning(...args))`).
|
|
911
1208
|
if (member === "emitWarning") {
|
|
912
1209
|
let argsArr = null;
|
|
913
|
-
if (call.arguments.length === 1 && ts.isSpreadElement(call.arguments[0])) {
|
|
914
|
-
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);
|
|
915
1212
|
if (spread.type.kind === "dyn") {
|
|
916
1213
|
argsArr = spread;
|
|
917
1214
|
}
|
|
918
1215
|
else {
|
|
919
|
-
lowerer.noLowering("process.emitWarning with a typed spread argument", call.arguments[0], "spread an untyped (checked-dynamic) array, or write the arguments positionally");
|
|
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");
|
|
920
1217
|
}
|
|
921
1218
|
}
|
|
922
1219
|
else {
|
|
923
|
-
argsArr = lowerTracingArguments(lowerer, call.arguments, loc);
|
|
1220
|
+
argsArr = lowerTracingArguments(lowerer, call.arguments.nodes, loc);
|
|
924
1221
|
}
|
|
925
1222
|
return { kind: "libCall", fn: "process.emitWarning", args: [argsArr], type: VOID, loc };
|
|
926
1223
|
}
|
|
@@ -935,17 +1232,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
935
1232
|
// through, boxable parameterized shapes ride the checked-dynamic
|
|
936
1233
|
// boundary, trailing call arguments ride the interned dyn thunk.
|
|
937
1234
|
if (member === "nextTick") {
|
|
938
|
-
if (call.arguments.length === 0) {
|
|
1235
|
+
if (call.arguments.nodes.length === 0) {
|
|
939
1236
|
lowerer.noLowering("process.nextTick with 0 arguments", call, "the supported form is process.nextTick(callback, ...args)");
|
|
940
1237
|
}
|
|
941
|
-
const cb = timerStyleCallback(lowerer, call.arguments, "process.nextTick", loc);
|
|
1238
|
+
const cb = timerStyleCallback(lowerer, call.arguments.nodes, "process.nextTick", loc);
|
|
942
1239
|
return { kind: "libCall", fn: "process.nextTick", args: [cb], type: VOID, loc };
|
|
943
1240
|
}
|
|
944
1241
|
// The process introspection statics — plain reads of the process's
|
|
945
1242
|
// own clocks and counters, Node's shapes exactly.
|
|
946
1243
|
if (member === "uptime" || member === "availableMemory" || member === "constrainedMemory") {
|
|
947
|
-
if (call.arguments.length !== 0) {
|
|
948
|
-
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);
|
|
949
1246
|
}
|
|
950
1247
|
const fn = member === "uptime"
|
|
951
1248
|
? "process.uptime"
|
|
@@ -977,7 +1274,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
977
1274
|
type: F64,
|
|
978
1275
|
loc,
|
|
979
1276
|
});
|
|
980
|
-
if (call.arguments.length === 0) {
|
|
1277
|
+
if (call.arguments.nodes.length === 0) {
|
|
981
1278
|
return {
|
|
982
1279
|
kind: "recordLit",
|
|
983
1280
|
fields: shape.fields.map((f) => ({ name: f.name, value: sampleField(f.name) })),
|
|
@@ -985,15 +1282,15 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
985
1282
|
loc,
|
|
986
1283
|
};
|
|
987
1284
|
}
|
|
988
|
-
if (call.arguments.length !== 1) {
|
|
989
|
-
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);
|
|
990
1287
|
}
|
|
991
|
-
const prev = lowerer.lowerExpr(call.arguments[0]);
|
|
1288
|
+
const prev = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
992
1289
|
const prevShape = prev.type.kind === "record" ? lowerer.shapes.get(prev.type.shapeId) : undefined;
|
|
993
1290
|
const prevOk = prevShape !== undefined &&
|
|
994
1291
|
["user", "system"].every((n) => prevShape.fields.some((f) => f.name === n && f.type.kind === "f64"));
|
|
995
1292
|
if (prev.type.kind !== "record" || !prevOk) {
|
|
996
|
-
lowerer.noLowering(`process.${member} of a '${lowerer.fmt(prev.type)}' previous value`, call.arguments[0], "the previous value is the record a prior call answered ({ user, system } numbers) — Node's ERR_INVALID_ARG_TYPE shapes have no lowering");
|
|
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");
|
|
997
1294
|
}
|
|
998
1295
|
const prevT = prev.type;
|
|
999
1296
|
const key = `${prefix}usage.diff:${prevT.shapeId}:${t.shapeId}`;
|
|
@@ -1059,8 +1356,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1059
1356
|
// storage lives in the same heap). One sample per call: the interned
|
|
1060
1357
|
// helper takes it, then the record reads it field by field.
|
|
1061
1358
|
if (member === "memoryUsage") {
|
|
1062
|
-
if (call.arguments.length !== 0) {
|
|
1063
|
-
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);
|
|
1064
1361
|
}
|
|
1065
1362
|
const t = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
1066
1363
|
if (t?.kind !== "record")
|
|
@@ -1114,8 +1411,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1114
1411
|
// process.resourceUsage() — getrusage's 16 fields in Node's names and
|
|
1115
1412
|
// units (CPU times in microseconds, maxRSS in kilobytes).
|
|
1116
1413
|
if (member === "resourceUsage") {
|
|
1117
|
-
if (call.arguments.length !== 0) {
|
|
1118
|
-
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);
|
|
1119
1416
|
}
|
|
1120
1417
|
const t = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
1121
1418
|
if (t?.kind !== "record")
|
|
@@ -1165,8 +1462,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1165
1462
|
// DIVERGENCE (SEMANTICS.md): resources this runtime does not model
|
|
1166
1463
|
// as loop handles (TCP wraps, FS requests) are absent from the answer.
|
|
1167
1464
|
if (member === "getActiveResourcesInfo") {
|
|
1168
|
-
if (call.arguments.length !== 0) {
|
|
1169
|
-
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);
|
|
1170
1467
|
}
|
|
1171
1468
|
return { kind: "libCall", fn: "process.activeResources", args: [], type: arrayOf(STRING), loc };
|
|
1172
1469
|
}
|
|
@@ -1174,25 +1471,25 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1174
1471
|
// completes it to the -1 read sentinel); umask(mask) sets and answers
|
|
1175
1472
|
// the previous mask, Node's shape either way.
|
|
1176
1473
|
if (member === "umask") {
|
|
1177
|
-
if (call.arguments.length > 1) {
|
|
1178
|
-
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);
|
|
1179
1476
|
}
|
|
1180
|
-
const mask = call.arguments.length === 1
|
|
1181
|
-
? lowerer.lowerExpr(call.arguments[0])
|
|
1477
|
+
const mask = call.arguments.nodes.length === 1
|
|
1478
|
+
? lowerer.lowerExpr(call.arguments.nodes[0])
|
|
1182
1479
|
: { kind: "numLit", value: -1, type: F64, loc };
|
|
1183
1480
|
if (mask.type.kind !== "f64") {
|
|
1184
|
-
lowerer.noLowering("process.umask of non-number masks", call.arguments[0]);
|
|
1481
|
+
lowerer.noLowering("process.umask of non-number masks", call.arguments.nodes[0]);
|
|
1185
1482
|
}
|
|
1186
1483
|
return { kind: "libCall", fn: "process.umask", args: [mask], type: F64, loc };
|
|
1187
1484
|
}
|
|
1188
1485
|
// chdir(2) — throws Node's fs-shaped error on failure.
|
|
1189
1486
|
if (member === "chdir") {
|
|
1190
|
-
if (call.arguments.length !== 1) {
|
|
1191
|
-
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);
|
|
1192
1489
|
}
|
|
1193
|
-
const dir = lowerer.lowerExpr(call.arguments[0]);
|
|
1490
|
+
const dir = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
1194
1491
|
if (dir.type.kind !== "string") {
|
|
1195
|
-
lowerer.noLowering("process.chdir of non-string paths", call.arguments[0]);
|
|
1492
|
+
lowerer.noLowering("process.chdir of non-string paths", call.arguments.nodes[0]);
|
|
1196
1493
|
}
|
|
1197
1494
|
return { kind: "libCall", fn: "process.chdir", args: [dir], type: VOID, loc };
|
|
1198
1495
|
}
|
|
@@ -1201,8 +1498,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1201
1498
|
// the member optional (that optionality covers Windows). The `?.()`
|
|
1202
1499
|
// spelling routes here through lowerProcessOptionalMethodCall.
|
|
1203
1500
|
if (PROCESS_CREDENTIAL_FNS.has(member)) {
|
|
1204
|
-
if (call.arguments.length !== 0) {
|
|
1205
|
-
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);
|
|
1206
1503
|
}
|
|
1207
1504
|
return processCredentialCall(member, loc);
|
|
1208
1505
|
}
|
|
@@ -1214,11 +1511,11 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1214
1511
|
// Node's `kill ESRCH`/`kill EPERM` Error. The result is Node's
|
|
1215
1512
|
// constant true.
|
|
1216
1513
|
if (member === "kill") {
|
|
1217
|
-
if (call.arguments.length < 1 || call.arguments.length > 2) {
|
|
1218
|
-
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);
|
|
1219
1516
|
}
|
|
1220
|
-
const pid = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
1221
|
-
const sigNode = call.arguments[1];
|
|
1517
|
+
const pid = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
|
|
1518
|
+
const sigNode = call.arguments.nodes[1];
|
|
1222
1519
|
if (!sigNode) {
|
|
1223
1520
|
const dflt = { kind: "strLit", value: "SIGTERM", type: STRING, loc };
|
|
1224
1521
|
return { kind: "libCall", fn: "process.kill", args: [pid, dflt], type: BOOL, loc };
|
|
@@ -1233,10 +1530,36 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1233
1530
|
lowerer.noLowering(`process.kill with a '${lowerer.fmt(sig.type)}' signal`, sigNode, "pass a signal name string or number (narrow unions first)");
|
|
1234
1531
|
}
|
|
1235
1532
|
if (member === "exit") {
|
|
1236
|
-
const arg = call.arguments[0];
|
|
1237
|
-
|
|
1533
|
+
const arg = call.arguments.nodes[0];
|
|
1534
|
+
let code = arg !== undefined
|
|
1238
1535
|
? lowerer.lowerExprExpecting(arg, F64)
|
|
1239
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
|
+
}
|
|
1240
1563
|
return { kind: "libCall", fn: "process.exit", args: [code], type: VOID, loc };
|
|
1241
1564
|
}
|
|
1242
1565
|
return null; // process.argv(...) etc. are tsc errors before lowering
|
|
@@ -1248,6 +1571,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1248
1571
|
* BEFORE the optional-chain machinery: `process.getuid` has no value
|
|
1249
1572
|
* lowering for the chain to guard. Null when this isn't that shape. */
|
|
1250
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);
|
|
1251
1582
|
if (!expr.questionDotToken)
|
|
1252
1583
|
return null;
|
|
1253
1584
|
if (!ts.isPropertyAccessExpression(expr.expression))
|
|
@@ -1257,8 +1588,8 @@ export function lowerProcessOptionalMethodCall(lowerer, expr) {
|
|
|
1257
1588
|
return lowerProcessIpcSend(lowerer, expr);
|
|
1258
1589
|
if (member === null || !PROCESS_CREDENTIAL_FNS.has(member))
|
|
1259
1590
|
return null;
|
|
1260
|
-
if (expr.arguments.length !== 0) {
|
|
1261
|
-
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);
|
|
1262
1593
|
}
|
|
1263
1594
|
return processCredentialCall(member, locOf(expr));
|
|
1264
1595
|
}
|
|
@@ -1284,4 +1615,35 @@ function processCredentialCall(member, loc) {
|
|
|
1284
1615
|
loc,
|
|
1285
1616
|
};
|
|
1286
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
|
+
}
|
|
1287
1649
|
//# sourceMappingURL=process.js.map
|