@scriptc/compiler 0.3.6 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +717 -55
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +20 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +9 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.js +3 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +38 -1
- package/dist/backend/llvm/classes.js +185 -35
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +79 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -3
- package/dist/backend/llvm/common.js +51 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +15 -4
- package/dist/backend/llvm/dense-array-access.js +125 -44
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +63 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +37 -4
- package/dist/backend/llvm/dyn.js +354 -183
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1193 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1557 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +59 -0
- package/dist/backend/llvm/emit-statements.js +2041 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +566 -291
- package/dist/backend/llvm/emitter.js +728 -4671
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +87 -56
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +45 -24
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +113 -66
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +124 -28
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +57 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +65 -27
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +616 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +94 -53
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +209 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +42 -33
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +45 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +215 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +7 -0
- package/dist/backend/llvm/publish.js +50 -19
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +10 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +8 -2
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +74 -45
- package/dist/backend/llvm/shapes.js +289 -28
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +1 -1
- package/dist/backend/llvm/string-reads.js +4 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +111 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +12 -0
- package/dist/backend/mangle.js +18 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +57 -0
- package/dist/backend/native/executable.js +211 -139
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +2 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +6 -0
- package/dist/backend/native-codegen.js +19 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +27 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +48 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +13 -1
- package/dist/backend/runtime-pack-core.js +14 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +9 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +9 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +15 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +8 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +106 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +21 -1
- package/dist/cli/usage.js +43 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +22 -0
- package/dist/contracts/check.js +25 -8
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +27 -0
- package/dist/executable/executable-cache.js +19 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +12 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
- package/dist/frontend/lowering/builtins/crypto.js +215 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +284 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +41 -1
- package/dist/frontend/lowering/builtins/process.js +505 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +42 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +79 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +23 -1
- package/dist/frontend/lowering/call-signatures.js +379 -55
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +561 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +10 -0
- package/dist/frontend/lowering/class-protocols.js +76 -45
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +86 -19
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +264 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +58 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +94 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
- package/dist/frontend/lowering/containers/bytes.js +649 -113
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +126 -28
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
- package/dist/frontend/lowering/cycle-initialization.js +191 -35
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +723 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2557 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1804 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +301 -86
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
- package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
- package/dist/frontend/lowering/expressions/property-access.js +3787 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1724 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +551 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +43 -0
- package/dist/frontend/lowering/generic-functions.js +593 -118
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +33 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1404 -448
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +54 -3
- package/dist/frontend/lowering/lower-classes.js +1529 -472
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +241 -21
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1509 -12486
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +72 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +39 -20
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +900 -107
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +445 -94
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +65 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +514 -101
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +179 -118
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
- package/dist/frontend/lowering/lower-stmts.js +1950 -433
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +96 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +424 -27
- package/dist/frontend/lowering/lowerer.js +2062 -310
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +133 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +13 -12
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +282 -45
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
- package/dist/frontend/npm-static-bundled-chunks.js +981 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +988 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +25 -1
- package/dist/frontend/npm-static.js +212 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +230 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +100 -2
- package/dist/frontend/program.js +1627 -262
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +49 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +26 -1
- package/dist/frontend/services.js +59 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +10 -5
- package/dist/frontend/ts7/program-host.js +19 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +57 -24
- package/dist/frontend/ts7/semantic-model.js +114 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +30 -15
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2735 -723
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +87 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +31 -0
- package/dist/ir/array-length-stability.js +249 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +134 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +116 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +540 -29
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +7 -0
- package/dist/ir/integer-loop-facts.js +103 -17
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +13 -1
- package/dist/ir/integer-ranges.js +125 -26
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +273 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +221 -58
- package/dist/ir/ir.js +127 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +399 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +183 -33
- package/dist/ir/runtime-features.js +795 -422
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +201 -150
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +196 -76
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +41 -11
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +14 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +35 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +10 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +19 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +22 -20
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +304 -22
|
@@ -2,6 +2,7 @@ import { dynUndefinedExpr, nodeThrowExpr } from "../../ir/build.js";
|
|
|
2
2
|
import { InternalCompilerError } from "../../errors.js";
|
|
3
3
|
import * as ts from "../ts7/adapter.js";
|
|
4
4
|
import { lowerToNumberArgument } from "./lower-exprs.js";
|
|
5
|
+
import { isDeclaredInAmbientNamespace } from "../type-mapper.js";
|
|
5
6
|
import { arrayOf, BOOL, BYTES_U8, DYN, F64, STRING, VOID, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
|
|
6
7
|
import { STDLIB_SURFACE, STATIC_MATH_FNS, STATIC_MATH_PROPS, stdlibGlobalNameOf, } from "./surfaces.js";
|
|
7
8
|
import { unsupportedNativeApiDiag, unsupportedPackageValueDiag, } from "../../diagnostics/diagnostic.js";
|
|
@@ -10,6 +11,8 @@ import { foldedStringKeyOf, lowerDynObjectLiteral } from "./expressions/object-l
|
|
|
10
11
|
import { noteEventListeners } from "./lower-event-target.js";
|
|
11
12
|
import { PoisonError, newFnCtx, own } from "./lowerer.js";
|
|
12
13
|
import { NODE24_FETCH_COMPAT_PROFILE, STATIC_HEADERS_CALLS, STATIC_READABLE_STREAM_CALLS, STATIC_READABLE_STREAM_READS, STATIC_RESPONSE_CALLS, STATIC_RESPONSE_READS, } from "../../compat/fetch-profile.js";
|
|
14
|
+
import { classGeneratorIterable } from "./class-iterables.js";
|
|
15
|
+
import { generatorDrain } from "./iterator-adapters.js";
|
|
13
16
|
export function refuseUnsupportedApi(lowerer, feature, node, hint) {
|
|
14
17
|
lowerer.pushDiag(unsupportedNativeApiDiag(feature, locOf(node), hint));
|
|
15
18
|
throw new PoisonError();
|
|
@@ -132,9 +135,7 @@ function requestInitConstBacked(lowerer, value, seen) {
|
|
|
132
135
|
if (requestInitPropMutatedSymbols(lowerer).has(symbol))
|
|
133
136
|
return false;
|
|
134
137
|
seen.add(symbol);
|
|
135
|
-
const declarations =
|
|
136
|
-
.declarationsOf(symbol)
|
|
137
|
-
.filter((declaration) => ts.isVariableDeclaration(declaration) &&
|
|
138
|
+
const declarations = symbol.declarations.filter((declaration) => ts.isVariableDeclaration(declaration) &&
|
|
138
139
|
declaration.initializer !== undefined &&
|
|
139
140
|
ts.isVariableDeclarationList(declaration.parent) &&
|
|
140
141
|
(declaration.parent.flags & ts.NodeFlags.Const) !== 0);
|
|
@@ -151,8 +152,8 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
|
|
|
151
152
|
// a statically traced spread) hides earlier values exactly as it does at
|
|
152
153
|
// runtime; a conditional/missing spread keeps the earlier contributor
|
|
153
154
|
// in the possible-value set.
|
|
154
|
-
for (let i = expr.properties.length - 1; i >= 0; i--) {
|
|
155
|
-
const property = expr.properties[i];
|
|
155
|
+
for (let i = expr.properties.nodes.length - 1; i >= 0; i--) {
|
|
156
|
+
const property = expr.properties.nodes[i];
|
|
156
157
|
if (ts.isSpreadAssignment(property)) {
|
|
157
158
|
const defines = visitRequestInitConstSelectedValues(lowerer, property.expression, selector, new Set(seen), visit);
|
|
158
159
|
if (defines)
|
|
@@ -172,7 +173,7 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
|
|
|
172
173
|
return false;
|
|
173
174
|
}
|
|
174
175
|
if (selector.kind === "index" && ts.isArrayLiteralExpression(expr)) {
|
|
175
|
-
const element = expr.elements[selector.index];
|
|
176
|
+
const element = expr.elements.nodes[selector.index];
|
|
176
177
|
if (element === undefined || ts.isOmittedExpression(element) || ts.isSpreadElement(element)) {
|
|
177
178
|
return false;
|
|
178
179
|
}
|
|
@@ -214,7 +215,7 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
|
|
|
214
215
|
seen.add(symbol);
|
|
215
216
|
let sawDeclaration = false;
|
|
216
217
|
let defines = true;
|
|
217
|
-
for (const declaration of
|
|
218
|
+
for (const declaration of symbol.declarations) {
|
|
218
219
|
if (ts.isVariableDeclaration(declaration) &&
|
|
219
220
|
declaration.initializer !== undefined &&
|
|
220
221
|
ts.isVariableDeclarationList(declaration.parent) &&
|
|
@@ -243,7 +244,7 @@ function requestInitConstBindingSource(lowerer, declaration) {
|
|
|
243
244
|
else if (ts.isArrayBindingPattern(pattern)) {
|
|
244
245
|
if (current.dotDotDotToken)
|
|
245
246
|
return null;
|
|
246
|
-
const index = pattern.elements.indexOf(current);
|
|
247
|
+
const index = pattern.elements.nodes.indexOf(current);
|
|
247
248
|
if (index < 0)
|
|
248
249
|
return null;
|
|
249
250
|
selectors.unshift({ kind: "index", index });
|
|
@@ -295,7 +296,7 @@ function fenceRequestInitProperty(lowerer, access, seen) {
|
|
|
295
296
|
if (!symbol || seen.has(symbol))
|
|
296
297
|
return;
|
|
297
298
|
seen.add(symbol);
|
|
298
|
-
for (const declaration of
|
|
299
|
+
for (const declaration of symbol.declarations) {
|
|
299
300
|
if (ts.isPropertyAssignment(declaration)) {
|
|
300
301
|
fenceRequestInitValueInner(lowerer, declaration.initializer, seen);
|
|
301
302
|
}
|
|
@@ -333,8 +334,8 @@ function fenceRequestInitObject(lowerer, init, seen) {
|
|
|
333
334
|
// effective contributor for each dictionary member; a definite later
|
|
334
335
|
// `cache: undefined`, for example, suppresses an earlier unsupported
|
|
335
336
|
// cache value just as WebIDL observes at runtime.
|
|
336
|
-
for (let index = init.properties.length - 1; index >= 0; index--) {
|
|
337
|
-
const prop = init.properties[index];
|
|
337
|
+
for (let index = init.properties.nodes.length - 1; index >= 0; index--) {
|
|
338
|
+
const prop = init.properties.nodes[index];
|
|
338
339
|
if (ts.isSpreadAssignment(prop)) {
|
|
339
340
|
for (const row of rows) {
|
|
340
341
|
if (shadowed.has(row.member))
|
|
@@ -399,7 +400,7 @@ function fenceRequestInitValueInner(lowerer, value, seen) {
|
|
|
399
400
|
if (requestInitPropMutatedSymbols(lowerer).has(symbol))
|
|
400
401
|
return;
|
|
401
402
|
seen.add(symbol);
|
|
402
|
-
for (const declaration of
|
|
403
|
+
for (const declaration of symbol.declarations) {
|
|
403
404
|
if (ts.isBindingElement(declaration)) {
|
|
404
405
|
const source = requestInitConstBindingSource(lowerer, declaration);
|
|
405
406
|
if (source !== null) {
|
|
@@ -428,14 +429,14 @@ export function lowerFetchCall(lowerer, call) {
|
|
|
428
429
|
const symbol = lowerer.resolveValueSymbol(callee);
|
|
429
430
|
if (!symbol || !lowerer.isStdlibSymbol(symbol))
|
|
430
431
|
return null;
|
|
431
|
-
if (call.arguments.length < 1)
|
|
432
|
+
if (call.arguments.nodes.length < 1)
|
|
432
433
|
return null;
|
|
433
434
|
const loc = locOf(call);
|
|
434
|
-
const initNode = call.arguments[1];
|
|
435
|
+
const initNode = call.arguments.nodes[1];
|
|
435
436
|
if (initNode !== undefined)
|
|
436
437
|
fenceRequestInitValue(lowerer, initNode);
|
|
437
438
|
{
|
|
438
|
-
const inputNode = call.arguments[0];
|
|
439
|
+
const inputNode = call.arguments.nodes[0];
|
|
439
440
|
const input = lowerer.lowerExpr(inputNode);
|
|
440
441
|
let init;
|
|
441
442
|
if (initNode === undefined) {
|
|
@@ -470,7 +471,7 @@ export function lowerFetchCall(lowerer, call) {
|
|
|
470
471
|
{ kind: "varDecl", localId: inputLocal.id, init: input, loc },
|
|
471
472
|
{ kind: "varDecl", localId: initLocal.id, init, loc },
|
|
472
473
|
];
|
|
473
|
-
for (const argument of call.arguments.slice(2)) {
|
|
474
|
+
for (const argument of call.arguments.nodes.slice(2)) {
|
|
474
475
|
if (ts.isSpreadElement(argument)) {
|
|
475
476
|
lowerer.noLowering("spread surplus arguments on static fetch()", argument, "pass surplus arguments without spread syntax");
|
|
476
477
|
}
|
|
@@ -479,6 +480,18 @@ export function lowerFetchCall(lowerer, call) {
|
|
|
479
480
|
: lowerer.lowerExpr(argument);
|
|
480
481
|
stmts.push({ kind: "exprStmt", expr: discarded, loc: discarded.loc });
|
|
481
482
|
}
|
|
483
|
+
// A union input holding a URL arm (`string | URL`) converts through the
|
|
484
|
+
// checked-dynamic input path, which reads the URL's href at the call
|
|
485
|
+
// like the bare-URL arm below; narrowing it to a string would throw on
|
|
486
|
+
// the URL arm.
|
|
487
|
+
const unionWithUrl = input.type.kind === "union" &&
|
|
488
|
+
(lowerer.unions.get(input.type.unionId)?.arms.some((arm) => arm.kind === "url") ?? false) &&
|
|
489
|
+
lowerer.dynConvertible(input.type);
|
|
490
|
+
const dynInput = input.type.kind === "dyn"
|
|
491
|
+
? inputRef
|
|
492
|
+
: unionWithUrl
|
|
493
|
+
? { kind: "dynFrom", value: inputRef, type: DYN, loc: locOf(inputNode) }
|
|
494
|
+
: null;
|
|
482
495
|
const url = input.type.kind === "url"
|
|
483
496
|
? {
|
|
484
497
|
kind: "libCall",
|
|
@@ -487,13 +500,13 @@ export function lowerFetchCall(lowerer, call) {
|
|
|
487
500
|
type: STRING,
|
|
488
501
|
loc: locOf(inputNode),
|
|
489
502
|
}
|
|
490
|
-
:
|
|
491
|
-
?
|
|
503
|
+
: dynInput !== null
|
|
504
|
+
? dynInput
|
|
492
505
|
: lowerer.coerceInto(inputNode, inputRef, STRING);
|
|
493
506
|
const answer = {
|
|
494
507
|
kind: "libCall",
|
|
495
|
-
fn:
|
|
496
|
-
args: [
|
|
508
|
+
fn: dynInput !== null ? "fetch.input" : "fetch.start",
|
|
509
|
+
args: [url, initRef],
|
|
497
510
|
type: { kind: "promise", inner: DYN },
|
|
498
511
|
loc,
|
|
499
512
|
};
|
|
@@ -513,12 +526,12 @@ export function lowerStaticResponseCall(lowerer, call) {
|
|
|
513
526
|
const member = staticResponseMemberName(lowerer, access);
|
|
514
527
|
if (access.questionDotToken ||
|
|
515
528
|
(member !== "json" && member !== "text" && member !== "bytes" && member !== "arrayBuffer") ||
|
|
516
|
-
call.arguments.length !== 0) {
|
|
529
|
+
call.arguments.nodes.length !== 0) {
|
|
517
530
|
return null;
|
|
518
531
|
}
|
|
519
532
|
const recvType = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
|
|
520
533
|
const sym = recvType.getAliasSymbol() ?? recvType.getSymbol();
|
|
521
|
-
if (!sym || sym
|
|
534
|
+
if (!sym || ts.symbolName(sym) !== "Response" || !lowerer.isStdlibSymbol(sym))
|
|
522
535
|
return null;
|
|
523
536
|
const recv = lowerer.lowerExpr(access.expression);
|
|
524
537
|
if (recv.type.kind !== "dyn")
|
|
@@ -591,7 +604,7 @@ function lowerStaticFixedFetchMethodCall(lowerer, call, access, member, receiver
|
|
|
591
604
|
loc,
|
|
592
605
|
},
|
|
593
606
|
then: answer,
|
|
594
|
-
else_: nodeThrowExpr(1, "", `${
|
|
607
|
+
else_: nodeThrowExpr(1, "", `${ts.getTextOfNode(access)} is not a function`, answer.type, loc),
|
|
595
608
|
type: answer.type,
|
|
596
609
|
loc,
|
|
597
610
|
};
|
|
@@ -721,7 +734,7 @@ function fetchMethodArgumentIsLive(owner, members, index) {
|
|
|
721
734
|
export function fenceStaticResponseMember(lowerer, access, use) {
|
|
722
735
|
const recvType = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
|
|
723
736
|
const sym = recvType.getAliasSymbol() ?? recvType.getSymbol();
|
|
724
|
-
if (!sym || sym
|
|
737
|
+
if (!sym || ts.symbolName(sym) !== "Response" || !lowerer.isStdlibSymbol(sym))
|
|
725
738
|
return null;
|
|
726
739
|
const members = fetchAccessMemberNames(lowerer, access);
|
|
727
740
|
if (members === null)
|
|
@@ -744,7 +757,7 @@ export function fenceStaticResponseMember(lowerer, access, use) {
|
|
|
744
757
|
export function fenceStaticHeadersMember(lowerer, access, use) {
|
|
745
758
|
const recvType = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
|
|
746
759
|
const sym = recvType.getAliasSymbol() ?? recvType.getSymbol();
|
|
747
|
-
if (!sym || sym
|
|
760
|
+
if (!sym || ts.symbolName(sym) !== "Headers" || !lowerer.isStdlibSymbol(sym))
|
|
748
761
|
return null;
|
|
749
762
|
const members = fetchAccessMemberNames(lowerer, access);
|
|
750
763
|
if (members === null)
|
|
@@ -775,7 +788,11 @@ export function fenceStaticAbortControllerMemberRead(lowerer, access) {
|
|
|
775
788
|
function isStdlibFetchInterface(lowerer, node, owner) {
|
|
776
789
|
const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node));
|
|
777
790
|
for (const symbol of [type.getSymbol(), type.getAliasSymbol()]) {
|
|
778
|
-
|
|
791
|
+
// NodeJS.ReadableStream shares the WHATWG interface's name.
|
|
792
|
+
if (symbol !== undefined &&
|
|
793
|
+
ts.symbolName(symbol) === owner &&
|
|
794
|
+
lowerer.isStdlibSymbol(symbol) &&
|
|
795
|
+
!symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientNamespace(d, "NodeJS")))
|
|
779
796
|
return symbol;
|
|
780
797
|
}
|
|
781
798
|
return null;
|
|
@@ -829,9 +846,9 @@ function fetchObjectAssignmentMemberName(lowerer, property) {
|
|
|
829
846
|
function fetchInterfaceInventoryOwner(lowerer, node) {
|
|
830
847
|
const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node));
|
|
831
848
|
const symbol = [type.getSymbol(), type.getAliasSymbol()].find((candidate) => candidate !== undefined &&
|
|
832
|
-
NODE24_FETCH_COMPAT_PROFILE.inventory.interfaces.includes(candidate
|
|
849
|
+
NODE24_FETCH_COMPAT_PROFILE.inventory.interfaces.includes(ts.symbolName(candidate)) &&
|
|
833
850
|
lowerer.isStdlibSymbol(candidate));
|
|
834
|
-
return symbol ? { owner: symbol
|
|
851
|
+
return symbol ? { owner: ts.symbolName(symbol), symbol } : null;
|
|
835
852
|
}
|
|
836
853
|
function fenceFetchObjectMembers(lowerer, ownerNode, members) {
|
|
837
854
|
const resolved = fetchInterfaceInventoryOwner(lowerer, ownerNode);
|
|
@@ -858,7 +875,7 @@ function fenceFetchObjectMembers(lowerer, ownerNode, members) {
|
|
|
858
875
|
}
|
|
859
876
|
}
|
|
860
877
|
export function fenceFetchObjectBinding(lowerer, pattern) {
|
|
861
|
-
fenceFetchObjectMembers(lowerer, pattern, pattern.elements.flatMap((element) => {
|
|
878
|
+
fenceFetchObjectMembers(lowerer, pattern, pattern.elements.nodes.flatMap((element) => {
|
|
862
879
|
if (element.dotDotDotToken)
|
|
863
880
|
return [];
|
|
864
881
|
const member = fetchObjectBindingMemberName(lowerer, element);
|
|
@@ -869,7 +886,7 @@ export function fenceFetchObjectBinding(lowerer, pattern) {
|
|
|
869
886
|
* a binding pattern, but its source type lives on the right-hand expression
|
|
870
887
|
* instead of the target AST. */
|
|
871
888
|
export function fenceFetchObjectAssignment(lowerer, target, source) {
|
|
872
|
-
fenceFetchObjectMembers(lowerer, source, target.properties.flatMap((property) => {
|
|
889
|
+
fenceFetchObjectMembers(lowerer, source, target.properties.nodes.flatMap((property) => {
|
|
873
890
|
const member = fetchObjectAssignmentMemberName(lowerer, property);
|
|
874
891
|
return member === null ? [] : [{ member, node: property }];
|
|
875
892
|
}));
|
|
@@ -901,7 +918,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
|
|
|
901
918
|
if (call.questionDotToken ||
|
|
902
919
|
!ts.isElementAccessExpression(call.expression) ||
|
|
903
920
|
call.expression.questionDotToken ||
|
|
904
|
-
call.arguments.some((argument) => ts.isSpreadElement(argument))) {
|
|
921
|
+
call.arguments.nodes.some((argument) => ts.isSpreadElement(argument))) {
|
|
905
922
|
return null;
|
|
906
923
|
}
|
|
907
924
|
const access = call.expression;
|
|
@@ -929,7 +946,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
|
|
|
929
946
|
const loc = locOf(call);
|
|
930
947
|
const receiverLocal = lowerer.declareHiddenLocal("%fetchReceiver", DYN);
|
|
931
948
|
const keyLocal = lowerer.declareHiddenLocal("%fetchMember", STRING);
|
|
932
|
-
const argumentValues = call.arguments.map((argument, index) => fetchMethodArgumentIsLive(resolved.owner, members, index)
|
|
949
|
+
const argumentValues = call.arguments.nodes.map((argument, index) => fetchMethodArgumentIsLive(resolved.owner, members, index)
|
|
933
950
|
? lowerLiveWebValue(lowerer, argument)
|
|
934
951
|
: lowerer.lowerExprExpecting(argument, DYN));
|
|
935
952
|
const argumentLocals = argumentValues.map((argument) => lowerer.declareHiddenLocal("%fetchMethodArg", argument.type));
|
|
@@ -963,7 +980,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
|
|
|
963
980
|
loc,
|
|
964
981
|
}));
|
|
965
982
|
const staticResponsePromise = resolved.owner === "Response" &&
|
|
966
|
-
call.arguments.length === 0 &&
|
|
983
|
+
call.arguments.nodes.length === 0 &&
|
|
967
984
|
members.every((member) => member === "text" || member === "bytes")
|
|
968
985
|
? (() => {
|
|
969
986
|
// The checker spells this call as
|
|
@@ -989,7 +1006,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
|
|
|
989
1006
|
kind: "dynInvoke",
|
|
990
1007
|
recv: receiverRef,
|
|
991
1008
|
method: member,
|
|
992
|
-
calleeName:
|
|
1009
|
+
calleeName: ts.getTextOfNode(access),
|
|
993
1010
|
args: argumentRefs,
|
|
994
1011
|
type: DYN,
|
|
995
1012
|
loc,
|
|
@@ -999,7 +1016,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
|
|
|
999
1016
|
// throw "is not a function" rather than dispatching every mismatch to the
|
|
1000
1017
|
// last member.
|
|
1001
1018
|
const invocationType = staticResponsePromise ?? DYN;
|
|
1002
|
-
let result = nodeThrowExpr(1, "", `${
|
|
1019
|
+
let result = nodeThrowExpr(1, "", `${ts.getTextOfNode(access)} is not a function`, invocationType, loc);
|
|
1003
1020
|
for (let index = members.length - 1; index >= 0; index--) {
|
|
1004
1021
|
const member = members[index];
|
|
1005
1022
|
result = {
|
|
@@ -1065,7 +1082,7 @@ export function fenceStaticReadableStreamMember(lowerer, access, use) {
|
|
|
1065
1082
|
* member-call path tries to lower the receiver as a value. */
|
|
1066
1083
|
function staticFirstArgWithSurplusArgs(lowerer, call, first) {
|
|
1067
1084
|
const loc = locOf(call);
|
|
1068
|
-
if (call.arguments.length <= 1)
|
|
1085
|
+
if (call.arguments.nodes.length <= 1)
|
|
1069
1086
|
return first;
|
|
1070
1087
|
const firstLocal = lowerer.declareHiddenLocal("%fetchArg", first.type);
|
|
1071
1088
|
const firstRef = {
|
|
@@ -1075,7 +1092,7 @@ function staticFirstArgWithSurplusArgs(lowerer, call, first) {
|
|
|
1075
1092
|
loc,
|
|
1076
1093
|
};
|
|
1077
1094
|
const stmts = [{ kind: "varDecl", localId: firstLocal.id, init: first, loc }];
|
|
1078
|
-
for (const argument of call.arguments.slice(1)) {
|
|
1095
|
+
for (const argument of call.arguments.nodes.slice(1)) {
|
|
1079
1096
|
if (ts.isSpreadElement(argument)) {
|
|
1080
1097
|
lowerer.noLowering("spread surplus arguments on the static fetch companion APIs", argument, "pass surplus arguments without spread syntax");
|
|
1081
1098
|
}
|
|
@@ -1107,18 +1124,18 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1107
1124
|
}
|
|
1108
1125
|
const root = call.expression.expression;
|
|
1109
1126
|
const symbol = lowerer.resolveValueSymbol(root);
|
|
1110
|
-
if (!symbol || !lowerer.isStdlibSymbol(symbol))
|
|
1127
|
+
if ((!symbol || !lowerer.isStdlibSymbol(symbol)) && !isStreamWebReadableStream(lowerer, root))
|
|
1111
1128
|
return null;
|
|
1112
1129
|
const loc = locOf(call);
|
|
1113
1130
|
if (root.text === "AbortSignal") {
|
|
1114
1131
|
noteEventListeners(lowerer, loc);
|
|
1115
1132
|
switch (call.expression.name.text) {
|
|
1116
1133
|
case "timeout":
|
|
1117
|
-
if (call.arguments[0] && ts.isSpreadElement(call.arguments[0])) {
|
|
1134
|
+
if (call.arguments.nodes[0] && ts.isSpreadElement(call.arguments.nodes[0])) {
|
|
1118
1135
|
return null;
|
|
1119
1136
|
}
|
|
1120
|
-
return staticCallWithSurplusArgs(lowerer, call, call.arguments[0]
|
|
1121
|
-
? lowerer.lowerExprExpecting(call.arguments[0], DYN)
|
|
1137
|
+
return staticCallWithSurplusArgs(lowerer, call, call.arguments.nodes[0]
|
|
1138
|
+
? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
|
|
1122
1139
|
: dynUndefinedExpr(loc), (first) => ({
|
|
1123
1140
|
kind: "libCall",
|
|
1124
1141
|
fn: "fetch.abortTimeout",
|
|
@@ -1127,7 +1144,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1127
1144
|
loc,
|
|
1128
1145
|
}));
|
|
1129
1146
|
case "abort":
|
|
1130
|
-
if (call.arguments.length === 0) {
|
|
1147
|
+
if (call.arguments.nodes.length === 0) {
|
|
1131
1148
|
return {
|
|
1132
1149
|
kind: "libCall",
|
|
1133
1150
|
fn: "fetch.abortNow",
|
|
@@ -1136,9 +1153,9 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1136
1153
|
loc,
|
|
1137
1154
|
};
|
|
1138
1155
|
}
|
|
1139
|
-
if (ts.isSpreadElement(call.arguments[0]))
|
|
1156
|
+
if (ts.isSpreadElement(call.arguments.nodes[0]))
|
|
1140
1157
|
return null;
|
|
1141
|
-
return staticCallWithSurplusArgs(lowerer, call, lowerLiveWebValue(lowerer, call.arguments[0]), (first) => ({
|
|
1158
|
+
return staticCallWithSurplusArgs(lowerer, call, lowerLiveWebValue(lowerer, call.arguments.nodes[0]), (first) => ({
|
|
1142
1159
|
kind: "libCall",
|
|
1143
1160
|
fn: "fetch.abortNow",
|
|
1144
1161
|
args: [first],
|
|
@@ -1146,11 +1163,11 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1146
1163
|
loc,
|
|
1147
1164
|
}));
|
|
1148
1165
|
case "any":
|
|
1149
|
-
if (call.arguments[0] && ts.isSpreadElement(call.arguments[0])) {
|
|
1166
|
+
if (call.arguments.nodes[0] && ts.isSpreadElement(call.arguments.nodes[0])) {
|
|
1150
1167
|
return null;
|
|
1151
1168
|
}
|
|
1152
|
-
return staticCallWithSurplusArgs(lowerer, call, call.arguments[0]
|
|
1153
|
-
? lowerer.lowerExprExpecting(call.arguments[0], DYN)
|
|
1169
|
+
return staticCallWithSurplusArgs(lowerer, call, call.arguments.nodes[0]
|
|
1170
|
+
? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
|
|
1154
1171
|
: dynUndefinedExpr(loc), (first) => ({
|
|
1155
1172
|
kind: "libCall",
|
|
1156
1173
|
fn: "fetch.abortAny",
|
|
@@ -1164,8 +1181,8 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1164
1181
|
}
|
|
1165
1182
|
if (root.text === "ReadableStream" &&
|
|
1166
1183
|
call.expression.name.text === "from" &&
|
|
1167
|
-
(!call.arguments[0] || !ts.isSpreadElement(call.arguments[0]))) {
|
|
1168
|
-
if (!call.arguments[0]) {
|
|
1184
|
+
(!call.arguments.nodes[0] || !ts.isSpreadElement(call.arguments.nodes[0]))) {
|
|
1185
|
+
if (!call.arguments.nodes[0]) {
|
|
1169
1186
|
return {
|
|
1170
1187
|
kind: "libCall",
|
|
1171
1188
|
fn: "fetch.streamFrom",
|
|
@@ -1174,7 +1191,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1174
1191
|
loc,
|
|
1175
1192
|
};
|
|
1176
1193
|
}
|
|
1177
|
-
let source = lowerer.lowerExpr(call.arguments[0]);
|
|
1194
|
+
let source = lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
1178
1195
|
// A readonly tuple satisfies the fallback's readonly-array overload,
|
|
1179
1196
|
// but maps to a monomorphic record in IR. Reuse the ordinary
|
|
1180
1197
|
// tuple→array width conversion with the resolved generic parameter so
|
|
@@ -1196,7 +1213,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1196
1213
|
canConvertToDyn(source.type.elem, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))) ||
|
|
1197
1214
|
source.type.kind === "dyn";
|
|
1198
1215
|
if (!preserve) {
|
|
1199
|
-
lowerer.noLowering(`ReadableStream.from() over ${lowerer.checker.typeToString(lowerer.typeOf(call.arguments[0]))} iterables`, call.arguments[0], "arrays, Uint8Array, and strings are supported — spread other synchronous iterables into an array first: [...iterable]");
|
|
1216
|
+
lowerer.noLowering(`ReadableStream.from() over ${lowerer.checker.typeToString(lowerer.typeOf(call.arguments.nodes[0]))} iterables`, call.arguments.nodes[0], "arrays, Uint8Array, and strings are supported — spread other synchronous iterables into an array first: [...iterable]");
|
|
1200
1217
|
}
|
|
1201
1218
|
return staticCallWithSurplusArgs(lowerer, call, source, (first) => ({
|
|
1202
1219
|
kind: "libCall",
|
|
@@ -1219,7 +1236,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
|
|
|
1219
1236
|
export function lowerStaticAbortControllerCall(lowerer, call) {
|
|
1220
1237
|
const access = call.expression;
|
|
1221
1238
|
if (call.questionDotToken ||
|
|
1222
|
-
call.arguments.some((argument) => ts.isSpreadElement(argument)) ||
|
|
1239
|
+
call.arguments.nodes.some((argument) => ts.isSpreadElement(argument)) ||
|
|
1223
1240
|
(!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
|
|
1224
1241
|
access.questionDotToken ||
|
|
1225
1242
|
staticResponseMemberName(lowerer, access) !== "abort") {
|
|
@@ -1227,25 +1244,24 @@ export function lowerStaticAbortControllerCall(lowerer, call) {
|
|
|
1227
1244
|
}
|
|
1228
1245
|
const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
|
|
1229
1246
|
const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
|
|
1230
|
-
if (symbol
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
|
|
1247
|
+
if (symbol === undefined ||
|
|
1248
|
+
ts.symbolName(symbol) !== "AbortController" ||
|
|
1249
|
+
!symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
1234
1250
|
return null;
|
|
1235
1251
|
}
|
|
1236
1252
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
1237
1253
|
if (receiver.type.kind !== "dyn")
|
|
1238
1254
|
return null;
|
|
1239
1255
|
const loc = locOf(call);
|
|
1240
|
-
const first = call.arguments[0]
|
|
1241
|
-
? lowerLiveWebValue(lowerer, call.arguments[0])
|
|
1256
|
+
const first = call.arguments.nodes[0]
|
|
1257
|
+
? lowerLiveWebValue(lowerer, call.arguments.nodes[0])
|
|
1242
1258
|
: dynUndefinedExpr(loc);
|
|
1243
1259
|
const args = [staticFirstArgWithSurplusArgs(lowerer, call, first)];
|
|
1244
1260
|
return lowerStaticFixedFetchMethodCall(lowerer, call, access, "abort", receiver, args, (receiverRef, argumentRefs) => ({
|
|
1245
1261
|
kind: "dynInvoke",
|
|
1246
1262
|
recv: receiverRef,
|
|
1247
1263
|
method: "abort",
|
|
1248
|
-
calleeName:
|
|
1264
|
+
calleeName: ts.getTextOfNode(access),
|
|
1249
1265
|
args: argumentRefs,
|
|
1250
1266
|
type: DYN,
|
|
1251
1267
|
loc,
|
|
@@ -1257,7 +1273,7 @@ export function lowerStaticAbortControllerCall(lowerer, call) {
|
|
|
1257
1273
|
export function lowerStaticReadableStreamControllerCall(lowerer, call) {
|
|
1258
1274
|
const access = call.expression;
|
|
1259
1275
|
if (call.questionDotToken ||
|
|
1260
|
-
call.arguments.length > 1 ||
|
|
1276
|
+
call.arguments.nodes.length > 1 ||
|
|
1261
1277
|
(!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
|
|
1262
1278
|
access.questionDotToken) {
|
|
1263
1279
|
return null;
|
|
@@ -1267,10 +1283,9 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
|
|
|
1267
1283
|
return null;
|
|
1268
1284
|
const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
|
|
1269
1285
|
const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
|
|
1270
|
-
if (symbol
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
|
|
1286
|
+
if (symbol === undefined ||
|
|
1287
|
+
ts.symbolName(symbol) !== "ReadableStreamDefaultController" ||
|
|
1288
|
+
!symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
1274
1289
|
return null;
|
|
1275
1290
|
}
|
|
1276
1291
|
const recv = lowerer.lowerExpr(access.expression);
|
|
@@ -1278,13 +1293,15 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
|
|
|
1278
1293
|
return null;
|
|
1279
1294
|
const loc = locOf(call);
|
|
1280
1295
|
const args = [
|
|
1281
|
-
call.arguments
|
|
1296
|
+
call.arguments.nodes[0]
|
|
1297
|
+
? lowerLiveWebValue(lowerer, call.arguments.nodes[0])
|
|
1298
|
+
: dynUndefinedExpr(loc),
|
|
1282
1299
|
];
|
|
1283
1300
|
return lowerStaticFixedFetchMethodCall(lowerer, call, access, member, recv, args, (receiver, argumentRefs) => ({
|
|
1284
1301
|
kind: "dynInvoke",
|
|
1285
1302
|
recv: receiver,
|
|
1286
1303
|
method: member,
|
|
1287
|
-
calleeName:
|
|
1304
|
+
calleeName: ts.getTextOfNode(access),
|
|
1288
1305
|
args: argumentRefs,
|
|
1289
1306
|
type: DYN,
|
|
1290
1307
|
loc,
|
|
@@ -1296,8 +1313,8 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
|
|
|
1296
1313
|
export function lowerStaticReadableStreamCancelCall(lowerer, call) {
|
|
1297
1314
|
const access = call.expression;
|
|
1298
1315
|
if (call.questionDotToken ||
|
|
1299
|
-
call.arguments.length > 1 ||
|
|
1300
|
-
call.arguments.some((argument) => ts.isSpreadElement(argument)) ||
|
|
1316
|
+
call.arguments.nodes.length > 1 ||
|
|
1317
|
+
call.arguments.nodes.some((argument) => ts.isSpreadElement(argument)) ||
|
|
1301
1318
|
(!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
|
|
1302
1319
|
access.questionDotToken ||
|
|
1303
1320
|
staticResponseMemberName(lowerer, access) !== "cancel") {
|
|
@@ -1312,13 +1329,15 @@ export function lowerStaticReadableStreamCancelCall(lowerer, call) {
|
|
|
1312
1329
|
return null;
|
|
1313
1330
|
const loc = locOf(call);
|
|
1314
1331
|
const args = [
|
|
1315
|
-
call.arguments
|
|
1332
|
+
call.arguments.nodes[0]
|
|
1333
|
+
? lowerLiveWebValue(lowerer, call.arguments.nodes[0])
|
|
1334
|
+
: dynUndefinedExpr(loc),
|
|
1316
1335
|
];
|
|
1317
1336
|
return lowerStaticFixedFetchMethodCall(lowerer, call, access, "cancel", receiver, args, (receiverRef, argumentRefs) => ({
|
|
1318
1337
|
kind: "dynInvoke",
|
|
1319
1338
|
recv: receiverRef,
|
|
1320
1339
|
method: "cancel",
|
|
1321
|
-
calleeName:
|
|
1340
|
+
calleeName: ts.getTextOfNode(access),
|
|
1322
1341
|
args: argumentRefs,
|
|
1323
1342
|
type: DYN,
|
|
1324
1343
|
loc,
|
|
@@ -1331,8 +1350,8 @@ export function lowerStaticReadableStreamCancelCall(lowerer, call) {
|
|
|
1331
1350
|
export function lowerStaticAbortSignalListenerCall(lowerer, call) {
|
|
1332
1351
|
const access = call.expression;
|
|
1333
1352
|
if (call.questionDotToken ||
|
|
1334
|
-
call.arguments.length < 2 ||
|
|
1335
|
-
call.arguments.some((arg) => ts.isSpreadElement(arg)) ||
|
|
1353
|
+
call.arguments.nodes.length < 2 ||
|
|
1354
|
+
call.arguments.nodes.some((arg) => ts.isSpreadElement(arg)) ||
|
|
1336
1355
|
(!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
|
|
1337
1356
|
access.questionDotToken) {
|
|
1338
1357
|
return null;
|
|
@@ -1343,10 +1362,9 @@ export function lowerStaticAbortSignalListenerCall(lowerer, call) {
|
|
|
1343
1362
|
}
|
|
1344
1363
|
const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
|
|
1345
1364
|
const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
|
|
1346
|
-
if ((symbol
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
|
|
1365
|
+
if (((symbol === undefined || ts.symbolName(symbol) !== "AbortSignal") &&
|
|
1366
|
+
(symbol === undefined || ts.symbolName(symbol) !== "EventTarget")) ||
|
|
1367
|
+
!symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
1350
1368
|
return null;
|
|
1351
1369
|
}
|
|
1352
1370
|
const recv = lowerer.lowerExpr(access.expression);
|
|
@@ -1354,12 +1372,12 @@ export function lowerStaticAbortSignalListenerCall(lowerer, call) {
|
|
|
1354
1372
|
return null;
|
|
1355
1373
|
const loc = locOf(call);
|
|
1356
1374
|
noteEventListeners(lowerer, loc);
|
|
1357
|
-
const args = call.arguments.map((arg, index) => index === 1 ? lowerLiveWebValue(lowerer, arg) : lowerer.lowerExprExpecting(arg, DYN));
|
|
1375
|
+
const args = call.arguments.nodes.map((arg, index) => index === 1 ? lowerLiveWebValue(lowerer, arg) : lowerer.lowerExprExpecting(arg, DYN));
|
|
1358
1376
|
return lowerStaticFixedFetchMethodCall(lowerer, call, access, member, recv, args, (receiver, argumentRefs) => ({
|
|
1359
1377
|
kind: "dynInvoke",
|
|
1360
1378
|
recv: receiver,
|
|
1361
1379
|
method: member,
|
|
1362
|
-
calleeName:
|
|
1380
|
+
calleeName: ts.getTextOfNode(access),
|
|
1363
1381
|
args: argumentRefs,
|
|
1364
1382
|
type: DYN,
|
|
1365
1383
|
loc,
|
|
@@ -1372,7 +1390,7 @@ export function lowerEventTargetNew(lowerer, expr) {
|
|
|
1372
1390
|
const name = stdlibGlobalNameOf(lowerer, expr.expression);
|
|
1373
1391
|
if (name !== "EventTarget" && name !== "Event" && name !== "CustomEvent")
|
|
1374
1392
|
return null;
|
|
1375
|
-
const args = expr.arguments ?? [];
|
|
1393
|
+
const args = expr.arguments?.nodes ?? [];
|
|
1376
1394
|
if (args.some(ts.isSpreadElement))
|
|
1377
1395
|
return null;
|
|
1378
1396
|
const loc = locOf(expr);
|
|
@@ -1408,7 +1426,7 @@ export function lowerAbortControllerNew(lowerer, expr) {
|
|
|
1408
1426
|
const symbol = lowerer.resolveValueSymbol(expr.expression);
|
|
1409
1427
|
if (!symbol || !lowerer.isStdlibSymbol(symbol))
|
|
1410
1428
|
return null;
|
|
1411
|
-
const args = expr.arguments ?? [];
|
|
1429
|
+
const args = expr.arguments?.nodes ?? [];
|
|
1412
1430
|
if (args.some((argument) => ts.isSpreadElement(argument)))
|
|
1413
1431
|
return null;
|
|
1414
1432
|
const loc = locOf(expr);
|
|
@@ -1434,14 +1452,20 @@ export function lowerAbortControllerNew(lowerer, expr) {
|
|
|
1434
1452
|
loc,
|
|
1435
1453
|
};
|
|
1436
1454
|
}
|
|
1455
|
+
/** An import binding of node:stream/web's ReadableStream, which IS the
|
|
1456
|
+
* global class (`import { ReadableStream } from "node:stream/web"`). */
|
|
1457
|
+
function isStreamWebReadableStream(lowerer, ident) {
|
|
1458
|
+
return ident.text === "ReadableStream" && lowerer.isStdlibGlobal(ident, "ReadableStream");
|
|
1459
|
+
}
|
|
1437
1460
|
export function lowerStaticReadableStreamNew(lowerer, expr) {
|
|
1438
1461
|
if (!ts.isIdentifier(expr.expression) || expr.expression.text !== "ReadableStream") {
|
|
1439
1462
|
return null;
|
|
1440
1463
|
}
|
|
1441
1464
|
const symbol = lowerer.resolveValueSymbol(expr.expression);
|
|
1442
|
-
if (!symbol || !lowerer.isStdlibSymbol(symbol))
|
|
1465
|
+
if ((!symbol || !lowerer.isStdlibSymbol(symbol)) &&
|
|
1466
|
+
!isStreamWebReadableStream(lowerer, expr.expression))
|
|
1443
1467
|
return null;
|
|
1444
|
-
const args = expr.arguments ?? [];
|
|
1468
|
+
const args = expr.arguments?.nodes ?? [];
|
|
1445
1469
|
if (args.length > 1)
|
|
1446
1470
|
return null;
|
|
1447
1471
|
const loc = locOf(expr);
|
|
@@ -1463,7 +1487,7 @@ export function lowerFetchWebNew(lowerer, expr) {
|
|
|
1463
1487
|
const name = stdlibGlobalNameOf(lowerer, expr.expression);
|
|
1464
1488
|
if (name !== "Request" && name !== "Headers")
|
|
1465
1489
|
return null;
|
|
1466
|
-
const args = expr.arguments ?? [];
|
|
1490
|
+
const args = expr.arguments?.nodes ?? [];
|
|
1467
1491
|
if (args.some(ts.isSpreadElement))
|
|
1468
1492
|
return null;
|
|
1469
1493
|
const loc = locOf(expr);
|
|
@@ -1485,15 +1509,38 @@ export function lowerFetchWebNew(lowerer, expr) {
|
|
|
1485
1509
|
export function lowerResponseNew(lowerer, expr) {
|
|
1486
1510
|
if (stdlibGlobalNameOf(lowerer, expr.expression) !== "Response")
|
|
1487
1511
|
return null;
|
|
1488
|
-
const args = expr.arguments ?? [];
|
|
1512
|
+
const args = expr.arguments?.nodes ?? [];
|
|
1489
1513
|
if (args.some(ts.isSpreadElement))
|
|
1490
1514
|
return null;
|
|
1491
|
-
|
|
1515
|
+
return lowerResponseConstruction(lowerer, args, locOf(expr), false);
|
|
1516
|
+
}
|
|
1517
|
+
/** Static `Response.json(data, init?)`: the data crosses into the runtime's
|
|
1518
|
+
* checked-dynamic JSON serializer (toJSON hooks included) after ResponseInit
|
|
1519
|
+
* converts, then the response initializes as the constructor does. */
|
|
1520
|
+
export function lowerResponseStaticJson(lowerer, call) {
|
|
1521
|
+
if (call.questionDotToken || !ts.isPropertyAccessExpression(call.expression))
|
|
1522
|
+
return null;
|
|
1523
|
+
const access = call.expression;
|
|
1524
|
+
if (access.questionDotToken || access.name.text !== "json")
|
|
1525
|
+
return null;
|
|
1526
|
+
if (!lowerer.isStdlibGlobal(access.expression, "Response"))
|
|
1527
|
+
return null;
|
|
1528
|
+
if (call.arguments.nodes.some(ts.isSpreadElement) || call.arguments.nodes.length === 0)
|
|
1529
|
+
return null;
|
|
1530
|
+
return lowerResponseConstruction(lowerer, call.arguments.nodes, locOf(call), true);
|
|
1531
|
+
}
|
|
1532
|
+
function lowerResponseConstruction(lowerer, args, loc, json) {
|
|
1492
1533
|
const toDyn = (node, value, what) => {
|
|
1493
1534
|
if (node === undefined)
|
|
1494
1535
|
return dynUndefinedExpr(loc);
|
|
1495
1536
|
if (value.type.kind === "dyn")
|
|
1496
1537
|
return value;
|
|
1538
|
+
if (what === "JSON data") {
|
|
1539
|
+
const boxed = lowerer.coerceToExpected(value, DYN);
|
|
1540
|
+
if (boxed.type.kind === "dyn")
|
|
1541
|
+
return boxed;
|
|
1542
|
+
lowerer.noLowering(`Response.json of '${lowerer.fmt(value.type)}' values`, node, "the data must cross the checked-dynamic boundary (number, string, boolean, null, records, arrays, and 'unknown')");
|
|
1543
|
+
}
|
|
1497
1544
|
/* A user class can satisfy ResponseInit structurally through plain
|
|
1498
1545
|
* fields. Project just the declared dictionary members into a record,
|
|
1499
1546
|
* then use the ordinary checked-dynamic copy. objRecordWidthHelper
|
|
@@ -1598,8 +1645,11 @@ export function lowerResponseNew(lowerer, expr) {
|
|
|
1598
1645
|
}
|
|
1599
1646
|
const result = {
|
|
1600
1647
|
kind: "libCall",
|
|
1601
|
-
fn: "fetch.responseNew",
|
|
1602
|
-
args: [
|
|
1648
|
+
fn: json ? "fetch.responseJsonStatic" : "fetch.responseNew",
|
|
1649
|
+
args: [
|
|
1650
|
+
toDyn(bodyNode, bodyRef, json ? "JSON data" : "a body"),
|
|
1651
|
+
toDyn(initNode, initRef, "an init value"),
|
|
1652
|
+
],
|
|
1603
1653
|
type: DYN,
|
|
1604
1654
|
loc,
|
|
1605
1655
|
};
|
|
@@ -1612,7 +1662,7 @@ export function lowerResponseNew(lowerer, expr) {
|
|
|
1612
1662
|
export function lowerStaticReadableStreamReaderCall(lowerer, call) {
|
|
1613
1663
|
const access = call.expression;
|
|
1614
1664
|
if (call.questionDotToken ||
|
|
1615
|
-
call.arguments.length !== 0 ||
|
|
1665
|
+
call.arguments.nodes.length !== 0 ||
|
|
1616
1666
|
(!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
|
|
1617
1667
|
access.questionDotToken) {
|
|
1618
1668
|
return null;
|
|
@@ -1622,10 +1672,9 @@ export function lowerStaticReadableStreamReaderCall(lowerer, call) {
|
|
|
1622
1672
|
return null;
|
|
1623
1673
|
const receiverTs = lowerer.typeOf(access.expression);
|
|
1624
1674
|
const symbol = receiverTs.getSymbol();
|
|
1625
|
-
if (symbol
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
|
|
1675
|
+
if (symbol === undefined ||
|
|
1676
|
+
ts.symbolName(symbol) !== "ReadableStreamDefaultReader" ||
|
|
1677
|
+
!symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
1629
1678
|
return null;
|
|
1630
1679
|
}
|
|
1631
1680
|
const type = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
@@ -1644,15 +1693,15 @@ export function lowerStaticReadableStreamReaderCall(lowerer, call) {
|
|
|
1644
1693
|
export function lowerDynamicImportCall(lowerer, call) {
|
|
1645
1694
|
if (call.expression.kind !== ts.SyntaxKind.ImportKeyword)
|
|
1646
1695
|
return null;
|
|
1647
|
-
const arg = call.arguments[0];
|
|
1696
|
+
const arg = call.arguments.nodes[0];
|
|
1648
1697
|
if (arg === undefined || !ts.isStringLiteralLike(arg)) {
|
|
1649
1698
|
lowerer.unsupported("SC1090", call, "dynamic import() of computed specifiers (the module graph resolves at " +
|
|
1650
1699
|
"build time — the specifier must be a string literal)");
|
|
1651
1700
|
}
|
|
1652
|
-
if (call.arguments.length !== 1) {
|
|
1701
|
+
if (call.arguments.nodes.length !== 1) {
|
|
1653
1702
|
lowerer.unsupported("SC1090", call, "dynamic import() with import attributes");
|
|
1654
1703
|
}
|
|
1655
|
-
const res = lowerer.dynImports.get(`${
|
|
1704
|
+
const res = lowerer.dynImports.get(`${ts.getSourceFileOfNode(call).fileName}\u0000${arg.text}`);
|
|
1656
1705
|
if (res === undefined)
|
|
1657
1706
|
lowerer.refuseUnsupportedApi("'import()'", call);
|
|
1658
1707
|
if (res.kind === "program-module") {
|
|
@@ -1666,7 +1715,7 @@ export function lowerDynamicImportCall(lowerer, call) {
|
|
|
1666
1715
|
/** The checker-resolved program source behind one literal import(). */
|
|
1667
1716
|
function programImportTarget(lowerer, arg) {
|
|
1668
1717
|
const modSym = lowerer.checker.getSymbolAtLocation(arg);
|
|
1669
|
-
for (const d of modSym ?
|
|
1718
|
+
for (const d of modSym ? modSym.declarations : []) {
|
|
1670
1719
|
if (ts.isSourceFile(d) && !d.isDeclarationFile)
|
|
1671
1720
|
return d;
|
|
1672
1721
|
}
|
|
@@ -1816,12 +1865,12 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
|
|
|
1816
1865
|
{
|
|
1817
1866
|
const sigMember = lowerer.stdlibGlobalMember(access, "AbortSignal");
|
|
1818
1867
|
if ((sigMember === "timeout" || sigMember === "abort" || sigMember === "any") &&
|
|
1819
|
-
call.arguments.every((argument) => !ts.isSpreadElement(argument))) {
|
|
1868
|
+
call.arguments.nodes.every((argument) => !ts.isSpreadElement(argument))) {
|
|
1820
1869
|
lowerer.refuseUnsupportedApi(`'AbortSignal.${sigMember}'`, call);
|
|
1821
1870
|
}
|
|
1822
1871
|
}
|
|
1823
1872
|
if (lowerer.stdlibGlobalMember(access, "ReadableStream") === "from" &&
|
|
1824
|
-
call.arguments.every((argument) => !ts.isSpreadElement(argument))) {
|
|
1873
|
+
call.arguments.nodes.every((argument) => !ts.isSpreadElement(argument))) {
|
|
1825
1874
|
lowerer.refuseUnsupportedApi("'ReadableStream.from'", call);
|
|
1826
1875
|
}
|
|
1827
1876
|
const isMath = lowerer.stdlibGlobalMember(access, "Math") !== null;
|
|
@@ -1831,9 +1880,16 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
|
|
|
1831
1880
|
// missing read, or the read itself) converts to NaN, ToNumber's answer
|
|
1832
1881
|
// for undefined, instead of trusting the checker's number type.
|
|
1833
1882
|
const mathArg = (a) => lowerToNumberArgument(lowerer, a);
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1883
|
+
// Math.hypot, and Math.max/Math.min with a spread among other arguments
|
|
1884
|
+
// (`Math.max(...xs, 5)`): the arguments in order, spreads flattened, as
|
|
1885
|
+
// one number[] the runtime folds.
|
|
1886
|
+
if (staticMath &&
|
|
1887
|
+
(name === "hypot" ||
|
|
1888
|
+
((name === "max" || name === "min") &&
|
|
1889
|
+
call.arguments.nodes.length > 1 &&
|
|
1890
|
+
call.arguments.nodes.some(ts.isSpreadElement)))) {
|
|
1891
|
+
const elems = call.arguments.nodes.map((a) => ts.isSpreadElement(a) ? lowerer.lowerExprExpecting(a.expression, arrayOf(F64)) : mathArg(a));
|
|
1892
|
+
const spreads = call.arguments.nodes.flatMap((a, i) => (ts.isSpreadElement(a) ? [i] : []));
|
|
1837
1893
|
const packed = {
|
|
1838
1894
|
kind: "arrayLit",
|
|
1839
1895
|
elems,
|
|
@@ -1841,9 +1897,10 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
|
|
|
1841
1897
|
type: arrayOf(F64),
|
|
1842
1898
|
loc,
|
|
1843
1899
|
};
|
|
1844
|
-
|
|
1900
|
+
const fn = name === "max" ? "math.maxArr" : name === "min" ? "math.minArr" : staticMath.fn;
|
|
1901
|
+
return { kind: "libCall", fn, args: [packed], type: F64, loc };
|
|
1845
1902
|
}
|
|
1846
|
-
if (staticMath && call.arguments.every((a) => !ts.isSpreadElement(a))) {
|
|
1903
|
+
if (staticMath && call.arguments.nodes.every((a) => !ts.isSpreadElement(a))) {
|
|
1847
1904
|
// Math.max/Math.min at ANY plain arity — Node's are variadic. The
|
|
1848
1905
|
// spec's reduction is a left fold of the same NaN-poisoning
|
|
1849
1906
|
// ±0-ordered scalar compare the two-arg form lowers to, so n
|
|
@@ -1854,30 +1911,29 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
|
|
|
1854
1911
|
// arguments are the fold's seed: -Infinity for max, +Infinity for
|
|
1855
1912
|
// min, exactly Node.
|
|
1856
1913
|
if (name === "max" || name === "min") {
|
|
1857
|
-
if (call.arguments.length === 0) {
|
|
1914
|
+
if (call.arguments.nodes.length === 0) {
|
|
1858
1915
|
return { kind: "numLit", value: name === "max" ? -Infinity : Infinity, type: F64, loc };
|
|
1859
1916
|
}
|
|
1860
|
-
const args = call.arguments.map(mathArg);
|
|
1917
|
+
const args = call.arguments.nodes.map(mathArg);
|
|
1861
1918
|
let acc = args[0];
|
|
1862
1919
|
for (let i = 1; i < args.length; i++) {
|
|
1863
1920
|
acc = { kind: "libCall", fn: staticMath.fn, args: [acc, args[i]], type: F64, loc };
|
|
1864
1921
|
}
|
|
1865
1922
|
return acc;
|
|
1866
1923
|
}
|
|
1867
|
-
if (call.arguments.length === staticMath.arity) {
|
|
1868
|
-
const args = call.arguments.map(mathArg);
|
|
1924
|
+
if (call.arguments.nodes.length === staticMath.arity) {
|
|
1925
|
+
const args = call.arguments.nodes.map(mathArg);
|
|
1869
1926
|
return { kind: "libCall", fn: staticMath.fn, args, type: F64, loc };
|
|
1870
1927
|
}
|
|
1871
1928
|
}
|
|
1872
1929
|
// `Math.max(...xs)` / `Math.min(...xs)` over a number[]: a STATIC
|
|
1873
|
-
// runtime fold (NaN poisons and ±0 follows JS ordering).
|
|
1874
|
-
//
|
|
1875
|
-
// the nest-calls fence.
|
|
1930
|
+
// runtime fold (NaN poisons and ±0 follows JS ordering). Mixed
|
|
1931
|
+
// spread/positional argument lists pack into one array above.
|
|
1876
1932
|
if (isMath &&
|
|
1877
1933
|
(name === "max" || name === "min") &&
|
|
1878
|
-
call.arguments.length === 1 &&
|
|
1879
|
-
ts.isSpreadElement(call.arguments[0])) {
|
|
1880
|
-
const spread = call.arguments[0];
|
|
1934
|
+
call.arguments.nodes.length === 1 &&
|
|
1935
|
+
ts.isSpreadElement(call.arguments.nodes[0])) {
|
|
1936
|
+
const spread = call.arguments.nodes[0];
|
|
1881
1937
|
let src = lowerer.lowerExpr(spread.expression);
|
|
1882
1938
|
// JavaScript array call results retain checked storage so aliases stay
|
|
1883
1939
|
// shared. This read-only fold can extract the inferred numeric array.
|
|
@@ -1887,6 +1943,11 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
|
|
|
1887
1943
|
src = lowerer.coerceInto(spread.expression, src, inferred);
|
|
1888
1944
|
}
|
|
1889
1945
|
}
|
|
1946
|
+
// A generator, or a class whose [Symbol.iterator] is a generator
|
|
1947
|
+
// method, drains into the number[] the fold reads.
|
|
1948
|
+
src = classGeneratorIterable(lowerer, src) ?? src;
|
|
1949
|
+
if (src.type.kind === "generator")
|
|
1950
|
+
src = generatorDrain(lowerer, src, F64, loc) ?? src;
|
|
1890
1951
|
if (src.type.kind !== "array" || src.type.elem.kind !== "f64") {
|
|
1891
1952
|
lowerer.unsupported("SC1090", spread, `spreading '${lowerer.fmt(src.type)}' into Math.${name} (only a number[] spreads)`);
|
|
1892
1953
|
}
|
|
@@ -1899,7 +1960,7 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
|
|
|
1899
1960
|
};
|
|
1900
1961
|
}
|
|
1901
1962
|
const mathFn = isMath ? own(STDLIB_SURFACE.math.fns, name) : undefined;
|
|
1902
|
-
if (mathFn && call.arguments.length === mathFn.args.length) {
|
|
1963
|
+
if (mathFn && call.arguments.nodes.length === mathFn.args.length) {
|
|
1903
1964
|
lowerer.refuseUnsupportedApi(`'Math.${name}'`, call);
|
|
1904
1965
|
}
|
|
1905
1966
|
const kind = lowerer.mapTypeOf(lowerer.typeOf(access.expression))?.kind;
|
|
@@ -1908,7 +1969,7 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
|
|
|
1908
1969
|
: kind === "string"
|
|
1909
1970
|
? own(STDLIB_SURFACE.string, name)
|
|
1910
1971
|
: undefined;
|
|
1911
|
-
if (!entry || call.arguments.length !== entry.args.length)
|
|
1972
|
+
if (!entry || call.arguments.nodes.length !== entry.args.length)
|
|
1912
1973
|
return null;
|
|
1913
1974
|
if (!lowerer.isStdlibMember(access))
|
|
1914
1975
|
return null;
|
|
@@ -1975,11 +2036,11 @@ export function npmMemberFence(lowerer, access) {
|
|
|
1975
2036
|
* npmPackageOf, also asked directly for import-alias bindings (whose
|
|
1976
2037
|
* aliased symbol is the package's export). */
|
|
1977
2038
|
export function npmPackageOfSymbol(lowerer, sym) {
|
|
1978
|
-
const decls = sym ?
|
|
2039
|
+
const decls = sym ? sym.declarations : undefined;
|
|
1979
2040
|
if (!decls || decls.length === 0)
|
|
1980
2041
|
return null;
|
|
1981
|
-
if (!decls.every((d) => lowerer.isNpmFile(
|
|
2042
|
+
if (!decls.every((d) => lowerer.isNpmFile(ts.getSourceFileOfNode(d))))
|
|
1982
2043
|
return null;
|
|
1983
|
-
return npmPackageNameOf(decls[0]
|
|
2044
|
+
return npmPackageNameOf(ts.getSourceFileOfNode(decls[0]).fileName);
|
|
1984
2045
|
}
|
|
1985
2046
|
//# sourceMappingURL=lower-stdlib.js.map
|