@scriptc/compiler 0.3.6 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +717 -55
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +20 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +9 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.js +3 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +38 -1
- package/dist/backend/llvm/classes.js +185 -35
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +79 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -3
- package/dist/backend/llvm/common.js +51 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +15 -4
- package/dist/backend/llvm/dense-array-access.js +125 -44
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +63 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +37 -4
- package/dist/backend/llvm/dyn.js +354 -183
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1193 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1557 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +59 -0
- package/dist/backend/llvm/emit-statements.js +2041 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +566 -291
- package/dist/backend/llvm/emitter.js +728 -4671
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +87 -56
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +45 -24
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +113 -66
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +124 -28
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +57 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +65 -27
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +616 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +94 -53
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +209 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +42 -33
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +45 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +215 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +7 -0
- package/dist/backend/llvm/publish.js +50 -19
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +10 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +8 -2
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +74 -45
- package/dist/backend/llvm/shapes.js +289 -28
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +1 -1
- package/dist/backend/llvm/string-reads.js +4 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +111 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +12 -0
- package/dist/backend/mangle.js +18 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +57 -0
- package/dist/backend/native/executable.js +211 -139
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +2 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +6 -0
- package/dist/backend/native-codegen.js +19 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +27 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +48 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +13 -1
- package/dist/backend/runtime-pack-core.js +14 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +9 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +9 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +15 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +8 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +106 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +21 -1
- package/dist/cli/usage.js +43 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +22 -0
- package/dist/contracts/check.js +25 -8
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +27 -0
- package/dist/executable/executable-cache.js +19 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +12 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
- package/dist/frontend/lowering/builtins/crypto.js +215 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +284 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +41 -1
- package/dist/frontend/lowering/builtins/process.js +505 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +42 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +79 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +23 -1
- package/dist/frontend/lowering/call-signatures.js +379 -55
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +561 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +10 -0
- package/dist/frontend/lowering/class-protocols.js +76 -45
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +86 -19
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +264 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +58 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +94 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
- package/dist/frontend/lowering/containers/bytes.js +649 -113
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +126 -28
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
- package/dist/frontend/lowering/cycle-initialization.js +191 -35
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +723 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2557 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1804 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +301 -86
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
- package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
- package/dist/frontend/lowering/expressions/property-access.js +3787 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1724 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +551 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +43 -0
- package/dist/frontend/lowering/generic-functions.js +593 -118
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +33 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1404 -448
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +54 -3
- package/dist/frontend/lowering/lower-classes.js +1529 -472
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +241 -21
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1509 -12486
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +72 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +39 -20
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +900 -107
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +445 -94
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +65 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +514 -101
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +179 -118
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
- package/dist/frontend/lowering/lower-stmts.js +1950 -433
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +96 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +424 -27
- package/dist/frontend/lowering/lowerer.js +2062 -310
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +133 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +13 -12
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +282 -45
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
- package/dist/frontend/npm-static-bundled-chunks.js +981 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +988 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +25 -1
- package/dist/frontend/npm-static.js +212 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +230 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +100 -2
- package/dist/frontend/program.js +1627 -262
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +49 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +26 -1
- package/dist/frontend/services.js +59 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +10 -5
- package/dist/frontend/ts7/program-host.js +19 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +57 -24
- package/dist/frontend/ts7/semantic-model.js +114 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +30 -15
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2735 -723
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +87 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +31 -0
- package/dist/ir/array-length-stability.js +249 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +134 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +116 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +540 -29
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +7 -0
- package/dist/ir/integer-loop-facts.js +103 -17
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +13 -1
- package/dist/ir/integer-ranges.js +125 -26
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +273 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +221 -58
- package/dist/ir/ir.js +127 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +399 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +183 -33
- package/dist/ir/runtime-features.js +795 -422
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +201 -150
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +196 -76
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +41 -11
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +14 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +35 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +10 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +19 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +22 -20
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +304 -22
|
@@ -0,0 +1,830 @@
|
|
|
1
|
+
/* Identifier references in expression position: lowerExprInner's identifier branch and its helpers. */
|
|
2
|
+
import { cjsMemberAliasValueOf } from "../cjs-exports-object.js";
|
|
3
|
+
import { builtinClassValue, builtinMemberClassKind } from "../builtins/builtin-class-dyn.js";
|
|
4
|
+
import * as ts from "../../ts7/adapter.js";
|
|
5
|
+
import { InternalCompilerError } from "../../../errors.js";
|
|
6
|
+
import * as posix from "node:path/posix";
|
|
7
|
+
import { PoisonError } from "../lowerer.js";
|
|
8
|
+
import { BOOL, BYTES_ELEMENT_NAME, DYN, F64, STRING, UNDEFINED_T, arrayOf, funcOf, isUnitType, recordTextCodecClass, } from "../../../ir/ir.js";
|
|
9
|
+
import { lowerNodeModuleIdentifier } from "../lower-node-module.js";
|
|
10
|
+
import { lowerCjsExportsObjectValue } from "../cjs-exports-object.js";
|
|
11
|
+
import { captureContextArguments } from "../function-context.js";
|
|
12
|
+
import { argumentsOwner, typedArgumentsCandidate } from "../typed-arguments.js";
|
|
13
|
+
import { isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isNodeEsmFile, locOf, } from "../../program.js";
|
|
14
|
+
import { builtinClassAliasOwnsNoSlot, runtimeClassValueOf } from "../builtins/class-values.js";
|
|
15
|
+
import { cjsAccessorCall, cjsAccessorSnapshotOf, primitiveCtorClosure, runtimeOptionalElementKey, runtimeOptionalUseOf, } from "../lower-exprs.js";
|
|
16
|
+
import { runtimeOptionalReceiverRead } from "./narrowing.js";
|
|
17
|
+
import { builtinGlobalValueAt } from "./property-access.js";
|
|
18
|
+
import { varRef } from "../../../ir/build.js";
|
|
19
|
+
import { ambientUndefReadType, ambientUndefinedFnSymbolOf, contextualUndefReadType, fenceEarlyAliasUse, isTemporalGlobalRoot, lowerNsIdentifierValue, nsUndefRead, } from "../lower-namespaces.js";
|
|
20
|
+
import { blockedBindingUseDiag, unsupportedDiag, unsupportedPackageValueDiag, } from "../../../diagnostics/diagnostic.js";
|
|
21
|
+
import { dirname } from "node:path";
|
|
22
|
+
import { funcTypeFromParamShapes } from "../call-signatures.js";
|
|
23
|
+
import { threadsImportOf } from "../../threads-import.js";
|
|
24
|
+
import { experimentalImportOf } from "../../experimental-import.js";
|
|
25
|
+
import { lowerWorkerMetadata } from "../builtins/workers.js";
|
|
26
|
+
import { esmImportBindingKind } from "../builtins/module-bindings.js";
|
|
27
|
+
import { builtinConstLit, builtinFenceHintOf, builtinModuleConstOf, builtinModuleFnOf, builtinModulesArrayLit, stdlibGlobalNameOf, } from "../surfaces.js";
|
|
28
|
+
import { builtinConstantsObject } from "../lower-builtin-values.js";
|
|
29
|
+
import { lowerTlsRootCertificates } from "../lower-server.js";
|
|
30
|
+
import { builtinFunctionFenceValue } from "../builtin-function-fences.js";
|
|
31
|
+
import { unsupportedModuleFeatureOf } from "../../builtin-modules.js";
|
|
32
|
+
import { lowerGlobalValue } from "../lower-global-value.js";
|
|
33
|
+
import { fenceEnumObjectValue } from "../lower-enums.js";
|
|
34
|
+
import { mixinFnOfCallee } from "../lower-mixins.js";
|
|
35
|
+
import { isNavigatorGlobal, refuseNavigator } from "../builtins/navigator.js";
|
|
36
|
+
import { wasiGuestPath } from "../../../wasi-paths.js";
|
|
37
|
+
export function lowerIdentifierExpr(lowerer, expr, loc) {
|
|
38
|
+
if (lowerer.isStdlibGlobal(expr, "console")) {
|
|
39
|
+
return { kind: "libCall", fn: "console.native", args: [], type: DYN, loc };
|
|
40
|
+
}
|
|
41
|
+
const moduleValue = lowerNodeModuleIdentifier(lowerer, expr);
|
|
42
|
+
if (moduleValue)
|
|
43
|
+
return moduleValue;
|
|
44
|
+
if (expr.text === "exports") {
|
|
45
|
+
const exportsValue = lowerCjsExportsObjectValue(lowerer, expr);
|
|
46
|
+
if (exportsValue)
|
|
47
|
+
return exportsValue;
|
|
48
|
+
}
|
|
49
|
+
if (lowerer.isSelfReference(expr)) {
|
|
50
|
+
return { kind: "selfRef", type: lowerer.ctx.selfType, loc };
|
|
51
|
+
}
|
|
52
|
+
// `arguments` in a variadic JS function (the rest-marked form): the
|
|
53
|
+
// synthetic trailing dyn-array param — lambdaSignature marked the
|
|
54
|
+
// type and lowerLambda declared the local.
|
|
55
|
+
if (expr.text === "arguments") {
|
|
56
|
+
const binding = captureContextArguments(lowerer.fnStack);
|
|
57
|
+
if (binding && lowerer.ctx.pureTuples.has(binding.id)) {
|
|
58
|
+
throw new InternalCompilerError("lowerer bug: forwarded-only 'arguments' read as a value");
|
|
59
|
+
}
|
|
60
|
+
if (binding)
|
|
61
|
+
return { kind: "varRef", localId: binding.id, type: binding.type, loc };
|
|
62
|
+
const owner = argumentsOwner(expr);
|
|
63
|
+
if (owner && typedArgumentsCandidate(owner)) {
|
|
64
|
+
lowerer.unsupported("SC1090", expr, "'arguments' in a function expression whose value is not asserted to one fixed-arity signature (assert it, as in `function () { … } as F`, and the function lowers against that signature)");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// A compiler-projected adapter as a VALUE: the adapter has no
|
|
68
|
+
// runtime function object (its calls rewrite directly) — call it
|
|
69
|
+
// through its immutable binding instead.
|
|
70
|
+
{
|
|
71
|
+
const sym = lowerer.resolveValueSymbol(expr);
|
|
72
|
+
const projection = sym ? lowerer.staticCallables.get(sym) : undefined;
|
|
73
|
+
if (projection?.kind === "promisified-exec-file" ||
|
|
74
|
+
projection?.kind === "promisified-exec" ||
|
|
75
|
+
projection?.kind === "promisified-builtin" ||
|
|
76
|
+
projection?.kind === "promisified-zlib" ||
|
|
77
|
+
projection?.kind === "promisified-crypto" ||
|
|
78
|
+
projection?.kind === "promisified-dns") {
|
|
79
|
+
lowerer.unsupported("SC1090", expr, `a promisified builtin as a value (call '${expr.text}' directly)`);
|
|
80
|
+
}
|
|
81
|
+
if (projection?.kind === "builtin-function") {
|
|
82
|
+
if (!isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
83
|
+
const callable = lowerer.lowerBuiltinCallableValue({ module: projection.module, member: projection.member }, loc);
|
|
84
|
+
if (callable)
|
|
85
|
+
return callable;
|
|
86
|
+
}
|
|
87
|
+
lowerer.unsupported("SC1090", expr, `a builtin function alias as an escaping value (call '${expr.text}' directly)`);
|
|
88
|
+
}
|
|
89
|
+
// `EventEmitter`, `Readable` or `TypeError` (or a const alias of
|
|
90
|
+
// one) as a value in a TypeScript file: the runtime class's class
|
|
91
|
+
// object. JavaScript files keep the identity token.
|
|
92
|
+
if (!isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
93
|
+
const runtimeClass = runtimeClassValueOf(lowerer, expr);
|
|
94
|
+
if (runtimeClass)
|
|
95
|
+
return lowerer.classValueRef(runtimeClass, expr);
|
|
96
|
+
}
|
|
97
|
+
// `const E = EventEmitter` owns no runtime slot: construction,
|
|
98
|
+
// instanceof, typeof and .name lower at their use sites.
|
|
99
|
+
if (sym && builtinClassAliasOwnsNoSlot(lowerer, sym)) {
|
|
100
|
+
lowerer.unsupported("SC1090", expr, `a builtin class alias as an escaping value (use '${expr.text}' with new, instanceof, typeof or .name)`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Union-typed bindings read through tsc's control-flow narrowing:
|
|
104
|
+
// when the checker types this USE as a single arm, maybeNarrow
|
|
105
|
+
// bridges the tagged representation with a unionNarrow.
|
|
106
|
+
const local = lowerer.resolveLocal(expr);
|
|
107
|
+
if (local) {
|
|
108
|
+
// A switch can dispatch past a lexical declaration. Keep this
|
|
109
|
+
// previously refused codec form out until switch-scope TDZ boxes
|
|
110
|
+
// model that skipped initialization, including value aliases.
|
|
111
|
+
if (local.type.kind === "record" &&
|
|
112
|
+
recordTextCodecClass(lowerer.shapes.get(local.type.shapeId)) !== null) {
|
|
113
|
+
const symbol = lowerer.resolveValueSymbol(expr);
|
|
114
|
+
const decl = symbol ? symbol.valueDeclaration : undefined;
|
|
115
|
+
if (decl &&
|
|
116
|
+
ts.isVariableDeclaration(decl) &&
|
|
117
|
+
ts.isVariableDeclarationList(decl.parent) &&
|
|
118
|
+
(decl.parent.flags & ts.NodeFlags.BlockScoped) !== 0 &&
|
|
119
|
+
ts.isVariableStatement(decl.parent.parent)) {
|
|
120
|
+
const clause = decl.parent.parent.parent;
|
|
121
|
+
if ((ts.isCaseClause(clause) || ts.isDefaultClause(clause)) &&
|
|
122
|
+
!(ts.tokenStartOfNode(expr) >= ts.tokenStartOfNode(clause) && expr.end <= clause.end)) {
|
|
123
|
+
lowerer.unsupported("SC1090", expr, "codec bindings read from another switch clause before initialization is proven");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (local.type.kind === "caught")
|
|
128
|
+
return lowerer.caughtRead(expr, local, loc);
|
|
129
|
+
const symbol = lowerer.resolveValueSymbol(expr);
|
|
130
|
+
const runtimeOptionalRoot = lowerer.runtimeOptionalRootOf(local);
|
|
131
|
+
const active = lowerer.runtimeOptionalLocals.has(runtimeOptionalRoot);
|
|
132
|
+
const arithmetic = lowerer.runtimeOptionalArithmeticLocals.has(runtimeOptionalRoot);
|
|
133
|
+
const captured = !!symbol &&
|
|
134
|
+
lowerer.runtimeOptionalStorageLocals.has(runtimeOptionalRoot) &&
|
|
135
|
+
(local.boxed === true ||
|
|
136
|
+
lowerer.ctx.captureBySymbol.get(symbol) === local ||
|
|
137
|
+
runtimeOptionalRoot !== local);
|
|
138
|
+
if (arithmetic && !runtimeOptionalUseOf(expr)) {
|
|
139
|
+
return { kind: "varRef", localId: local.id, type: local.type, loc };
|
|
140
|
+
}
|
|
141
|
+
if (active || captured) {
|
|
142
|
+
const use = runtimeOptionalUseOf(expr);
|
|
143
|
+
if (use?.complex) {
|
|
144
|
+
lowerer.unsupported("SC1090", expr, "a logical or conditional receiver containing a runtime-optional capture");
|
|
145
|
+
}
|
|
146
|
+
if (use?.optional)
|
|
147
|
+
return { kind: "varRef", localId: local.id, type: local.type, loc };
|
|
148
|
+
if (use?.kind === "property")
|
|
149
|
+
return runtimeOptionalReceiverRead(lowerer, expr, local, use.access.name.text, loc);
|
|
150
|
+
if (use?.kind === "element") {
|
|
151
|
+
const key = runtimeOptionalElementKey(use.access.argumentExpression);
|
|
152
|
+
if (key === null) {
|
|
153
|
+
return varRef(local.id, local.type, loc);
|
|
154
|
+
}
|
|
155
|
+
return runtimeOptionalReceiverRead(lowerer, expr, local, key, loc);
|
|
156
|
+
}
|
|
157
|
+
if (use?.kind === "call") {
|
|
158
|
+
if (use.comma && !use.optional) {
|
|
159
|
+
lowerer.unsupported("SC1090", use.access, "a direct call through a comma-wrapped runtime-optional capture");
|
|
160
|
+
}
|
|
161
|
+
return runtimeOptionalReceiverRead(lowerer, expr, local, null, loc);
|
|
162
|
+
}
|
|
163
|
+
if (runtimeOptionalObjectWalkerArg(lowerer, expr)) {
|
|
164
|
+
const narrowed = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
165
|
+
if (local.type.kind === "union" && narrowed) {
|
|
166
|
+
const helper = narrowed.kind === "union"
|
|
167
|
+
? lowerer.narrowedRetagHelper(expr, local.type.unionId, narrowed.unionId, loc)
|
|
168
|
+
: !isUnitType(narrowed)
|
|
169
|
+
? lowerer.narrowedArmHelper(local.type.unionId, narrowed, loc)
|
|
170
|
+
: null;
|
|
171
|
+
if (helper) {
|
|
172
|
+
return lowerer.checkedNarrowCall(helper, varRef(local.id, local.type, loc), narrowed, loc);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return { kind: "varRef", localId: local.id, type: local.type, loc };
|
|
177
|
+
}
|
|
178
|
+
const narrowed = lowerer.maybeNarrow({ kind: "varRef", localId: local.id, type: local.type, loc }, expr);
|
|
179
|
+
if (narrowed.type.kind === "union" &&
|
|
180
|
+
lowerer.runtimeOptionalStorageLocals.has(runtimeOptionalRoot) &&
|
|
181
|
+
lowerer.mapTypeOf(lowerer.typeOf(expr))?.kind === "record") {
|
|
182
|
+
// A presence guard can be followed by a predicate strengthening
|
|
183
|
+
// the record's fields. Its refined shape is not a stored union
|
|
184
|
+
// arm: extract the original layout before reading a member.
|
|
185
|
+
const use = runtimeOptionalUseOf(expr);
|
|
186
|
+
if (use && !use.complex && !use.optional) {
|
|
187
|
+
if (use.kind === "property")
|
|
188
|
+
return runtimeOptionalReceiverRead(lowerer, expr, local, use.access.name.text, loc);
|
|
189
|
+
if (use.kind === "element") {
|
|
190
|
+
const key = runtimeOptionalElementKey(use.access.argumentExpression);
|
|
191
|
+
if (key !== null)
|
|
192
|
+
return runtimeOptionalReceiverRead(lowerer, expr, local, key, loc);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return narrowed;
|
|
197
|
+
}
|
|
198
|
+
// `import x = N.y` aliases resolve transparently through globalOf/
|
|
199
|
+
// fnSigOf below; their source-order guards live here (a no-op for
|
|
200
|
+
// every non-import= binding — see lower-namespaces.ts).
|
|
201
|
+
fenceEarlyAliasUse(lowerer, expr, expr);
|
|
202
|
+
const g = lowerer.globalOf(expr);
|
|
203
|
+
if (g) {
|
|
204
|
+
// A global typed by a class that never REGISTERED (its collection
|
|
205
|
+
// fenced): the initializing assignment never lowered, so the read
|
|
206
|
+
// can only observe garbage — and the emitter would name a struct
|
|
207
|
+
// that does not exist. The blocked-binding cascade names the use;
|
|
208
|
+
// without this the validator's registration check ICEs on the live
|
|
209
|
+
// reference (`@this {T}` inference — signature 07).
|
|
210
|
+
const unregistered = lowerer.unregisteredClassOf(g.type, new Set());
|
|
211
|
+
if (unregistered !== null) {
|
|
212
|
+
// The class's own rejection is the root cause the cascade names.
|
|
213
|
+
lowerer.flushDeferredClass(unregistered);
|
|
214
|
+
lowerer.pushDiag(blockedBindingUseDiag(expr.text, loc));
|
|
215
|
+
throw new PoisonError();
|
|
216
|
+
}
|
|
217
|
+
const ref = { kind: "varRef", localId: g.id, type: g.type, loc };
|
|
218
|
+
if (lowerer.isRuntimeOptionalArithmeticGlobal(g) && !runtimeOptionalUseOf(expr)) {
|
|
219
|
+
return ref;
|
|
220
|
+
}
|
|
221
|
+
const storageHasUndefined = g.type.kind === "union" && lowerer.armTag(g.type.unionId, UNDEFINED_T) >= 0;
|
|
222
|
+
if (lowerer.isRuntimeOptionalGlobal(g) || storageHasUndefined) {
|
|
223
|
+
// A checker-narrowed global receiver (`if (tags !== undefined)
|
|
224
|
+
// tags[tags.length] = ...`, or `a ? Object.keys(a) : ...`) is
|
|
225
|
+
// still stored as the runtime optional union. Extract the proven
|
|
226
|
+
// value arm before routing the member/element operation so dynamic
|
|
227
|
+
// keys and builtin record walkers do not see a union receiver.
|
|
228
|
+
const narrowed = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
229
|
+
const arithmeticUnion = g.type.kind === "union" &&
|
|
230
|
+
lowerer.unions.get(g.type.unionId)?.arms.length === 2 &&
|
|
231
|
+
lowerer.unions.get(g.type.unionId).arms.some((a) => a.kind === "f64") &&
|
|
232
|
+
lowerer.unions.get(g.type.unionId).arms.some((a) => a.kind === "string");
|
|
233
|
+
const symbol = lowerer.resolveValueSymbol(expr);
|
|
234
|
+
if (!arithmeticUnion &&
|
|
235
|
+
!(symbol !== null && lowerer.earlyReadVars.has(symbol)) &&
|
|
236
|
+
g.type.kind === "union" &&
|
|
237
|
+
narrowed &&
|
|
238
|
+
narrowed.kind !== "union" &&
|
|
239
|
+
!isUnitType(narrowed) &&
|
|
240
|
+
!(narrowed.kind === "record" &&
|
|
241
|
+
recordTextCodecClass(lowerer.shapes.get(narrowed.shapeId)) !== null) &&
|
|
242
|
+
narrowed.kind !== "f64" &&
|
|
243
|
+
narrowed.kind !== "string" &&
|
|
244
|
+
narrowed.kind !== "bool" &&
|
|
245
|
+
lowerer.armTag(g.type.unionId, narrowed) >= 0) {
|
|
246
|
+
const helper = lowerer.narrowedArmHelper(g.type.unionId, narrowed, loc);
|
|
247
|
+
if (helper)
|
|
248
|
+
return lowerer.checkedNarrowCall(helper, ref, narrowed, loc);
|
|
249
|
+
}
|
|
250
|
+
const use = runtimeOptionalUseOf(expr);
|
|
251
|
+
// The enclosing logical/conditional expression consumes the union
|
|
252
|
+
// before any member operation runs (`(value ?? fallback).length`).
|
|
253
|
+
// Keep the tagged value intact and let that lazy expression decide
|
|
254
|
+
// its branch; extracting here would evaluate or throw too early.
|
|
255
|
+
if (use?.complex)
|
|
256
|
+
return ref;
|
|
257
|
+
if (use?.optional)
|
|
258
|
+
return ref;
|
|
259
|
+
if (use?.kind === "property")
|
|
260
|
+
return runtimeOptionalReceiverRead(lowerer, expr, g, use.access.name.text, loc);
|
|
261
|
+
if (use?.kind === "element") {
|
|
262
|
+
const key = runtimeOptionalElementKey(use.access.argumentExpression);
|
|
263
|
+
if (key === null)
|
|
264
|
+
lowerer.unsupported("SC1090", use.access, "a computed read from a runtime-optional global (use a literal key)");
|
|
265
|
+
return runtimeOptionalReceiverRead(lowerer, expr, g, key, loc);
|
|
266
|
+
}
|
|
267
|
+
if (use?.kind === "call")
|
|
268
|
+
return runtimeOptionalReceiverRead(lowerer, expr, g, null, loc);
|
|
269
|
+
return ref;
|
|
270
|
+
}
|
|
271
|
+
return lowerer.maybeNarrow(ref, expr);
|
|
272
|
+
}
|
|
273
|
+
// `undefined` — tsc's intrinsic global (a local shadowing the name
|
|
274
|
+
// resolved above): a unit literal, exactly like the `null` keyword.
|
|
275
|
+
if (expr.text === "undefined" && lowerer.typeOf(expr).flags & ts.TypeFlags.Undefined) {
|
|
276
|
+
return { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc };
|
|
277
|
+
}
|
|
278
|
+
// `__dirname` / `__filename` — the CommonJS module globals: per-
|
|
279
|
+
// MODULE compile-time constants, the containing file's location
|
|
280
|
+
// (Node's exact values when the same tree runs in place; WASI uses
|
|
281
|
+
// the equivalent guest-visible path; locals shadowing the names
|
|
282
|
+
// resolved above), the same strings as import.meta.dirname/filename.
|
|
283
|
+
// In a JavaScript ES module Node never defines them, so the read throws
|
|
284
|
+
// Node's catchable ReferenceError. A .ts/.tsx file keeps them even when
|
|
285
|
+
// Node's strip-types rule would load it as ESM: TypeScript projects are
|
|
286
|
+
// commonly built as CommonJS bundles (tsc, esbuild, tsx) where these
|
|
287
|
+
// globals exist, and @types/node declares them for every file.
|
|
288
|
+
if ((expr.text === "__dirname" || expr.text === "__filename") &&
|
|
289
|
+
lowerer.isStdlibGlobal(expr, expr.text)) {
|
|
290
|
+
const sf = ts.getSourceFileOfNode(expr);
|
|
291
|
+
if (isNodeEsmFile(sf, lowerer.program) && !/\.tsx?$/.test(sf.fileName)) {
|
|
292
|
+
return {
|
|
293
|
+
kind: "libCall",
|
|
294
|
+
fn: "global.undefRead",
|
|
295
|
+
args: [{ kind: "strLit", value: expr.text, type: STRING, loc }],
|
|
296
|
+
type: STRING,
|
|
297
|
+
loc,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
// The WASI runner mounts the host cwd at guest `/` and the host temp
|
|
301
|
+
// directory at `/tmp`. Bake the matching GUEST spelling so resource
|
|
302
|
+
// lookups relative to these CommonJS globals stay inside the exposed
|
|
303
|
+
// capability instead of naming an unreachable host-absolute path.
|
|
304
|
+
const fileName = moduleFileName(lowerer, sf);
|
|
305
|
+
const value = expr.text === "__dirname"
|
|
306
|
+
? lowerer.targetPlatform === "wasi"
|
|
307
|
+
? posix.dirname(fileName)
|
|
308
|
+
: dirname(fileName)
|
|
309
|
+
: fileName;
|
|
310
|
+
return { kind: "strLit", value, type: STRING, loc };
|
|
311
|
+
}
|
|
312
|
+
const sig = lowerer.fnSigOf(expr);
|
|
313
|
+
if (sig && lowerer.isTopLevelFnSymbol(expr)) {
|
|
314
|
+
// A declared function used as a value: a zero-capture closure. The
|
|
315
|
+
// backend interns one per function so `f === f` holds (JS identity).
|
|
316
|
+
// The value's type is the completed ABI signature; optional/default
|
|
317
|
+
// slots and typed rest arrays pass the value fence first.
|
|
318
|
+
lowerer.noteEdge(sig.name);
|
|
319
|
+
// dynRest slots stay out of the VALUE type's param list (fn.length
|
|
320
|
+
// semantics); the rest marker carries the trailing dyn-array ABI.
|
|
321
|
+
const funcType = funcTypeFromParamShapes(sig.params, sig.returnType);
|
|
322
|
+
lowerer.requireExactArityValue(expr, expr, sig.params, funcType);
|
|
323
|
+
return { kind: "closure", fnName: sig.name, captures: [], type: funcType, loc };
|
|
324
|
+
}
|
|
325
|
+
{
|
|
326
|
+
// A generic function as a VALUE: monomorphized by flow — the
|
|
327
|
+
// reference's pinned concrete signature (contextual type or an
|
|
328
|
+
// instantiation expression) names the instance; unpinned
|
|
329
|
+
// references fence inside (lowerGenericFnValue).
|
|
330
|
+
const gfn = lowerer.genericFnOf(expr);
|
|
331
|
+
if (gfn)
|
|
332
|
+
return lowerer.lowerGenericFnValue(expr, gfn);
|
|
333
|
+
}
|
|
334
|
+
// A CJS export-table ACCESSOR read (`tmpdir.path`, or a destructured
|
|
335
|
+
// binding aliasing one): the getter is a real function of module
|
|
336
|
+
// scope — its body reads module globals, so it lifts like a lambda
|
|
337
|
+
// (interned per declaration) and every read is a call. Node runs the
|
|
338
|
+
// getter per read; so does this.
|
|
339
|
+
{
|
|
340
|
+
const acc = cjsExportAccessorRead(lowerer, expr);
|
|
341
|
+
if (acc)
|
|
342
|
+
return acc;
|
|
343
|
+
}
|
|
344
|
+
// A binding destructured from a baked constants object
|
|
345
|
+
// (http2.constants / crypto.constants): the literal — the
|
|
346
|
+
// declaration emitted nothing (builtinConstantsDestructureDecl).
|
|
347
|
+
{
|
|
348
|
+
const h2c = lowerer.builtinConstantBindingOf(expr);
|
|
349
|
+
if (h2c)
|
|
350
|
+
return h2c;
|
|
351
|
+
}
|
|
352
|
+
// Builtin-module import bindings: constants (path.sep, os.EOL) read
|
|
353
|
+
// as interned string literals; functions have no closure
|
|
354
|
+
// representation (they lower to libCall at call sites only); members
|
|
355
|
+
// with no lowering at all fence with the module-qualified name.
|
|
356
|
+
{
|
|
357
|
+
const member = threadsImportOf(lowerer.program, expr);
|
|
358
|
+
// scriptc delivers published graphs by reference.
|
|
359
|
+
if (member === "sharesPublishedGraphs")
|
|
360
|
+
return { kind: "boolLit", value: true, type: BOOL, loc };
|
|
361
|
+
if (member === "publish")
|
|
362
|
+
lowerer.noLowering("publish (@scriptc/threads) as a value", expr, "call publish(value) directly");
|
|
363
|
+
if (experimentalImportOf(lowerer.program, expr) === "LifetimeRegion")
|
|
364
|
+
lowerer.noLowering("LifetimeRegion (@scriptc/experimental) as a value", expr, "construct regions with new LifetimeRegion()");
|
|
365
|
+
if (experimentalImportOf(lowerer.program, expr) === "InternTable")
|
|
366
|
+
lowerer.noLowering("InternTable (@scriptc/experimental) as a value", expr, 'open tables with new InternTable("name")');
|
|
367
|
+
if (experimentalImportOf(lowerer.program, expr) === "ThreadSlots")
|
|
368
|
+
lowerer.noLowering("ThreadSlots (@scriptc/experimental) as a value", expr, 'open slots with new ThreadSlots("name")');
|
|
369
|
+
}
|
|
370
|
+
{
|
|
371
|
+
const bi = lowerer.builtinImportOf(expr);
|
|
372
|
+
if (bi) {
|
|
373
|
+
if (bi.module === "worker_threads") {
|
|
374
|
+
const value = lowerWorkerMetadata(bi.member, loc);
|
|
375
|
+
if (value)
|
|
376
|
+
return value;
|
|
377
|
+
}
|
|
378
|
+
// A named import of defaultMaxListeners reads the ES module
|
|
379
|
+
// namespace's copy. A CommonJS destructured or member binding holds
|
|
380
|
+
// the value read when its declaration ran, which these bindings do
|
|
381
|
+
// not store.
|
|
382
|
+
if (bi.module === "events" && bi.member === "defaultMaxListeners") {
|
|
383
|
+
if (esmImportBindingKind(lowerer, expr) === "named") {
|
|
384
|
+
return { kind: "libCall", fn: "emitter.esmDefaultMax", args: [], type: F64, loc };
|
|
385
|
+
}
|
|
386
|
+
lowerer.noLowering("events.defaultMaxListeners through a CommonJS destructured or member binding", expr, "read require('events').defaultMaxListeners or EventEmitter.defaultMaxListeners where the value is needed");
|
|
387
|
+
}
|
|
388
|
+
const c = builtinModuleConstOf(lowerer, bi.module, bi.member);
|
|
389
|
+
if (c !== undefined)
|
|
390
|
+
return builtinConstLit(c, loc);
|
|
391
|
+
// module.builtinModules — the baked Node v24 list, a fresh
|
|
392
|
+
// string[] per read.
|
|
393
|
+
if (bi.module === "module" && bi.member === "builtinModules") {
|
|
394
|
+
return builtinModulesArrayLit(loc);
|
|
395
|
+
}
|
|
396
|
+
if (bi.module === "http" && bi.member === "METHODS") {
|
|
397
|
+
return { kind: "libCall", fn: "http.methods", args: [], type: arrayOf(STRING), loc };
|
|
398
|
+
}
|
|
399
|
+
if ((bi.module === "http" || bi.module === "https") && bi.member === "globalAgent") {
|
|
400
|
+
return {
|
|
401
|
+
kind: "libCall",
|
|
402
|
+
fn: "http.globalAgent",
|
|
403
|
+
args: [{ kind: "boolLit", value: bi.module === "https", type: BOOL, loc }],
|
|
404
|
+
type: DYN,
|
|
405
|
+
loc,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
if (bi.module === "http" && bi.member === "STATUS_CODES") {
|
|
409
|
+
return { kind: "libCall", fn: "http.statusCodes", args: [], type: DYN, loc };
|
|
410
|
+
}
|
|
411
|
+
if (bi.module === "os" && bi.member === "constants") {
|
|
412
|
+
return { kind: "libCall", fn: "os.constants", args: [], type: DYN, loc };
|
|
413
|
+
}
|
|
414
|
+
if (bi.module === "fs" && bi.member === "constants")
|
|
415
|
+
return { kind: "libCall", fn: "fs.constants", args: [], type: DYN, loc };
|
|
416
|
+
// `import { O_RDONLY } from "constants"`: the member of the frozen
|
|
417
|
+
// module object.
|
|
418
|
+
if (bi.module === "constants") {
|
|
419
|
+
return {
|
|
420
|
+
kind: "dynKeyGet",
|
|
421
|
+
value: builtinConstantsObject(lowerer, loc),
|
|
422
|
+
key: { kind: "strLit", value: bi.member, type: STRING, loc },
|
|
423
|
+
type: DYN,
|
|
424
|
+
loc,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
// tls.rootCertificates: a runtime-valued module constant (the
|
|
428
|
+
// cached bundled-CA array) — the one member read that lowers
|
|
429
|
+
// to a libCall instead of a baked literal.
|
|
430
|
+
{
|
|
431
|
+
const roots = lowerTlsRootCertificates(lowerer, bi, loc);
|
|
432
|
+
if (roots)
|
|
433
|
+
return roots;
|
|
434
|
+
}
|
|
435
|
+
{
|
|
436
|
+
const callable = lowerer.lowerBuiltinCallableValue(bi, loc);
|
|
437
|
+
if (callable)
|
|
438
|
+
return callable;
|
|
439
|
+
}
|
|
440
|
+
// JavaScript sources: an otherwise unsupported builtin VALUE is
|
|
441
|
+
// the same identity-token story as stdlib globals above (the
|
|
442
|
+
// harness adds worker_threads.Worker to its identity Set).
|
|
443
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
444
|
+
// EventEmitter and the stream classes are the runtime's untyped
|
|
445
|
+
// constructors, so constructor functions can inherit from them.
|
|
446
|
+
const classKind = builtinMemberClassKind(bi.module, bi.member);
|
|
447
|
+
if (classKind !== null)
|
|
448
|
+
return builtinClassValue(classKind, loc);
|
|
449
|
+
// A function member is a function value that fences when called.
|
|
450
|
+
if (builtinModuleFnOf(lowerer, bi.module, bi.member))
|
|
451
|
+
return builtinFunctionFenceValue(lowerer, bi, expr, loc);
|
|
452
|
+
return {
|
|
453
|
+
kind: "strLit",
|
|
454
|
+
// node:stream/web exports the web stream globals themselves:
|
|
455
|
+
// the same identity token as the global spelling.
|
|
456
|
+
value: bi.module === "stream/web"
|
|
457
|
+
? `[builtin ${bi.member}]`
|
|
458
|
+
: `[builtin ${bi.module}.${bi.member}]`,
|
|
459
|
+
type: STRING,
|
|
460
|
+
loc,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
if (builtinModuleFnOf(lowerer, bi.module, bi.member)) {
|
|
464
|
+
lowerer.unsupported("SC1090", expr, `library functions as values (call '${expr.text}' directly)`);
|
|
465
|
+
}
|
|
466
|
+
lowerer.noLowering(`${bi.module}.${bi.member}`, expr, builtinFenceHintOf(bi.module, bi.member), lowerer.resolveValueSymbol(expr));
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
// A builtin namespace import used as a bare VALUE (`const f = fs`):
|
|
470
|
+
// the namespace object has no representation — members lower at
|
|
471
|
+
// their access sites only. The CommonJS namespace binding
|
|
472
|
+
// (`const lib = require("./lib.js")`) gets the same fence.
|
|
473
|
+
const builtinNamespace = lowerer.builtinNamespaceModuleOf(expr);
|
|
474
|
+
if (builtinNamespace === "constants")
|
|
475
|
+
return builtinConstantsObject(lowerer, loc);
|
|
476
|
+
if (builtinNamespace !== null) {
|
|
477
|
+
const type = { kind: "moduleNs", moduleId: `builtin:${builtinNamespace}` };
|
|
478
|
+
return { kind: "moduleNsRef", moduleId: type.moduleId, type, loc };
|
|
479
|
+
}
|
|
480
|
+
if (lowerer.cjsLocalModuleBindingOf(expr)) {
|
|
481
|
+
lowerer.unsupported("SC1090", expr, `module namespace objects as values (access '${expr.text}' members directly)`);
|
|
482
|
+
}
|
|
483
|
+
if (lowerer.stdlibGlobalFnOf(expr)) {
|
|
484
|
+
lowerer.unsupported("SC1090", expr, `library functions as values (call '${expr.text}' directly)`);
|
|
485
|
+
}
|
|
486
|
+
// A declaration-only npm binding has no compiled runtime value.
|
|
487
|
+
{
|
|
488
|
+
const pkg = lowerer.npmPackageOfSymbol(lowerer.resolveValueSymbol(expr) ?? undefined);
|
|
489
|
+
if (pkg) {
|
|
490
|
+
lowerer.pushDiag(unsupportedPackageValueDiag(pkg, loc));
|
|
491
|
+
throw new PoisonError();
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
// Bindings imported from an UNSUPPORTED builtin module: coverage
|
|
495
|
+
// analyzes past import fences, so uses of `spawn` from
|
|
496
|
+
// child_process reach lowering — the use site reports the same
|
|
497
|
+
// "the '<module>' module" diagnostic as the import line, and the
|
|
498
|
+
// report groups them into one blocker. (Builds never get here: the
|
|
499
|
+
// import already failed preflight.)
|
|
500
|
+
{
|
|
501
|
+
const spec = lowerer.fencedBuiltinImportOf(expr);
|
|
502
|
+
if (spec !== null) {
|
|
503
|
+
lowerer.pushDiag(unsupportedDiag("SC1010", loc, unsupportedModuleFeatureOf(spec)));
|
|
504
|
+
throw new PoisonError();
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
// The globals `Infinity` and `NaN` (lib-declared, provenance-checked
|
|
508
|
+
// like every stdlib name): non-finite numLits — `-Infinity` arrives
|
|
509
|
+
// through the unary-minus literal fold. Arithmetic, comparisons, and
|
|
510
|
+
// formatting are IEEE-exact in C (String(Infinity) is "Infinity" and
|
|
511
|
+
// String(NaN) is "NaN" in the number formatter; `NaN !== NaN` holds
|
|
512
|
+
// because f64 compares are IEEE compares).
|
|
513
|
+
if (expr.text === "Infinity" || expr.text === "NaN") {
|
|
514
|
+
const sym = lowerer.checker.getSymbolAtLocation(expr);
|
|
515
|
+
if (lowerer.isStdlibSymbol(sym)) {
|
|
516
|
+
return { kind: "numLit", value: expr.text === "NaN" ? NaN : Infinity, type: F64, loc };
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
// The primitive constructors as VALUES (`const f = String`, an
|
|
520
|
+
// option table's `type: Boolean` field, `opt.type === Number`): the
|
|
521
|
+
// interned coercion closure — one synthesized module function per
|
|
522
|
+
// constructor per program, so every reference is the SAME zero-
|
|
523
|
+
// capture closure and `===` is JS identity (the type mapping in
|
|
524
|
+
// type-mapper.ts pins the one concrete signature `(value: string) =>
|
|
525
|
+
// primitive`; direct calls `String(x)` never reach here — the call
|
|
526
|
+
// lowering intercepts them with the wider static coercions).
|
|
527
|
+
const jsPrimitiveCtorSelector = isJsSourceFile(ts.getSourceFileOfNode(expr));
|
|
528
|
+
const primitiveName = stdlibGlobalNameOf(lowerer, expr);
|
|
529
|
+
if (primitiveName === "String" ||
|
|
530
|
+
primitiveName === "Number" ||
|
|
531
|
+
primitiveName === "Boolean" ||
|
|
532
|
+
primitiveName === "BigInt") {
|
|
533
|
+
return primitiveCtorClosure(lowerer, primitiveName, loc, jsPrimitiveCtorSelector);
|
|
534
|
+
}
|
|
535
|
+
if (lowerer.isStdlibGlobal(expr, "ArrayBuffer"))
|
|
536
|
+
return { kind: "libCall", fn: "arrayBuffer.constructor", args: [], type: DYN, loc };
|
|
537
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr)) && lowerer.isStdlibGlobal(expr, "Array"))
|
|
538
|
+
return { kind: "libCall", fn: "dyn.arrayConstructor", args: [], type: DYN, loc };
|
|
539
|
+
if (Object.values(BYTES_ELEMENT_NAME).includes(expr.text) &&
|
|
540
|
+
lowerer.isStdlibSymbol(lowerer.checker.getSymbolAtLocation(expr))) {
|
|
541
|
+
return {
|
|
542
|
+
kind: "libCall",
|
|
543
|
+
fn: "bytes.constructor",
|
|
544
|
+
args: [{ kind: "strLit", value: expr.text, type: STRING, loc }],
|
|
545
|
+
type: DYN,
|
|
546
|
+
loc,
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
if ((expr.text === "encodeURIComponent" ||
|
|
550
|
+
expr.text === "encodeURI" ||
|
|
551
|
+
expr.text === "decodeURIComponent" ||
|
|
552
|
+
expr.text === "decodeURI") &&
|
|
553
|
+
lowerer.isStdlibGlobal(expr, expr.text)) {
|
|
554
|
+
const name = `%builtin.${expr.text}`;
|
|
555
|
+
const type = funcOf([DYN], STRING);
|
|
556
|
+
if (!lowerer.liftedFns.some((fn) => fn.name === name)) {
|
|
557
|
+
const value = {
|
|
558
|
+
kind: "libCall",
|
|
559
|
+
fn: "dyn.toStringCoerce",
|
|
560
|
+
args: [varRef("value", DYN, loc)],
|
|
561
|
+
type: STRING,
|
|
562
|
+
loc,
|
|
563
|
+
};
|
|
564
|
+
const fn = expr.text === "encodeURIComponent"
|
|
565
|
+
? "str.encodeUriComponent"
|
|
566
|
+
: expr.text === "encodeURI"
|
|
567
|
+
? "str.encodeUri"
|
|
568
|
+
: expr.text === "decodeURI"
|
|
569
|
+
? "str.decodeUri"
|
|
570
|
+
: "str.decodeUriComponent";
|
|
571
|
+
lowerer.liftedFns.push({
|
|
572
|
+
name,
|
|
573
|
+
params: [{ localId: "value", name: "value", type: DYN }],
|
|
574
|
+
locals: [{ id: "value", name: "value", type: DYN, mutable: false }],
|
|
575
|
+
returnType: STRING,
|
|
576
|
+
body: [
|
|
577
|
+
{
|
|
578
|
+
kind: "return",
|
|
579
|
+
value: { kind: "libCall", fn, args: [value], type: STRING, loc },
|
|
580
|
+
loc,
|
|
581
|
+
},
|
|
582
|
+
],
|
|
583
|
+
loc,
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
return { kind: "closure", fnName: name, captures: [], type, loc };
|
|
587
|
+
}
|
|
588
|
+
if (lowerer.isStdlibGlobal(expr, "crypto"))
|
|
589
|
+
return { kind: "libCall", fn: "crypto.native", args: [], type: DYN, loc };
|
|
590
|
+
const nativeAlias = stdlibGlobalNameOf(lowerer, expr);
|
|
591
|
+
if (nativeAlias === "Buffer" && expr.text !== "Buffer") {
|
|
592
|
+
return { kind: "strLit", value: "[builtin Buffer]", type: STRING, loc };
|
|
593
|
+
}
|
|
594
|
+
if (lowerer.isStdlibGlobal(expr, "fetch")) {
|
|
595
|
+
return { kind: "libCall", fn: "fetch.function", args: [], type: DYN, loc };
|
|
596
|
+
}
|
|
597
|
+
// The lib fence's IDENTIFIER chokepoint: the real standard library
|
|
598
|
+
// resolves names the old minimal ambient world never declared
|
|
599
|
+
// (Symbol, Reflect, Infinity, Date, ...) — and the adopted
|
|
600
|
+
// @types/node resolves its whole global surface (Buffer, fetch,
|
|
601
|
+
// setInterval, URL, ...). Reaching one that no lowering above
|
|
602
|
+
// claimed is SC2020, never an ICE — EXCEPT in JavaScript sources,
|
|
603
|
+
// where a stdlib global taken as a VALUE (never called through this
|
|
604
|
+
// path — call sites lower earlier) becomes an opaque IDENTITY TOKEN:
|
|
605
|
+
// an interned string naming the global. Identity flows (the
|
|
606
|
+
// harness's knownGlobals Set, === comparisons) are exact — one
|
|
607
|
+
// global, one token; what a token cannot do (be called, answer
|
|
608
|
+
// typeof "function") meets per-site fences/divergences, and
|
|
609
|
+
// SEMANTICS.md documents the stance.
|
|
610
|
+
if (stdlibGlobalNameOf(lowerer, expr) === "globalThis") {
|
|
611
|
+
return lowerGlobalValue(lowerer, expr);
|
|
612
|
+
}
|
|
613
|
+
{
|
|
614
|
+
const sym = lowerer.checker.getSymbolAtLocation(expr);
|
|
615
|
+
// The temporal global is typed (TS 7's lib slice) but Node 24 does
|
|
616
|
+
// not define it: the read throws Node's ReferenceError.
|
|
617
|
+
if (isTemporalGlobalRoot(lowerer, expr, sym)) {
|
|
618
|
+
const t = ambientUndefReadType(lowerer, expr) ?? contextualUndefReadType(lowerer, expr) ?? F64;
|
|
619
|
+
return nsUndefRead(lowerer, expr.text, expr, t);
|
|
620
|
+
}
|
|
621
|
+
if (lowerer.isStdlibSymbol(sym) || expr.text === "globalThis") {
|
|
622
|
+
const canonical = stdlibGlobalNameOf(lowerer, expr) ?? expr.text;
|
|
623
|
+
// Builtin constructors have real function values in both source
|
|
624
|
+
// languages (TypeScript reads them as dynamic values).
|
|
625
|
+
const builtinValue = builtinGlobalValueAt(lowerer, expr, canonical, loc, isJsSourceFile(ts.getSourceFileOfNode(expr)));
|
|
626
|
+
if (builtinValue !== null)
|
|
627
|
+
return builtinValue;
|
|
628
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
629
|
+
return { kind: "strLit", value: `[builtin ${canonical}]`, type: STRING, loc };
|
|
630
|
+
}
|
|
631
|
+
// The families with a WHY: each hint states what makes the
|
|
632
|
+
// surface genuinely non-static (or what to use instead).
|
|
633
|
+
const globalHints = {
|
|
634
|
+
Proxy: "Proxy constructor values have no native lowering; use a direct new Proxy with checked-native plain objects",
|
|
635
|
+
Reflect: "reflective property access has no static lowering — read and call members directly",
|
|
636
|
+
Intl: 'native Intl supports default Unicode grapheme segmentation and the composed new Intl.NumberFormat("en-US").format(x); locale negotiation and other ICU-backed operations remain unsupported',
|
|
637
|
+
SharedArrayBuffer: "use direct new SharedArrayBuffer(length) for fixed shared storage",
|
|
638
|
+
ArrayBuffer: "ArrayBuffer constructor values have no native lowering; use new ArrayBuffer(length) for fixed-length shared storage",
|
|
639
|
+
WeakRef: "deref()-after-collect exposes GC timing — genuinely dynamic; hold a strong reference instead",
|
|
640
|
+
FinalizationRegistry: "finalization callbacks expose GC timing — genuinely dynamic; release resources explicitly instead",
|
|
641
|
+
eval: "runtime code evaluation cannot be compiled ahead of time",
|
|
642
|
+
};
|
|
643
|
+
lowerer.noLowering(expr.text, expr, globalHints[expr.text], sym ?? undefined);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
// An ambient global nothing defines compiles to exactly what Node does
|
|
647
|
+
// at the access: the catchable ReferenceError "<name> is not defined".
|
|
648
|
+
// Stdlib/@types/node ambients never reach here (their chokepoint
|
|
649
|
+
// is above); only user-file declares do.
|
|
650
|
+
{
|
|
651
|
+
const sym = lowerer.resolveValueSymbol(expr);
|
|
652
|
+
const decl = sym ? sym.declarations[0] : undefined;
|
|
653
|
+
if (decl !== undefined &&
|
|
654
|
+
ts.isVariableDeclaration(decl) &&
|
|
655
|
+
decl.initializer === undefined &&
|
|
656
|
+
ts.getCombinedModifierFlags(decl) & ts.ModifierFlags.Ambient) {
|
|
657
|
+
const declared = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
658
|
+
if (declared && declared.kind !== "void") {
|
|
659
|
+
return {
|
|
660
|
+
kind: "libCall",
|
|
661
|
+
fn: "global.undefRead",
|
|
662
|
+
args: [{ kind: "strLit", value: expr.text, type: STRING, loc }],
|
|
663
|
+
type: declared,
|
|
664
|
+
loc,
|
|
665
|
+
};
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
// An ambient `declare function` nothing defines, taken as a VALUE
|
|
670
|
+
// (call sites lower earlier, in lowerCall): the same story as the
|
|
671
|
+
// ambient `declare const` above — Node erases the declaration and
|
|
672
|
+
// the read throws the catchable ReferenceError at the access.
|
|
673
|
+
{
|
|
674
|
+
if (ambientUndefinedFnSymbolOf(lowerer, expr)) {
|
|
675
|
+
const t = ambientUndefReadType(lowerer, expr);
|
|
676
|
+
if (t)
|
|
677
|
+
return nsUndefRead(lowerer, expr.text, expr, t);
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
// A read of a TRAP binding — a declaration whose own initializer
|
|
681
|
+
// provably threw (module init unwound there), so this reference can
|
|
682
|
+
// never execute: any lowering is sound, and the trap keeps the
|
|
683
|
+
// shape honest. Typed by the use site when it maps, the F64 dummy
|
|
684
|
+
// otherwise (never observed — never even reached).
|
|
685
|
+
{
|
|
686
|
+
const sym = lowerer.resolveValueSymbol(expr);
|
|
687
|
+
if (sym !== null && lowerer.trapBindings.has(sym)) {
|
|
688
|
+
const t = ambientUndefReadType(lowerer, expr) ?? contextualUndefReadType(lowerer, expr) ?? F64;
|
|
689
|
+
return nsUndefRead(lowerer, expr.text, expr, t);
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
// A program CLASS NAME as a value: the classRef over the class's
|
|
693
|
+
// immortal class object (member accesses and construction never
|
|
694
|
+
// reach here — their hooks claim the property/new forms first).
|
|
695
|
+
{
|
|
696
|
+
const sym = lowerer.resolveValueSymbol(expr);
|
|
697
|
+
const classInfo = sym ? lowerer.classBySymbol.get(sym) : undefined;
|
|
698
|
+
// A GENERIC class name whose CONTEXTUAL type pins one instantiation
|
|
699
|
+
// (`const B: new (v: string) => Counter<string> = Counter`): the
|
|
700
|
+
// value is that instantiation's class object — the generic-fn
|
|
701
|
+
// pinning rule on the static side. Unpinned references fall
|
|
702
|
+
// through to classValueRef's family fence.
|
|
703
|
+
if (classInfo?.generic) {
|
|
704
|
+
const ctxT = lowerer.checker.getContextualType(expr);
|
|
705
|
+
const mapped = ctxT ? lowerer.mapTypeOf(ctxT) : null;
|
|
706
|
+
const instInfo = mapped?.kind === "classval" ? lowerer.classes.get(mapped.className) : undefined;
|
|
707
|
+
if (instInfo && instInfo.genericInstance?.family === classInfo) {
|
|
708
|
+
return lowerer.classValueRef(instInfo, expr);
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
if (classInfo) {
|
|
712
|
+
// A decorated name a replacing decorator can REBIND: the value
|
|
713
|
+
// is the decoration result — the mutable classval global %init
|
|
714
|
+
// assigned at the class statement (TC39's name binding), never
|
|
715
|
+
// the declaration's own class object.
|
|
716
|
+
const decoratedGlobal = classInfo.classDecorators?.valueGlobalId;
|
|
717
|
+
if (decoratedGlobal !== undefined) {
|
|
718
|
+
return {
|
|
719
|
+
kind: "varRef",
|
|
720
|
+
localId: decoratedGlobal,
|
|
721
|
+
type: { kind: "classval", className: classInfo.def.name },
|
|
722
|
+
loc,
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
return lowerer.classValueRef(classInfo, expr);
|
|
726
|
+
}
|
|
727
|
+
// The enum OBJECT as a value (member reads never reach here — the
|
|
728
|
+
// access hooks fold them): iteration, storage, reverse lookups
|
|
729
|
+
// through variables all land on this pointed fence.
|
|
730
|
+
if (sym)
|
|
731
|
+
fenceEnumObjectValue(lowerer, expr, sym);
|
|
732
|
+
// A MIXIN function as a first-class value: no runtime function
|
|
733
|
+
// exists — calls instantiate a class per call site
|
|
734
|
+
// (lower-mixins.ts). Generic mixins took the generic-fn value
|
|
735
|
+
// fence above; this names the non-generic spelling.
|
|
736
|
+
if (mixinFnOfCallee(lowerer, expr)) {
|
|
737
|
+
lowerer.unsupported("SC1090", expr, `the mixin function '${expr.text}' as a value (mixin calls compile per call site — call it directly)`);
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
// A NAMESPACE object as a first-class value: members lower at their
|
|
741
|
+
// qualified access sites; the object itself has no runtime
|
|
742
|
+
// representation (ambient namespaces compile to Node's
|
|
743
|
+
// ReferenceError instead — the object never exists at runtime).
|
|
744
|
+
{
|
|
745
|
+
const moduleNs = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
746
|
+
if (moduleNs?.kind === "moduleNs") {
|
|
747
|
+
return { kind: "moduleNsRef", moduleId: moduleNs.moduleId, type: moduleNs, loc };
|
|
748
|
+
}
|
|
749
|
+
const builtinNs = lowerer.builtinNamespaceModuleOf(expr);
|
|
750
|
+
if (builtinNs === "constants")
|
|
751
|
+
return builtinConstantsObject(lowerer, loc);
|
|
752
|
+
if (builtinNs !== null) {
|
|
753
|
+
const type = { kind: "moduleNs", moduleId: `builtin:${builtinNs}` };
|
|
754
|
+
return { kind: "moduleNsRef", moduleId: type.moduleId, type, loc };
|
|
755
|
+
}
|
|
756
|
+
const ns = lowerNsIdentifierValue(lowerer, expr);
|
|
757
|
+
if (ns)
|
|
758
|
+
return ns;
|
|
759
|
+
}
|
|
760
|
+
if (isNavigatorGlobal(lowerer, expr)) {
|
|
761
|
+
refuseNavigator(lowerer, expr, "the navigator object as a value", lowerer.checker.getSymbolAtLocation(expr));
|
|
762
|
+
}
|
|
763
|
+
// An import of a CommonJS member export whose value is a binding of the
|
|
764
|
+
// exporting module (`module.exports = Client; module.exports.StatsD =
|
|
765
|
+
// Client`): the member holds that binding's value.
|
|
766
|
+
const memberAlias = cjsMemberAliasValueOf(lowerer, expr);
|
|
767
|
+
if (memberAlias !== null)
|
|
768
|
+
return lowerer.lowerExpr(memberAlias);
|
|
769
|
+
// Preflight guarantees no unresolved identifiers; anything else here
|
|
770
|
+
// is a blocked declaration's binding (the SC2004 cascade) or a
|
|
771
|
+
// binding form we don't model yet.
|
|
772
|
+
lowerer.rejectUnresolved(expr, `the reference to '${expr.text}' (a binding form with no lowering)`);
|
|
773
|
+
}
|
|
774
|
+
function moduleFileName(lowerer, sf) {
|
|
775
|
+
return lowerer.targetPlatform === "wasi"
|
|
776
|
+
? (wasiGuestPath(sf.fileName) ?? sf.fileName.replace(/\\/g, "/"))
|
|
777
|
+
: sf.fileName;
|
|
778
|
+
}
|
|
779
|
+
/** Object.keys/Object.entries require an object receiver, but their first
|
|
780
|
+
* argument is not syntactically a member receiver. Recognize that one
|
|
781
|
+
* standard-library position so a runtime-optional loop element can be
|
|
782
|
+
* checked against the checker-narrowed record arm before builtin lowering. */
|
|
783
|
+
function runtimeOptionalObjectWalkerArg(lowerer, expr) {
|
|
784
|
+
let arg = expr;
|
|
785
|
+
while ((ts.isParenthesizedExpression(arg.parent) ||
|
|
786
|
+
ts.isAssertionExpression(arg.parent) ||
|
|
787
|
+
ts.isSatisfiesExpression(arg.parent) ||
|
|
788
|
+
ts.isNonNullExpression(arg.parent)) &&
|
|
789
|
+
arg.parent.expression === arg) {
|
|
790
|
+
arg = arg.parent;
|
|
791
|
+
}
|
|
792
|
+
const call = arg.parent;
|
|
793
|
+
if (!ts.isCallExpression(call) ||
|
|
794
|
+
call.arguments.nodes[0] !== arg ||
|
|
795
|
+
!ts.isPropertyAccessExpression(call.expression))
|
|
796
|
+
return false;
|
|
797
|
+
const access = call.expression;
|
|
798
|
+
return ((access.name.text === "keys" || access.name.text === "entries") &&
|
|
799
|
+
lowerer.isStdlibMember(access));
|
|
800
|
+
}
|
|
801
|
+
/** A read that resolves to a CJS export-table ACCESSOR property
|
|
802
|
+
* (`module.exports = { get path() {...}, set path(v) {...} }`): the
|
|
803
|
+
* getter lifts as a module-level function (module globals need no
|
|
804
|
+
* captures) — interned per declaration so every read site calls ONE
|
|
805
|
+
* function — and the read IS the call, Node's per-read evaluation
|
|
806
|
+
* exactly. Null when the identifier doesn't resolve to such a property
|
|
807
|
+
* (or it has no getter: a setter-only read answers undefined in Node —
|
|
808
|
+
* rare enough to keep fenced). */
|
|
809
|
+
function cjsExportAccessorRead(lowerer, ident) {
|
|
810
|
+
const symbol = lowerer.resolveValueSymbol(ident);
|
|
811
|
+
const getter = symbol ? symbol.declarations.find(ts.isGetAccessorDeclaration) : undefined;
|
|
812
|
+
if (!getter)
|
|
813
|
+
return null;
|
|
814
|
+
if (!ts.isObjectLiteralExpression(getter.parent) || !isCjsExportTableLiteral(getter.parent)) {
|
|
815
|
+
return null;
|
|
816
|
+
}
|
|
817
|
+
// An ES-module import binding reads the value Node copied when the
|
|
818
|
+
// importer linked the CommonJS module (cjsAccessorSnapshotStores).
|
|
819
|
+
const raw = lowerer.checker.getSymbolAtLocation(ident);
|
|
820
|
+
const binding = raw ? raw.declarations[0] : undefined;
|
|
821
|
+
if (binding !== undefined &&
|
|
822
|
+
(ts.isImportSpecifier(binding) || ts.isExportSpecifier(binding)) &&
|
|
823
|
+
!isCjsJsFile(ts.getSourceFileOfNode(binding), lowerer.program)) {
|
|
824
|
+
const snapshot = cjsAccessorSnapshotOf(lowerer, getter);
|
|
825
|
+
if (snapshot !== null)
|
|
826
|
+
return { kind: "varRef", localId: snapshot.id, type: snapshot.type, loc: locOf(ident) };
|
|
827
|
+
}
|
|
828
|
+
return cjsAccessorCall(lowerer, getter, locOf(ident));
|
|
829
|
+
}
|
|
830
|
+
//# sourceMappingURL=identifiers.js.map
|