@scriptc/compiler 0.3.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +960 -82
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +6 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +11 -0
- package/dist/backend/llvm/classes.js +71 -14
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +58 -8
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.js +1 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +12 -3
- package/dist/backend/llvm/dense-array-access.js +72 -14
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +59 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +28 -4
- package/dist/backend/llvm/dyn.js +324 -179
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1190 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1535 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +58 -0
- package/dist/backend/llvm/emit-statements.js +1964 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +576 -268
- package/dist/backend/llvm/emitter.js +801 -4447
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +71 -53
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +39 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +1 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +92 -63
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +132 -25
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +2 -2
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +54 -12
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +488 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +217 -24
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +102 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +77 -25
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +100 -50
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +229 -5
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +57 -8
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +2 -2
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.js +2 -2
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +151 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +70 -9
- package/dist/backend/llvm/nullable-unions.js +105 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +14 -2
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +13 -2
- package/dist/backend/llvm/record-results.js +66 -6
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +143 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +9 -6
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +1 -1
- package/dist/backend/llvm/shapes.d.ts +69 -43
- package/dist/backend/llvm/shapes.js +285 -21
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +74 -0
- package/dist/backend/llvm/speculative-integers.js +571 -0
- package/dist/backend/llvm/speculative-integers.js.map +1 -0
- package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
- package/dist/backend/llvm/speculative-integers.test.js +148 -0
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +110 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +7 -0
- package/dist/backend/mangle.js +11 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +6 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +37 -0
- package/dist/backend/native/executable.js +192 -134
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-pack-core.d.ts +9 -1
- package/dist/backend/runtime-pack-core.js +10 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +5 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -3
- package/dist/backend/runtime-pack.js +12 -6
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +20 -6
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +8 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +5 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +44 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +11 -1
- package/dist/cli/usage.js +20 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +13 -0
- package/dist/contracts/check.js +25 -6
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +19 -6
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +11 -7
- package/dist/diagnostics/diagnostic.js +35 -23
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +17 -0
- package/dist/executable/executable-cache.js +13 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +7 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +72 -4
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +45 -6
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +230 -52
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
- package/dist/frontend/lowering/builtins/crypto.js +223 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +174 -6
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +136 -113
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
- package/dist/frontend/lowering/builtins/filesystem.js +213 -76
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
- package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +232 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +67 -46
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +32 -1
- package/dist/frontend/lowering/builtins/process.js +468 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +55 -13
- package/dist/frontend/lowering/builtins/readline.js +931 -69
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +16 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +75 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +16 -0
- package/dist/frontend/lowering/builtins/workers.js +246 -3
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +19 -1
- package/dist/frontend/lowering/call-signatures.js +254 -47
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +528 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +55 -0
- package/dist/frontend/lowering/class-protocols.js +738 -22
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +80 -18
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +261 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +51 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +19 -0
- package/dist/frontend/lowering/containers/array-from-async.js +427 -0
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
- package/dist/frontend/lowering/containers/array-methods.js +89 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +161 -101
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +219 -27
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +81 -48
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
- package/dist/frontend/lowering/cycle-initialization.js +39 -0
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +238 -128
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +703 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2483 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1797 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +253 -85
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
- package/dist/frontend/lowering/expressions/property-access.js +3544 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1679 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +538 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +39 -0
- package/dist/frontend/lowering/generic-functions.js +393 -75
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +32 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1298 -452
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +50 -3
- package/dist/frontend/lowering/lower-classes.js +1499 -456
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +179 -8
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +268 -71
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1493 -12407
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +68 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +29 -16
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +354 -99
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +19 -2
- package/dist/frontend/lowering/lower-mock.js +557 -74
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +268 -61
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +45 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +638 -105
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +151 -109
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
- package/dist/frontend/lowering/lower-stmts.js +1589 -398
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +4 -3
- package/dist/frontend/lowering/lower-stream.js +714 -75
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +574 -100
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +80 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +409 -26
- package/dist/frontend/lowering/lowerer.js +1918 -305
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/null-prototype.d.ts +13 -0
- package/dist/frontend/lowering/null-prototype.js +33 -0
- package/dist/frontend/lowering/null-prototype.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +10 -10
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +15 -6
- package/dist/frontend/lowering/surfaces.js +278 -45
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.d.ts +5 -0
- package/dist/frontend/mock-shapes.js +39 -7
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
- package/dist/frontend/npm-static-bundled-chunks.js +810 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +768 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +17 -1
- package/dist/frontend/npm-static.js +167 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.js +164 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +92 -2
- package/dist/frontend/program.js +1557 -254
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +36 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +20 -1
- package/dist/frontend/services.js +40 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +5 -1
- package/dist/frontend/ts7/program-host.js +12 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +54 -24
- package/dist/frontend/ts7/semantic-model.js +88 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +11 -11
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2612 -695
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +47 -10
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +30 -0
- package/dist/ir/array-length-stability.js +236 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +113 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +139 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +655 -25
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +10 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +119 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +29 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +16 -6
- package/dist/ir/integer-loop-facts.js +143 -38
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +3 -0
- package/dist/ir/integer-ranges.js +4 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +142 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +234 -58
- package/dist/ir/ir.js +123 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +365 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +150 -33
- package/dist/ir/runtime-features.js +672 -339
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +62 -0
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +107 -94
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +220 -71
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +64 -9
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +18 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +5 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +2 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/prepare.js +7 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +12 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +21 -20
- package/surface-manifest.json +332 -36
|
@@ -14,18 +14,24 @@ import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
|
|
|
14
14
|
import { isNpmStaticPackage } from "../npm-static.js";
|
|
15
15
|
import { isJsSourceFileName } from "../tsc-codes.js";
|
|
16
16
|
import { isRelativeSpecifier } from "../workspace-registry.js";
|
|
17
|
-
import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, resolveImport, resolveNpmImport, } from "../program.js";
|
|
17
|
+
import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportChainOf, cjsVoidInitPreambleReals, cjsExportDiscardReason, cjsExportTargetLiteral, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, requireSpecOf, resolveImport, resolveNpmImport, } from "../program.js";
|
|
18
18
|
import { markCycleEarlyBindings, withClassInitFlag, withCycleInitFlags, } from "./cycle-initialization.js";
|
|
19
|
+
import { markRequireEarlyBindings } from "./require-initialization.js";
|
|
20
|
+
import { cjsTableMethodEntry, inlineProgramRequireOf, nestedCjsExportAssignmentsOf, requireNestedPatternsOf, } from "./cjs-inline-require.js";
|
|
21
|
+
import { isDeadTscHelperDecl, tscInteropBindingOfDecl } from "./cjs-tsc-interop.js";
|
|
22
|
+
import { collectJsonRequires, isJsonRequireDecl } from "./json-require.js";
|
|
19
23
|
import { invalidJsonModuleDiag, unsupportedPackageImportDiag, } from "../../diagnostics/diagnostic.js";
|
|
20
24
|
import { BOOL, CAUGHT, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
|
|
21
25
|
import { ENTRY_NAME, PoisonError, boundIdentifiersOf, dynFallbackType, newFnCtx, staticImportNamespaceType, } from "./lowerer.js";
|
|
22
26
|
import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireNamespaceDecl, createRequireProgramModuleDecl, } from "./builtins/module-bindings.js";
|
|
23
27
|
import { isPromisifyCall, registerBuiltinCallableAlias } from "./builtins/callable-aliases.js";
|
|
28
|
+
import { registerBuiltinClassAlias } from "./builtins/class-values.js";
|
|
24
29
|
import { stripTypeCasts } from "./builtins/arguments.js";
|
|
30
|
+
import { isWebCryptoMemberType } from "./builtins/webcrypto.js";
|
|
25
31
|
import { bindingContextualGenericFnNodeOf, bindingGenericFnAliasInfoOf, bindingGenericFnInfoOf, bindingGenericFnNodeOf, implicitLocalFnInfoOf, implicitLocalFnNodeOf, } from "./generic-functions.js";
|
|
26
32
|
import { bindingNeverReassigned, deadUnmappableBinding, nullishGenericBindingUnitOf, } from "./binding-analysis.js";
|
|
27
33
|
import { funcTypeFromParamShapes, registerOverloadedCallableAlias } from "./call-signatures.js";
|
|
28
|
-
import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, } from "./lower-stmts.js";
|
|
34
|
+
import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, stdlibBufferVarAlias, } from "./lower-stmts.js";
|
|
29
35
|
import { objectFactoryGlobalType } from "./object-factory-new.js";
|
|
30
36
|
import { streamClassAliasDecl } from "./lower-stream.js";
|
|
31
37
|
import { isAssertClassNew } from "./assert-instances.js";
|
|
@@ -42,6 +48,8 @@ import { forkTargetPaths } from "../fork-target.js";
|
|
|
42
48
|
import { workerTargetPaths } from "../worker-target.js";
|
|
43
49
|
import { isNativeProxyInitializer } from "./expressions/native-proxy.js";
|
|
44
50
|
import { handleEventReaderPrelude } from "./lower-event-target.js";
|
|
51
|
+
import { cjsAccessorSnapshotStores, jsHoldsDynObject } from "./lower-exprs.js";
|
|
52
|
+
import { keptIdentityAssertion } from "./assertion-identity.js";
|
|
45
53
|
/** Program modules selected by statically resolved child_process.fork()
|
|
46
54
|
* calls join the compiled graph without becoming startup dependencies of
|
|
47
55
|
* the parent entry. Their guarded init functions are selected by %main only
|
|
@@ -113,7 +121,7 @@ export function splitFiles(lowerer) {
|
|
|
113
121
|
const files = lowerer.moduleOrder.length > 0 ? lowerer.moduleOrder : [lowerer.entry];
|
|
114
122
|
return files.map((sf) => {
|
|
115
123
|
const fp = { sf, fnDecls: [], classDecls: [], topStmts: [] };
|
|
116
|
-
for (const stmt of sf.statements) {
|
|
124
|
+
for (const stmt of sf.statements.nodes) {
|
|
117
125
|
if (ts.isFunctionDeclaration(stmt))
|
|
118
126
|
fp.fnDecls.push(stmt);
|
|
119
127
|
else if (ts.isClassDeclaration(stmt))
|
|
@@ -162,9 +170,9 @@ function dynamicProgramImportsOf(program, sf) {
|
|
|
162
170
|
ts.walkPreorder(sf, (node) => {
|
|
163
171
|
if (ts.isCallExpression(node) &&
|
|
164
172
|
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);
|
|
173
|
+
node.arguments.nodes[0] !== undefined &&
|
|
174
|
+
ts.isStringLiteralLike(node.arguments.nodes[0])) {
|
|
175
|
+
const dep = dynamicImportProgramTargetOf(program, sf, node.arguments.nodes[0].text);
|
|
168
176
|
if (dep && !seen.has(dep)) {
|
|
169
177
|
seen.add(dep);
|
|
170
178
|
out.push(dep);
|
|
@@ -233,7 +241,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
233
241
|
const computed = new Set();
|
|
234
242
|
for (const fp of parts)
|
|
235
243
|
for (const decl of fp.classDecls) {
|
|
236
|
-
const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
|
|
244
|
+
const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
|
|
237
245
|
if (heritage && ts.isCallExpression(heritage))
|
|
238
246
|
computed.add(decl);
|
|
239
247
|
}
|
|
@@ -249,7 +257,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
249
257
|
for (const decl of fp.classDecls) {
|
|
250
258
|
if (computed.has(decl))
|
|
251
259
|
continue;
|
|
252
|
-
const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
|
|
260
|
+
const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
|
|
253
261
|
const base = heritage && ts.isIdentifier(heritage) ? lowerer.resolveValueSymbol(heritage) : undefined;
|
|
254
262
|
if (!base || !computedSymbols.has(base))
|
|
255
263
|
continue;
|
|
@@ -286,6 +294,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
286
294
|
lowerer.collectGlobals(fp.sf, fp.topStmts);
|
|
287
295
|
lowerer.collectNpmImports(parts);
|
|
288
296
|
lowerer.collectJsonImports(parts);
|
|
297
|
+
collectJsonRequires(lowerer, parts);
|
|
289
298
|
}
|
|
290
299
|
finally {
|
|
291
300
|
lowerer.diagSink = null;
|
|
@@ -296,6 +305,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
296
305
|
lowerer.collectGlobals(fp.sf, fp.topStmts);
|
|
297
306
|
lowerer.collectNpmImports(parts);
|
|
298
307
|
lowerer.collectJsonImports(parts);
|
|
308
|
+
collectJsonRequires(lowerer, parts);
|
|
299
309
|
}
|
|
300
310
|
for (const decl of computed) {
|
|
301
311
|
const symbol = declSymbolOf(lowerer, decl);
|
|
@@ -304,7 +314,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
304
314
|
const previousSink = lowerer.diagSink;
|
|
305
315
|
const deferred = [];
|
|
306
316
|
lowerer.diagSink = deferred;
|
|
307
|
-
const expression = decl.heritageClauses.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types[0].expression;
|
|
317
|
+
const expression = decl.heritageClauses.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types.nodes[0].expression;
|
|
308
318
|
const context = newFnCtx(false, null, null, DYN);
|
|
309
319
|
lowerer.fnStack.push(context);
|
|
310
320
|
try {
|
|
@@ -376,11 +386,12 @@ export function collectProgram(lowerer, parts) {
|
|
|
376
386
|
lowerer.collecting = wasCollecting;
|
|
377
387
|
}
|
|
378
388
|
markCycleEarlyBindings(lowerer);
|
|
389
|
+
markRequireEarlyBindings(lowerer);
|
|
379
390
|
}
|
|
380
391
|
export function collectNpmImports(lowerer, parts) {
|
|
381
392
|
const entryPackageFile = entryPackageFilePredicate(lowerer.entry.fileName);
|
|
382
393
|
for (const fp of parts) {
|
|
383
|
-
for (const stmt of fp.sf.statements) {
|
|
394
|
+
for (const stmt of fp.sf.statements.nodes) {
|
|
384
395
|
// NAMED re-exports from npm packages (`export { isUrl } from
|
|
385
396
|
// "url-or-path"`): use the same package bindings as direct imports.
|
|
386
397
|
const reexport = ts.isExportDeclaration(stmt) &&
|
|
@@ -389,7 +400,7 @@ export function collectNpmImports(lowerer, parts) {
|
|
|
389
400
|
ts.isStringLiteral(stmt.moduleSpecifier) &&
|
|
390
401
|
stmt.exportClause !== undefined &&
|
|
391
402
|
ts.isNamedExports(stmt.exportClause) &&
|
|
392
|
-
stmt.exportClause.elements.some((e) => !e.isTypeOnly) &&
|
|
403
|
+
stmt.exportClause.elements.nodes.some((e) => !e.isTypeOnly) &&
|
|
393
404
|
!stmt.moduleSpecifier.text.startsWith("#")
|
|
394
405
|
? stmt.exportClause
|
|
395
406
|
: null;
|
|
@@ -407,7 +418,7 @@ export function collectNpmImports(lowerer, parts) {
|
|
|
407
418
|
if (clause?.namedBindings &&
|
|
408
419
|
ts.isNamedImports(clause.namedBindings) &&
|
|
409
420
|
!clause.name &&
|
|
410
|
-
clause.namedBindings.elements.every((e) => e.isTypeOnly)) {
|
|
421
|
+
clause.namedBindings.elements.nodes.every((e) => e.isTypeOnly)) {
|
|
411
422
|
continue;
|
|
412
423
|
}
|
|
413
424
|
const spec = specNode.text;
|
|
@@ -492,10 +503,10 @@ function collectDynamicImports(lowerer, sf) {
|
|
|
492
503
|
ts.walkPreorder(sf, (node) => {
|
|
493
504
|
if (ts.isCallExpression(node) &&
|
|
494
505
|
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;
|
|
506
|
+
node.arguments.nodes.length >= 1 &&
|
|
507
|
+
node.arguments.nodes[0] !== undefined &&
|
|
508
|
+
ts.isStringLiteralLike(node.arguments.nodes[0])) {
|
|
509
|
+
const spec = node.arguments.nodes[0].text;
|
|
499
510
|
if (lowerer.externalTypes.has(spec)) {
|
|
500
511
|
return undefined;
|
|
501
512
|
}
|
|
@@ -506,11 +517,9 @@ function collectDynamicImports(lowerer, sf) {
|
|
|
506
517
|
// module has no runtime namespace object — the per-site fence
|
|
507
518
|
// says so. Only non-declaration source files count; a sibling
|
|
508
519
|
// .d.mts typing shipped JS is the EMBED case, not this one.
|
|
509
|
-
const modSym = lowerer.checker.getSymbolAtLocation(node.arguments[0]);
|
|
520
|
+
const modSym = lowerer.checker.getSymbolAtLocation(node.arguments.nodes[0]);
|
|
510
521
|
const ownModule = modSym !== undefined &&
|
|
511
|
-
|
|
512
|
-
.declarationsOf(modSym)
|
|
513
|
-
.some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
|
|
522
|
+
modSym.declarations.some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
|
|
514
523
|
const builtin = canonicalBuiltinModule(spec);
|
|
515
524
|
const res = ownModule
|
|
516
525
|
? { kind: "program-module" }
|
|
@@ -540,7 +549,7 @@ function collectDynamicImports(lowerer, sf) {
|
|
|
540
549
|
* and kept .json files out of the module order. */
|
|
541
550
|
export function collectJsonImports(lowerer, parts) {
|
|
542
551
|
for (const fp of parts) {
|
|
543
|
-
for (const stmt of fp.sf.statements) {
|
|
552
|
+
for (const stmt of fp.sf.statements.nodes) {
|
|
544
553
|
if (!ts.isImportDeclaration(stmt) || !ts.isStringLiteral(stmt.moduleSpecifier))
|
|
545
554
|
continue;
|
|
546
555
|
const clause = stmt.importClause;
|
|
@@ -550,7 +559,9 @@ export function collectJsonImports(lowerer, parts) {
|
|
|
550
559
|
if (!nameSym || !(nameSym.flags & ts.SymbolFlags.Alias))
|
|
551
560
|
continue;
|
|
552
561
|
const target = lowerer.checker.getAliasedSymbol(nameSym);
|
|
553
|
-
const jsonSf =
|
|
562
|
+
const jsonSf = target.declarations.length === 0
|
|
563
|
+
? undefined
|
|
564
|
+
: ts.getSourceFileOfNode(target.declarations[0]);
|
|
554
565
|
if (!jsonSf || !jsonSf.fileName.endsWith(".json"))
|
|
555
566
|
continue;
|
|
556
567
|
try {
|
|
@@ -694,6 +705,7 @@ export function moduleArtifacts(lowerer, functions) {
|
|
|
694
705
|
case "recordKeyGet":
|
|
695
706
|
case "recordOvfKeys":
|
|
696
707
|
case "recordOvfHas":
|
|
708
|
+
case "recordNullProto":
|
|
697
709
|
case "recordHas":
|
|
698
710
|
visitShape(node.shapeId);
|
|
699
711
|
break;
|
|
@@ -727,6 +739,14 @@ export function moduleArtifacts(lowerer, functions) {
|
|
|
727
739
|
valueInstanceOfRoots.add(root.def.name);
|
|
728
740
|
}
|
|
729
741
|
break;
|
|
742
|
+
case "libCall":
|
|
743
|
+
// The general stream representation's child stdio read bridges
|
|
744
|
+
// through the runtime install that boxes both stream classes.
|
|
745
|
+
if (node.fn === "child.stdioStream") {
|
|
746
|
+
visitClass("%Readable");
|
|
747
|
+
visitClass("%Writable");
|
|
748
|
+
}
|
|
749
|
+
break;
|
|
730
750
|
case "dynFrom":
|
|
731
751
|
if (boxedChild(node.value.type)) {
|
|
732
752
|
// A generic child can expose native stdio without importing stream.
|
|
@@ -918,7 +938,7 @@ function checkedGlobalReference(lowerer, expression) {
|
|
|
918
938
|
!ts.isIdentifier(expression.expression))
|
|
919
939
|
return false;
|
|
920
940
|
const root = lowerer.checker.getSymbolAtLocation(expression.expression);
|
|
921
|
-
const namespace = root &&
|
|
941
|
+
const namespace = root && root.declarations.some(ts.isNamespaceImport);
|
|
922
942
|
return ((namespace || lowerer.cjsLocalModuleBindingOf(expression.expression)) &&
|
|
923
943
|
lowerer.globalOf(expression.name)?.type.kind === "dyn");
|
|
924
944
|
}
|
|
@@ -936,8 +956,8 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
936
956
|
ts.isPropertyAccessExpression(e.expression) &&
|
|
937
957
|
["freeze", "seal", "preventExtensions"].includes(e.expression.name.text) &&
|
|
938
958
|
lowerer.stdlibGlobalMember(e.expression, "Object") !== null &&
|
|
939
|
-
e.arguments[0] &&
|
|
940
|
-
ts.isArrayLiteralExpression(e.arguments[0]))
|
|
959
|
+
e.arguments.nodes[0] &&
|
|
960
|
+
ts.isArrayLiteralExpression(e.arguments.nodes[0]))
|
|
941
961
|
return true;
|
|
942
962
|
// The built-in Array constructor can create an evolving array whose
|
|
943
963
|
// inferred element type has no native mapping. Its checked reference
|
|
@@ -1000,8 +1020,8 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
1000
1020
|
return true;
|
|
1001
1021
|
}
|
|
1002
1022
|
if ((ts.isFunctionExpression(e) || ts.isArrowFunction(e)) &&
|
|
1003
|
-
!e.typeParameters?.length &&
|
|
1004
|
-
isJsSourceFile(
|
|
1023
|
+
!e.typeParameters?.nodes.length &&
|
|
1024
|
+
isJsSourceFile(ts.getSourceFileOfNode(e)))
|
|
1005
1025
|
return true;
|
|
1006
1026
|
if (ts.isIdentifier(e) || ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
|
|
1007
1027
|
if (ts.isIdentifier(e)) {
|
|
@@ -1077,10 +1097,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1077
1097
|
continue;
|
|
1078
1098
|
if (symbol.flags & ts.SymbolFlags.Alias) {
|
|
1079
1099
|
const target = lowerer.checker.getAliasedSymbol(symbol);
|
|
1080
|
-
const vd =
|
|
1100
|
+
const vd = target.valueDeclaration;
|
|
1081
1101
|
const mutableVar = vd !== undefined &&
|
|
1082
1102
|
ts.isVariableDeclaration(vd) &&
|
|
1083
|
-
!
|
|
1103
|
+
!ts.getSourceFileOfNode(vd).isDeclarationFile &&
|
|
1084
1104
|
(ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
|
|
1085
1105
|
// Immutable targets: alias plumbing — importers resolve to the
|
|
1086
1106
|
// target's storage (the alias-resolved read IS the snapshot when
|
|
@@ -1103,7 +1123,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1103
1123
|
!isJsSourceFile(sf) &&
|
|
1104
1124
|
inner.typeParameters === undefined &&
|
|
1105
1125
|
(decoratorNodesOf(inner).length > 0 ||
|
|
1106
|
-
inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
1126
|
+
inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
1107
1127
|
guaranteedDecorationThrow(lowerer, inner) !== null) {
|
|
1108
1128
|
continue;
|
|
1109
1129
|
}
|
|
@@ -1190,7 +1210,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1190
1210
|
if (vG) {
|
|
1191
1211
|
if (!vG.mutable) {
|
|
1192
1212
|
lowerer.globalsBySymbol.set(symbol, vG);
|
|
1193
|
-
for (const d of
|
|
1213
|
+
for (const d of symbol.declarations)
|
|
1194
1214
|
lowerer.globalsByDeclNode.set(d, vG);
|
|
1195
1215
|
return;
|
|
1196
1216
|
}
|
|
@@ -1201,7 +1221,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1201
1221
|
mutable: false,
|
|
1202
1222
|
};
|
|
1203
1223
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1204
|
-
for (const d of
|
|
1224
|
+
for (const d of symbol.declarations)
|
|
1205
1225
|
lowerer.globalsByDeclNode.set(d, g);
|
|
1206
1226
|
lowerer.globalsList.push(g);
|
|
1207
1227
|
return;
|
|
@@ -1212,7 +1232,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1212
1232
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1213
1233
|
// Importer aliases resolve to a DISTINCT late-bound symbol with
|
|
1214
1234
|
// the same declaration — key the node too (globalOf's fallback).
|
|
1215
|
-
for (const d of
|
|
1235
|
+
for (const d of symbol.declarations)
|
|
1216
1236
|
lowerer.globalsByDeclNode.set(d, g);
|
|
1217
1237
|
lowerer.globalsList.push(g);
|
|
1218
1238
|
}
|
|
@@ -1224,6 +1244,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1224
1244
|
deferJsCollectionDiags(lowerer, sf, diagsBefore);
|
|
1225
1245
|
}
|
|
1226
1246
|
};
|
|
1247
|
+
// Export members assigned in VALUE position at the module's top
|
|
1248
|
+
// level (`const src = exports.src = []`) are exports too.
|
|
1249
|
+
for (const nested of nestedCjsExportAssignmentsOf(stmt, cjs?.expr)) {
|
|
1250
|
+
registerExport(nested.name, nested.name.text, nested.value);
|
|
1251
|
+
}
|
|
1227
1252
|
if (cjs?.kind === "member" && ts.isIdentifier(cjs.name)) {
|
|
1228
1253
|
// `exports.C = C` naming a CLASS declaration: alias plumbing —
|
|
1229
1254
|
// no storage (a class VALUE global would fence for
|
|
@@ -1232,6 +1257,20 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1232
1257
|
// applies unchanged.
|
|
1233
1258
|
if (lowerer.cjsMemberExportClassSymbol(cjs.expr) !== null)
|
|
1234
1259
|
continue;
|
|
1260
|
+
// A chain `exports.a = exports.b = value`: every member is an
|
|
1261
|
+
// export holding the chain's one value.
|
|
1262
|
+
const chain = cjsExportChainOf(cjs.expr);
|
|
1263
|
+
if (chain !== null) {
|
|
1264
|
+
for (const nameNode of chain.names)
|
|
1265
|
+
registerExport(nameNode, nameNode.text, chain.value);
|
|
1266
|
+
continue;
|
|
1267
|
+
}
|
|
1268
|
+
// A dropped tsc void-init preamble whose real assignment is such a
|
|
1269
|
+
// class alias registers nothing either: storage here would never
|
|
1270
|
+
// be assigned, and importers would read it instead of the class.
|
|
1271
|
+
const real = cjsVoidInitPreambleReals(cjs)?.get(cjs.name.text);
|
|
1272
|
+
if (real && lowerer.cjsMemberExportClassSymbol(real.expr) !== null)
|
|
1273
|
+
continue;
|
|
1235
1274
|
registerExport(cjs.name, cjs.name.text, cjs.value);
|
|
1236
1275
|
continue;
|
|
1237
1276
|
}
|
|
@@ -1264,7 +1303,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1264
1303
|
// statement lowering evaluates the call exactly once at its
|
|
1265
1304
|
// source position and assigns that slot. Unmappable calls retain
|
|
1266
1305
|
// the existing statement-level fence.
|
|
1267
|
-
|
|
1306
|
+
// Any other computed value (`os.homedir || function () {…}`,
|
|
1307
|
+
// `cond ? a : b`, `new Registry()`, `ns.member`) is the same single
|
|
1308
|
+
// snapshot: Node stores whatever the expression produced. A
|
|
1309
|
+
// require() of a program module is not: the exporter re-exports
|
|
1310
|
+
// that module's exports, which requirers resolve through the
|
|
1311
|
+
// checker's alias (the statement lowers to the dep's %init).
|
|
1312
|
+
const factoryValued = !ts.isIdentifier(rhs) &&
|
|
1313
|
+
!ts.isClassExpression(rhs) &&
|
|
1314
|
+
!ts.isObjectLiteralExpression(rhs) &&
|
|
1315
|
+
!(requireSpecOf(rhs) !== null &&
|
|
1316
|
+
inlineProgramRequireOf(lowerer, rhs) !== null &&
|
|
1317
|
+
!sf.statements.nodes.some((s) => cjsExportAssignmentOf(s)?.kind === "member")) &&
|
|
1318
|
+
cjsExportTargetLiteral(rhs, sf) === null;
|
|
1268
1319
|
if (cjsScalarLiteral(rhs) || fnValued || factoryValued) {
|
|
1269
1320
|
const diagsBefore = lowerer.diags.length;
|
|
1270
1321
|
try {
|
|
@@ -1295,7 +1346,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1295
1346
|
continue;
|
|
1296
1347
|
}
|
|
1297
1348
|
if (cjs?.kind === "table" && cjs.obj) {
|
|
1298
|
-
for (const prop of cjs.obj.properties) {
|
|
1349
|
+
for (const prop of cjs.obj.properties.nodes) {
|
|
1299
1350
|
if (ts.isShorthandPropertyAssignment(prop))
|
|
1300
1351
|
continue; // alias plumbing
|
|
1301
1352
|
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.initializer))
|
|
@@ -1303,6 +1354,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1303
1354
|
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
|
|
1304
1355
|
registerExport(prop.name, prop.name.text, prop.initializer);
|
|
1305
1356
|
}
|
|
1357
|
+
// A METHOD entry (`module.exports = { f(x) { … } }`) is an
|
|
1358
|
+
// expression-valued export whose value is the method's function.
|
|
1359
|
+
const method = cjsTableMethodEntry(prop);
|
|
1360
|
+
if (method !== null)
|
|
1361
|
+
registerExport(method.name, method.name.text, method.name);
|
|
1306
1362
|
// other property forms fence in the statement lowering
|
|
1307
1363
|
}
|
|
1308
1364
|
continue;
|
|
@@ -1327,10 +1383,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1327
1383
|
lowerer.globalsBySymbol.has(aliasSym))
|
|
1328
1384
|
continue;
|
|
1329
1385
|
const target = lowerer.checker.getAliasedSymbol(aliasSym);
|
|
1330
|
-
const vd =
|
|
1386
|
+
const vd = target.valueDeclaration;
|
|
1331
1387
|
const mutableVar = vd !== undefined &&
|
|
1332
1388
|
ts.isVariableDeclaration(vd) &&
|
|
1333
|
-
!
|
|
1389
|
+
!ts.getSourceFileOfNode(vd).isDeclarationFile &&
|
|
1334
1390
|
(ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
|
|
1335
1391
|
if (!mutableVar)
|
|
1336
1392
|
continue;
|
|
@@ -1343,7 +1399,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1343
1399
|
if (type.kind === "void")
|
|
1344
1400
|
lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
|
|
1345
1401
|
const g = {
|
|
1346
|
-
id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${
|
|
1402
|
+
id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${ts.tokenStartOfNode(stmt)}`,
|
|
1347
1403
|
name: stmt.name.text,
|
|
1348
1404
|
type,
|
|
1349
1405
|
mutable: false,
|
|
@@ -1368,6 +1424,14 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1368
1424
|
collectNestedVarGlobals(lowerer, sf, stmt, tag);
|
|
1369
1425
|
continue;
|
|
1370
1426
|
}
|
|
1427
|
+
// tsc's interop bindings and its then-dead helper declarations own no
|
|
1428
|
+
// storage either (cjs-tsc-interop.ts).
|
|
1429
|
+
if (isJsSourceFile(sf) &&
|
|
1430
|
+
(isDeadTscHelperDecl(lowerer, stmt) ||
|
|
1431
|
+
(stmt.declarationList.declarations.nodes.length === 1 &&
|
|
1432
|
+
tscInteropBindingOfDecl(lowerer, stmt.declarationList.declarations.nodes[0]) !== null))) {
|
|
1433
|
+
continue;
|
|
1434
|
+
}
|
|
1371
1435
|
// CommonJS require declarations are alias plumbing (preflight owns
|
|
1372
1436
|
// the module edges; resolveValueSymbol routes reads through to the
|
|
1373
1437
|
// exporter's declarations): no storage, and the statement lowers to
|
|
@@ -1377,12 +1441,45 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1377
1441
|
// binding lower via the process surface.
|
|
1378
1442
|
if (isRequireStatement(stmt) &&
|
|
1379
1443
|
!(ts.isVariableStatement(stmt) &&
|
|
1380
|
-
stmt.declarationList.declarations.some((decl) => isNativeFfiRequire(lowerer, decl.initializer)))) {
|
|
1444
|
+
stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
|
|
1381
1445
|
if (ts.isVariableStatement(stmt) && (stmt.declarationList.flags & ts.NodeFlags.Const) !== 0) {
|
|
1382
|
-
for (const decl of stmt.declarationList.declarations) {
|
|
1446
|
+
for (const decl of stmt.declarationList.declarations.nodes) {
|
|
1383
1447
|
stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
|
|
1384
1448
|
}
|
|
1385
1449
|
}
|
|
1450
|
+
// `const { codes: { ERR_X } } = require("./errors")`: the outer
|
|
1451
|
+
// keys stay alias plumbing, but a nested pattern destructures the
|
|
1452
|
+
// export's value at the require, so its bindings own storage like
|
|
1453
|
+
// any destructured declaration (lowerVarDeclarator assigns them).
|
|
1454
|
+
if (ts.isVariableStatement(stmt)) {
|
|
1455
|
+
const isLetList = (stmt.declarationList.flags & ts.NodeFlags.Let) !== 0 ||
|
|
1456
|
+
(stmt.declarationList.flags & ts.NodeFlags.BlockScoped) === 0;
|
|
1457
|
+
for (const decl of stmt.declarationList.declarations.nodes) {
|
|
1458
|
+
for (const element of requireNestedPatternsOf(decl)) {
|
|
1459
|
+
for (const nameNode of boundIdentifiersOf(element.name)) {
|
|
1460
|
+
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1461
|
+
if (!symbol || lowerer.globalsBySymbol.has(symbol))
|
|
1462
|
+
continue;
|
|
1463
|
+
const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
|
|
1464
|
+
const type = mapped && mapped.kind !== "void" ? mapped : DYN;
|
|
1465
|
+
const g = {
|
|
1466
|
+
id: `%g.${tag}${nameNode.text}`,
|
|
1467
|
+
name: nameNode.text,
|
|
1468
|
+
type,
|
|
1469
|
+
mutable: isLetList,
|
|
1470
|
+
source: bindingSource(nameNode),
|
|
1471
|
+
...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
|
|
1472
|
+
? { tdz: true }
|
|
1473
|
+
: {}),
|
|
1474
|
+
};
|
|
1475
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
1476
|
+
lowerer.globalsList.push(g);
|
|
1477
|
+
if (isVarDeclared(decl))
|
|
1478
|
+
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1386
1483
|
continue;
|
|
1387
1484
|
}
|
|
1388
1485
|
// `declare const __VERSION__: string` — AMBIENT: no storage exists
|
|
@@ -1390,7 +1487,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1390
1487
|
// exactly like running the source under Node). Reads lower to
|
|
1391
1488
|
// Node's ReferenceError at the access (lower-exprs), and the
|
|
1392
1489
|
// statement itself lowers to nothing.
|
|
1393
|
-
if (ts.getCombinedModifierFlags(stmt.declarationList.declarations[0]) &
|
|
1490
|
+
if (ts.getCombinedModifierFlags(stmt.declarationList.declarations.nodes[0]) &
|
|
1491
|
+
ts.ModifierFlags.Ambient)
|
|
1394
1492
|
continue;
|
|
1395
1493
|
const list = stmt.declarationList;
|
|
1396
1494
|
if ((list.flags & ts.NodeFlags.Using) !== 0)
|
|
@@ -1404,8 +1502,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1404
1502
|
// (`%g.e.A%B.x`), so `namespace A { export const x }` and a
|
|
1405
1503
|
// top-level `const x` never collide; non-exported members add the
|
|
1406
1504
|
// declaring block's position (block-local bindings).
|
|
1407
|
-
const nsPrefix = nsPathPrefix(stmt, list.declarations[0]);
|
|
1408
|
-
for (const decl of list.declarations) {
|
|
1505
|
+
const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
|
|
1506
|
+
for (const decl of list.declarations.nodes) {
|
|
1409
1507
|
// --provenance-sources: an elided pure-annotated dead const in a
|
|
1410
1508
|
// fetched source module registers no global (the statement
|
|
1411
1509
|
// lowering emits nothing by the same test — see
|
|
@@ -1531,6 +1629,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1531
1629
|
continue;
|
|
1532
1630
|
if (isConst && registerBuiltinCallableAlias(lowerer, decl.name, decl.initializer))
|
|
1533
1631
|
continue;
|
|
1632
|
+
if (registerBuiltinClassAlias(lowerer, decl.name, decl.initializer))
|
|
1633
|
+
continue;
|
|
1534
1634
|
// `const f = (x) => ...` at file scope of an npm-static JS file
|
|
1535
1635
|
// whose params are implicit-any: the implicit-monomorphization
|
|
1536
1636
|
// twin of the generic binding above — no global exists; calls and
|
|
@@ -1643,6 +1743,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1643
1743
|
// stdlibGlobalAliasDecl; the statement lowering skips it by the
|
|
1644
1744
|
// same test).
|
|
1645
1745
|
const stableStdlibAlias = isConst ||
|
|
1746
|
+
stdlibBufferVarAlias(lowerer, decl) ||
|
|
1646
1747
|
((list.flags & ts.NodeFlags.Let) !== 0 &&
|
|
1647
1748
|
ts.isIdentifier(decl.name) &&
|
|
1648
1749
|
stdlibGlobalAliasNameOf(lowerer, decl.initializer) !== null &&
|
|
@@ -1666,7 +1767,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1666
1767
|
decl.initializer &&
|
|
1667
1768
|
!decl.type &&
|
|
1668
1769
|
!hasJsTypeAnnotation(decl) &&
|
|
1669
|
-
!lowerer.mapTypeOf(lowerer.typeOf(nameNode))
|
|
1770
|
+
(!lowerer.mapTypeOf(lowerer.typeOf(nameNode)) ||
|
|
1771
|
+
isWebCryptoMemberType(lowerer, lowerer.typeOf(nameNode)))) {
|
|
1670
1772
|
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1671
1773
|
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1672
1774
|
const g = {
|
|
@@ -1716,6 +1818,31 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1716
1818
|
}
|
|
1717
1819
|
continue;
|
|
1718
1820
|
}
|
|
1821
|
+
// A file-scope binding of an assertion of the global object
|
|
1822
|
+
// (`const state = globalThis as { [KEY]?: State }`): the binding
|
|
1823
|
+
// holds that object, so writes through it reach the object other
|
|
1824
|
+
// modules read (assertion-identity.ts).
|
|
1825
|
+
const asserted = decl.initializer
|
|
1826
|
+
? keptIdentityAssertion(lowerer, decl.initializer)
|
|
1827
|
+
: undefined;
|
|
1828
|
+
if (nameNode === decl.name && !decl.type && asserted) {
|
|
1829
|
+
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1830
|
+
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1831
|
+
const g = {
|
|
1832
|
+
id: `%g.${tag}${nsPrefix}${nameNode.text}`,
|
|
1833
|
+
name: nameNode.text,
|
|
1834
|
+
type: DYN,
|
|
1835
|
+
mutable: isLet,
|
|
1836
|
+
source: bindingSource(nameNode),
|
|
1837
|
+
...(!isVarDeclared(decl) ? { tdz: true } : {}),
|
|
1838
|
+
};
|
|
1839
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
1840
|
+
lowerer.globalsList.push(g);
|
|
1841
|
+
if (isVarDeclared(decl))
|
|
1842
|
+
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
1843
|
+
}
|
|
1844
|
+
continue;
|
|
1845
|
+
}
|
|
1719
1846
|
// A JS file-scope evolving ARRAY (`const mustCallChecks = [];`
|
|
1720
1847
|
// — test/common's exit-accounting ledger): the strict type
|
|
1721
1848
|
// (any[]) has no mapping, but the VALUE is the dyn array the
|
|
@@ -1754,7 +1881,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1754
1881
|
nameNode === decl.name &&
|
|
1755
1882
|
decl.initializer &&
|
|
1756
1883
|
ts.isObjectLiteralExpression(decl.initializer) &&
|
|
1757
|
-
decl.initializer.properties.some((p) => !ts.isSpreadAssignment(p) &&
|
|
1884
|
+
decl.initializer.properties.nodes.some((p) => !ts.isSpreadAssignment(p) &&
|
|
1758
1885
|
(ts.isMethodDeclaration(p) ||
|
|
1759
1886
|
ts.isAccessor(p) ||
|
|
1760
1887
|
ts.isComputedPropertyName(p.name) ||
|
|
@@ -1797,7 +1924,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1797
1924
|
nameNode === decl.name &&
|
|
1798
1925
|
decl.initializer !== undefined &&
|
|
1799
1926
|
ts.isObjectLiteralExpression(decl.initializer) &&
|
|
1800
|
-
decl.initializer.properties.every((p) => {
|
|
1927
|
+
decl.initializer.properties.nodes.every((p) => {
|
|
1801
1928
|
if (ts.isSpreadAssignment(p)) {
|
|
1802
1929
|
return (ts.isIdentifier(p.expression) &&
|
|
1803
1930
|
lowerer.globalOf(p.expression)?.type.kind === "dyn");
|
|
@@ -1823,6 +1950,35 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1823
1950
|
}
|
|
1824
1951
|
continue;
|
|
1825
1952
|
}
|
|
1953
|
+
// A JS file-scope ARRAY LITERAL holding an existing checked-dynamic
|
|
1954
|
+
// object (a file-scope object literal binding above, directly or
|
|
1955
|
+
// in a nested literal): the literal builds as a checked-dynamic
|
|
1956
|
+
// array (lowerArrayLiteral), and the binding holds it, so the
|
|
1957
|
+
// element keeps its identity.
|
|
1958
|
+
if (isJsSourceFile(sf) &&
|
|
1959
|
+
ts.isIdentifier(decl.name) &&
|
|
1960
|
+
nameNode === decl.name &&
|
|
1961
|
+
!decl.type &&
|
|
1962
|
+
!hasJsTypeAnnotation(decl) &&
|
|
1963
|
+
decl.initializer !== undefined &&
|
|
1964
|
+
ts.isArrayLiteralExpression(decl.initializer) &&
|
|
1965
|
+
jsHoldsDynObject(lowerer, decl.initializer)) {
|
|
1966
|
+
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1967
|
+
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1968
|
+
const g = {
|
|
1969
|
+
id: `%g.${tag}${nsPrefix}${nameNode.text}`,
|
|
1970
|
+
name: nameNode.text,
|
|
1971
|
+
type: DYN,
|
|
1972
|
+
mutable: isLet,
|
|
1973
|
+
source: bindingSource(nameNode),
|
|
1974
|
+
};
|
|
1975
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
1976
|
+
lowerer.globalsList.push(g);
|
|
1977
|
+
if (isVarDeclared(decl))
|
|
1978
|
+
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
1979
|
+
}
|
|
1980
|
+
continue;
|
|
1981
|
+
}
|
|
1826
1982
|
// A JS file-scope ANY-RESIDUE binding whose VALUE provably
|
|
1827
1983
|
// lives in the checked-dynamic tree: no initializer (`let catchWarning;` —
|
|
1828
1984
|
// test/common's warning ledger), a unit initializer (`let
|
|
@@ -1879,7 +2035,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1879
2035
|
: null;
|
|
1880
2036
|
const generic = member && lowerer.genericFnOf(member);
|
|
1881
2037
|
const fallback = (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)) &&
|
|
1882
|
-
!initializer.typeParameters?.length
|
|
2038
|
+
!initializer.typeParameters?.nodes.length
|
|
1883
2039
|
? lowerer.lambdaSignature(initializer).funcType
|
|
1884
2040
|
: member && lowerer.globalOf(member)?.type.kind === "dyn"
|
|
1885
2041
|
? DYN
|
|
@@ -1941,12 +2097,12 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1941
2097
|
ts.isCallExpression(decl.initializer)
|
|
1942
2098
|
? lowerer.checker.getResolvedSignature(decl.initializer)
|
|
1943
2099
|
: undefined;
|
|
1944
|
-
const callDeclaration = callSignature &&
|
|
1945
|
-
const callType = callDeclaration && isJsSourceFile(
|
|
2100
|
+
const callDeclaration = callSignature && callSignature.declaration;
|
|
2101
|
+
const callType = callDeclaration && isJsSourceFile(ts.getSourceFileOfNode(callDeclaration))
|
|
1946
2102
|
? lowerer.mapTypeOf(lowerer.typeOf(nameNode))
|
|
1947
2103
|
: null;
|
|
1948
2104
|
const inferredJsCall = callDeclaration &&
|
|
1949
|
-
isJsSourceFile(
|
|
2105
|
+
isJsSourceFile(ts.getSourceFileOfNode(callDeclaration)) &&
|
|
1950
2106
|
(!callType ||
|
|
1951
2107
|
(unannotatedCall &&
|
|
1952
2108
|
callType.kind === "union" &&
|
|
@@ -1962,7 +2118,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1962
2118
|
!hasJsTypeAnnotation(decl) &&
|
|
1963
2119
|
decl.initializer &&
|
|
1964
2120
|
(ts.isArrowFunction(decl.initializer) || ts.isFunctionExpression(decl.initializer)) &&
|
|
1965
|
-
!decl.initializer.typeParameters?.length) {
|
|
2121
|
+
!decl.initializer.typeParameters?.nodes.length) {
|
|
1966
2122
|
type = lowerer.lambdaSignature(decl.initializer).funcType;
|
|
1967
2123
|
}
|
|
1968
2124
|
// Namespace aliases of inferred helpers carry the helper's
|
|
@@ -2022,7 +2178,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
2022
2178
|
ts.isCallExpression(decl.initializer) &&
|
|
2023
2179
|
ts.isPropertyAccessExpression(decl.initializer.expression) &&
|
|
2024
2180
|
lowerer.stdlibGlobalMember(decl.initializer.expression, "Object") === "assign" &&
|
|
2025
|
-
decl.initializer.arguments.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
|
|
2181
|
+
decl.initializer.arguments.nodes.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
|
|
2026
2182
|
type = DYN;
|
|
2027
2183
|
}
|
|
2028
2184
|
// Runtime-arity JavaScript callables can be returned by a
|
|
@@ -2168,6 +2324,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
2168
2324
|
};
|
|
2169
2325
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
2170
2326
|
lowerer.globalsList.push(g);
|
|
2327
|
+
// `let f: T;` initializes the binding (to undefined) where the
|
|
2328
|
+
// declaration runs: later writes are ordinary stores, which the
|
|
2329
|
+
// pointer guard alone would refuse (markCycleEarlyBindings).
|
|
2330
|
+
if (g.tdz && !decl.initializer)
|
|
2331
|
+
lowerer.uninitializedLexicalGlobals.set(g.id, { name: nameNode, module: sf, symbol });
|
|
2171
2332
|
// Mutable checked-dynamic LET globals ride the same entry
|
|
2172
2333
|
// init: a closure called above the declaration statement
|
|
2173
2334
|
// reads the dyn undefined instead of faulting on NULL — the
|
|
@@ -2247,7 +2408,7 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
|
|
|
2247
2408
|
return undefined;
|
|
2248
2409
|
});
|
|
2249
2410
|
for (const list of lists) {
|
|
2250
|
-
for (const decl of list.declarations) {
|
|
2411
|
+
for (const decl of list.declarations.nodes) {
|
|
2251
2412
|
for (const nameNode of boundIdentifiersOf(decl.name)) {
|
|
2252
2413
|
const diagsBefore = lowerer.diags.length;
|
|
2253
2414
|
try {
|
|
@@ -2319,7 +2480,7 @@ export function declSymbolOf(lowerer, decl) {
|
|
|
2319
2480
|
ts.getModifiers(decl)?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
|
|
2320
2481
|
if (!isDefault)
|
|
2321
2482
|
return undefined;
|
|
2322
|
-
const sym = defaultExportSymbolOf(lowerer,
|
|
2483
|
+
const sym = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(decl));
|
|
2323
2484
|
return sym ?? undefined;
|
|
2324
2485
|
}
|
|
2325
2486
|
/** `export default <expr>` in a module's init body: the first (and only)
|
|
@@ -2336,7 +2497,7 @@ export function declSymbolOf(lowerer, decl) {
|
|
|
2336
2497
|
* expression so the expression's OWN diagnostic wins when it has one,
|
|
2337
2498
|
* then poisons. */
|
|
2338
2499
|
export function lowerDefaultExport(lowerer, stmt) {
|
|
2339
|
-
const symbol = defaultExportSymbolOf(lowerer,
|
|
2500
|
+
const symbol = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(stmt));
|
|
2340
2501
|
if (symbol && symbol.flags & ts.SymbolFlags.Alias && !lowerer.globalsBySymbol.has(symbol))
|
|
2341
2502
|
return null;
|
|
2342
2503
|
const g = symbol ? lowerer.globalsBySymbol.get(symbol) : undefined;
|
|
@@ -2349,10 +2510,10 @@ export function lowerDefaultExport(lowerer, stmt) {
|
|
|
2349
2510
|
while (ts.isParenthesizedExpression(inner))
|
|
2350
2511
|
inner = inner.expression;
|
|
2351
2512
|
if (ts.isClassExpression(inner) &&
|
|
2352
|
-
!isJsSourceFile(
|
|
2513
|
+
!isJsSourceFile(ts.getSourceFileOfNode(stmt)) &&
|
|
2353
2514
|
inner.typeParameters === undefined &&
|
|
2354
2515
|
(decoratorNodesOf(inner).length > 0 ||
|
|
2355
|
-
inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
2516
|
+
inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
2356
2517
|
guaranteedDecorationThrow(lowerer, inner) !== null) {
|
|
2357
2518
|
return { kind: "exprStmt", expr: lowerer.lowerExpr(stmt.expression), loc: locOf(stmt) };
|
|
2358
2519
|
}
|
|
@@ -2391,6 +2552,19 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2391
2552
|
loc: loc0,
|
|
2392
2553
|
});
|
|
2393
2554
|
}
|
|
2555
|
+
if (sf === lowerer.entry)
|
|
2556
|
+
header.push(...lowerer.punycodeLinkWarning());
|
|
2557
|
+
// Top-level `this` of a CommonJS module: its object exists before the
|
|
2558
|
+
// module's first statement (lowerCjsTopLevelThis).
|
|
2559
|
+
const exportsThis = lowerer.cjsExportsThis.get(sf);
|
|
2560
|
+
if (exportsThis) {
|
|
2561
|
+
header.push({
|
|
2562
|
+
kind: "assign",
|
|
2563
|
+
localId: exportsThis.id,
|
|
2564
|
+
value: { kind: "dynObjLit", fields: [], type: DYN, loc: loc0 },
|
|
2565
|
+
loc: loc0,
|
|
2566
|
+
});
|
|
2567
|
+
}
|
|
2394
2568
|
for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
|
|
2395
2569
|
const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
|
|
2396
2570
|
if (npm !== undefined && npm.length > 0) {
|
|
@@ -2445,6 +2619,12 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2445
2619
|
}
|
|
2446
2620
|
else {
|
|
2447
2621
|
header.push({ kind: "exprStmt", expr: call, loc });
|
|
2622
|
+
// An ES-module importer links a CommonJS dependency: Node
|
|
2623
|
+
// copies its lexer-visible exports here.
|
|
2624
|
+
if ((ts.isImportDeclaration(stmt) || ts.isExportDeclaration(stmt)) &&
|
|
2625
|
+
!isCjsJsFile(sf, lowerer.program) &&
|
|
2626
|
+
isCjsJsFile(dep, lowerer.program))
|
|
2627
|
+
header.push(...cjsAccessorSnapshotStores(lowerer, dep, loc));
|
|
2448
2628
|
}
|
|
2449
2629
|
}
|
|
2450
2630
|
}
|
|
@@ -2500,12 +2680,27 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2500
2680
|
// a function called above the declaration reads `undefined`, exactly
|
|
2501
2681
|
// Node); checked-dynamic var globals hold the dyn undefined the same
|
|
2502
2682
|
// way. After the guard: a cache-hit revisit must not reset them.
|
|
2683
|
+
// A union slot the body retypes checked-dynamic (lowerVarDecl: a
|
|
2684
|
+
// JavaScript var initialized with an existing checked-dynamic object)
|
|
2685
|
+
// gets the dyn undefined once the body has lowered.
|
|
2686
|
+
const unionEntryInits = [];
|
|
2503
2687
|
for (const g of lowerer.varGlobalEntryInits.get(sf) ?? []) {
|
|
2504
2688
|
if (g.type.kind !== "union" && g.type.kind !== "dyn")
|
|
2505
2689
|
continue;
|
|
2506
2690
|
const wrapped = g.type.kind === "dyn" ? dynUndefinedExpr(loc0) : lowerer.unassignedSlotInit(g.type, loc0);
|
|
2507
2691
|
if (wrapped) {
|
|
2508
|
-
|
|
2692
|
+
if (g.type.kind === "union")
|
|
2693
|
+
unionEntryInits.push({ at: header.length, g });
|
|
2694
|
+
// A let global whose early reads are checked (initFlag) only
|
|
2695
|
+
// gets its storage filled here: this is not the source write, so
|
|
2696
|
+
// it must neither run the TDZ check nor set the flag.
|
|
2697
|
+
header.push({
|
|
2698
|
+
kind: "assign",
|
|
2699
|
+
localId: g.id,
|
|
2700
|
+
value: wrapped,
|
|
2701
|
+
...(g.initFlag !== undefined ? { initializes: true } : {}),
|
|
2702
|
+
loc: loc0,
|
|
2703
|
+
});
|
|
2509
2704
|
}
|
|
2510
2705
|
}
|
|
2511
2706
|
const prelude = lowerer.jsonInitActions.get(sf) ?? [];
|
|
@@ -2525,7 +2720,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2525
2720
|
c.decl &&
|
|
2526
2721
|
ts.isClassDeclaration(c.decl) &&
|
|
2527
2722
|
!c.mixinInstance &&
|
|
2528
|
-
c.decl
|
|
2723
|
+
ts.getSourceFileOfNode(c.decl) === sf &&
|
|
2529
2724
|
(lowerer.classInitFlags.has(c.def.name) ||
|
|
2530
2725
|
c.callableBase !== undefined ||
|
|
2531
2726
|
c.def.baseValueGlobal !== undefined ||
|
|
@@ -2533,7 +2728,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2533
2728
|
c.staticFields.length > 0 ||
|
|
2534
2729
|
(c.staticBlocks?.length ?? 0) > 0 ||
|
|
2535
2730
|
c.classDecorators !== undefined))
|
|
2536
|
-
.map((c) => ({ pos: c.decl
|
|
2731
|
+
.map((c) => ({ pos: ts.tokenStartOfNode(c.decl), info: c }));
|
|
2537
2732
|
// Statics-bearing MIXIN instantiations whose call evaluates in THIS
|
|
2538
2733
|
// file: their declaration-time code runs when the call does — the
|
|
2539
2734
|
// top-level statement lower-mixins recorded. Insertion order is
|
|
@@ -2554,7 +2749,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2554
2749
|
// anything the statement's lowering emits. Hoisted class
|
|
2555
2750
|
// declarations never share a kept statement's start, so `<=`
|
|
2556
2751
|
// changes nothing for them.
|
|
2557
|
-
while (at < statics.length && statics[at].pos <=
|
|
2752
|
+
while (at < statics.length && statics[at].pos <= ts.tokenStartOfNode(stmt)) {
|
|
2558
2753
|
body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
|
|
2559
2754
|
at++;
|
|
2560
2755
|
}
|
|
@@ -2573,6 +2768,17 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2573
2768
|
body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
|
|
2574
2769
|
at++;
|
|
2575
2770
|
}
|
|
2771
|
+
for (const { at, g } of unionEntryInits) {
|
|
2772
|
+
if (g.type.kind !== "dyn")
|
|
2773
|
+
continue;
|
|
2774
|
+
body[at] = {
|
|
2775
|
+
kind: "assign",
|
|
2776
|
+
localId: g.id,
|
|
2777
|
+
value: dynUndefinedExpr(loc0),
|
|
2778
|
+
...(g.initFlag !== undefined ? { initializes: true } : {}),
|
|
2779
|
+
loc: loc0,
|
|
2780
|
+
};
|
|
2781
|
+
}
|
|
2576
2782
|
const moduleRef = cjsModuleRef(lowerer, sf);
|
|
2577
2783
|
if (moduleRef !== null) {
|
|
2578
2784
|
const guardedBody = body.splice(guardId !== undefined ? 2 : 0);
|
|
@@ -2725,6 +2931,7 @@ function rememberEvaluationError(lowerer, guardId, body, loc) {
|
|
|
2725
2931
|
export function buildMain(lowerer) {
|
|
2726
2932
|
const loc = { file: lowerer.entry.fileName, start: 0, end: 0 };
|
|
2727
2933
|
const body = [
|
|
2934
|
+
...lowerer.mainPrelude,
|
|
2728
2935
|
...cjsModuleRegistryPrelude(lowerer, loc),
|
|
2729
2936
|
...handleEventReaderPrelude(lowerer, loc),
|
|
2730
2937
|
];
|