@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
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { typedArgumentsCandidate, typedArgumentsShapes, typedArgumentsTarget, } from "./typed-arguments.js";
|
|
1
2
|
import { InternalCompilerError } from "../../errors.js";
|
|
2
3
|
import * as ts from "../ts7/adapter.js";
|
|
3
|
-
import { bodyReadsArguments } from "../arguments-usage.js";
|
|
4
|
-
import { DYN, UNDEFINED_T, VOID, isUnitType, typeEquals, } from "../../ir/ir.js";
|
|
4
|
+
import { argumentsAliasingUnobservable, bodyReadsArguments } from "../arguments-usage.js";
|
|
5
|
+
import { canBoxFuncIntoDyn, DYN, UNDEFINED_T, VOID, isUnitType, typeEquals, } from "../../ir/ir.js";
|
|
5
6
|
import { isJsSourceFile, isNodeEsmFile } from "../program.js";
|
|
6
|
-
import { genResultRecord, jsOpenObjectType } from "../type-mapper.js";
|
|
7
|
+
import { genResultRecord, restTupleParamTypes, isAnyArrayType, isUnitOnlyTsType, jsOpenObjectType, unitOnlyUnion, } from "../type-mapper.js";
|
|
7
8
|
import { dynFallbackType } from "./lowerer.js";
|
|
8
9
|
import { builtinModuleFnOf } from "./surfaces.js";
|
|
9
10
|
import { mixinFnShapeOf } from "./lower-mixins.js";
|
|
@@ -11,6 +12,7 @@ import { isStreamUndefCallExpr } from "./lower-server.js";
|
|
|
11
12
|
import { nsPathPrefix } from "./lower-namespaces.js";
|
|
12
13
|
import { declSymbolOf } from "./lower-modules.js";
|
|
13
14
|
import { npmStaticPackageOfPath } from "../npm-static.js";
|
|
15
|
+
import { restPackingAdapterFits } from "./coercions/function-adapters.js";
|
|
14
16
|
import { implicitMonoFile, implicitAnyParamSymbolsOf } from "./generic-functions.js";
|
|
15
17
|
export function funcTypeFromParamShapes(shapes, ret) {
|
|
16
18
|
const typedRest = shapes.some((shape) => shape.mode === "rest");
|
|
@@ -65,6 +67,36 @@ export function generatorMeta(lowerer, type) {
|
|
|
65
67
|
}
|
|
66
68
|
return { yieldT: type.yieldT, nextT: type.nextT, resultType };
|
|
67
69
|
}
|
|
70
|
+
/** A function expression stored as a prototype method: `C.prototype.name =
|
|
71
|
+
* function (...) {}` or `C.prototype[key] = function (...) {}`
|
|
72
|
+
* (parentheses allowed around the function). */
|
|
73
|
+
export function prototypeAssignedFunction(fn) {
|
|
74
|
+
if (fn === undefined || !ts.isFunctionExpression(fn))
|
|
75
|
+
return false;
|
|
76
|
+
let node = fn;
|
|
77
|
+
while (node.parent !== undefined && ts.isParenthesizedExpression(node.parent))
|
|
78
|
+
node = node.parent;
|
|
79
|
+
const parent = node.parent;
|
|
80
|
+
if (parent === undefined ||
|
|
81
|
+
!ts.isBinaryExpression(parent) ||
|
|
82
|
+
parent.right !== node ||
|
|
83
|
+
parent.operatorToken.kind !== ts.SyntaxKind.EqualsToken ||
|
|
84
|
+
!(ts.isPropertyAccessExpression(parent.left) || ts.isElementAccessExpression(parent.left)))
|
|
85
|
+
return false;
|
|
86
|
+
const owner = parent.left.expression;
|
|
87
|
+
return ts.isPropertyAccessExpression(owner) && owner.name.text === "prototype";
|
|
88
|
+
}
|
|
89
|
+
/** A parameter with a type annotation or a JSDoc `@param`/`@type` tag. */
|
|
90
|
+
export function documentedParameter(param) {
|
|
91
|
+
return (param.type !== undefined ||
|
|
92
|
+
/@(?:param|type)\b/.test(ts
|
|
93
|
+
.getSourceFileOfNode(param)
|
|
94
|
+
.text.slice(param.parent?.pos ?? param.pos, ts.tokenStartOfNode(param))));
|
|
95
|
+
}
|
|
96
|
+
/** A documented parameter in a JavaScript file TypeScript checks. */
|
|
97
|
+
export function checkedJsDocumentedParameter(lowerer, param) {
|
|
98
|
+
return lowerer.checkedJsFile(ts.getSourceFileOfNode(param)) && documentedParameter(param);
|
|
99
|
+
}
|
|
68
100
|
/** One parameter's ParamShape — the shared signature-shaped collection
|
|
69
101
|
* point for function declarations, methods, constructors, and lambdas
|
|
70
102
|
* (generic declarations defer to their call sites, where the resolved
|
|
@@ -85,14 +117,29 @@ export function paramShape(lowerer, param) {
|
|
|
85
117
|
const stage = lowerer.stageSourceType(param.name);
|
|
86
118
|
if (stage)
|
|
87
119
|
return { type: stage, mode: "required" };
|
|
88
|
-
if (isJsSourceFile(
|
|
120
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(param)) && ts.isSetAccessorDeclaration(param.parent))
|
|
89
121
|
return { type: DYN, mode: "required" };
|
|
90
|
-
if (isJsSourceFile(
|
|
122
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(param)) &&
|
|
91
123
|
ts.isConstructorDeclaration(param.parent) &&
|
|
92
|
-
!param.dotDotDotToken
|
|
124
|
+
!param.dotDotDotToken &&
|
|
125
|
+
!checkedJsDocumentedParameter(lowerer, param)) {
|
|
93
126
|
// Reflective JavaScript construction can supply values outside the
|
|
94
127
|
// constructor's documented usual types. Retain the actual arguments
|
|
95
128
|
// and apply checked conversions only at operations that need them.
|
|
129
|
+
// In a file TypeScript checks, documented types are enforced like
|
|
130
|
+
// TypeScript annotations.
|
|
131
|
+
return param.initializer
|
|
132
|
+
? { type: DYN, mode: "omittable", bodyType: DYN }
|
|
133
|
+
: { type: DYN, mode: param.questionToken ? "omittable" : "required" };
|
|
134
|
+
}
|
|
135
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(param)) &&
|
|
136
|
+
!param.dotDotDotToken &&
|
|
137
|
+
prototypeAssignedFunction(param.parent) &&
|
|
138
|
+
!checkedJsDocumentedParameter(lowerer, param)) {
|
|
139
|
+
// A prototype method (`C.prototype.m = function (a) {}`) is called
|
|
140
|
+
// through dynamic dispatch, where callers pass whatever they hold. As
|
|
141
|
+
// for constructors, JSDoc in a file TypeScript does not check
|
|
142
|
+
// documents the usual types without constraining callers.
|
|
96
143
|
return param.initializer
|
|
97
144
|
? { type: DYN, mode: "omittable", bodyType: DYN }
|
|
98
145
|
: { type: DYN, mode: param.questionToken ? "omittable" : "required" };
|
|
@@ -102,30 +149,36 @@ export function paramShape(lowerer, param) {
|
|
|
102
149
|
const nativeExecutor = executor &&
|
|
103
150
|
(ts.isArrowFunction(executor) || ts.isFunctionExpression(executor)) &&
|
|
104
151
|
ts.isNewExpression(construction) &&
|
|
105
|
-
construction.arguments?.[0] === executor &&
|
|
152
|
+
construction.arguments?.nodes[0] === executor &&
|
|
106
153
|
lowerer.isStdlibGlobal(construction.expression, "Promise");
|
|
107
154
|
if (!nativeExecutor &&
|
|
108
|
-
isJsSourceFile(
|
|
155
|
+
isJsSourceFile(ts.getSourceFileOfNode(param)) &&
|
|
109
156
|
!param.type &&
|
|
110
157
|
!param.dotDotDotToken &&
|
|
111
158
|
!ts.isSetAccessorDeclaration(param.parent) &&
|
|
112
|
-
!/@(?:param|type)\b/.test(
|
|
159
|
+
!/@(?:param|type)\b/.test(ts
|
|
160
|
+
.getSourceFileOfNode(param)
|
|
161
|
+
.text.slice(param.parent?.pos ?? param.pos, ts.tokenStartOfNode(param)))) {
|
|
113
162
|
return param.initializer
|
|
114
163
|
? { type: DYN, mode: "omittable", bodyType: DYN }
|
|
115
164
|
: { type: DYN, mode: "required" };
|
|
116
165
|
}
|
|
117
166
|
if (param.initializer &&
|
|
118
|
-
isJsSourceFile(
|
|
167
|
+
isJsSourceFile(ts.getSourceFileOfNode(param)) &&
|
|
119
168
|
!param.type &&
|
|
120
|
-
!/@(?:param|type)\b/.test(
|
|
169
|
+
!/@(?:param|type)\b/.test(ts
|
|
170
|
+
.getSourceFileOfNode(param)
|
|
171
|
+
.text.slice(param.parent?.pos ?? param.pos, ts.tokenStartOfNode(param)))) {
|
|
121
172
|
return { type: DYN, mode: "omittable", bodyType: DYN };
|
|
122
173
|
}
|
|
123
174
|
// Inferred JS array patterns describe the bindings, not an exact tuple
|
|
124
175
|
// contract. Consume the actual iterable, including surplus elements.
|
|
125
176
|
if (ts.isArrayBindingPattern(param.name) &&
|
|
126
|
-
isJsSourceFile(
|
|
177
|
+
isJsSourceFile(ts.getSourceFileOfNode(param)) &&
|
|
127
178
|
!param.type &&
|
|
128
|
-
!/@(?:param|type)\b/.test(
|
|
179
|
+
!/@(?:param|type)\b/.test(ts
|
|
180
|
+
.getSourceFileOfNode(param)
|
|
181
|
+
.text.slice(param.parent?.pos ?? param.pos, ts.tokenStartOfNode(param)))) {
|
|
129
182
|
if (param.dotDotDotToken)
|
|
130
183
|
return { type: DYN, mode: "dynRest" };
|
|
131
184
|
return param.initializer
|
|
@@ -187,18 +240,27 @@ export function paramShape(lowerer, param) {
|
|
|
187
240
|
// ARRAY param the dyn call thunk fills with the call's surplus
|
|
188
241
|
// arguments; the binding is that array (dynRest — funcType marks
|
|
189
242
|
// `rest`, and the value only ever calls through the boxed thunk).
|
|
190
|
-
if (isJsSourceFile(
|
|
243
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(param))) {
|
|
191
244
|
const restMapped = lowerer.mapTypeOf(lowerer.typeOf(param.name));
|
|
192
245
|
// Unmapped JS rest parameters use the native variadic checked-value ABI.
|
|
193
246
|
if (restMapped?.kind !== "array") {
|
|
194
247
|
return { type: DYN, mode: "dynRest" };
|
|
195
248
|
}
|
|
196
249
|
}
|
|
250
|
+
// `...args: unknown[]` / `...args: any[]` in TypeScript: the binding is
|
|
251
|
+
// the checked-dynamic array (how `unknown[]` maps everywhere), so the
|
|
252
|
+
// ABI is the JS variadic dyn form above — the function type marks it
|
|
253
|
+
// with `rest` and no typed slot (the type mapper agrees).
|
|
254
|
+
const restTs = lowerer.typeOf(param.name);
|
|
255
|
+
if (isAnyArrayType(restTs, lowerer.checker))
|
|
256
|
+
return { type: DYN, mode: "dynRest" };
|
|
197
257
|
const type = lowerer.runtimeOptionalBindingType(param.name, lowerer.irTypeOf(param.name));
|
|
258
|
+
if (type.kind === "dyn")
|
|
259
|
+
return { type: DYN, mode: "dynRest" };
|
|
198
260
|
// Tuple-typed rest params don't map to an array; generic rest is the
|
|
199
261
|
// generic path's business. Anything non-array here is unmappable.
|
|
200
262
|
if (type.kind !== "array")
|
|
201
|
-
lowerer.badType(param.name,
|
|
263
|
+
lowerer.badType(param.name, restTs);
|
|
202
264
|
return { type, mode: "rest" };
|
|
203
265
|
}
|
|
204
266
|
if (param.initializer) {
|
|
@@ -206,7 +268,7 @@ export function paramShape(lowerer, param) {
|
|
|
206
268
|
// An optional JS array parameter is a live caller-owned buffer,
|
|
207
269
|
// including typed arrays passed through checked callbacks. Extracting
|
|
208
270
|
// a native array here would copy it and discard element writes.
|
|
209
|
-
if (isJsSourceFile(
|
|
271
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(param)) &&
|
|
210
272
|
!param.type &&
|
|
211
273
|
(raw.kind === "array" ||
|
|
212
274
|
(raw.kind === "union" &&
|
|
@@ -217,7 +279,7 @@ export function paramShape(lowerer, param) {
|
|
|
217
279
|
}
|
|
218
280
|
let type = lowerer.runtimeOptionalBindingType(param.name, lowerer.irTypeOf(param.name));
|
|
219
281
|
const body = param.parent?.body;
|
|
220
|
-
if (isJsSourceFile(
|
|
282
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(param)) && body && type.kind !== "dyn") {
|
|
221
283
|
const symbol = lowerer.checker.getSymbolAtLocation(param.name);
|
|
222
284
|
let acceptsUndefined = false;
|
|
223
285
|
ts.walkPreorder(body, (node) => {
|
|
@@ -260,12 +322,38 @@ export function paramShape(lowerer, param) {
|
|
|
260
322
|
export function isThisParameter(param) {
|
|
261
323
|
return ts.isIdentifier(param.name) && param.name.text === "this";
|
|
262
324
|
}
|
|
325
|
+
/** A TypeScript rest parameter bound to a name whose type is a fixed tuple
|
|
326
|
+
* (`...args: [A, B]`, `...args: A` with A bound to a tuple, `...args:
|
|
327
|
+
* Parameters<F>` with F bound): one required shape per position. Call
|
|
328
|
+
* sites and function values see the equivalent fixed signature; the body
|
|
329
|
+
* rebuilds the tuple (declareParams) unless it only forwards it. Null for
|
|
330
|
+
* every other parameter. */
|
|
331
|
+
export function restTupleShapes(lowerer, param, tsType) {
|
|
332
|
+
if (param.dotDotDotToken === undefined ||
|
|
333
|
+
!ts.isIdentifier(param.name) ||
|
|
334
|
+
isJsSourceFile(ts.getSourceFileOfNode(param))) {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
const elems = restTupleParamTypes(tsType ?? lowerer.typeOf(param.name), lowerer.typeCtx);
|
|
338
|
+
return elems ? elems.map((type) => ({ type, mode: "required", restTuple: true })) : null;
|
|
339
|
+
}
|
|
263
340
|
/** ParamShapes for a whole parameter list. */
|
|
264
341
|
export function paramShapes(lowerer, params, signature, blameOf) {
|
|
265
|
-
|
|
266
|
-
|
|
342
|
+
const out = [];
|
|
343
|
+
if (!signature) {
|
|
344
|
+
for (const param of params) {
|
|
345
|
+
if (isThisParameter(param))
|
|
346
|
+
continue;
|
|
347
|
+
const flattened = restTupleShapes(lowerer, param);
|
|
348
|
+
if (flattened)
|
|
349
|
+
out.push(...flattened);
|
|
350
|
+
else
|
|
351
|
+
out.push(lowerer.paramShape(param));
|
|
352
|
+
}
|
|
353
|
+
return out;
|
|
354
|
+
}
|
|
267
355
|
const symbols = signature.getParameters();
|
|
268
|
-
|
|
356
|
+
const shapeAt = (declParam, i) => {
|
|
269
357
|
const stage = lowerer.stageSourceType(declParam.name);
|
|
270
358
|
if (stage)
|
|
271
359
|
return { type: stage, mode: "required" };
|
|
@@ -273,7 +361,30 @@ export function paramShapes(lowerer, params, signature, blameOf) {
|
|
|
273
361
|
const tsType = symbol
|
|
274
362
|
? lowerer.checker.getTypeOfSymbol(symbol)
|
|
275
363
|
: lowerer.typeOf(declParam.name);
|
|
276
|
-
|
|
364
|
+
// A call-site instantiation whose concrete argument type does not map
|
|
365
|
+
// is that argument's blocker: name it there, with its concrete type,
|
|
366
|
+
// rather than as the declaration's unbound type parameter.
|
|
367
|
+
if (blameOf !== undefined &&
|
|
368
|
+
!isJsSourceFile(ts.getSourceFileOfNode(declParam)) &&
|
|
369
|
+
(tsType.flags & ts.TypeFlags.Any) === 0 &&
|
|
370
|
+
declParam.type !== undefined &&
|
|
371
|
+
mentionsTypeParameter(lowerer, lowerer.checker.getTypeFromTypeNode(declParam.type)) &&
|
|
372
|
+
lowerer.mapTypeOf(tsType) === null) {
|
|
373
|
+
lowerer.badType(blameOf(declParam, i), tsType);
|
|
374
|
+
}
|
|
375
|
+
let mapped = jsOpenObjectType(declParam, lowerer.runtimeOptionalBindingType(declParam.name, lowerer.mapTypeOf(tsType) ??
|
|
376
|
+
// A TypeScript instantiation at `any` (a type argument inferred
|
|
377
|
+
// from an untyped value) takes the checked-dynamic slot.
|
|
378
|
+
((tsType.flags & ts.TypeFlags.Any) !== 0 &&
|
|
379
|
+
!isJsSourceFile(ts.getSourceFileOfNode(declParam))
|
|
380
|
+
? DYN
|
|
381
|
+
: lowerer.irTypeOf(declParam.name))), lowerer.shapes, lowerer.unions);
|
|
382
|
+
// An instantiation with a literal `undefined` argument (`id(undefined)`
|
|
383
|
+
// binds T = undefined): standalone undefined maps to VOID (the return
|
|
384
|
+
// convention), and a parameter is a value position, so it takes the
|
|
385
|
+
// unit-only slot like a declared `v: undefined` parameter.
|
|
386
|
+
if (mapped?.kind === "void" && isUnitOnlyTsType(tsType))
|
|
387
|
+
mapped = unitOnlyUnion(lowerer.unions);
|
|
277
388
|
if (!mapped || mapped.kind === "void")
|
|
278
389
|
lowerer.badType(blameOf?.(declParam, i) ?? declParam.name, tsType);
|
|
279
390
|
if (declParam.dotDotDotToken) {
|
|
@@ -283,11 +394,40 @@ export function paramShapes(lowerer, params, signature, blameOf) {
|
|
|
283
394
|
}
|
|
284
395
|
if (declParam.initializer)
|
|
285
396
|
return defaultParameterShape(lowerer, declParam, mapped);
|
|
286
|
-
|
|
397
|
+
// A checked-value slot holds undefined directly, so an omitted
|
|
398
|
+
// argument needs no union arm (paramShape's declared-signature rule;
|
|
399
|
+
// an erased type parameter and a class-implemented interface view
|
|
400
|
+
// both map here).
|
|
401
|
+
if (declParam.questionToken &&
|
|
402
|
+
!lowerer.bareUndefinedArmedUnion(mapped) &&
|
|
403
|
+
mapped.kind !== "dyn") {
|
|
287
404
|
lowerer.unsupported("SC1090", declParam, `optional parameters of type '${lowerer.fmt(mapped)}'`);
|
|
288
405
|
}
|
|
289
406
|
return { type: mapped, mode: declParam.questionToken ? "omittable" : "required" };
|
|
407
|
+
};
|
|
408
|
+
params.forEach((declParam, i) => {
|
|
409
|
+
const symbol = symbols[i];
|
|
410
|
+
const flattened = restTupleShapes(lowerer, declParam, symbol ? lowerer.checker.getTypeOfSymbol(symbol) : undefined);
|
|
411
|
+
if (flattened)
|
|
412
|
+
out.push(...flattened);
|
|
413
|
+
else
|
|
414
|
+
out.push(shapeAt(declParam, i));
|
|
290
415
|
});
|
|
416
|
+
return out;
|
|
417
|
+
}
|
|
418
|
+
/** A declared type that is (or is a union over) a bare type parameter
|
|
419
|
+
* or an instantiation of a generic alias/interface over type arguments. */
|
|
420
|
+
function mentionsTypeParameter(lowerer, t) {
|
|
421
|
+
if (t.flags & ts.TypeFlags.TypeParameter)
|
|
422
|
+
return true;
|
|
423
|
+
const mentions = (part) => mentionsTypeParameter(lowerer, part);
|
|
424
|
+
if (t.isUnionType())
|
|
425
|
+
return ts.constituentTypes(t).some(mentions);
|
|
426
|
+
if (t.getAliasTypeArguments().some(mentions))
|
|
427
|
+
return true;
|
|
428
|
+
return ((t.flags & ts.TypeFlags.Object) !== 0 &&
|
|
429
|
+
(t.objectFlags & ts.ObjectFlags.Reference) !== 0 &&
|
|
430
|
+
lowerer.checker.getTypeArguments(t).some(mentions));
|
|
291
431
|
}
|
|
292
432
|
/** A default expression may itself yield undefined. Keep that arm in the
|
|
293
433
|
* body and parameter-property storage, including for literal `undefined`
|
|
@@ -356,6 +496,20 @@ export function requireExactArityValue(lowerer, blame, contextual, shapes, funcT
|
|
|
356
496
|
// optional/defaulted params spell their `T | undefined` slots (mapType's
|
|
357
497
|
// completed-signature contract), so omitted trailing args complete with
|
|
358
498
|
// the undefined arm like any direct call.
|
|
499
|
+
// A nested function declaration whose only non-required parameter is a
|
|
500
|
+
// typed rest: its value carries the typed-rest ABI its own type spells,
|
|
501
|
+
// and every use converts it at its slot (same signature, or the rest
|
|
502
|
+
// packing adapter for fixed parameters).
|
|
503
|
+
if (contextual === null &&
|
|
504
|
+
ts.isFunctionDeclaration(blame) &&
|
|
505
|
+
blame.name !== undefined &&
|
|
506
|
+
funcType.kind === "func" &&
|
|
507
|
+
funcType.restAbi === "typed" &&
|
|
508
|
+
shapes.every((s) => s.mode === "required" || s.mode === "rest")) {
|
|
509
|
+
const own = lowerer.mapTypeOf(lowerer.typeOf(blame.name));
|
|
510
|
+
if (own && typeEquals(own, funcType))
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
359
513
|
const target = contextual ? lowerer.checker.getContextualType(contextual) : undefined;
|
|
360
514
|
const mapped = target
|
|
361
515
|
? lowerer.mapTypeOf(target)
|
|
@@ -364,6 +518,32 @@ export function requireExactArityValue(lowerer, blame, contextual, shapes, funcT
|
|
|
364
518
|
: null;
|
|
365
519
|
if (mapped && typeEquals(mapped, funcType))
|
|
366
520
|
return;
|
|
521
|
+
// An 'any' slot (`C.prototype.m = function (a, b) {…}` through an
|
|
522
|
+
// untyped receiver) boxes the value into a checked-dynamic function:
|
|
523
|
+
// the box completes omitted arguments with undefined and checks every
|
|
524
|
+
// argument into the completed ABI, so any boxable signature passes.
|
|
525
|
+
if (target !== undefined &&
|
|
526
|
+
(target.flags & ts.TypeFlags.Any) !== 0 &&
|
|
527
|
+
canBoxFuncIntoDyn(funcType, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))) {
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
// An object-literal METHOD has no contextual type of its own: the
|
|
531
|
+
// literal's contextual type names the member slot it fills. An
|
|
532
|
+
// overloaded member's slot holds its erased function, which spells the
|
|
533
|
+
// completed parameters of an implementation like `m(a?: string)`.
|
|
534
|
+
if (contextual === null &&
|
|
535
|
+
ts.isMethodDeclaration(blame) &&
|
|
536
|
+
blame.parent !== undefined &&
|
|
537
|
+
ts.isObjectLiteralExpression(blame.parent) &&
|
|
538
|
+
(ts.isIdentifier(blame.name) || ts.isStringLiteral(blame.name))) {
|
|
539
|
+
const literalType = lowerer.checker.getContextualType(blame.parent);
|
|
540
|
+
const member = literalType
|
|
541
|
+
? lowerer.checker.getPropertyOfType(literalType, blame.name.text)
|
|
542
|
+
: undefined;
|
|
543
|
+
const slot = member ? lowerer.memberSlotTypeOf(lowerer.checker.getTypeOfSymbol(member)) : null;
|
|
544
|
+
if (slot && typeEquals(slot, funcType))
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
367
547
|
// A union-typed slot (`runner || defaultRunner` under a
|
|
368
548
|
// `CommandRunner | undefined` context): the value can only inhabit
|
|
369
549
|
// the union's one func arm — judge by it.
|
|
@@ -381,7 +561,7 @@ export function requireExactArityValue(lowerer, blame, contextual, shapes, funcT
|
|
|
381
561
|
const ownType = lowerer.typeOf(contextual);
|
|
382
562
|
mappedFn =
|
|
383
563
|
lowerer.mapTypeOf(ownType) ??
|
|
384
|
-
(isJsSourceFile(
|
|
564
|
+
(isJsSourceFile(ts.getSourceFileOfNode(contextual))
|
|
385
565
|
? dynFallbackType(lowerer, contextual, ownType)
|
|
386
566
|
: null);
|
|
387
567
|
}
|
|
@@ -396,6 +576,14 @@ export function requireExactArityValue(lowerer, blame, contextual, shapes, funcT
|
|
|
396
576
|
lowerer.spawnResFnAdapterPlan(funcType, mappedFn) !== null) {
|
|
397
577
|
return;
|
|
398
578
|
}
|
|
579
|
+
// A typed-rest function in a slot with fixed parameters (`log(...m:
|
|
580
|
+
// string[])` into `(m: string) => void`): the slot coercion's packing
|
|
581
|
+
// adapter collects the slot's arguments into the rest array.
|
|
582
|
+
if (mappedFn?.kind === "func" &&
|
|
583
|
+
funcType.kind === "func" &&
|
|
584
|
+
restPackingAdapterFits(lowerer, funcType, mappedFn)) {
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
399
587
|
// An uncontextualized npm-static implementation function can still
|
|
400
588
|
// have a declaration-backed completed ABI: the package's .d.ts
|
|
401
589
|
// projection supplies the body-facing parameter/return types while
|
|
@@ -407,7 +595,7 @@ export function requireExactArityValue(lowerer, blame, contextual, shapes, funcT
|
|
|
407
595
|
if (target === undefined &&
|
|
408
596
|
contextual !== null &&
|
|
409
597
|
(ts.isArrowFunction(contextual) || ts.isFunctionExpression(contextual)) &&
|
|
410
|
-
npmStaticPackageOfPath(
|
|
598
|
+
npmStaticPackageOfPath(ts.getSourceFileOfNode(contextual).fileName) !== null) {
|
|
411
599
|
return;
|
|
412
600
|
}
|
|
413
601
|
lowerer.unsupported("SC1090", blame, "functions with optional or defaulted parameters as values, except where the " +
|
|
@@ -445,11 +633,11 @@ export function collectSignatureInner(lowerer, decl) {
|
|
|
445
633
|
// body (run()/discover() skip by the same test). Generic mixins still
|
|
446
634
|
// register their generic signature below: non-mixin-shaped calls
|
|
447
635
|
// degrade to the generic machinery's own per-site fences.
|
|
448
|
-
if (!decl.typeParameters && mixinFnShapeOf(lowerer, decl))
|
|
636
|
+
if (!decl.typeParameters?.nodes && mixinFnShapeOf(lowerer, decl))
|
|
449
637
|
return;
|
|
450
|
-
const isAsync = decl.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) === true;
|
|
638
|
+
const isAsync = decl.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) === true;
|
|
451
639
|
const isGenerator = decl.asteriskToken !== undefined;
|
|
452
|
-
if (decl.typeParameters) {
|
|
640
|
+
if (decl.typeParameters?.nodes) {
|
|
453
641
|
// Generic async composes: each monomorphized instance is an async
|
|
454
642
|
// IrFunction like any other — its own spawn wrapper, its body
|
|
455
643
|
// returning the resolved promise's inner (lowerGenericInstance).
|
|
@@ -463,7 +651,7 @@ export function collectSignatureInner(lowerer, decl) {
|
|
|
463
651
|
// routes generic declarations (direct calls, namespace/CJS member
|
|
464
652
|
// calls, value references) resolves it through genericFnsBySymbol
|
|
465
653
|
// unchanged.
|
|
466
|
-
if (implicitMonoFile(
|
|
654
|
+
if (implicitMonoFile(ts.getSourceFileOfNode(decl)) && !isAsync && !isGenerator) {
|
|
467
655
|
const implicit = implicitAnyParamSymbolsOf(lowerer, decl);
|
|
468
656
|
if (implicit) {
|
|
469
657
|
const nameText = decl.name?.text ?? "%default";
|
|
@@ -473,7 +661,7 @@ export function collectSignatureInner(lowerer, decl) {
|
|
|
473
661
|
lowerer.genericFnsBySymbol.set(symbol, {
|
|
474
662
|
decl,
|
|
475
663
|
baseName: nameText,
|
|
476
|
-
qualifiedName: lowerer.qualify(
|
|
664
|
+
qualifiedName: lowerer.qualify(ts.getSourceFileOfNode(decl), nsPathPrefix(decl) + nameText),
|
|
477
665
|
typeParams: [],
|
|
478
666
|
instances: new Map(),
|
|
479
667
|
implicitParams: implicit,
|
|
@@ -481,12 +669,24 @@ export function collectSignatureInner(lowerer, decl) {
|
|
|
481
669
|
return;
|
|
482
670
|
}
|
|
483
671
|
}
|
|
484
|
-
const params = lowerer.paramShapes(decl.parameters);
|
|
672
|
+
const params = lowerer.paramShapes(decl.parameters.nodes);
|
|
485
673
|
// The zero-parameter declaration retains its dynRest ABI; value
|
|
486
674
|
// functions use the full arguments slot even with no named parameters.
|
|
487
|
-
appendArgumentsParameter(lowerer, decl, params, decl.parameters.length > 0 ? "arguments" : "dynRest");
|
|
675
|
+
appendArgumentsParameter(lowerer, decl, params, decl.parameters.nodes.length > 0 ? "arguments" : "dynRest");
|
|
488
676
|
const nameBlame = decl.name ?? decl;
|
|
489
|
-
|
|
677
|
+
let returnType = lowerer.declaredReturnType(decl, nameBlame);
|
|
678
|
+
// A JavaScript generator whose inferred return the checker leaves `any`
|
|
679
|
+
// (it delegates to itself: `yield* walkTree(sub)`) is still a generator:
|
|
680
|
+
// its channels are checked-dynamic values.
|
|
681
|
+
if (isGenerator && returnType.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(decl))) {
|
|
682
|
+
returnType = {
|
|
683
|
+
kind: "generator",
|
|
684
|
+
...(isAsync ? { async: true } : {}),
|
|
685
|
+
yieldT: DYN,
|
|
686
|
+
retT: DYN,
|
|
687
|
+
nextT: DYN,
|
|
688
|
+
};
|
|
689
|
+
}
|
|
490
690
|
if (isAsync && !isGenerator && returnType.kind !== "promise") {
|
|
491
691
|
lowerer.badType(nameBlame, lowerer.typeOf(nameBlame));
|
|
492
692
|
}
|
|
@@ -501,7 +701,7 @@ export function collectSignatureInner(lowerer, decl) {
|
|
|
501
701
|
// so `namespace A { export function f }` and a top-level `f` never
|
|
502
702
|
// collide. The anonymous default export takes the synthetic
|
|
503
703
|
// "%default" spelling ('%' cannot appear in a user identifier).
|
|
504
|
-
name: lowerer.qualify(
|
|
704
|
+
name: lowerer.qualify(ts.getSourceFileOfNode(decl), nsPathPrefix(decl) + (decl.name?.text ?? "%default")),
|
|
505
705
|
params,
|
|
506
706
|
returnType,
|
|
507
707
|
isAsync,
|
|
@@ -513,24 +713,54 @@ export function collectSignatureInner(lowerer, decl) {
|
|
|
513
713
|
/** Arrows inherit arguments. Ordinary JS functions receive a hidden
|
|
514
714
|
* array unless a declared rest parameter already owns that contract.
|
|
515
715
|
* Class methods are strict; other parameterized forms require ES modules
|
|
516
|
-
* because sloppy-mode arguments alias named parameters
|
|
716
|
+
* because sloppy-mode arguments alias named parameters, unless the body
|
|
717
|
+
* cannot observe that aliasing (argumentsAliasingUnobservable). */
|
|
517
718
|
function appendArgumentsParameter(lowerer, node, shapes, mode) {
|
|
518
719
|
if (shapes.some((s) => s.mode === "rest" || s.mode === "dynRest") ||
|
|
519
720
|
!(ts.isFunctionExpression(node) ||
|
|
520
721
|
ts.isFunctionDeclaration(node) ||
|
|
521
722
|
ts.isMethodDeclaration(node)) ||
|
|
522
|
-
!isJsSourceFile(
|
|
723
|
+
!isJsSourceFile(ts.getSourceFileOfNode(node)) ||
|
|
523
724
|
!bodyReadsArguments(node))
|
|
524
725
|
return;
|
|
525
|
-
if (node.parameters.length > 0 || ts.isMethodDeclaration(node)) {
|
|
726
|
+
if (node.parameters.nodes.length > 0 || ts.isMethodDeclaration(node)) {
|
|
526
727
|
const classMethod = ts.isMethodDeclaration(node) &&
|
|
527
728
|
(ts.isClassDeclaration(node.parent) || ts.isClassExpression(node.parent));
|
|
528
|
-
if (!classMethod &&
|
|
729
|
+
if (!classMethod &&
|
|
730
|
+
!isNodeEsmFile(ts.getSourceFileOfNode(node), lowerer.program) &&
|
|
731
|
+
!unmappedArguments(node) &&
|
|
732
|
+
!argumentsAliasingUnobservable(node)) {
|
|
529
733
|
lowerer.unsupported("SC1090", node, "parameterized 'arguments' outside an ES module (sloppy-mode parameter aliases)");
|
|
530
734
|
}
|
|
531
735
|
}
|
|
532
736
|
shapes.push({ type: DYN, mode });
|
|
533
737
|
}
|
|
738
|
+
/** Whether `arguments` inside `node` is Node's unmapped object: strict code
|
|
739
|
+
* (a 'use strict' prologue on the file or an enclosing function, or a class
|
|
740
|
+
* body) or a non-simple parameter list (defaults, rest, destructuring). Its
|
|
741
|
+
* elements then never alias the parameters, which is the ES module case. */
|
|
742
|
+
function unmappedArguments(node) {
|
|
743
|
+
if (node.parameters.nodes.some((p) => p.initializer !== undefined || p.dotDotDotToken !== undefined || !ts.isIdentifier(p.name)))
|
|
744
|
+
return true;
|
|
745
|
+
const useStrict = (statements) => {
|
|
746
|
+
for (const statement of statements) {
|
|
747
|
+
if (!ts.isExpressionStatement(statement) || !ts.isStringLiteral(statement.expression))
|
|
748
|
+
return false;
|
|
749
|
+
if (statement.expression.text === "use strict")
|
|
750
|
+
return true;
|
|
751
|
+
}
|
|
752
|
+
return false;
|
|
753
|
+
};
|
|
754
|
+
for (let n = node; n; n = n.parent) {
|
|
755
|
+
if (ts.isClassDeclaration(n) || ts.isClassExpression(n))
|
|
756
|
+
return true;
|
|
757
|
+
if (ts.isFunctionLike(n) && n.body && ts.isBlock(n.body) && useStrict(n.body.statements.nodes))
|
|
758
|
+
return true;
|
|
759
|
+
if (ts.isSourceFile(n))
|
|
760
|
+
return useStrict(n.statements.nodes);
|
|
761
|
+
}
|
|
762
|
+
return false;
|
|
763
|
+
}
|
|
534
764
|
/** Signature checks + param shapes + IR func type for any lambda-like
|
|
535
765
|
* node. The func type's params are the ABI types: optional/default params
|
|
536
766
|
* become `T | undefined`, and typed rest becomes one packed-array slot.
|
|
@@ -538,13 +768,23 @@ function appendArgumentsParameter(lowerer, node, shapes, mode) {
|
|
|
538
768
|
export function lambdaSignature(lowerer, node) {
|
|
539
769
|
if (!node.body)
|
|
540
770
|
lowerer.unsupported("SC1090", node, "function overload signatures");
|
|
771
|
+
// A parameterless function expression forwarding its `arguments`,
|
|
772
|
+
// asserted to a fixed signature: that signature is its ABI.
|
|
773
|
+
if (typedArgumentsCandidate(node) && !node.typeParameters?.nodes.length) {
|
|
774
|
+
const target = typedArgumentsTarget(lowerer, node);
|
|
775
|
+
if (target) {
|
|
776
|
+
const shapes = typedArgumentsShapes(target);
|
|
777
|
+
lowerer.typedArgumentsLambdas.add(node);
|
|
778
|
+
return { shapes, funcType: funcTypeFromParamShapes(shapes, target.ret) };
|
|
779
|
+
}
|
|
780
|
+
}
|
|
541
781
|
// A JS replacement of a native stream's write method receives the
|
|
542
782
|
// actual call tuple, including overloads and omitted arguments. Node's
|
|
543
783
|
// contextual overload signature cannot define this closure's ABI.
|
|
544
|
-
if (isJsSourceFile(
|
|
784
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(node)) &&
|
|
545
785
|
!node.type &&
|
|
546
786
|
(ts.isFunctionExpression(node) || ts.isArrowFunction(node)) &&
|
|
547
|
-
node.parameters.every((param) => !param.type && !param.dotDotDotToken && !param.initializer) &&
|
|
787
|
+
node.parameters.nodes.every((param) => !param.type && !param.dotDotDotToken && !param.initializer) &&
|
|
548
788
|
ts.isBinaryExpression(node.parent) &&
|
|
549
789
|
node.parent.right === node &&
|
|
550
790
|
node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken &&
|
|
@@ -553,11 +793,34 @@ export function lambdaSignature(lowerer, node) {
|
|
|
553
793
|
lowerer.isStdlibMember(node.parent.left)) {
|
|
554
794
|
const receiver = lowerer.lowerExpr(node.parent.left.expression);
|
|
555
795
|
if (receiver.type.kind === "dyn") {
|
|
556
|
-
const shapes = node.parameters.map(() => ({
|
|
796
|
+
const shapes = node.parameters.nodes.map(() => ({
|
|
797
|
+
type: DYN,
|
|
798
|
+
mode: "required",
|
|
799
|
+
}));
|
|
557
800
|
return { shapes, funcType: funcTypeFromParamShapes(shapes, DYN) };
|
|
558
801
|
}
|
|
559
802
|
}
|
|
560
|
-
|
|
803
|
+
// A callback whose arguments arrive as the runtime produced them, wider
|
|
804
|
+
// than its contextual overload says (dns.lookup's callback when the
|
|
805
|
+
// options are only known at run time: the address is a string or an
|
|
806
|
+
// address list): every parameter binds as a checked-dynamic value.
|
|
807
|
+
// Rest parameters keep their packing and optional or defaulted ones stay
|
|
808
|
+
// omittable (the prologue applies a default to an undefined argument).
|
|
809
|
+
// The slot discards the result, so a sync callback returns void and an
|
|
810
|
+
// async one keeps its promise.
|
|
811
|
+
if (lowerer.dynParamLambdas.has(node)) {
|
|
812
|
+
const shapes = node.parameters.nodes
|
|
813
|
+
.filter((param) => !isThisParameter(param))
|
|
814
|
+
.map((param) => param.dotDotDotToken
|
|
815
|
+
? { type: DYN, mode: "dynRest" }
|
|
816
|
+
: param.initializer
|
|
817
|
+
? { type: DYN, mode: "omittable", bodyType: DYN }
|
|
818
|
+
: { type: DYN, mode: param.questionToken ? "omittable" : "required" });
|
|
819
|
+
const isAsync = node.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword);
|
|
820
|
+
const ret = isAsync ? lowerer.declaredReturnType(node, node) : VOID;
|
|
821
|
+
return { shapes, funcType: funcTypeFromParamShapes(shapes, ret) };
|
|
822
|
+
}
|
|
823
|
+
if (node.typeParameters?.nodes && !lowerer.erasingLambdas.has(node)) {
|
|
561
824
|
// Generic function-like forms monomorphize only where a static home
|
|
562
825
|
// exists: top-level generic function declarations, generic methods
|
|
563
826
|
// (class and object-literal), and module-scope never-reassigned
|
|
@@ -571,13 +834,13 @@ export function lambdaSignature(lowerer, node) {
|
|
|
571
834
|
? "generic nested functions (only top-level generic function declarations are supported)"
|
|
572
835
|
: "generic arrow/function expressions outside a never-reassigned module-scope binding (only `const f = <T>(x: T) => ...` bindings and top-level generic function declarations monomorphize)");
|
|
573
836
|
}
|
|
574
|
-
const shapes = lowerer.paramShapes(node.parameters);
|
|
837
|
+
const shapes = lowerer.paramShapes(node.parameters.nodes);
|
|
575
838
|
// Error-first callbacks captured by native filesystem adapters receive
|
|
576
839
|
// the selected runtime overload. Ambient contextual inference can pick
|
|
577
840
|
// the string overload even when options request a Buffer.
|
|
578
841
|
if ((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) &&
|
|
579
842
|
ts.isCallExpression(node.parent) &&
|
|
580
|
-
node.parent.arguments.at(-1) === node) {
|
|
843
|
+
node.parent.arguments.nodes.at(-1) === node) {
|
|
581
844
|
const builtin = ts.isPropertyAccessExpression(node.parent.expression)
|
|
582
845
|
? lowerer.builtinMemberOf(node.parent.expression)
|
|
583
846
|
: ts.isIdentifier(node.parent.expression)
|
|
@@ -587,7 +850,7 @@ export function lambdaSignature(lowerer, node) {
|
|
|
587
850
|
builtin.member !== "rename" &&
|
|
588
851
|
builtinModuleFnOf(lowerer, builtin.module, builtin.member)?.fn === "fs.callbackCall") {
|
|
589
852
|
for (let index = 0; index < shapes.length; index++) {
|
|
590
|
-
if (!node.parameters[index]?.type) {
|
|
853
|
+
if (!node.parameters.nodes[index]?.type) {
|
|
591
854
|
shapes[index].type = DYN;
|
|
592
855
|
if (shapes[index].bodyType)
|
|
593
856
|
shapes[index].bodyType = DYN;
|
|
@@ -622,30 +885,61 @@ export function lambdaSignature(lowerer, node) {
|
|
|
622
885
|
// construction: a callback building IrStmt[] must wrap each element at
|
|
623
886
|
// that recursive layout instead of first inferring narrower arrays.
|
|
624
887
|
const isAsyncLike = !ts.isMethodDeclaration(node) &&
|
|
625
|
-
node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) === true;
|
|
888
|
+
node.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) === true;
|
|
626
889
|
const innerRet = isAsyncLike && ret.kind === "promise" ? ret.inner : ret;
|
|
627
890
|
// Union-inferred returns adopt too (a mixed-return body inferring a
|
|
628
891
|
// SUB-union of the slot's union — adopting is a no-op when the two
|
|
629
|
-
|
|
630
|
-
|
|
892
|
+
// A synchronous object-literal method adopts its slot's return the same
|
|
893
|
+
// way: its slot is the property of that name on the literal's
|
|
894
|
+
// contextual type. A literal under `satisfies` keeps its own type (the
|
|
895
|
+
// constraint is only checked), so its methods keep their inferred
|
|
896
|
+
// returns: callers of the value see those, not the constraint's.
|
|
897
|
+
const literalMethod = ts.isMethodDeclaration(node) &&
|
|
898
|
+
ts.isObjectLiteralExpression(node.parent) &&
|
|
899
|
+
!node.asteriskToken &&
|
|
900
|
+
node.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) !== true &&
|
|
901
|
+
!isSatisfiesOperand(node.parent);
|
|
902
|
+
if (((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) &&
|
|
903
|
+
(!isAsyncLike || ret.kind === "promise")) ||
|
|
904
|
+
literalMethod) {
|
|
631
905
|
// The slot's signature: the contextual type stripped of its nullish
|
|
632
906
|
// parts (an OPTIONAL callback field's context is the whole
|
|
633
907
|
// `(...) | undefined` union) with exactly one call signature — and
|
|
634
908
|
// declared in USER code: stdlib callback slots (flatMap's
|
|
635
909
|
// `U | readonly U[]`, sort comparators) have intrinsic lowerings
|
|
636
910
|
// that inspect the INFERRED type, so they must not widen.
|
|
637
|
-
const ctxType =
|
|
911
|
+
const ctxType = literalMethod && ts.isMethodDeclaration(node) && node.parent
|
|
912
|
+
? objectLiteralMethodSlot(lowerer, node, node.parent)
|
|
913
|
+
: lowerer.checker.getContextualType(node);
|
|
638
914
|
const ctxSigs = ctxType
|
|
639
915
|
? lowerer.checker.getCallSignatures(lowerer.checker.getNonNullableType(ctxType))
|
|
640
916
|
: [];
|
|
641
|
-
const ctxDecl = ctxSigs.length === 1 ?
|
|
642
|
-
const ctxRetRaw = ctxDecl && !
|
|
917
|
+
const ctxDecl = ctxSigs.length === 1 ? ctxSigs[0].declaration : undefined;
|
|
918
|
+
const ctxRetRaw = ctxDecl && !ts.getSourceFileOfNode(ctxDecl).isDeclarationFile
|
|
643
919
|
? lowerer.mapTypeOf(lowerer.checker.getReturnTypeOfSignature(ctxSigs[0]))
|
|
644
920
|
: null;
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
921
|
+
// An async lambda always produces a promise, so a slot returning a
|
|
922
|
+
// promise-armed union (`Promise<R | void> | R | void`, `Promise<void>
|
|
923
|
+
// | void`) is met through that promise arm: its payload is the ABI.
|
|
924
|
+
const ctxPromiseArm = isAsyncLike && ctxRetRaw?.kind === "union"
|
|
925
|
+
? lowerer.unions.get(ctxRetRaw.unionId)?.arms.filter((arm) => arm.kind === "promise")
|
|
926
|
+
: undefined;
|
|
927
|
+
const ctxRet = isAsyncLike && ctxRetRaw?.kind === "promise"
|
|
928
|
+
? ctxRetRaw.inner
|
|
929
|
+
: ctxPromiseArm?.length === 1 && ctxPromiseArm[0].kind === "promise"
|
|
930
|
+
? ctxPromiseArm[0].inner
|
|
931
|
+
: ctxRetRaw;
|
|
932
|
+
// A TypeScript variadic lambda (`(...args) => handler(...args)`) in a
|
|
933
|
+
// checked-dynamic variadic slot returning `unknown` adopts that result
|
|
934
|
+
// too: rest closures have no function-value adapter, so the closure
|
|
935
|
+
// must match the slot's ABI exactly.
|
|
936
|
+
const dynVariadicSlot = ctxRet?.kind === "dyn" &&
|
|
937
|
+
!isJsSourceFile(ts.getSourceFileOfNode(node)) &&
|
|
938
|
+
shapes.some((shape) => shape.mode === "dynRest");
|
|
939
|
+
if (dynVariadicSlot ||
|
|
940
|
+
((ctxRet?.kind === "union" || ctxRet?.kind === "array" || ctxRet?.kind === "record") &&
|
|
941
|
+
(innerRet.kind !== "void" ||
|
|
942
|
+
(ctxRet.kind === "union" && lowerer.armTag(ctxRet.unionId, UNDEFINED_T) >= 0)))) {
|
|
649
943
|
ret = isAsyncLike ? { kind: "promise", inner: ctxRet } : ctxRet;
|
|
650
944
|
}
|
|
651
945
|
// A VOID slot discards the callback's result (TS's void-returning
|
|
@@ -674,7 +968,8 @@ export function lambdaSignature(lowerer, node) {
|
|
|
674
968
|
? lowerer.mapTypeOf(lowerer.checker.getNonNullableType(literalSlot))
|
|
675
969
|
: null;
|
|
676
970
|
const inferredLiteral = literalSlot !== undefined && (literalType === null || literalType.kind === "dyn");
|
|
677
|
-
if (!
|
|
971
|
+
if (!literalMethod &&
|
|
972
|
+
!isAsyncLike &&
|
|
678
973
|
!node.type &&
|
|
679
974
|
!inferredLiteral &&
|
|
680
975
|
ret.kind !== "void" &&
|
|
@@ -688,4 +983,33 @@ export function lambdaSignature(lowerer, node) {
|
|
|
688
983
|
const funcType = funcTypeFromParamShapes(shapes, ret);
|
|
689
984
|
return { shapes, funcType };
|
|
690
985
|
}
|
|
986
|
+
/** Whether the object literal `literal` is the operand of a `satisfies`
|
|
987
|
+
* expression, directly or as a property value of literals that are. */
|
|
988
|
+
function isSatisfiesOperand(literal) {
|
|
989
|
+
let n = literal;
|
|
990
|
+
while (n !== undefined) {
|
|
991
|
+
const parent = n.parent;
|
|
992
|
+
if (parent === undefined)
|
|
993
|
+
return false;
|
|
994
|
+
if (ts.isParenthesizedExpression(parent))
|
|
995
|
+
n = parent;
|
|
996
|
+
else if (ts.isPropertyAssignment(parent) && parent.initializer === n)
|
|
997
|
+
n = parent.parent;
|
|
998
|
+
else
|
|
999
|
+
return ts.isSatisfiesExpression(parent) && parent.expression === n;
|
|
1000
|
+
}
|
|
1001
|
+
return false;
|
|
1002
|
+
}
|
|
1003
|
+
/** The type of the property an object-literal method fills on the
|
|
1004
|
+
* literal's contextual type; undefined when the literal has no contextual
|
|
1005
|
+
* type or the method has a computed name. */
|
|
1006
|
+
function objectLiteralMethodSlot(lowerer, node, literal) {
|
|
1007
|
+
if (!ts.isIdentifier(node.name) && !ts.isStringLiteral(node.name))
|
|
1008
|
+
return undefined;
|
|
1009
|
+
const literalType = lowerer.checker.getContextualType(literal);
|
|
1010
|
+
if (!literalType)
|
|
1011
|
+
return undefined;
|
|
1012
|
+
const property = lowerer.checker.getPropertyOfType(lowerer.checker.getNonNullableType(literalType), node.name.text);
|
|
1013
|
+
return property ? lowerer.checker.getTypeOfSymbol(property) : undefined;
|
|
1014
|
+
}
|
|
691
1015
|
//# sourceMappingURL=call-signatures.js.map
|