@scriptc/compiler 0.3.6 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +682 -50
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +6 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +11 -0
- package/dist/backend/llvm/classes.js +71 -14
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +58 -8
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.js +1 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +12 -3
- package/dist/backend/llvm/dense-array-access.js +72 -14
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +59 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +28 -4
- package/dist/backend/llvm/dyn.js +293 -178
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1190 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1535 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +58 -0
- package/dist/backend/llvm/emit-statements.js +1964 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +547 -283
- package/dist/backend/llvm/emitter.js +689 -4643
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +71 -53
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +39 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +67 -62
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +121 -25
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +2 -2
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +54 -12
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +488 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +90 -50
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +187 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +2 -2
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.js +2 -2
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +151 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +14 -2
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +9 -6
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +1 -1
- package/dist/backend/llvm/shapes.d.ts +66 -43
- package/dist/backend/llvm/shapes.js +280 -21
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +110 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +7 -0
- package/dist/backend/mangle.js +11 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +37 -0
- package/dist/backend/native/executable.js +192 -137
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-pack-core.d.ts +9 -1
- package/dist/backend/runtime-pack-core.js +10 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +5 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +5 -0
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +8 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +5 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +44 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +11 -1
- package/dist/cli/usage.js +20 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +13 -0
- package/dist/contracts/check.js +24 -6
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +17 -0
- package/dist/executable/executable-cache.js +13 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +7 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +16 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
- package/dist/frontend/lowering/builtins/crypto.js +211 -37
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +232 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +32 -1
- package/dist/frontend/lowering/builtins/process.js +461 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +16 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +75 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +19 -1
- package/dist/frontend/lowering/call-signatures.js +254 -47
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +528 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +25 -44
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +80 -18
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +261 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +51 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +89 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +161 -101
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +54 -25
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
- package/dist/frontend/lowering/cycle-initialization.js +39 -0
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +703 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2483 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1797 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +253 -85
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
- package/dist/frontend/lowering/expressions/property-access.js +3544 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1679 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +538 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +39 -0
- package/dist/frontend/lowering/generic-functions.js +393 -75
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +32 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1239 -442
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +50 -3
- package/dist/frontend/lowering/lower-classes.js +1473 -468
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +179 -8
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1481 -12489
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +68 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +29 -16
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +331 -96
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +267 -61
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +45 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +488 -100
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +151 -109
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
- package/dist/frontend/lowering/lower-stmts.js +1541 -391
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +80 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +399 -26
- package/dist/frontend/lowering/lowerer.js +1910 -305
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +10 -10
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +252 -41
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
- package/dist/frontend/npm-static-bundled-chunks.js +810 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +768 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +17 -1
- package/dist/frontend/npm-static.js +167 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.js +164 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +92 -2
- package/dist/frontend/program.js +1557 -255
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +36 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +20 -1
- package/dist/frontend/services.js +40 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +5 -1
- package/dist/frontend/ts7/program-host.js +12 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +54 -24
- package/dist/frontend/ts7/semantic-model.js +88 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +11 -11
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2545 -719
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +29 -2
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +30 -0
- package/dist/ir/array-length-stability.js +236 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +113 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +103 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +494 -25
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +2 -0
- package/dist/ir/integer-loop-facts.js +24 -3
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +3 -0
- package/dist/ir/integer-ranges.js +3 -1
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +82 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +221 -58
- package/dist/ir/ir.js +119 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +365 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +148 -33
- package/dist/ir/runtime-features.js +629 -386
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +103 -94
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +175 -68
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +26 -9
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +13 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +5 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +2 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/prepare.js +7 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +12 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +21 -20
- package/surface-manifest.json +303 -19
|
@@ -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 {
|
|
@@ -728,6 +739,14 @@ export function moduleArtifacts(lowerer, functions) {
|
|
|
728
739
|
valueInstanceOfRoots.add(root.def.name);
|
|
729
740
|
}
|
|
730
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;
|
|
731
750
|
case "dynFrom":
|
|
732
751
|
if (boxedChild(node.value.type)) {
|
|
733
752
|
// A generic child can expose native stdio without importing stream.
|
|
@@ -919,7 +938,7 @@ function checkedGlobalReference(lowerer, expression) {
|
|
|
919
938
|
!ts.isIdentifier(expression.expression))
|
|
920
939
|
return false;
|
|
921
940
|
const root = lowerer.checker.getSymbolAtLocation(expression.expression);
|
|
922
|
-
const namespace = root &&
|
|
941
|
+
const namespace = root && root.declarations.some(ts.isNamespaceImport);
|
|
923
942
|
return ((namespace || lowerer.cjsLocalModuleBindingOf(expression.expression)) &&
|
|
924
943
|
lowerer.globalOf(expression.name)?.type.kind === "dyn");
|
|
925
944
|
}
|
|
@@ -937,8 +956,8 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
937
956
|
ts.isPropertyAccessExpression(e.expression) &&
|
|
938
957
|
["freeze", "seal", "preventExtensions"].includes(e.expression.name.text) &&
|
|
939
958
|
lowerer.stdlibGlobalMember(e.expression, "Object") !== null &&
|
|
940
|
-
e.arguments[0] &&
|
|
941
|
-
ts.isArrayLiteralExpression(e.arguments[0]))
|
|
959
|
+
e.arguments.nodes[0] &&
|
|
960
|
+
ts.isArrayLiteralExpression(e.arguments.nodes[0]))
|
|
942
961
|
return true;
|
|
943
962
|
// The built-in Array constructor can create an evolving array whose
|
|
944
963
|
// inferred element type has no native mapping. Its checked reference
|
|
@@ -1001,8 +1020,8 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
1001
1020
|
return true;
|
|
1002
1021
|
}
|
|
1003
1022
|
if ((ts.isFunctionExpression(e) || ts.isArrowFunction(e)) &&
|
|
1004
|
-
!e.typeParameters?.length &&
|
|
1005
|
-
isJsSourceFile(
|
|
1023
|
+
!e.typeParameters?.nodes.length &&
|
|
1024
|
+
isJsSourceFile(ts.getSourceFileOfNode(e)))
|
|
1006
1025
|
return true;
|
|
1007
1026
|
if (ts.isIdentifier(e) || ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
|
|
1008
1027
|
if (ts.isIdentifier(e)) {
|
|
@@ -1078,10 +1097,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1078
1097
|
continue;
|
|
1079
1098
|
if (symbol.flags & ts.SymbolFlags.Alias) {
|
|
1080
1099
|
const target = lowerer.checker.getAliasedSymbol(symbol);
|
|
1081
|
-
const vd =
|
|
1100
|
+
const vd = target.valueDeclaration;
|
|
1082
1101
|
const mutableVar = vd !== undefined &&
|
|
1083
1102
|
ts.isVariableDeclaration(vd) &&
|
|
1084
|
-
!
|
|
1103
|
+
!ts.getSourceFileOfNode(vd).isDeclarationFile &&
|
|
1085
1104
|
(ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
|
|
1086
1105
|
// Immutable targets: alias plumbing — importers resolve to the
|
|
1087
1106
|
// target's storage (the alias-resolved read IS the snapshot when
|
|
@@ -1104,7 +1123,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1104
1123
|
!isJsSourceFile(sf) &&
|
|
1105
1124
|
inner.typeParameters === undefined &&
|
|
1106
1125
|
(decoratorNodesOf(inner).length > 0 ||
|
|
1107
|
-
inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
1126
|
+
inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
1108
1127
|
guaranteedDecorationThrow(lowerer, inner) !== null) {
|
|
1109
1128
|
continue;
|
|
1110
1129
|
}
|
|
@@ -1191,7 +1210,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1191
1210
|
if (vG) {
|
|
1192
1211
|
if (!vG.mutable) {
|
|
1193
1212
|
lowerer.globalsBySymbol.set(symbol, vG);
|
|
1194
|
-
for (const d of
|
|
1213
|
+
for (const d of symbol.declarations)
|
|
1195
1214
|
lowerer.globalsByDeclNode.set(d, vG);
|
|
1196
1215
|
return;
|
|
1197
1216
|
}
|
|
@@ -1202,7 +1221,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1202
1221
|
mutable: false,
|
|
1203
1222
|
};
|
|
1204
1223
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1205
|
-
for (const d of
|
|
1224
|
+
for (const d of symbol.declarations)
|
|
1206
1225
|
lowerer.globalsByDeclNode.set(d, g);
|
|
1207
1226
|
lowerer.globalsList.push(g);
|
|
1208
1227
|
return;
|
|
@@ -1213,7 +1232,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1213
1232
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1214
1233
|
// Importer aliases resolve to a DISTINCT late-bound symbol with
|
|
1215
1234
|
// the same declaration — key the node too (globalOf's fallback).
|
|
1216
|
-
for (const d of
|
|
1235
|
+
for (const d of symbol.declarations)
|
|
1217
1236
|
lowerer.globalsByDeclNode.set(d, g);
|
|
1218
1237
|
lowerer.globalsList.push(g);
|
|
1219
1238
|
}
|
|
@@ -1225,6 +1244,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1225
1244
|
deferJsCollectionDiags(lowerer, sf, diagsBefore);
|
|
1226
1245
|
}
|
|
1227
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
|
+
}
|
|
1228
1252
|
if (cjs?.kind === "member" && ts.isIdentifier(cjs.name)) {
|
|
1229
1253
|
// `exports.C = C` naming a CLASS declaration: alias plumbing —
|
|
1230
1254
|
// no storage (a class VALUE global would fence for
|
|
@@ -1233,6 +1257,20 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1233
1257
|
// applies unchanged.
|
|
1234
1258
|
if (lowerer.cjsMemberExportClassSymbol(cjs.expr) !== null)
|
|
1235
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;
|
|
1236
1274
|
registerExport(cjs.name, cjs.name.text, cjs.value);
|
|
1237
1275
|
continue;
|
|
1238
1276
|
}
|
|
@@ -1265,7 +1303,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1265
1303
|
// statement lowering evaluates the call exactly once at its
|
|
1266
1304
|
// source position and assigns that slot. Unmappable calls retain
|
|
1267
1305
|
// the existing statement-level fence.
|
|
1268
|
-
|
|
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;
|
|
1269
1319
|
if (cjsScalarLiteral(rhs) || fnValued || factoryValued) {
|
|
1270
1320
|
const diagsBefore = lowerer.diags.length;
|
|
1271
1321
|
try {
|
|
@@ -1296,7 +1346,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1296
1346
|
continue;
|
|
1297
1347
|
}
|
|
1298
1348
|
if (cjs?.kind === "table" && cjs.obj) {
|
|
1299
|
-
for (const prop of cjs.obj.properties) {
|
|
1349
|
+
for (const prop of cjs.obj.properties.nodes) {
|
|
1300
1350
|
if (ts.isShorthandPropertyAssignment(prop))
|
|
1301
1351
|
continue; // alias plumbing
|
|
1302
1352
|
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.initializer))
|
|
@@ -1304,6 +1354,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1304
1354
|
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
|
|
1305
1355
|
registerExport(prop.name, prop.name.text, prop.initializer);
|
|
1306
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);
|
|
1307
1362
|
// other property forms fence in the statement lowering
|
|
1308
1363
|
}
|
|
1309
1364
|
continue;
|
|
@@ -1328,10 +1383,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1328
1383
|
lowerer.globalsBySymbol.has(aliasSym))
|
|
1329
1384
|
continue;
|
|
1330
1385
|
const target = lowerer.checker.getAliasedSymbol(aliasSym);
|
|
1331
|
-
const vd =
|
|
1386
|
+
const vd = target.valueDeclaration;
|
|
1332
1387
|
const mutableVar = vd !== undefined &&
|
|
1333
1388
|
ts.isVariableDeclaration(vd) &&
|
|
1334
|
-
!
|
|
1389
|
+
!ts.getSourceFileOfNode(vd).isDeclarationFile &&
|
|
1335
1390
|
(ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
|
|
1336
1391
|
if (!mutableVar)
|
|
1337
1392
|
continue;
|
|
@@ -1344,7 +1399,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1344
1399
|
if (type.kind === "void")
|
|
1345
1400
|
lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
|
|
1346
1401
|
const g = {
|
|
1347
|
-
id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${
|
|
1402
|
+
id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${ts.tokenStartOfNode(stmt)}`,
|
|
1348
1403
|
name: stmt.name.text,
|
|
1349
1404
|
type,
|
|
1350
1405
|
mutable: false,
|
|
@@ -1369,6 +1424,14 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1369
1424
|
collectNestedVarGlobals(lowerer, sf, stmt, tag);
|
|
1370
1425
|
continue;
|
|
1371
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
|
+
}
|
|
1372
1435
|
// CommonJS require declarations are alias plumbing (preflight owns
|
|
1373
1436
|
// the module edges; resolveValueSymbol routes reads through to the
|
|
1374
1437
|
// exporter's declarations): no storage, and the statement lowers to
|
|
@@ -1378,12 +1441,45 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1378
1441
|
// binding lower via the process surface.
|
|
1379
1442
|
if (isRequireStatement(stmt) &&
|
|
1380
1443
|
!(ts.isVariableStatement(stmt) &&
|
|
1381
|
-
stmt.declarationList.declarations.some((decl) => isNativeFfiRequire(lowerer, decl.initializer)))) {
|
|
1444
|
+
stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
|
|
1382
1445
|
if (ts.isVariableStatement(stmt) && (stmt.declarationList.flags & ts.NodeFlags.Const) !== 0) {
|
|
1383
|
-
for (const decl of stmt.declarationList.declarations) {
|
|
1446
|
+
for (const decl of stmt.declarationList.declarations.nodes) {
|
|
1384
1447
|
stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
|
|
1385
1448
|
}
|
|
1386
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
|
+
}
|
|
1387
1483
|
continue;
|
|
1388
1484
|
}
|
|
1389
1485
|
// `declare const __VERSION__: string` — AMBIENT: no storage exists
|
|
@@ -1391,7 +1487,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1391
1487
|
// exactly like running the source under Node). Reads lower to
|
|
1392
1488
|
// Node's ReferenceError at the access (lower-exprs), and the
|
|
1393
1489
|
// statement itself lowers to nothing.
|
|
1394
|
-
if (ts.getCombinedModifierFlags(stmt.declarationList.declarations[0]) &
|
|
1490
|
+
if (ts.getCombinedModifierFlags(stmt.declarationList.declarations.nodes[0]) &
|
|
1491
|
+
ts.ModifierFlags.Ambient)
|
|
1395
1492
|
continue;
|
|
1396
1493
|
const list = stmt.declarationList;
|
|
1397
1494
|
if ((list.flags & ts.NodeFlags.Using) !== 0)
|
|
@@ -1405,8 +1502,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1405
1502
|
// (`%g.e.A%B.x`), so `namespace A { export const x }` and a
|
|
1406
1503
|
// top-level `const x` never collide; non-exported members add the
|
|
1407
1504
|
// declaring block's position (block-local bindings).
|
|
1408
|
-
const nsPrefix = nsPathPrefix(stmt, list.declarations[0]);
|
|
1409
|
-
for (const decl of list.declarations) {
|
|
1505
|
+
const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
|
|
1506
|
+
for (const decl of list.declarations.nodes) {
|
|
1410
1507
|
// --provenance-sources: an elided pure-annotated dead const in a
|
|
1411
1508
|
// fetched source module registers no global (the statement
|
|
1412
1509
|
// lowering emits nothing by the same test — see
|
|
@@ -1532,6 +1629,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1532
1629
|
continue;
|
|
1533
1630
|
if (isConst && registerBuiltinCallableAlias(lowerer, decl.name, decl.initializer))
|
|
1534
1631
|
continue;
|
|
1632
|
+
if (registerBuiltinClassAlias(lowerer, decl.name, decl.initializer))
|
|
1633
|
+
continue;
|
|
1535
1634
|
// `const f = (x) => ...` at file scope of an npm-static JS file
|
|
1536
1635
|
// whose params are implicit-any: the implicit-monomorphization
|
|
1537
1636
|
// twin of the generic binding above — no global exists; calls and
|
|
@@ -1644,6 +1743,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1644
1743
|
// stdlibGlobalAliasDecl; the statement lowering skips it by the
|
|
1645
1744
|
// same test).
|
|
1646
1745
|
const stableStdlibAlias = isConst ||
|
|
1746
|
+
stdlibBufferVarAlias(lowerer, decl) ||
|
|
1647
1747
|
((list.flags & ts.NodeFlags.Let) !== 0 &&
|
|
1648
1748
|
ts.isIdentifier(decl.name) &&
|
|
1649
1749
|
stdlibGlobalAliasNameOf(lowerer, decl.initializer) !== null &&
|
|
@@ -1667,7 +1767,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1667
1767
|
decl.initializer &&
|
|
1668
1768
|
!decl.type &&
|
|
1669
1769
|
!hasJsTypeAnnotation(decl) &&
|
|
1670
|
-
!lowerer.mapTypeOf(lowerer.typeOf(nameNode))
|
|
1770
|
+
(!lowerer.mapTypeOf(lowerer.typeOf(nameNode)) ||
|
|
1771
|
+
isWebCryptoMemberType(lowerer, lowerer.typeOf(nameNode)))) {
|
|
1671
1772
|
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1672
1773
|
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1673
1774
|
const g = {
|
|
@@ -1717,6 +1818,31 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1717
1818
|
}
|
|
1718
1819
|
continue;
|
|
1719
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
|
+
}
|
|
1720
1846
|
// A JS file-scope evolving ARRAY (`const mustCallChecks = [];`
|
|
1721
1847
|
// — test/common's exit-accounting ledger): the strict type
|
|
1722
1848
|
// (any[]) has no mapping, but the VALUE is the dyn array the
|
|
@@ -1755,7 +1881,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1755
1881
|
nameNode === decl.name &&
|
|
1756
1882
|
decl.initializer &&
|
|
1757
1883
|
ts.isObjectLiteralExpression(decl.initializer) &&
|
|
1758
|
-
decl.initializer.properties.some((p) => !ts.isSpreadAssignment(p) &&
|
|
1884
|
+
decl.initializer.properties.nodes.some((p) => !ts.isSpreadAssignment(p) &&
|
|
1759
1885
|
(ts.isMethodDeclaration(p) ||
|
|
1760
1886
|
ts.isAccessor(p) ||
|
|
1761
1887
|
ts.isComputedPropertyName(p.name) ||
|
|
@@ -1798,7 +1924,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1798
1924
|
nameNode === decl.name &&
|
|
1799
1925
|
decl.initializer !== undefined &&
|
|
1800
1926
|
ts.isObjectLiteralExpression(decl.initializer) &&
|
|
1801
|
-
decl.initializer.properties.every((p) => {
|
|
1927
|
+
decl.initializer.properties.nodes.every((p) => {
|
|
1802
1928
|
if (ts.isSpreadAssignment(p)) {
|
|
1803
1929
|
return (ts.isIdentifier(p.expression) &&
|
|
1804
1930
|
lowerer.globalOf(p.expression)?.type.kind === "dyn");
|
|
@@ -1824,6 +1950,35 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1824
1950
|
}
|
|
1825
1951
|
continue;
|
|
1826
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
|
+
}
|
|
1827
1982
|
// A JS file-scope ANY-RESIDUE binding whose VALUE provably
|
|
1828
1983
|
// lives in the checked-dynamic tree: no initializer (`let catchWarning;` —
|
|
1829
1984
|
// test/common's warning ledger), a unit initializer (`let
|
|
@@ -1880,7 +2035,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1880
2035
|
: null;
|
|
1881
2036
|
const generic = member && lowerer.genericFnOf(member);
|
|
1882
2037
|
const fallback = (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)) &&
|
|
1883
|
-
!initializer.typeParameters?.length
|
|
2038
|
+
!initializer.typeParameters?.nodes.length
|
|
1884
2039
|
? lowerer.lambdaSignature(initializer).funcType
|
|
1885
2040
|
: member && lowerer.globalOf(member)?.type.kind === "dyn"
|
|
1886
2041
|
? DYN
|
|
@@ -1942,12 +2097,12 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1942
2097
|
ts.isCallExpression(decl.initializer)
|
|
1943
2098
|
? lowerer.checker.getResolvedSignature(decl.initializer)
|
|
1944
2099
|
: undefined;
|
|
1945
|
-
const callDeclaration = callSignature &&
|
|
1946
|
-
const callType = callDeclaration && isJsSourceFile(
|
|
2100
|
+
const callDeclaration = callSignature && callSignature.declaration;
|
|
2101
|
+
const callType = callDeclaration && isJsSourceFile(ts.getSourceFileOfNode(callDeclaration))
|
|
1947
2102
|
? lowerer.mapTypeOf(lowerer.typeOf(nameNode))
|
|
1948
2103
|
: null;
|
|
1949
2104
|
const inferredJsCall = callDeclaration &&
|
|
1950
|
-
isJsSourceFile(
|
|
2105
|
+
isJsSourceFile(ts.getSourceFileOfNode(callDeclaration)) &&
|
|
1951
2106
|
(!callType ||
|
|
1952
2107
|
(unannotatedCall &&
|
|
1953
2108
|
callType.kind === "union" &&
|
|
@@ -1963,7 +2118,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1963
2118
|
!hasJsTypeAnnotation(decl) &&
|
|
1964
2119
|
decl.initializer &&
|
|
1965
2120
|
(ts.isArrowFunction(decl.initializer) || ts.isFunctionExpression(decl.initializer)) &&
|
|
1966
|
-
!decl.initializer.typeParameters?.length) {
|
|
2121
|
+
!decl.initializer.typeParameters?.nodes.length) {
|
|
1967
2122
|
type = lowerer.lambdaSignature(decl.initializer).funcType;
|
|
1968
2123
|
}
|
|
1969
2124
|
// Namespace aliases of inferred helpers carry the helper's
|
|
@@ -2023,7 +2178,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
2023
2178
|
ts.isCallExpression(decl.initializer) &&
|
|
2024
2179
|
ts.isPropertyAccessExpression(decl.initializer.expression) &&
|
|
2025
2180
|
lowerer.stdlibGlobalMember(decl.initializer.expression, "Object") === "assign" &&
|
|
2026
|
-
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")) {
|
|
2027
2182
|
type = DYN;
|
|
2028
2183
|
}
|
|
2029
2184
|
// Runtime-arity JavaScript callables can be returned by a
|
|
@@ -2169,6 +2324,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
2169
2324
|
};
|
|
2170
2325
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
2171
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 });
|
|
2172
2332
|
// Mutable checked-dynamic LET globals ride the same entry
|
|
2173
2333
|
// init: a closure called above the declaration statement
|
|
2174
2334
|
// reads the dyn undefined instead of faulting on NULL — the
|
|
@@ -2248,7 +2408,7 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
|
|
|
2248
2408
|
return undefined;
|
|
2249
2409
|
});
|
|
2250
2410
|
for (const list of lists) {
|
|
2251
|
-
for (const decl of list.declarations) {
|
|
2411
|
+
for (const decl of list.declarations.nodes) {
|
|
2252
2412
|
for (const nameNode of boundIdentifiersOf(decl.name)) {
|
|
2253
2413
|
const diagsBefore = lowerer.diags.length;
|
|
2254
2414
|
try {
|
|
@@ -2320,7 +2480,7 @@ export function declSymbolOf(lowerer, decl) {
|
|
|
2320
2480
|
ts.getModifiers(decl)?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
|
|
2321
2481
|
if (!isDefault)
|
|
2322
2482
|
return undefined;
|
|
2323
|
-
const sym = defaultExportSymbolOf(lowerer,
|
|
2483
|
+
const sym = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(decl));
|
|
2324
2484
|
return sym ?? undefined;
|
|
2325
2485
|
}
|
|
2326
2486
|
/** `export default <expr>` in a module's init body: the first (and only)
|
|
@@ -2337,7 +2497,7 @@ export function declSymbolOf(lowerer, decl) {
|
|
|
2337
2497
|
* expression so the expression's OWN diagnostic wins when it has one,
|
|
2338
2498
|
* then poisons. */
|
|
2339
2499
|
export function lowerDefaultExport(lowerer, stmt) {
|
|
2340
|
-
const symbol = defaultExportSymbolOf(lowerer,
|
|
2500
|
+
const symbol = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(stmt));
|
|
2341
2501
|
if (symbol && symbol.flags & ts.SymbolFlags.Alias && !lowerer.globalsBySymbol.has(symbol))
|
|
2342
2502
|
return null;
|
|
2343
2503
|
const g = symbol ? lowerer.globalsBySymbol.get(symbol) : undefined;
|
|
@@ -2350,10 +2510,10 @@ export function lowerDefaultExport(lowerer, stmt) {
|
|
|
2350
2510
|
while (ts.isParenthesizedExpression(inner))
|
|
2351
2511
|
inner = inner.expression;
|
|
2352
2512
|
if (ts.isClassExpression(inner) &&
|
|
2353
|
-
!isJsSourceFile(
|
|
2513
|
+
!isJsSourceFile(ts.getSourceFileOfNode(stmt)) &&
|
|
2354
2514
|
inner.typeParameters === undefined &&
|
|
2355
2515
|
(decoratorNodesOf(inner).length > 0 ||
|
|
2356
|
-
inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
2516
|
+
inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
|
|
2357
2517
|
guaranteedDecorationThrow(lowerer, inner) !== null) {
|
|
2358
2518
|
return { kind: "exprStmt", expr: lowerer.lowerExpr(stmt.expression), loc: locOf(stmt) };
|
|
2359
2519
|
}
|
|
@@ -2392,6 +2552,19 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2392
2552
|
loc: loc0,
|
|
2393
2553
|
});
|
|
2394
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
|
+
}
|
|
2395
2568
|
for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
|
|
2396
2569
|
const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
|
|
2397
2570
|
if (npm !== undefined && npm.length > 0) {
|
|
@@ -2446,6 +2619,12 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2446
2619
|
}
|
|
2447
2620
|
else {
|
|
2448
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));
|
|
2449
2628
|
}
|
|
2450
2629
|
}
|
|
2451
2630
|
}
|
|
@@ -2501,12 +2680,27 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2501
2680
|
// a function called above the declaration reads `undefined`, exactly
|
|
2502
2681
|
// Node); checked-dynamic var globals hold the dyn undefined the same
|
|
2503
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 = [];
|
|
2504
2687
|
for (const g of lowerer.varGlobalEntryInits.get(sf) ?? []) {
|
|
2505
2688
|
if (g.type.kind !== "union" && g.type.kind !== "dyn")
|
|
2506
2689
|
continue;
|
|
2507
2690
|
const wrapped = g.type.kind === "dyn" ? dynUndefinedExpr(loc0) : lowerer.unassignedSlotInit(g.type, loc0);
|
|
2508
2691
|
if (wrapped) {
|
|
2509
|
-
|
|
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
|
+
});
|
|
2510
2704
|
}
|
|
2511
2705
|
}
|
|
2512
2706
|
const prelude = lowerer.jsonInitActions.get(sf) ?? [];
|
|
@@ -2526,7 +2720,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2526
2720
|
c.decl &&
|
|
2527
2721
|
ts.isClassDeclaration(c.decl) &&
|
|
2528
2722
|
!c.mixinInstance &&
|
|
2529
|
-
c.decl
|
|
2723
|
+
ts.getSourceFileOfNode(c.decl) === sf &&
|
|
2530
2724
|
(lowerer.classInitFlags.has(c.def.name) ||
|
|
2531
2725
|
c.callableBase !== undefined ||
|
|
2532
2726
|
c.def.baseValueGlobal !== undefined ||
|
|
@@ -2534,7 +2728,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2534
2728
|
c.staticFields.length > 0 ||
|
|
2535
2729
|
(c.staticBlocks?.length ?? 0) > 0 ||
|
|
2536
2730
|
c.classDecorators !== undefined))
|
|
2537
|
-
.map((c) => ({ pos: c.decl
|
|
2731
|
+
.map((c) => ({ pos: ts.tokenStartOfNode(c.decl), info: c }));
|
|
2538
2732
|
// Statics-bearing MIXIN instantiations whose call evaluates in THIS
|
|
2539
2733
|
// file: their declaration-time code runs when the call does — the
|
|
2540
2734
|
// top-level statement lower-mixins recorded. Insertion order is
|
|
@@ -2555,7 +2749,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2555
2749
|
// anything the statement's lowering emits. Hoisted class
|
|
2556
2750
|
// declarations never share a kept statement's start, so `<=`
|
|
2557
2751
|
// changes nothing for them.
|
|
2558
|
-
while (at < statics.length && statics[at].pos <=
|
|
2752
|
+
while (at < statics.length && statics[at].pos <= ts.tokenStartOfNode(stmt)) {
|
|
2559
2753
|
body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
|
|
2560
2754
|
at++;
|
|
2561
2755
|
}
|
|
@@ -2574,6 +2768,17 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2574
2768
|
body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
|
|
2575
2769
|
at++;
|
|
2576
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
|
+
}
|
|
2577
2782
|
const moduleRef = cjsModuleRef(lowerer, sf);
|
|
2578
2783
|
if (moduleRef !== null) {
|
|
2579
2784
|
const guardedBody = body.splice(guardId !== undefined ? 2 : 0);
|
|
@@ -2726,6 +2931,7 @@ function rememberEvaluationError(lowerer, guardId, body, loc) {
|
|
|
2726
2931
|
export function buildMain(lowerer) {
|
|
2727
2932
|
const loc = { file: lowerer.entry.fileName, start: 0, end: 0 };
|
|
2728
2933
|
const body = [
|
|
2934
|
+
...lowerer.mainPrelude,
|
|
2729
2935
|
...cjsModuleRegistryPrelude(lowerer, loc),
|
|
2730
2936
|
...handleEventReaderPrelude(lowerer, loc),
|
|
2731
2937
|
];
|