@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
|
@@ -8,52 +8,89 @@ import { InternalCompilerError } from "../../errors.js";
|
|
|
8
8
|
* seeds), npm/JSON import collection, per-file %init functions, %main, and
|
|
9
9
|
* the module artifacts (globals, embedded npm tables) the IR module carries. */
|
|
10
10
|
import * as ts from "../ts7/adapter.js";
|
|
11
|
+
import { collectRebindableFunctions, isRebindableFunction } from "./rebindable-functions.js";
|
|
11
12
|
import { bindingSource } from "../binding-source.js";
|
|
12
13
|
import { dirname as dirnamePath, resolve as resolvePath } from "node:path";
|
|
13
14
|
import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
|
|
14
15
|
import { isNpmStaticPackage } from "../npm-static.js";
|
|
15
16
|
import { isJsSourceFileName } from "../tsc-codes.js";
|
|
16
17
|
import { isRelativeSpecifier } from "../workspace-registry.js";
|
|
17
|
-
import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, resolveImport, resolveNpmImport, } from "../program.js";
|
|
18
|
+
import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportChainOf, cjsVoidInitPreambleReals, cjsExportDiscardReason, cjsExportTargetLiteral, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, requireSpecOf, resolveImport, resolveNpmImport, } from "../program.js";
|
|
18
19
|
import { markCycleEarlyBindings, withClassInitFlag, withCycleInitFlags, } from "./cycle-initialization.js";
|
|
20
|
+
import { markRequireEarlyBindings } from "./require-initialization.js";
|
|
21
|
+
import { cjsTableMethodEntry, inlineProgramRequireOf, nestedCjsExportAssignmentsOf, requireNestedPatternsOf, } from "./cjs-inline-require.js";
|
|
22
|
+
import { isDeadTscHelperDecl, tscInteropBindingOfDecl } from "./cjs-tsc-interop.js";
|
|
23
|
+
import { collectJsonRequires, isJsonRequireDecl } from "./json-require.js";
|
|
19
24
|
import { invalidJsonModuleDiag, unsupportedPackageImportDiag, } from "../../diagnostics/diagnostic.js";
|
|
20
25
|
import { BOOL, CAUGHT, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
|
|
21
26
|
import { ENTRY_NAME, PoisonError, boundIdentifiersOf, dynFallbackType, newFnCtx, staticImportNamespaceType, } from "./lowerer.js";
|
|
22
27
|
import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireNamespaceDecl, createRequireProgramModuleDecl, } from "./builtins/module-bindings.js";
|
|
23
28
|
import { isPromisifyCall, registerBuiltinCallableAlias } from "./builtins/callable-aliases.js";
|
|
29
|
+
import { registerBuiltinClassAlias } from "./builtins/class-values.js";
|
|
24
30
|
import { stripTypeCasts } from "./builtins/arguments.js";
|
|
31
|
+
import { isWebCryptoMemberType } from "./builtins/webcrypto.js";
|
|
25
32
|
import { bindingContextualGenericFnNodeOf, bindingGenericFnAliasInfoOf, bindingGenericFnInfoOf, bindingGenericFnNodeOf, implicitLocalFnInfoOf, implicitLocalFnNodeOf, } from "./generic-functions.js";
|
|
26
33
|
import { bindingNeverReassigned, deadUnmappableBinding, nullishGenericBindingUnitOf, } from "./binding-analysis.js";
|
|
27
34
|
import { funcTypeFromParamShapes, registerOverloadedCallableAlias } from "./call-signatures.js";
|
|
28
|
-
import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, } from "./lower-stmts.js";
|
|
35
|
+
import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, stdlibBufferVarAlias, } from "./lower-stmts.js";
|
|
29
36
|
import { objectFactoryGlobalType } from "./object-factory-new.js";
|
|
30
37
|
import { streamClassAliasDecl } from "./lower-stream.js";
|
|
31
38
|
import { isAssertClassNew } from "./assert-instances.js";
|
|
32
39
|
import { stdlibGlobalAliasDecl, stdlibGlobalAliasNameOf, stdlibGlobalNameOf } from "./surfaces.js";
|
|
33
40
|
import { isNativeBuiltinValueInitializer } from "./lower-builtin-values.js";
|
|
41
|
+
import { isPromisePrototypeRead } from "./expressions/property-access.js";
|
|
34
42
|
import { collectNamespaceStmt, nsMemberIdentOf, nsPathPrefix, trapDeclRootOf, } from "./lower-namespaces.js";
|
|
35
43
|
import { collectExpandoMembers } from "./lower-expando.js";
|
|
36
44
|
import { recordTextCodecClass } from "../../ir/ir.js";
|
|
37
45
|
import { isUnitOnlyTsType, unitOnlyUnion } from "../type-mapper.js";
|
|
38
|
-
import { collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
|
|
46
|
+
import { builtinRequireBaseOf, collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
|
|
39
47
|
import { isMixinFnBinding, mixinResultBindingClassOf } from "./lower-mixins.js";
|
|
40
48
|
import { cjsModuleRef, cjsModuleRegistryPrelude } from "./lower-node-module.js";
|
|
41
49
|
import { forkTargetPaths } from "../fork-target.js";
|
|
42
50
|
import { workerTargetPaths } from "../worker-target.js";
|
|
43
51
|
import { isNativeProxyInitializer } from "./expressions/native-proxy.js";
|
|
44
52
|
import { handleEventReaderPrelude } from "./lower-event-target.js";
|
|
53
|
+
import { cjsAccessorSnapshotStores, jsHoldsDynObject } from "./lower-exprs.js";
|
|
54
|
+
import { keptIdentityAssertion } from "./assertion-identity.js";
|
|
55
|
+
/** An appended module's edges: its import and export declarations, then
|
|
56
|
+
* the require() edges preflight resolved — a CommonJS file's only edges
|
|
57
|
+
* (the compiled CommonJS package a workspace module loaded on demand
|
|
58
|
+
* imports, and the sibling packages and files IT requires). */
|
|
59
|
+
function appendedEdgesOf(program, graph) {
|
|
60
|
+
const cache = new Map();
|
|
61
|
+
return (sf) => {
|
|
62
|
+
let out = cache.get(sf);
|
|
63
|
+
if (out !== undefined)
|
|
64
|
+
return out;
|
|
65
|
+
out = orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
|
|
66
|
+
? [{ dep, stmt: stmt }]
|
|
67
|
+
: []);
|
|
68
|
+
for (const e of graph?.edges?.get(sf) ?? [])
|
|
69
|
+
if (e.stmt === undefined && e.dep !== sf)
|
|
70
|
+
out.push(e);
|
|
71
|
+
cache.set(sf, out);
|
|
72
|
+
return out;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/** Lazy inline requires run after their module's top level: their modules
|
|
76
|
+
* join the order afterwards, as in preflight's walk. */
|
|
77
|
+
function visitLazyEdges(sf, edgesOf, state, visit) {
|
|
78
|
+
for (const e of edgesOf(sf))
|
|
79
|
+
if (e.lazy === true && state.get(e.dep) === undefined)
|
|
80
|
+
visit(e.dep);
|
|
81
|
+
}
|
|
45
82
|
/** Program modules selected by statically resolved child_process.fork()
|
|
46
83
|
* calls join the compiled graph without becoming startup dependencies of
|
|
47
84
|
* the parent entry. Their guarded init functions are selected by %main only
|
|
48
85
|
* in a re-executed fork child. `targets` is append-only so ids stay stable
|
|
49
86
|
* across the dynamic-import/fork discovery fixpoint. */
|
|
50
|
-
export function appendForkModules(program, order, targets, onCycle) {
|
|
51
|
-
appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle);
|
|
87
|
+
export function appendForkModules(program, order, targets, onCycle, graph) {
|
|
88
|
+
appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle, graph);
|
|
52
89
|
}
|
|
53
|
-
export function appendWorkerModules(program, order, targets, onCycle) {
|
|
54
|
-
appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle);
|
|
90
|
+
export function appendWorkerModules(program, order, targets, onCycle, graph) {
|
|
91
|
+
appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle, graph);
|
|
55
92
|
}
|
|
56
|
-
function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
93
|
+
function appendEntryModules(program, order, targets, paths, onCycle, graph) {
|
|
57
94
|
if (order.length === 0)
|
|
58
95
|
return;
|
|
59
96
|
const byPath = new Map(program.getImplementationSourceFiles().map((sf) => [resolvePath(sf.fileName), sf]));
|
|
@@ -62,10 +99,8 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
|
62
99
|
state.set(sf, "done");
|
|
63
100
|
const added = [];
|
|
64
101
|
const stack = [];
|
|
65
|
-
const staticEdgesOf = (
|
|
66
|
-
|
|
67
|
-
: []);
|
|
68
|
-
const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
|
|
102
|
+
const staticEdgesOf = appendedEdgesOf(program, graph);
|
|
103
|
+
const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
|
|
69
104
|
const visit = (sf) => {
|
|
70
105
|
const prior = state.get(sf);
|
|
71
106
|
if (prior === "done")
|
|
@@ -73,10 +108,16 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
|
73
108
|
state.set(sf, "visiting");
|
|
74
109
|
stack.push(sf.fileName);
|
|
75
110
|
for (const edge of staticEdgesOf(sf)) {
|
|
111
|
+
if (edge.lazy === true)
|
|
112
|
+
continue; // visited after this module completes
|
|
76
113
|
const edgeState = state.get(edge.dep);
|
|
77
114
|
if (edgeState === "done")
|
|
78
115
|
continue;
|
|
79
116
|
if (edgeState === "visiting") {
|
|
117
|
+
if (edge.call !== undefined) {
|
|
118
|
+
graph?.inlineCycleCalls?.add(edge.call);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
80
121
|
const reason = cycleAdmissionReason(sf, edge);
|
|
81
122
|
if (reason !== null) {
|
|
82
123
|
const cycleStart = stack.indexOf(edge.dep.fileName);
|
|
@@ -89,6 +130,7 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
|
89
130
|
stack.pop();
|
|
90
131
|
state.set(sf, "done");
|
|
91
132
|
added.push(sf);
|
|
133
|
+
visitLazyEdges(sf, staticEdgesOf, state, visit);
|
|
92
134
|
};
|
|
93
135
|
const knownTargets = new Set(targets);
|
|
94
136
|
for (const path of paths) {
|
|
@@ -113,8 +155,13 @@ export function splitFiles(lowerer) {
|
|
|
113
155
|
const files = lowerer.moduleOrder.length > 0 ? lowerer.moduleOrder : [lowerer.entry];
|
|
114
156
|
return files.map((sf) => {
|
|
115
157
|
const fp = { sf, fnDecls: [], classDecls: [], topStmts: [] };
|
|
116
|
-
|
|
117
|
-
|
|
158
|
+
const rebindable = collectRebindableFunctions(lowerer, sf);
|
|
159
|
+
for (const stmt of sf.statements.nodes) {
|
|
160
|
+
// A reassigned JavaScript declaration lives in a module global that
|
|
161
|
+
// the init body assigns first (rebindable-functions.ts).
|
|
162
|
+
if (ts.isFunctionDeclaration(stmt) && rebindable.has(stmt))
|
|
163
|
+
fp.topStmts.push(stmt);
|
|
164
|
+
else if (ts.isFunctionDeclaration(stmt))
|
|
118
165
|
fp.fnDecls.push(stmt);
|
|
119
166
|
else if (ts.isClassDeclaration(stmt))
|
|
120
167
|
fp.classDecls.push(stmt);
|
|
@@ -162,9 +209,9 @@ function dynamicProgramImportsOf(program, sf) {
|
|
|
162
209
|
ts.walkPreorder(sf, (node) => {
|
|
163
210
|
if (ts.isCallExpression(node) &&
|
|
164
211
|
node.expression.kind === ts.SyntaxKind.ImportKeyword &&
|
|
165
|
-
node.arguments[0] !== undefined &&
|
|
166
|
-
ts.isStringLiteralLike(node.arguments[0])) {
|
|
167
|
-
const dep = dynamicImportProgramTargetOf(program, sf, node.arguments[0].text);
|
|
212
|
+
node.arguments.nodes[0] !== undefined &&
|
|
213
|
+
ts.isStringLiteralLike(node.arguments.nodes[0])) {
|
|
214
|
+
const dep = dynamicImportProgramTargetOf(program, sf, node.arguments.nodes[0].text);
|
|
168
215
|
if (dep && !seen.has(dep)) {
|
|
169
216
|
seen.add(dep);
|
|
170
217
|
out.push(dep);
|
|
@@ -173,7 +220,7 @@ function dynamicProgramImportsOf(program, sf) {
|
|
|
173
220
|
});
|
|
174
221
|
return out;
|
|
175
222
|
}
|
|
176
|
-
export function appendDynamicImportModules(program, order, onCycle) {
|
|
223
|
+
export function appendDynamicImportModules(program, order, onCycle, graph) {
|
|
177
224
|
if (order.length === 0)
|
|
178
225
|
return; // no preflight order — sites keep their fences
|
|
179
226
|
const state = new Map();
|
|
@@ -181,20 +228,24 @@ export function appendDynamicImportModules(program, order, onCycle) {
|
|
|
181
228
|
state.set(sf, "done");
|
|
182
229
|
const added = [];
|
|
183
230
|
const stack = [];
|
|
184
|
-
const staticEdgesOf = (
|
|
185
|
-
|
|
186
|
-
: []);
|
|
187
|
-
const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
|
|
231
|
+
const staticEdgesOf = appendedEdgesOf(program, graph);
|
|
232
|
+
const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
|
|
188
233
|
const visit = (sf) => {
|
|
189
234
|
if (state.get(sf) !== undefined)
|
|
190
235
|
return;
|
|
191
236
|
state.set(sf, "visiting");
|
|
192
237
|
stack.push(sf.fileName);
|
|
193
238
|
for (const e of staticEdgesOf(sf)) {
|
|
239
|
+
if (e.lazy === true)
|
|
240
|
+
continue; // visited after this module completes
|
|
194
241
|
const s = state.get(e.dep);
|
|
195
242
|
if (s === "done")
|
|
196
243
|
continue;
|
|
197
244
|
if (s === "visiting") {
|
|
245
|
+
if (e.call !== undefined) {
|
|
246
|
+
graph?.inlineCycleCalls?.add(e.call);
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
198
249
|
// A back edge: Node answers it from the cache. Same admission
|
|
199
250
|
// question as preflight's static walk, same fence when refused.
|
|
200
251
|
const reason = cycleAdmissionReason(sf, e);
|
|
@@ -209,6 +260,7 @@ export function appendDynamicImportModules(program, order, onCycle) {
|
|
|
209
260
|
stack.pop();
|
|
210
261
|
state.set(sf, "done");
|
|
211
262
|
added.push(sf);
|
|
263
|
+
visitLazyEdges(sf, staticEdgesOf, state, visit);
|
|
212
264
|
};
|
|
213
265
|
const scanned = new Set();
|
|
214
266
|
for (;;) {
|
|
@@ -233,8 +285,8 @@ export function collectProgram(lowerer, parts) {
|
|
|
233
285
|
const computed = new Set();
|
|
234
286
|
for (const fp of parts)
|
|
235
287
|
for (const decl of fp.classDecls) {
|
|
236
|
-
const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
|
|
237
|
-
if (heritage && ts.isCallExpression(heritage))
|
|
288
|
+
const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
|
|
289
|
+
if (heritage && ts.isCallExpression(heritage) && !builtinRequireBaseOf(lowerer, heritage))
|
|
238
290
|
computed.add(decl);
|
|
239
291
|
}
|
|
240
292
|
// Descendants need the computed ancestor's completed layout before
|
|
@@ -249,7 +301,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
249
301
|
for (const decl of fp.classDecls) {
|
|
250
302
|
if (computed.has(decl))
|
|
251
303
|
continue;
|
|
252
|
-
const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
|
|
304
|
+
const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
|
|
253
305
|
const base = heritage && ts.isIdentifier(heritage) ? lowerer.resolveValueSymbol(heritage) : undefined;
|
|
254
306
|
if (!base || !computedSymbols.has(base))
|
|
255
307
|
continue;
|
|
@@ -286,6 +338,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
286
338
|
lowerer.collectGlobals(fp.sf, fp.topStmts);
|
|
287
339
|
lowerer.collectNpmImports(parts);
|
|
288
340
|
lowerer.collectJsonImports(parts);
|
|
341
|
+
collectJsonRequires(lowerer, parts);
|
|
289
342
|
}
|
|
290
343
|
finally {
|
|
291
344
|
lowerer.diagSink = null;
|
|
@@ -296,6 +349,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
296
349
|
lowerer.collectGlobals(fp.sf, fp.topStmts);
|
|
297
350
|
lowerer.collectNpmImports(parts);
|
|
298
351
|
lowerer.collectJsonImports(parts);
|
|
352
|
+
collectJsonRequires(lowerer, parts);
|
|
299
353
|
}
|
|
300
354
|
for (const decl of computed) {
|
|
301
355
|
const symbol = declSymbolOf(lowerer, decl);
|
|
@@ -304,7 +358,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
304
358
|
const previousSink = lowerer.diagSink;
|
|
305
359
|
const deferred = [];
|
|
306
360
|
lowerer.diagSink = deferred;
|
|
307
|
-
const expression = decl.heritageClauses.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types[0].expression;
|
|
361
|
+
const expression = decl.heritageClauses.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types.nodes[0].expression;
|
|
308
362
|
const context = newFnCtx(false, null, null, DYN);
|
|
309
363
|
lowerer.fnStack.push(context);
|
|
310
364
|
try {
|
|
@@ -376,11 +430,12 @@ export function collectProgram(lowerer, parts) {
|
|
|
376
430
|
lowerer.collecting = wasCollecting;
|
|
377
431
|
}
|
|
378
432
|
markCycleEarlyBindings(lowerer);
|
|
433
|
+
markRequireEarlyBindings(lowerer);
|
|
379
434
|
}
|
|
380
435
|
export function collectNpmImports(lowerer, parts) {
|
|
381
436
|
const entryPackageFile = entryPackageFilePredicate(lowerer.entry.fileName);
|
|
382
437
|
for (const fp of parts) {
|
|
383
|
-
for (const stmt of fp.sf.statements) {
|
|
438
|
+
for (const stmt of fp.sf.statements.nodes) {
|
|
384
439
|
// NAMED re-exports from npm packages (`export { isUrl } from
|
|
385
440
|
// "url-or-path"`): use the same package bindings as direct imports.
|
|
386
441
|
const reexport = ts.isExportDeclaration(stmt) &&
|
|
@@ -389,7 +444,7 @@ export function collectNpmImports(lowerer, parts) {
|
|
|
389
444
|
ts.isStringLiteral(stmt.moduleSpecifier) &&
|
|
390
445
|
stmt.exportClause !== undefined &&
|
|
391
446
|
ts.isNamedExports(stmt.exportClause) &&
|
|
392
|
-
stmt.exportClause.elements.some((e) => !e.isTypeOnly) &&
|
|
447
|
+
stmt.exportClause.elements.nodes.some((e) => !e.isTypeOnly) &&
|
|
393
448
|
!stmt.moduleSpecifier.text.startsWith("#")
|
|
394
449
|
? stmt.exportClause
|
|
395
450
|
: null;
|
|
@@ -407,7 +462,7 @@ export function collectNpmImports(lowerer, parts) {
|
|
|
407
462
|
if (clause?.namedBindings &&
|
|
408
463
|
ts.isNamedImports(clause.namedBindings) &&
|
|
409
464
|
!clause.name &&
|
|
410
|
-
clause.namedBindings.elements.every((e) => e.isTypeOnly)) {
|
|
465
|
+
clause.namedBindings.elements.nodes.every((e) => e.isTypeOnly)) {
|
|
411
466
|
continue;
|
|
412
467
|
}
|
|
413
468
|
const spec = specNode.text;
|
|
@@ -492,10 +547,10 @@ function collectDynamicImports(lowerer, sf) {
|
|
|
492
547
|
ts.walkPreorder(sf, (node) => {
|
|
493
548
|
if (ts.isCallExpression(node) &&
|
|
494
549
|
node.expression.kind === ts.SyntaxKind.ImportKeyword &&
|
|
495
|
-
node.arguments.length >= 1 &&
|
|
496
|
-
node.arguments[0] !== undefined &&
|
|
497
|
-
ts.isStringLiteralLike(node.arguments[0])) {
|
|
498
|
-
const spec = node.arguments[0].text;
|
|
550
|
+
node.arguments.nodes.length >= 1 &&
|
|
551
|
+
node.arguments.nodes[0] !== undefined &&
|
|
552
|
+
ts.isStringLiteralLike(node.arguments.nodes[0])) {
|
|
553
|
+
const spec = node.arguments.nodes[0].text;
|
|
499
554
|
if (lowerer.externalTypes.has(spec)) {
|
|
500
555
|
return undefined;
|
|
501
556
|
}
|
|
@@ -506,11 +561,9 @@ function collectDynamicImports(lowerer, sf) {
|
|
|
506
561
|
// module has no runtime namespace object — the per-site fence
|
|
507
562
|
// says so. Only non-declaration source files count; a sibling
|
|
508
563
|
// .d.mts typing shipped JS is the EMBED case, not this one.
|
|
509
|
-
const modSym = lowerer.checker.getSymbolAtLocation(node.arguments[0]);
|
|
564
|
+
const modSym = lowerer.checker.getSymbolAtLocation(node.arguments.nodes[0]);
|
|
510
565
|
const ownModule = modSym !== undefined &&
|
|
511
|
-
|
|
512
|
-
.declarationsOf(modSym)
|
|
513
|
-
.some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
|
|
566
|
+
modSym.declarations.some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
|
|
514
567
|
const builtin = canonicalBuiltinModule(spec);
|
|
515
568
|
const res = ownModule
|
|
516
569
|
? { kind: "program-module" }
|
|
@@ -540,7 +593,7 @@ function collectDynamicImports(lowerer, sf) {
|
|
|
540
593
|
* and kept .json files out of the module order. */
|
|
541
594
|
export function collectJsonImports(lowerer, parts) {
|
|
542
595
|
for (const fp of parts) {
|
|
543
|
-
for (const stmt of fp.sf.statements) {
|
|
596
|
+
for (const stmt of fp.sf.statements.nodes) {
|
|
544
597
|
if (!ts.isImportDeclaration(stmt) || !ts.isStringLiteral(stmt.moduleSpecifier))
|
|
545
598
|
continue;
|
|
546
599
|
const clause = stmt.importClause;
|
|
@@ -550,7 +603,9 @@ export function collectJsonImports(lowerer, parts) {
|
|
|
550
603
|
if (!nameSym || !(nameSym.flags & ts.SymbolFlags.Alias))
|
|
551
604
|
continue;
|
|
552
605
|
const target = lowerer.checker.getAliasedSymbol(nameSym);
|
|
553
|
-
const jsonSf =
|
|
606
|
+
const jsonSf = target.declarations.length === 0
|
|
607
|
+
? undefined
|
|
608
|
+
: ts.getSourceFileOfNode(target.declarations[0]);
|
|
554
609
|
if (!jsonSf || !jsonSf.fileName.endsWith(".json"))
|
|
555
610
|
continue;
|
|
556
611
|
try {
|
|
@@ -728,6 +783,14 @@ export function moduleArtifacts(lowerer, functions) {
|
|
|
728
783
|
valueInstanceOfRoots.add(root.def.name);
|
|
729
784
|
}
|
|
730
785
|
break;
|
|
786
|
+
case "libCall":
|
|
787
|
+
// The general stream representation's child stdio read bridges
|
|
788
|
+
// through the runtime install that boxes both stream classes.
|
|
789
|
+
if (node.fn === "child.stdioStream") {
|
|
790
|
+
visitClass("%Readable");
|
|
791
|
+
visitClass("%Writable");
|
|
792
|
+
}
|
|
793
|
+
break;
|
|
731
794
|
case "dynFrom":
|
|
732
795
|
if (boxedChild(node.value.type)) {
|
|
733
796
|
// A generic child can expose native stdio without importing stream.
|
|
@@ -919,7 +982,7 @@ function checkedGlobalReference(lowerer, expression) {
|
|
|
919
982
|
!ts.isIdentifier(expression.expression))
|
|
920
983
|
return false;
|
|
921
984
|
const root = lowerer.checker.getSymbolAtLocation(expression.expression);
|
|
922
|
-
const namespace = root &&
|
|
985
|
+
const namespace = root && root.declarations.some(ts.isNamespaceImport);
|
|
923
986
|
return ((namespace || lowerer.cjsLocalModuleBindingOf(expression.expression)) &&
|
|
924
987
|
lowerer.globalOf(expression.name)?.type.kind === "dyn");
|
|
925
988
|
}
|
|
@@ -937,8 +1000,8 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
937
1000
|
ts.isPropertyAccessExpression(e.expression) &&
|
|
938
1001
|
["freeze", "seal", "preventExtensions"].includes(e.expression.name.text) &&
|
|
939
1002
|
lowerer.stdlibGlobalMember(e.expression, "Object") !== null &&
|
|
940
|
-
e.arguments[0] &&
|
|
941
|
-
ts.isArrayLiteralExpression(e.arguments[0]))
|
|
1003
|
+
e.arguments.nodes[0] &&
|
|
1004
|
+
ts.isArrayLiteralExpression(e.arguments.nodes[0]))
|
|
942
1005
|
return true;
|
|
943
1006
|
// The built-in Array constructor can create an evolving array whose
|
|
944
1007
|
// inferred element type has no native mapping. Its checked reference
|
|
@@ -1001,8 +1064,8 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
1001
1064
|
return true;
|
|
1002
1065
|
}
|
|
1003
1066
|
if ((ts.isFunctionExpression(e) || ts.isArrowFunction(e)) &&
|
|
1004
|
-
!e.typeParameters?.length &&
|
|
1005
|
-
isJsSourceFile(
|
|
1067
|
+
!e.typeParameters?.nodes.length &&
|
|
1068
|
+
isJsSourceFile(ts.getSourceFileOfNode(e)))
|
|
1006
1069
|
return true;
|
|
1007
1070
|
if (ts.isIdentifier(e) || ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
|
|
1008
1071
|
if (ts.isIdentifier(e)) {
|
|
@@ -1037,6 +1100,30 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
1037
1100
|
}
|
|
1038
1101
|
return false;
|
|
1039
1102
|
}
|
|
1103
|
+
/** A JavaScript default-export object literal holding a class the program
|
|
1104
|
+
* could not lower (`export default { parse, TomlDate }` where TomlDate
|
|
1105
|
+
* extends an unsupported base): the literal narrows that member away, its
|
|
1106
|
+
* diagnostics deferred to the reads that reach it, so the binding's type
|
|
1107
|
+
* drops it too. Otherwise the module's own initialization would fail the
|
|
1108
|
+
* width check against members no build can supply. */
|
|
1109
|
+
function withoutRejectedClassMembers(lowerer, expression, type) {
|
|
1110
|
+
let literal = expression;
|
|
1111
|
+
while (ts.isParenthesizedExpression(literal))
|
|
1112
|
+
literal = literal.expression;
|
|
1113
|
+
if (!ts.isObjectLiteralExpression(literal) || type.kind !== "record")
|
|
1114
|
+
return type;
|
|
1115
|
+
const shape = lowerer.shapes.get(type.shapeId);
|
|
1116
|
+
if (!shape || shape.tuple)
|
|
1117
|
+
return type;
|
|
1118
|
+
const rejected = (t) => t.kind === "classval" &&
|
|
1119
|
+
!lowerer.classes.has(t.className) &&
|
|
1120
|
+
lowerer.deferredClassByName.has(t.className);
|
|
1121
|
+
if (!shape.fields.some((f) => rejected(f.type)))
|
|
1122
|
+
return type;
|
|
1123
|
+
const kept = shape.fields.filter((f) => !rejected(f.type));
|
|
1124
|
+
const shapeId = lowerer.shapes.intern(kept.map((f) => ({ name: f.name, type: f.type })), false, shape.indexValue);
|
|
1125
|
+
return { kind: "record", shapeId };
|
|
1126
|
+
}
|
|
1040
1127
|
export function collectGlobals(lowerer, sf, topStmts) {
|
|
1041
1128
|
// Segment-tagged so mangled names can't collide across files (user
|
|
1042
1129
|
// identifiers cannot contain '.'): entry globals "e.<name>", others
|
|
@@ -1048,6 +1135,21 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1048
1135
|
// collected earlier in this pass must resolve them (lower-expando.ts).
|
|
1049
1136
|
collectExpandoMembers(lowerer, sf);
|
|
1050
1137
|
for (const stmt of topStmts) {
|
|
1138
|
+
if (ts.isFunctionDeclaration(stmt) && stmt.name && isRebindableFunction(lowerer, stmt)) {
|
|
1139
|
+
const symbol = lowerer.checker.getSymbolAtLocation(stmt.name);
|
|
1140
|
+
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1141
|
+
const g = {
|
|
1142
|
+
id: `%g.${tag}${stmt.name.text}`,
|
|
1143
|
+
name: stmt.name.text,
|
|
1144
|
+
type: DYN,
|
|
1145
|
+
mutable: true,
|
|
1146
|
+
};
|
|
1147
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
1148
|
+
lowerer.globalsByDeclNode.set(stmt, g);
|
|
1149
|
+
lowerer.globalsList.push(g);
|
|
1150
|
+
}
|
|
1151
|
+
continue;
|
|
1152
|
+
}
|
|
1051
1153
|
// `export default <expr>`: the module's `default` binding is a const
|
|
1052
1154
|
// module global (registered under the checker's default-export
|
|
1053
1155
|
// symbol — the symbol a default IMPORT's alias chain terminates at,
|
|
@@ -1078,10 +1180,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1078
1180
|
continue;
|
|
1079
1181
|
if (symbol.flags & ts.SymbolFlags.Alias) {
|
|
1080
1182
|
const target = lowerer.checker.getAliasedSymbol(symbol);
|
|
1081
|
-
const vd =
|
|
1183
|
+
const vd = target.valueDeclaration;
|
|
1082
1184
|
const mutableVar = vd !== undefined &&
|
|
1083
1185
|
ts.isVariableDeclaration(vd) &&
|
|
1084
|
-
!
|
|
1186
|
+
!ts.getSourceFileOfNode(vd).isDeclarationFile &&
|
|
1085
1187
|
(ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
|
|
1086
1188
|
// Immutable targets: alias plumbing — importers resolve to the
|
|
1087
1189
|
// target's storage (the alias-resolved read IS the snapshot when
|
|
@@ -1104,7 +1206,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1104
1206
|
!isJsSourceFile(sf) &&
|
|
1105
1207
|
inner.typeParameters === undefined &&
|
|
1106
1208
|
(decoratorNodesOf(inner).length > 0 ||
|
|
1107
|
-
inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
1209
|
+
inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
1108
1210
|
guaranteedDecorationThrow(lowerer, inner) !== null) {
|
|
1109
1211
|
continue;
|
|
1110
1212
|
}
|
|
@@ -1136,6 +1238,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1136
1238
|
}
|
|
1137
1239
|
if (type.kind === "void")
|
|
1138
1240
|
lowerer.badType(stmt.expression, tsType);
|
|
1241
|
+
if (isJsSourceFile(sf))
|
|
1242
|
+
type = withoutRejectedClassMembers(lowerer, stmt.expression, type);
|
|
1139
1243
|
const g = { id: `%g.${tag}default`, name: "default", type, mutable: false };
|
|
1140
1244
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1141
1245
|
lowerer.globalsList.push(g);
|
|
@@ -1175,9 +1279,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1175
1279
|
// common/tls's `exports.check = function (certs) {...}` —
|
|
1176
1280
|
// keep func-ness with dyn pieces; everything else is dyn).
|
|
1177
1281
|
const strict = lowerer.checker.getTypeOfSymbol(symbol);
|
|
1178
|
-
|
|
1282
|
+
let t = lowerer.mapTypeOf(strict) ?? dynFallbackType(lowerer, nameNode, strict);
|
|
1179
1283
|
if (!t || t.kind === "void")
|
|
1180
1284
|
lowerer.badType(typeNode, strict);
|
|
1285
|
+
// An export typed as the empty object literal (tsc's enum output
|
|
1286
|
+
// `exports.E || (exports.E = {})` after its `exports.E = void 0`
|
|
1287
|
+
// preamble): TS's `{}` admits any later non-nullish value and the
|
|
1288
|
+
// export is undefined until then, so it rides checked-dynamic
|
|
1289
|
+
// storage like the same-shaped var binding (varBindingType).
|
|
1290
|
+
if (t.kind === "record" && isJsSourceFile(sf)) {
|
|
1291
|
+
const shape = lowerer.shapes.get(t.shapeId);
|
|
1292
|
+
if (shape && shape.fields.length === 0 && !shape.indexValue && !shape.tuple)
|
|
1293
|
+
t = DYN;
|
|
1294
|
+
}
|
|
1181
1295
|
// An immutable export source shares its live storage and native
|
|
1182
1296
|
// callable ABI. Mutable sources need a separate snapshot slot:
|
|
1183
1297
|
// later writes to the binding do not change the exported value.
|
|
@@ -1191,7 +1305,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1191
1305
|
if (vG) {
|
|
1192
1306
|
if (!vG.mutable) {
|
|
1193
1307
|
lowerer.globalsBySymbol.set(symbol, vG);
|
|
1194
|
-
for (const d of
|
|
1308
|
+
for (const d of symbol.declarations)
|
|
1195
1309
|
lowerer.globalsByDeclNode.set(d, vG);
|
|
1196
1310
|
return;
|
|
1197
1311
|
}
|
|
@@ -1202,7 +1316,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1202
1316
|
mutable: false,
|
|
1203
1317
|
};
|
|
1204
1318
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1205
|
-
for (const d of
|
|
1319
|
+
for (const d of symbol.declarations)
|
|
1206
1320
|
lowerer.globalsByDeclNode.set(d, g);
|
|
1207
1321
|
lowerer.globalsList.push(g);
|
|
1208
1322
|
return;
|
|
@@ -1213,7 +1327,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1213
1327
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1214
1328
|
// Importer aliases resolve to a DISTINCT late-bound symbol with
|
|
1215
1329
|
// the same declaration — key the node too (globalOf's fallback).
|
|
1216
|
-
for (const d of
|
|
1330
|
+
for (const d of symbol.declarations)
|
|
1217
1331
|
lowerer.globalsByDeclNode.set(d, g);
|
|
1218
1332
|
lowerer.globalsList.push(g);
|
|
1219
1333
|
}
|
|
@@ -1225,6 +1339,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1225
1339
|
deferJsCollectionDiags(lowerer, sf, diagsBefore);
|
|
1226
1340
|
}
|
|
1227
1341
|
};
|
|
1342
|
+
// Export members assigned in VALUE position at the module's top
|
|
1343
|
+
// level (`const src = exports.src = []`) are exports too.
|
|
1344
|
+
for (const nested of nestedCjsExportAssignmentsOf(stmt, cjs?.expr)) {
|
|
1345
|
+
registerExport(nested.name, nested.name.text, nested.value);
|
|
1346
|
+
}
|
|
1228
1347
|
if (cjs?.kind === "member" && ts.isIdentifier(cjs.name)) {
|
|
1229
1348
|
// `exports.C = C` naming a CLASS declaration: alias plumbing —
|
|
1230
1349
|
// no storage (a class VALUE global would fence for
|
|
@@ -1233,6 +1352,20 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1233
1352
|
// applies unchanged.
|
|
1234
1353
|
if (lowerer.cjsMemberExportClassSymbol(cjs.expr) !== null)
|
|
1235
1354
|
continue;
|
|
1355
|
+
// A chain `exports.a = exports.b = value`: every member is an
|
|
1356
|
+
// export holding the chain's one value.
|
|
1357
|
+
const chain = cjsExportChainOf(cjs.expr);
|
|
1358
|
+
if (chain !== null) {
|
|
1359
|
+
for (const nameNode of chain.names)
|
|
1360
|
+
registerExport(nameNode, nameNode.text, chain.value);
|
|
1361
|
+
continue;
|
|
1362
|
+
}
|
|
1363
|
+
// A dropped tsc void-init preamble whose real assignment is such a
|
|
1364
|
+
// class alias registers nothing either: storage here would never
|
|
1365
|
+
// be assigned, and importers would read it instead of the class.
|
|
1366
|
+
const real = cjsVoidInitPreambleReals(cjs)?.get(cjs.name.text);
|
|
1367
|
+
if (real && lowerer.cjsMemberExportClassSymbol(real.expr) !== null)
|
|
1368
|
+
continue;
|
|
1236
1369
|
registerExport(cjs.name, cjs.name.text, cjs.value);
|
|
1237
1370
|
continue;
|
|
1238
1371
|
}
|
|
@@ -1265,7 +1398,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1265
1398
|
// statement lowering evaluates the call exactly once at its
|
|
1266
1399
|
// source position and assigns that slot. Unmappable calls retain
|
|
1267
1400
|
// the existing statement-level fence.
|
|
1268
|
-
|
|
1401
|
+
// Any other computed value (`os.homedir || function () {…}`,
|
|
1402
|
+
// `cond ? a : b`, `new Registry()`, `ns.member`) is the same single
|
|
1403
|
+
// snapshot: Node stores whatever the expression produced. A
|
|
1404
|
+
// require() of a program module is not: the exporter re-exports
|
|
1405
|
+
// that module's exports, which requirers resolve through the
|
|
1406
|
+
// checker's alias (the statement lowers to the dep's %init).
|
|
1407
|
+
const factoryValued = !ts.isIdentifier(rhs) &&
|
|
1408
|
+
!ts.isClassExpression(rhs) &&
|
|
1409
|
+
!ts.isObjectLiteralExpression(rhs) &&
|
|
1410
|
+
!(requireSpecOf(rhs) !== null &&
|
|
1411
|
+
inlineProgramRequireOf(lowerer, rhs) !== null &&
|
|
1412
|
+
!sf.statements.nodes.some((s) => cjsExportAssignmentOf(s)?.kind === "member")) &&
|
|
1413
|
+
cjsExportTargetLiteral(rhs, sf) === null;
|
|
1269
1414
|
if (cjsScalarLiteral(rhs) || fnValued || factoryValued) {
|
|
1270
1415
|
const diagsBefore = lowerer.diags.length;
|
|
1271
1416
|
try {
|
|
@@ -1296,7 +1441,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1296
1441
|
continue;
|
|
1297
1442
|
}
|
|
1298
1443
|
if (cjs?.kind === "table" && cjs.obj) {
|
|
1299
|
-
for (const prop of cjs.obj.properties) {
|
|
1444
|
+
for (const prop of cjs.obj.properties.nodes) {
|
|
1300
1445
|
if (ts.isShorthandPropertyAssignment(prop))
|
|
1301
1446
|
continue; // alias plumbing
|
|
1302
1447
|
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.initializer))
|
|
@@ -1304,6 +1449,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1304
1449
|
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
|
|
1305
1450
|
registerExport(prop.name, prop.name.text, prop.initializer);
|
|
1306
1451
|
}
|
|
1452
|
+
// A METHOD entry (`module.exports = { f(x) { … } }`) is an
|
|
1453
|
+
// expression-valued export whose value is the method's function.
|
|
1454
|
+
const method = cjsTableMethodEntry(prop);
|
|
1455
|
+
if (method !== null)
|
|
1456
|
+
registerExport(method.name, method.name.text, method.name);
|
|
1307
1457
|
// other property forms fence in the statement lowering
|
|
1308
1458
|
}
|
|
1309
1459
|
continue;
|
|
@@ -1328,10 +1478,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1328
1478
|
lowerer.globalsBySymbol.has(aliasSym))
|
|
1329
1479
|
continue;
|
|
1330
1480
|
const target = lowerer.checker.getAliasedSymbol(aliasSym);
|
|
1331
|
-
const vd =
|
|
1481
|
+
const vd = target.valueDeclaration;
|
|
1332
1482
|
const mutableVar = vd !== undefined &&
|
|
1333
1483
|
ts.isVariableDeclaration(vd) &&
|
|
1334
|
-
!
|
|
1484
|
+
!ts.getSourceFileOfNode(vd).isDeclarationFile &&
|
|
1335
1485
|
(ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
|
|
1336
1486
|
if (!mutableVar)
|
|
1337
1487
|
continue;
|
|
@@ -1344,7 +1494,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1344
1494
|
if (type.kind === "void")
|
|
1345
1495
|
lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
|
|
1346
1496
|
const g = {
|
|
1347
|
-
id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${
|
|
1497
|
+
id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${ts.tokenStartOfNode(stmt)}`,
|
|
1348
1498
|
name: stmt.name.text,
|
|
1349
1499
|
type,
|
|
1350
1500
|
mutable: false,
|
|
@@ -1369,6 +1519,14 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1369
1519
|
collectNestedVarGlobals(lowerer, sf, stmt, tag);
|
|
1370
1520
|
continue;
|
|
1371
1521
|
}
|
|
1522
|
+
// tsc's interop bindings and its then-dead helper declarations own no
|
|
1523
|
+
// storage either (cjs-tsc-interop.ts).
|
|
1524
|
+
if (isJsSourceFile(sf) &&
|
|
1525
|
+
(isDeadTscHelperDecl(lowerer, stmt) ||
|
|
1526
|
+
(stmt.declarationList.declarations.nodes.length === 1 &&
|
|
1527
|
+
tscInteropBindingOfDecl(lowerer, stmt.declarationList.declarations.nodes[0]) !== null))) {
|
|
1528
|
+
continue;
|
|
1529
|
+
}
|
|
1372
1530
|
// CommonJS require declarations are alias plumbing (preflight owns
|
|
1373
1531
|
// the module edges; resolveValueSymbol routes reads through to the
|
|
1374
1532
|
// exporter's declarations): no storage, and the statement lowers to
|
|
@@ -1378,12 +1536,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1378
1536
|
// binding lower via the process surface.
|
|
1379
1537
|
if (isRequireStatement(stmt) &&
|
|
1380
1538
|
!(ts.isVariableStatement(stmt) &&
|
|
1381
|
-
stmt.declarationList.declarations.some((decl) => isNativeFfiRequire(lowerer, decl.initializer)))) {
|
|
1382
|
-
if (ts.isVariableStatement(stmt)
|
|
1383
|
-
for (const decl of stmt.declarationList.declarations)
|
|
1384
|
-
|
|
1385
|
-
}
|
|
1386
|
-
}
|
|
1539
|
+
stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
|
|
1540
|
+
if (ts.isVariableStatement(stmt))
|
|
1541
|
+
for (const decl of stmt.declarationList.declarations.nodes)
|
|
1542
|
+
registerRequireDeclBindings(lowerer, sf, stmt.declarationList, decl, tag);
|
|
1387
1543
|
continue;
|
|
1388
1544
|
}
|
|
1389
1545
|
// `declare const __VERSION__: string` — AMBIENT: no storage exists
|
|
@@ -1391,7 +1547,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1391
1547
|
// exactly like running the source under Node). Reads lower to
|
|
1392
1548
|
// Node's ReferenceError at the access (lower-exprs), and the
|
|
1393
1549
|
// statement itself lowers to nothing.
|
|
1394
|
-
if (ts.getCombinedModifierFlags(stmt.declarationList.declarations[0]) &
|
|
1550
|
+
if (ts.getCombinedModifierFlags(stmt.declarationList.declarations.nodes[0]) &
|
|
1551
|
+
ts.ModifierFlags.Ambient)
|
|
1395
1552
|
continue;
|
|
1396
1553
|
const list = stmt.declarationList;
|
|
1397
1554
|
if ((list.flags & ts.NodeFlags.Using) !== 0)
|
|
@@ -1405,8 +1562,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1405
1562
|
// (`%g.e.A%B.x`), so `namespace A { export const x }` and a
|
|
1406
1563
|
// top-level `const x` never collide; non-exported members add the
|
|
1407
1564
|
// declaring block's position (block-local bindings).
|
|
1408
|
-
const nsPrefix = nsPathPrefix(stmt, list.declarations[0]);
|
|
1409
|
-
for (const decl of list.declarations) {
|
|
1565
|
+
const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
|
|
1566
|
+
for (const decl of list.declarations.nodes) {
|
|
1410
1567
|
// --provenance-sources: an elided pure-annotated dead const in a
|
|
1411
1568
|
// fetched source module registers no global (the statement
|
|
1412
1569
|
// lowering emits nothing by the same test — see
|
|
@@ -1415,6 +1572,16 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1415
1572
|
// and put its fences on the build.
|
|
1416
1573
|
if (provenanceElidedConstDecl(lowerer, decl))
|
|
1417
1574
|
continue;
|
|
1575
|
+
// A require declarator beside other declarators (`var EventEmitter =
|
|
1576
|
+
// require("events"), R = class extends EventEmitter {}`): the
|
|
1577
|
+
// statement lowering treats it as the alias plumbing of a whole
|
|
1578
|
+
// require statement (lowerVarDeclarator), so it owns no storage
|
|
1579
|
+
// either. A global here would never be assigned, and a read through
|
|
1580
|
+
// it would see null.
|
|
1581
|
+
if (requireAliasDecl(lowerer, decl)) {
|
|
1582
|
+
registerRequireDeclBindings(lowerer, sf, list, decl, tag);
|
|
1583
|
+
continue;
|
|
1584
|
+
}
|
|
1418
1585
|
// A stored built-in numeric value iterator has no first-class
|
|
1419
1586
|
// global representation. Its same-%init for-of uses are backed by
|
|
1420
1587
|
// hidden source/cursor/done locals registered when the declaration
|
|
@@ -1532,6 +1699,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1532
1699
|
continue;
|
|
1533
1700
|
if (isConst && registerBuiltinCallableAlias(lowerer, decl.name, decl.initializer))
|
|
1534
1701
|
continue;
|
|
1702
|
+
if (registerBuiltinClassAlias(lowerer, decl.name, decl.initializer))
|
|
1703
|
+
continue;
|
|
1535
1704
|
// `const f = (x) => ...` at file scope of an npm-static JS file
|
|
1536
1705
|
// whose params are implicit-any: the implicit-monomorphization
|
|
1537
1706
|
// twin of the generic binding above — no global exists; calls and
|
|
@@ -1644,6 +1813,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1644
1813
|
// stdlibGlobalAliasDecl; the statement lowering skips it by the
|
|
1645
1814
|
// same test).
|
|
1646
1815
|
const stableStdlibAlias = isConst ||
|
|
1816
|
+
stdlibBufferVarAlias(lowerer, decl) ||
|
|
1647
1817
|
((list.flags & ts.NodeFlags.Let) !== 0 &&
|
|
1648
1818
|
ts.isIdentifier(decl.name) &&
|
|
1649
1819
|
stdlibGlobalAliasNameOf(lowerer, decl.initializer) !== null &&
|
|
@@ -1667,7 +1837,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1667
1837
|
decl.initializer &&
|
|
1668
1838
|
!decl.type &&
|
|
1669
1839
|
!hasJsTypeAnnotation(decl) &&
|
|
1670
|
-
!lowerer.mapTypeOf(lowerer.typeOf(nameNode))
|
|
1840
|
+
(!lowerer.mapTypeOf(lowerer.typeOf(nameNode)) ||
|
|
1841
|
+
isWebCryptoMemberType(lowerer, lowerer.typeOf(nameNode)))) {
|
|
1671
1842
|
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1672
1843
|
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1673
1844
|
const g = {
|
|
@@ -1688,18 +1859,48 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1688
1859
|
// Builtin declarations do not always describe the concrete native
|
|
1689
1860
|
// callable ABI. Preserve checked-native values in shared storage;
|
|
1690
1861
|
// adapting the loader to (string) would replace its validation.
|
|
1862
|
+
// An inferred Promise.prototype binding holds an ordinary object
|
|
1863
|
+
// (isPromisePrototypeRead), in TypeScript as well.
|
|
1691
1864
|
const initializer = decl.initializer ? stripTypeCasts(decl.initializer) : undefined;
|
|
1692
|
-
if (
|
|
1693
|
-
|
|
1694
|
-
initializer
|
|
1695
|
-
(
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1865
|
+
if ((nameNode === decl.name &&
|
|
1866
|
+
!decl.type &&
|
|
1867
|
+
isPromisePrototypeRead(lowerer, decl.initializer)) ||
|
|
1868
|
+
(isJsSourceFile(sf) &&
|
|
1869
|
+
nameNode === decl.name &&
|
|
1870
|
+
initializer &&
|
|
1871
|
+
(isNativeBuiltinValueInitializer(lowerer, initializer) ||
|
|
1872
|
+
(!decl.type &&
|
|
1873
|
+
!hasJsTypeAnnotation(decl) &&
|
|
1874
|
+
lowerer.mapTypeOf(lowerer.typeOf(nameNode))?.kind === "date") ||
|
|
1875
|
+
(!decl.type &&
|
|
1876
|
+
!hasJsTypeAnnotation(decl) &&
|
|
1877
|
+
checkedGlobalReference(lowerer, initializer)) ||
|
|
1878
|
+
stdlibGlobalNameOf(lowerer, initializer) === "globalThis"))) {
|
|
1879
|
+
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1880
|
+
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1881
|
+
const g = {
|
|
1882
|
+
id: `%g.${tag}${nsPrefix}${nameNode.text}`,
|
|
1883
|
+
name: nameNode.text,
|
|
1884
|
+
type: DYN,
|
|
1885
|
+
mutable: isLet,
|
|
1886
|
+
source: bindingSource(nameNode),
|
|
1887
|
+
...(!isVarDeclared(decl) ? { tdz: true } : {}),
|
|
1888
|
+
};
|
|
1889
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
1890
|
+
lowerer.globalsList.push(g);
|
|
1891
|
+
if (isVarDeclared(decl))
|
|
1892
|
+
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
1893
|
+
}
|
|
1894
|
+
continue;
|
|
1895
|
+
}
|
|
1896
|
+
// A file-scope binding of an assertion of the global object
|
|
1897
|
+
// (`const state = globalThis as { [KEY]?: State }`): the binding
|
|
1898
|
+
// holds that object, so writes through it reach the object other
|
|
1899
|
+
// modules read (assertion-identity.ts).
|
|
1900
|
+
const asserted = decl.initializer
|
|
1901
|
+
? keptIdentityAssertion(lowerer, decl.initializer)
|
|
1902
|
+
: undefined;
|
|
1903
|
+
if (nameNode === decl.name && !decl.type && asserted) {
|
|
1703
1904
|
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1704
1905
|
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1705
1906
|
const g = {
|
|
@@ -1755,7 +1956,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1755
1956
|
nameNode === decl.name &&
|
|
1756
1957
|
decl.initializer &&
|
|
1757
1958
|
ts.isObjectLiteralExpression(decl.initializer) &&
|
|
1758
|
-
decl.initializer.properties.some((p) => !ts.isSpreadAssignment(p) &&
|
|
1959
|
+
decl.initializer.properties.nodes.some((p) => !ts.isSpreadAssignment(p) &&
|
|
1759
1960
|
(ts.isMethodDeclaration(p) ||
|
|
1760
1961
|
ts.isAccessor(p) ||
|
|
1761
1962
|
ts.isComputedPropertyName(p.name) ||
|
|
@@ -1798,7 +1999,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1798
1999
|
nameNode === decl.name &&
|
|
1799
2000
|
decl.initializer !== undefined &&
|
|
1800
2001
|
ts.isObjectLiteralExpression(decl.initializer) &&
|
|
1801
|
-
decl.initializer.properties.every((p) => {
|
|
2002
|
+
decl.initializer.properties.nodes.every((p) => {
|
|
1802
2003
|
if (ts.isSpreadAssignment(p)) {
|
|
1803
2004
|
return (ts.isIdentifier(p.expression) &&
|
|
1804
2005
|
lowerer.globalOf(p.expression)?.type.kind === "dyn");
|
|
@@ -1824,6 +2025,35 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1824
2025
|
}
|
|
1825
2026
|
continue;
|
|
1826
2027
|
}
|
|
2028
|
+
// A JS file-scope ARRAY LITERAL holding an existing checked-dynamic
|
|
2029
|
+
// object (a file-scope object literal binding above, directly or
|
|
2030
|
+
// in a nested literal): the literal builds as a checked-dynamic
|
|
2031
|
+
// array (lowerArrayLiteral), and the binding holds it, so the
|
|
2032
|
+
// element keeps its identity.
|
|
2033
|
+
if (isJsSourceFile(sf) &&
|
|
2034
|
+
ts.isIdentifier(decl.name) &&
|
|
2035
|
+
nameNode === decl.name &&
|
|
2036
|
+
!decl.type &&
|
|
2037
|
+
!hasJsTypeAnnotation(decl) &&
|
|
2038
|
+
decl.initializer !== undefined &&
|
|
2039
|
+
ts.isArrayLiteralExpression(decl.initializer) &&
|
|
2040
|
+
jsHoldsDynObject(lowerer, decl.initializer)) {
|
|
2041
|
+
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
2042
|
+
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
2043
|
+
const g = {
|
|
2044
|
+
id: `%g.${tag}${nsPrefix}${nameNode.text}`,
|
|
2045
|
+
name: nameNode.text,
|
|
2046
|
+
type: DYN,
|
|
2047
|
+
mutable: isLet,
|
|
2048
|
+
source: bindingSource(nameNode),
|
|
2049
|
+
};
|
|
2050
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
2051
|
+
lowerer.globalsList.push(g);
|
|
2052
|
+
if (isVarDeclared(decl))
|
|
2053
|
+
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
2054
|
+
}
|
|
2055
|
+
continue;
|
|
2056
|
+
}
|
|
1827
2057
|
// A JS file-scope ANY-RESIDUE binding whose VALUE provably
|
|
1828
2058
|
// lives in the checked-dynamic tree: no initializer (`let catchWarning;` —
|
|
1829
2059
|
// test/common's warning ledger), a unit initializer (`let
|
|
@@ -1880,7 +2110,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1880
2110
|
: null;
|
|
1881
2111
|
const generic = member && lowerer.genericFnOf(member);
|
|
1882
2112
|
const fallback = (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)) &&
|
|
1883
|
-
!initializer.typeParameters?.length
|
|
2113
|
+
!initializer.typeParameters?.nodes.length
|
|
1884
2114
|
? lowerer.lambdaSignature(initializer).funcType
|
|
1885
2115
|
: member && lowerer.globalOf(member)?.type.kind === "dyn"
|
|
1886
2116
|
? DYN
|
|
@@ -1942,12 +2172,12 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1942
2172
|
ts.isCallExpression(decl.initializer)
|
|
1943
2173
|
? lowerer.checker.getResolvedSignature(decl.initializer)
|
|
1944
2174
|
: undefined;
|
|
1945
|
-
const callDeclaration = callSignature &&
|
|
1946
|
-
const callType = callDeclaration && isJsSourceFile(
|
|
2175
|
+
const callDeclaration = callSignature && callSignature.declaration;
|
|
2176
|
+
const callType = callDeclaration && isJsSourceFile(ts.getSourceFileOfNode(callDeclaration))
|
|
1947
2177
|
? lowerer.mapTypeOf(lowerer.typeOf(nameNode))
|
|
1948
2178
|
: null;
|
|
1949
2179
|
const inferredJsCall = callDeclaration &&
|
|
1950
|
-
isJsSourceFile(
|
|
2180
|
+
isJsSourceFile(ts.getSourceFileOfNode(callDeclaration)) &&
|
|
1951
2181
|
(!callType ||
|
|
1952
2182
|
(unannotatedCall &&
|
|
1953
2183
|
callType.kind === "union" &&
|
|
@@ -1963,7 +2193,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1963
2193
|
!hasJsTypeAnnotation(decl) &&
|
|
1964
2194
|
decl.initializer &&
|
|
1965
2195
|
(ts.isArrowFunction(decl.initializer) || ts.isFunctionExpression(decl.initializer)) &&
|
|
1966
|
-
!decl.initializer.typeParameters?.length) {
|
|
2196
|
+
!decl.initializer.typeParameters?.nodes.length) {
|
|
1967
2197
|
type = lowerer.lambdaSignature(decl.initializer).funcType;
|
|
1968
2198
|
}
|
|
1969
2199
|
// Namespace aliases of inferred helpers carry the helper's
|
|
@@ -2023,7 +2253,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
2023
2253
|
ts.isCallExpression(decl.initializer) &&
|
|
2024
2254
|
ts.isPropertyAccessExpression(decl.initializer.expression) &&
|
|
2025
2255
|
lowerer.stdlibGlobalMember(decl.initializer.expression, "Object") === "assign" &&
|
|
2026
|
-
decl.initializer.arguments.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
|
|
2256
|
+
decl.initializer.arguments.nodes.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
|
|
2027
2257
|
type = DYN;
|
|
2028
2258
|
}
|
|
2029
2259
|
// Runtime-arity JavaScript callables can be returned by a
|
|
@@ -2169,6 +2399,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
2169
2399
|
};
|
|
2170
2400
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
2171
2401
|
lowerer.globalsList.push(g);
|
|
2402
|
+
// `let f: T;` initializes the binding (to undefined) where the
|
|
2403
|
+
// declaration runs: later writes are ordinary stores, which the
|
|
2404
|
+
// pointer guard alone would refuse (markCycleEarlyBindings).
|
|
2405
|
+
if (g.tdz && !decl.initializer)
|
|
2406
|
+
lowerer.uninitializedLexicalGlobals.set(g.id, { name: nameNode, module: sf, symbol });
|
|
2172
2407
|
// Mutable checked-dynamic LET globals ride the same entry
|
|
2173
2408
|
// init: a closure called above the declaration statement
|
|
2174
2409
|
// reads the dyn undefined instead of faulting on NULL — the
|
|
@@ -2212,6 +2447,52 @@ function noteVarGlobalEntryInit(lowerer, sf, g) {
|
|
|
2212
2447
|
inits.push(g);
|
|
2213
2448
|
lowerer.varGlobalEntryInits.set(sf, inits);
|
|
2214
2449
|
}
|
|
2450
|
+
/** A JavaScript require declaration the statement lowering treats as alias
|
|
2451
|
+
* plumbing (lowerVarDeclarator): no storage, the reads resolve through to
|
|
2452
|
+
* the module. JSON documents and native FFI requires keep their storage. */
|
|
2453
|
+
function requireAliasDecl(lowerer, decl) {
|
|
2454
|
+
return (decl.initializer !== undefined &&
|
|
2455
|
+
requireSpecOf(decl.initializer) !== null &&
|
|
2456
|
+
!isNativeFfiRequire(lowerer, decl.initializer) &&
|
|
2457
|
+
!isJsonRequireDecl(lowerer, decl) &&
|
|
2458
|
+
isJsSourceFile(decl.getSourceFile()));
|
|
2459
|
+
}
|
|
2460
|
+
/** The registrations a top-level require declaration does make. `const
|
|
2461
|
+
* process = require('node:process')` aliases the global process
|
|
2462
|
+
* (stdlibGlobalAliasDecl's require form) so reads through the binding
|
|
2463
|
+
* lower via the process surface. In `const { codes: { ERR_X } } =
|
|
2464
|
+
* require("./errors")` the outer keys stay alias plumbing, but a nested
|
|
2465
|
+
* pattern destructures the export's value at the require, so its bindings
|
|
2466
|
+
* own storage like any destructured declaration (lowerVarDeclarator
|
|
2467
|
+
* assigns them). */
|
|
2468
|
+
function registerRequireDeclBindings(lowerer, sf, list, decl, tag) {
|
|
2469
|
+
if ((list.flags & ts.NodeFlags.Const) !== 0)
|
|
2470
|
+
stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
|
|
2471
|
+
const isLetList = (list.flags & ts.NodeFlags.Let) !== 0 || (list.flags & ts.NodeFlags.BlockScoped) === 0;
|
|
2472
|
+
for (const element of requireNestedPatternsOf(decl)) {
|
|
2473
|
+
for (const nameNode of boundIdentifiersOf(element.name)) {
|
|
2474
|
+
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
2475
|
+
if (!symbol || lowerer.globalsBySymbol.has(symbol))
|
|
2476
|
+
continue;
|
|
2477
|
+
const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
|
|
2478
|
+
const type = mapped && mapped.kind !== "void" ? mapped : DYN;
|
|
2479
|
+
const g = {
|
|
2480
|
+
id: `%g.${tag}${nameNode.text}`,
|
|
2481
|
+
name: nameNode.text,
|
|
2482
|
+
type,
|
|
2483
|
+
mutable: isLetList,
|
|
2484
|
+
source: bindingSource(nameNode),
|
|
2485
|
+
...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
|
|
2486
|
+
? { tdz: true }
|
|
2487
|
+
: {}),
|
|
2488
|
+
};
|
|
2489
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
2490
|
+
lowerer.globalsList.push(g);
|
|
2491
|
+
if (isVarDeclared(decl))
|
|
2492
|
+
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
}
|
|
2215
2496
|
/** The nested half of module-scope `var` hoisting: a `var` inside a
|
|
2216
2497
|
* top-level BLOCK (an if arm, a loop body, a try) is module-scoped in
|
|
2217
2498
|
* JS — other functions in the file read the same binding — so it must
|
|
@@ -2248,7 +2529,13 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
|
|
|
2248
2529
|
return undefined;
|
|
2249
2530
|
});
|
|
2250
2531
|
for (const list of lists) {
|
|
2251
|
-
for (const decl of list.declarations) {
|
|
2532
|
+
for (const decl of list.declarations.nodes) {
|
|
2533
|
+
// A nested builtin require (`if (c) { var fs = require("fs"); }`)
|
|
2534
|
+
// lowers to nothing: its bindings are alias plumbing wherever the
|
|
2535
|
+
// statement sits (lowerVarDeclarator), so they own no storage.
|
|
2536
|
+
if (requireAliasDecl(lowerer, decl) &&
|
|
2537
|
+
canonicalBuiltinModule(requireSpecOf(decl.initializer)) !== null)
|
|
2538
|
+
continue;
|
|
2252
2539
|
for (const nameNode of boundIdentifiersOf(decl.name)) {
|
|
2253
2540
|
const diagsBefore = lowerer.diags.length;
|
|
2254
2541
|
try {
|
|
@@ -2320,7 +2607,7 @@ export function declSymbolOf(lowerer, decl) {
|
|
|
2320
2607
|
ts.getModifiers(decl)?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
|
|
2321
2608
|
if (!isDefault)
|
|
2322
2609
|
return undefined;
|
|
2323
|
-
const sym = defaultExportSymbolOf(lowerer,
|
|
2610
|
+
const sym = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(decl));
|
|
2324
2611
|
return sym ?? undefined;
|
|
2325
2612
|
}
|
|
2326
2613
|
/** `export default <expr>` in a module's init body: the first (and only)
|
|
@@ -2337,7 +2624,7 @@ export function declSymbolOf(lowerer, decl) {
|
|
|
2337
2624
|
* expression so the expression's OWN diagnostic wins when it has one,
|
|
2338
2625
|
* then poisons. */
|
|
2339
2626
|
export function lowerDefaultExport(lowerer, stmt) {
|
|
2340
|
-
const symbol = defaultExportSymbolOf(lowerer,
|
|
2627
|
+
const symbol = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(stmt));
|
|
2341
2628
|
if (symbol && symbol.flags & ts.SymbolFlags.Alias && !lowerer.globalsBySymbol.has(symbol))
|
|
2342
2629
|
return null;
|
|
2343
2630
|
const g = symbol ? lowerer.globalsBySymbol.get(symbol) : undefined;
|
|
@@ -2350,10 +2637,10 @@ export function lowerDefaultExport(lowerer, stmt) {
|
|
|
2350
2637
|
while (ts.isParenthesizedExpression(inner))
|
|
2351
2638
|
inner = inner.expression;
|
|
2352
2639
|
if (ts.isClassExpression(inner) &&
|
|
2353
|
-
!isJsSourceFile(
|
|
2640
|
+
!isJsSourceFile(ts.getSourceFileOfNode(stmt)) &&
|
|
2354
2641
|
inner.typeParameters === undefined &&
|
|
2355
2642
|
(decoratorNodesOf(inner).length > 0 ||
|
|
2356
|
-
inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
2643
|
+
inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
2357
2644
|
guaranteedDecorationThrow(lowerer, inner) !== null) {
|
|
2358
2645
|
return { kind: "exprStmt", expr: lowerer.lowerExpr(stmt.expression), loc: locOf(stmt) };
|
|
2359
2646
|
}
|
|
@@ -2392,6 +2679,37 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2392
2679
|
loc: loc0,
|
|
2393
2680
|
});
|
|
2394
2681
|
}
|
|
2682
|
+
if (sf === lowerer.entry)
|
|
2683
|
+
header.push(...lowerer.punycodeLinkWarning());
|
|
2684
|
+
// Top-level `this` of a CommonJS module: its object exists before the
|
|
2685
|
+
// module's first statement (lowerCjsTopLevelThis).
|
|
2686
|
+
const exportsThis = lowerer.cjsExportsThis.get(sf);
|
|
2687
|
+
if (exportsThis) {
|
|
2688
|
+
header.push({
|
|
2689
|
+
kind: "assign",
|
|
2690
|
+
localId: exportsThis.id,
|
|
2691
|
+
value: { kind: "dynObjLit", fields: [], type: DYN, loc: loc0 },
|
|
2692
|
+
loc: loc0,
|
|
2693
|
+
});
|
|
2694
|
+
}
|
|
2695
|
+
// Reassigned function declarations are initialized when the module
|
|
2696
|
+
// starts, as declarations are hoisted: before its dependencies run, so
|
|
2697
|
+
// a module of an import cycle can call one while it initializes. Their
|
|
2698
|
+
// statements then lower to nothing (rebindable-functions.ts).
|
|
2699
|
+
for (const stmt of stmts) {
|
|
2700
|
+
if (!ts.isFunctionDeclaration(stmt) || !stmt.name || !isRebindableFunction(lowerer, stmt))
|
|
2701
|
+
continue;
|
|
2702
|
+
const g = lowerer.globalsByDeclNode.get(stmt);
|
|
2703
|
+
if (!g)
|
|
2704
|
+
continue;
|
|
2705
|
+
header.push({
|
|
2706
|
+
kind: "assign",
|
|
2707
|
+
localId: g.id,
|
|
2708
|
+
value: lowerer.coerceToExpected(lowerer.lowerLambda(stmt), DYN),
|
|
2709
|
+
loc: locOf(stmt),
|
|
2710
|
+
});
|
|
2711
|
+
ctx.hoistedFnDecls.add(stmt);
|
|
2712
|
+
}
|
|
2395
2713
|
for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
|
|
2396
2714
|
const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
|
|
2397
2715
|
if (npm !== undefined && npm.length > 0) {
|
|
@@ -2446,6 +2764,12 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2446
2764
|
}
|
|
2447
2765
|
else {
|
|
2448
2766
|
header.push({ kind: "exprStmt", expr: call, loc });
|
|
2767
|
+
// An ES-module importer links a CommonJS dependency: Node
|
|
2768
|
+
// copies its lexer-visible exports here.
|
|
2769
|
+
if ((ts.isImportDeclaration(stmt) || ts.isExportDeclaration(stmt)) &&
|
|
2770
|
+
!isCjsJsFile(sf, lowerer.program) &&
|
|
2771
|
+
isCjsJsFile(dep, lowerer.program))
|
|
2772
|
+
header.push(...cjsAccessorSnapshotStores(lowerer, dep, loc));
|
|
2449
2773
|
}
|
|
2450
2774
|
}
|
|
2451
2775
|
}
|
|
@@ -2501,12 +2825,27 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2501
2825
|
// a function called above the declaration reads `undefined`, exactly
|
|
2502
2826
|
// Node); checked-dynamic var globals hold the dyn undefined the same
|
|
2503
2827
|
// way. After the guard: a cache-hit revisit must not reset them.
|
|
2828
|
+
// A union slot the body retypes checked-dynamic (lowerVarDecl: a
|
|
2829
|
+
// JavaScript var initialized with an existing checked-dynamic object)
|
|
2830
|
+
// gets the dyn undefined once the body has lowered.
|
|
2831
|
+
const unionEntryInits = [];
|
|
2504
2832
|
for (const g of lowerer.varGlobalEntryInits.get(sf) ?? []) {
|
|
2505
2833
|
if (g.type.kind !== "union" && g.type.kind !== "dyn")
|
|
2506
2834
|
continue;
|
|
2507
2835
|
const wrapped = g.type.kind === "dyn" ? dynUndefinedExpr(loc0) : lowerer.unassignedSlotInit(g.type, loc0);
|
|
2508
2836
|
if (wrapped) {
|
|
2509
|
-
|
|
2837
|
+
if (g.type.kind === "union")
|
|
2838
|
+
unionEntryInits.push({ at: header.length, g });
|
|
2839
|
+
// A let global whose early reads are checked (initFlag) only
|
|
2840
|
+
// gets its storage filled here: this is not the source write, so
|
|
2841
|
+
// it must neither run the TDZ check nor set the flag.
|
|
2842
|
+
header.push({
|
|
2843
|
+
kind: "assign",
|
|
2844
|
+
localId: g.id,
|
|
2845
|
+
value: wrapped,
|
|
2846
|
+
...(g.initFlag !== undefined ? { initializes: true } : {}),
|
|
2847
|
+
loc: loc0,
|
|
2848
|
+
});
|
|
2510
2849
|
}
|
|
2511
2850
|
}
|
|
2512
2851
|
const prelude = lowerer.jsonInitActions.get(sf) ?? [];
|
|
@@ -2526,7 +2865,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2526
2865
|
c.decl &&
|
|
2527
2866
|
ts.isClassDeclaration(c.decl) &&
|
|
2528
2867
|
!c.mixinInstance &&
|
|
2529
|
-
c.decl
|
|
2868
|
+
ts.getSourceFileOfNode(c.decl) === sf &&
|
|
2530
2869
|
(lowerer.classInitFlags.has(c.def.name) ||
|
|
2531
2870
|
c.callableBase !== undefined ||
|
|
2532
2871
|
c.def.baseValueGlobal !== undefined ||
|
|
@@ -2534,7 +2873,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2534
2873
|
c.staticFields.length > 0 ||
|
|
2535
2874
|
(c.staticBlocks?.length ?? 0) > 0 ||
|
|
2536
2875
|
c.classDecorators !== undefined))
|
|
2537
|
-
.map((c) => ({ pos: c.decl
|
|
2876
|
+
.map((c) => ({ pos: ts.tokenStartOfNode(c.decl), info: c }));
|
|
2538
2877
|
// Statics-bearing MIXIN instantiations whose call evaluates in THIS
|
|
2539
2878
|
// file: their declaration-time code runs when the call does — the
|
|
2540
2879
|
// top-level statement lower-mixins recorded. Insertion order is
|
|
@@ -2555,7 +2894,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2555
2894
|
// anything the statement's lowering emits. Hoisted class
|
|
2556
2895
|
// declarations never share a kept statement's start, so `<=`
|
|
2557
2896
|
// changes nothing for them.
|
|
2558
|
-
while (at < statics.length && statics[at].pos <=
|
|
2897
|
+
while (at < statics.length && statics[at].pos <= ts.tokenStartOfNode(stmt)) {
|
|
2559
2898
|
body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
|
|
2560
2899
|
at++;
|
|
2561
2900
|
}
|
|
@@ -2574,6 +2913,17 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2574
2913
|
body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
|
|
2575
2914
|
at++;
|
|
2576
2915
|
}
|
|
2916
|
+
for (const { at, g } of unionEntryInits) {
|
|
2917
|
+
if (g.type.kind !== "dyn")
|
|
2918
|
+
continue;
|
|
2919
|
+
body[at] = {
|
|
2920
|
+
kind: "assign",
|
|
2921
|
+
localId: g.id,
|
|
2922
|
+
value: dynUndefinedExpr(loc0),
|
|
2923
|
+
...(g.initFlag !== undefined ? { initializes: true } : {}),
|
|
2924
|
+
loc: loc0,
|
|
2925
|
+
};
|
|
2926
|
+
}
|
|
2577
2927
|
const moduleRef = cjsModuleRef(lowerer, sf);
|
|
2578
2928
|
if (moduleRef !== null) {
|
|
2579
2929
|
const guardedBody = body.splice(guardId !== undefined ? 2 : 0);
|
|
@@ -2726,6 +3076,7 @@ function rememberEvaluationError(lowerer, guardId, body, loc) {
|
|
|
2726
3076
|
export function buildMain(lowerer) {
|
|
2727
3077
|
const loc = { file: lowerer.entry.fileName, start: 0, end: 0 };
|
|
2728
3078
|
const body = [
|
|
3079
|
+
...lowerer.mainPrelude,
|
|
2729
3080
|
...cjsModuleRegistryPrelude(lowerer, loc),
|
|
2730
3081
|
...handleEventReaderPrelude(lowerer, loc),
|
|
2731
3082
|
];
|