@scriptc/compiler 0.3.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +960 -82
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +6 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +11 -0
- package/dist/backend/llvm/classes.js +71 -14
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +58 -8
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.js +1 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +12 -3
- package/dist/backend/llvm/dense-array-access.js +72 -14
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +59 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +28 -4
- package/dist/backend/llvm/dyn.js +324 -179
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1190 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1535 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +58 -0
- package/dist/backend/llvm/emit-statements.js +1964 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +576 -268
- package/dist/backend/llvm/emitter.js +801 -4447
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +71 -53
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +39 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +1 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +92 -63
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +132 -25
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +2 -2
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +54 -12
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +488 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +217 -24
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +102 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +77 -25
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +100 -50
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +229 -5
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +57 -8
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +2 -2
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.js +2 -2
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +151 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +70 -9
- package/dist/backend/llvm/nullable-unions.js +105 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +14 -2
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +13 -2
- package/dist/backend/llvm/record-results.js +66 -6
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +143 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +9 -6
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +1 -1
- package/dist/backend/llvm/shapes.d.ts +69 -43
- package/dist/backend/llvm/shapes.js +285 -21
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +74 -0
- package/dist/backend/llvm/speculative-integers.js +571 -0
- package/dist/backend/llvm/speculative-integers.js.map +1 -0
- package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
- package/dist/backend/llvm/speculative-integers.test.js +148 -0
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +110 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +7 -0
- package/dist/backend/mangle.js +11 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +6 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +37 -0
- package/dist/backend/native/executable.js +192 -134
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-pack-core.d.ts +9 -1
- package/dist/backend/runtime-pack-core.js +10 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +5 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -3
- package/dist/backend/runtime-pack.js +12 -6
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +20 -6
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +8 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +5 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +44 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +11 -1
- package/dist/cli/usage.js +20 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +13 -0
- package/dist/contracts/check.js +25 -6
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +19 -6
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +11 -7
- package/dist/diagnostics/diagnostic.js +35 -23
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +17 -0
- package/dist/executable/executable-cache.js +13 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +7 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +72 -4
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +45 -6
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +230 -52
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
- package/dist/frontend/lowering/builtins/crypto.js +223 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +174 -6
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +136 -113
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
- package/dist/frontend/lowering/builtins/filesystem.js +213 -76
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
- package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +232 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +67 -46
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +32 -1
- package/dist/frontend/lowering/builtins/process.js +468 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +55 -13
- package/dist/frontend/lowering/builtins/readline.js +931 -69
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +16 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +75 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +16 -0
- package/dist/frontend/lowering/builtins/workers.js +246 -3
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +19 -1
- package/dist/frontend/lowering/call-signatures.js +254 -47
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +528 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +55 -0
- package/dist/frontend/lowering/class-protocols.js +738 -22
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +80 -18
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +261 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +51 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +19 -0
- package/dist/frontend/lowering/containers/array-from-async.js +427 -0
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
- package/dist/frontend/lowering/containers/array-methods.js +89 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +161 -101
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +219 -27
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +81 -48
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
- package/dist/frontend/lowering/cycle-initialization.js +39 -0
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +238 -128
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +703 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2483 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1797 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +253 -85
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
- package/dist/frontend/lowering/expressions/property-access.js +3544 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1679 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +538 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +39 -0
- package/dist/frontend/lowering/generic-functions.js +393 -75
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +32 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1298 -452
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +50 -3
- package/dist/frontend/lowering/lower-classes.js +1499 -456
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +179 -8
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +268 -71
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1493 -12407
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +68 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +29 -16
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +354 -99
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +19 -2
- package/dist/frontend/lowering/lower-mock.js +557 -74
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +268 -61
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +45 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +638 -105
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +151 -109
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
- package/dist/frontend/lowering/lower-stmts.js +1589 -398
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +4 -3
- package/dist/frontend/lowering/lower-stream.js +714 -75
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +574 -100
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +80 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +409 -26
- package/dist/frontend/lowering/lowerer.js +1918 -305
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/null-prototype.d.ts +13 -0
- package/dist/frontend/lowering/null-prototype.js +33 -0
- package/dist/frontend/lowering/null-prototype.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +10 -10
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +15 -6
- package/dist/frontend/lowering/surfaces.js +278 -45
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.d.ts +5 -0
- package/dist/frontend/mock-shapes.js +39 -7
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
- package/dist/frontend/npm-static-bundled-chunks.js +810 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +768 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +17 -1
- package/dist/frontend/npm-static.js +167 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.js +164 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +92 -2
- package/dist/frontend/program.js +1557 -254
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +36 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +20 -1
- package/dist/frontend/services.js +40 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +5 -1
- package/dist/frontend/ts7/program-host.js +12 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +54 -24
- package/dist/frontend/ts7/semantic-model.js +88 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +11 -11
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2612 -695
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +47 -10
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +30 -0
- package/dist/ir/array-length-stability.js +236 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +113 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +139 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +655 -25
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +10 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +119 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +29 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +16 -6
- package/dist/ir/integer-loop-facts.js +143 -38
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +3 -0
- package/dist/ir/integer-ranges.js +4 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +142 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +234 -58
- package/dist/ir/ir.js +123 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +365 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +150 -33
- package/dist/ir/runtime-features.js +672 -339
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +62 -0
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +107 -94
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +220 -71
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +64 -9
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +18 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +5 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +2 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/prepare.js +7 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +12 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +21 -20
- package/surface-manifest.json +332 -36
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* node:test's mock functions (Node 24.22, lib/internal/test_runner/mock):
|
|
2
|
-
* mock.fn and t.mock
|
|
2
|
+
* mock.fn, mock.method and their t.mock twins, the trackers' restoreAll
|
|
3
|
+
* and reset, and the fn.mock context's calls, callCount,
|
|
3
4
|
* mockImplementation, mockImplementationOnce, resetCalls and restore.
|
|
4
5
|
*
|
|
5
6
|
* mock.fn(original, implementation?) lowers to the hybrid record
|
|
@@ -8,11 +9,21 @@
|
|
|
8
9
|
* one-time implementation registered for this call index, or the current
|
|
9
10
|
* one, calls it, and appends { arguments, error, result, this } to the
|
|
10
11
|
* calls log before returning or rethrowing. The context's mutating
|
|
11
|
-
* methods are lifted helpers of the same type.
|
|
12
|
+
* methods are lifted helpers of the same type.
|
|
13
|
+
*
|
|
14
|
+
* mock.method(object, name, implementation?) mocks a function-valued field
|
|
15
|
+
* of a record: the field gets a second wrapper over the same context, one
|
|
16
|
+
* that records the object as `this`, and the context's %unmock closure
|
|
17
|
+
* writes the original back on restore(). Each mock registers a closure
|
|
18
|
+
* that calls its restore() with its tracker (scr_test.c): the module's
|
|
19
|
+
* `mock`, or the test's t.mock, which is reset when the test ends. */
|
|
12
20
|
import * as ts from "../ts7/adapter.js";
|
|
13
21
|
import { BOOL, CAUGHT, DYN, F64, UNDEFINED_T, VOID, typeKey, } from "../../ir/ir.js";
|
|
14
|
-
import { countedFor, dynUndefinedExpr, numLit, varRef } from "../../ir/build.js";
|
|
22
|
+
import { countedFor, dynUndefinedExpr, numLit, strLit, varRef } from "../../ir/build.js";
|
|
23
|
+
import { mockType as mockHybridType } from "../mock-shapes.js";
|
|
15
24
|
import { locOf } from "../program.js";
|
|
25
|
+
import { resultIsDiscarded } from "./call-position.js";
|
|
26
|
+
const RESTORE_FN = { kind: "func", params: [], ret: VOID };
|
|
16
27
|
/** The context record's parts, or null when `type` is not a mock context
|
|
17
28
|
* (mock-shapes.ts). */
|
|
18
29
|
function mockContextFields(lowerer, type) {
|
|
@@ -23,9 +34,11 @@ function mockContextFields(lowerer, type) {
|
|
|
23
34
|
const impl = field("%impl");
|
|
24
35
|
const once = field("%once");
|
|
25
36
|
const calls = field("calls");
|
|
37
|
+
const unmock = field("%unmock");
|
|
26
38
|
if (impl?.kind !== "func" ||
|
|
27
39
|
once?.kind !== "array" ||
|
|
28
40
|
calls?.kind !== "array" ||
|
|
41
|
+
unmock?.kind !== "array" ||
|
|
29
42
|
field("%original") === undefined)
|
|
30
43
|
return null;
|
|
31
44
|
const call = calls.elem;
|
|
@@ -34,7 +47,7 @@ function mockContextFields(lowerer, type) {
|
|
|
34
47
|
const args = callShape?.fields.find((f) => f.name === "arguments")?.type;
|
|
35
48
|
if (!result || !args)
|
|
36
49
|
return null;
|
|
37
|
-
return { fn: impl, call, calls, once, onceEntry: once.elem, result, args };
|
|
50
|
+
return { fn: impl, call, calls, once, onceEntry: once.elem, unmock, result, args };
|
|
38
51
|
}
|
|
39
52
|
export function isMockContextType(lowerer, type) {
|
|
40
53
|
return mockContextFields(lowerer, type) !== null;
|
|
@@ -69,9 +82,15 @@ const local = (id, name, type, mutable = false) => ({
|
|
|
69
82
|
type,
|
|
70
83
|
mutable,
|
|
71
84
|
});
|
|
72
|
-
/**
|
|
73
|
-
|
|
74
|
-
|
|
85
|
+
/** A captured local of a lifted closure. */
|
|
86
|
+
const boxedLocal = (id, name, type) => ({
|
|
87
|
+
...local(id, name, type),
|
|
88
|
+
boxed: true,
|
|
89
|
+
});
|
|
90
|
+
/** Lifts one function per (context type, role), cached on the lowerer.
|
|
91
|
+
* `owner` overrides the context type's shape as the cache key. */
|
|
92
|
+
function liftOnce(lowerer, ctxType, role, build, owner = ctxType.shapeId) {
|
|
93
|
+
const key = `mock.${role}:${owner}`;
|
|
75
94
|
const existing = lowerer.assertHelpers.get(key);
|
|
76
95
|
if (existing)
|
|
77
96
|
return existing;
|
|
@@ -80,22 +99,31 @@ function liftOnce(lowerer, ctxType, role, build) {
|
|
|
80
99
|
build(name);
|
|
81
100
|
return name;
|
|
82
101
|
}
|
|
83
|
-
/** `%mock.wrap.N(ctx)`: the closure that records each call into ctx
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
/** `%mock.wrap.N(ctx)`: the closure that records each call into ctx, with
|
|
103
|
+
* `this` undefined. `%mock.wrapMethod.N(ctx, this)` records `this`. */
|
|
104
|
+
function mockWrapperFactory(lowerer, ctxType, loc, withThis = false) {
|
|
105
|
+
return liftOnce(lowerer, ctxType, withThis ? "wrapMethod" : "wrap", (name) => {
|
|
86
106
|
const { fn, call, calls, once, onceEntry, result, args } = mockContextFields(lowerer, ctxType);
|
|
87
107
|
const impl = `${name}.impl`;
|
|
88
108
|
const ctx = () => varRef("ctx.0", ctxType, loc);
|
|
109
|
+
// A checked-dynamic rest function (mock.fn()'s default type) takes its
|
|
110
|
+
// arguments as one trailing dyn array, recorded as the call's arguments
|
|
111
|
+
// and spread into the implementation.
|
|
112
|
+
const dynRest = fn.rest === true && fn.restAbi === undefined;
|
|
89
113
|
const params = fn.params.map((type, i) => ({ localId: `p${i}.0`, name: `p${i}`, type }));
|
|
114
|
+
if (dynRest)
|
|
115
|
+
params.push({ localId: "rest.0", name: "args", type: DYN });
|
|
90
116
|
const paramRefs = () => params.map((p) => varRef(p.localId, p.type, loc));
|
|
91
117
|
const argumentsValue = () => fn.rest
|
|
92
118
|
? paramRefs()[0]
|
|
93
|
-
:
|
|
94
|
-
kind: "
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
119
|
+
: args.kind === "array"
|
|
120
|
+
? { kind: "arrayLit", elems: [], type: args, loc }
|
|
121
|
+
: {
|
|
122
|
+
kind: "recordLit",
|
|
123
|
+
fields: paramRefs().map((value, i) => ({ name: String(i), value })),
|
|
124
|
+
type: args,
|
|
125
|
+
loc,
|
|
126
|
+
};
|
|
99
127
|
const record = (resultValue, error) => ({
|
|
100
128
|
kind: "exprStmt",
|
|
101
129
|
expr: {
|
|
@@ -109,7 +137,10 @@ function mockWrapperFactory(lowerer, ctxType, loc) {
|
|
|
109
137
|
{ name: "arguments", value: argumentsValue() },
|
|
110
138
|
{ name: "error", value: error },
|
|
111
139
|
{ name: "result", value: resultValue },
|
|
112
|
-
{
|
|
140
|
+
{
|
|
141
|
+
name: "this",
|
|
142
|
+
value: withThis ? varRef("this.0", DYN, loc) : dynUndefinedExpr(loc),
|
|
143
|
+
},
|
|
113
144
|
],
|
|
114
145
|
type: call,
|
|
115
146
|
loc,
|
|
@@ -147,13 +178,23 @@ function mockWrapperFactory(lowerer, ctxType, loc) {
|
|
|
147
178
|
loc,
|
|
148
179
|
};
|
|
149
180
|
};
|
|
150
|
-
const invoke =
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
181
|
+
const invoke = dynRest
|
|
182
|
+
? {
|
|
183
|
+
kind: "dynCall",
|
|
184
|
+
callee: { kind: "dynFrom", value: varRef("f.0", fn, loc), type: DYN, loc },
|
|
185
|
+
calleeName: "implementation",
|
|
186
|
+
args: paramRefs(),
|
|
187
|
+
spreads: [{ arg: 0, what: "args" }],
|
|
188
|
+
type: DYN,
|
|
189
|
+
loc,
|
|
190
|
+
}
|
|
191
|
+
: {
|
|
192
|
+
kind: "callValue",
|
|
193
|
+
callee: varRef("f.0", fn, loc),
|
|
194
|
+
args: paramRefs(),
|
|
195
|
+
type: fn.ret,
|
|
196
|
+
loc,
|
|
197
|
+
};
|
|
157
198
|
const tryBody = voidReturn
|
|
158
199
|
? [
|
|
159
200
|
{ kind: "exprStmt", expr: invoke, loc },
|
|
@@ -217,10 +258,14 @@ function mockWrapperFactory(lowerer, ctxType, loc) {
|
|
|
217
258
|
name: impl,
|
|
218
259
|
params,
|
|
219
260
|
returnType: fn.ret,
|
|
220
|
-
captures: [
|
|
261
|
+
captures: [
|
|
262
|
+
{ localId: "ctx.0", name: "ctx", type: ctxType },
|
|
263
|
+
...(withThis ? [{ localId: "this.0", name: "this", type: DYN }] : []),
|
|
264
|
+
],
|
|
221
265
|
locals: [
|
|
222
266
|
...params.map((p) => local(p.localId, p.name, p.type)),
|
|
223
|
-
|
|
267
|
+
boxedLocal("ctx.0", "ctx", ctxType),
|
|
268
|
+
...(withThis ? [boxedLocal("this.0", "this", DYN)] : []),
|
|
224
269
|
local("n.0", "index", F64),
|
|
225
270
|
local("f.0", "implementation", fn, true),
|
|
226
271
|
local("i.0", "entry", F64, true),
|
|
@@ -242,13 +287,25 @@ function mockWrapperFactory(lowerer, ctxType, loc) {
|
|
|
242
287
|
});
|
|
243
288
|
lowerer.liftedFns.push({
|
|
244
289
|
name,
|
|
245
|
-
params: [
|
|
290
|
+
params: [
|
|
291
|
+
{ localId: "ctx.0", name: "ctx", type: ctxType },
|
|
292
|
+
...(withThis ? [{ localId: "this.0", name: "this", type: DYN }] : []),
|
|
293
|
+
],
|
|
246
294
|
returnType: fn,
|
|
247
|
-
locals: [
|
|
295
|
+
locals: [
|
|
296
|
+
boxedLocal("ctx.0", "ctx", ctxType),
|
|
297
|
+
...(withThis ? [boxedLocal("this.0", "this", DYN)] : []),
|
|
298
|
+
],
|
|
248
299
|
body: [
|
|
249
300
|
{
|
|
250
301
|
kind: "return",
|
|
251
|
-
value: {
|
|
302
|
+
value: {
|
|
303
|
+
kind: "closure",
|
|
304
|
+
fnName: impl,
|
|
305
|
+
captures: withThis ? ["ctx.0", "this.0"] : ["ctx.0"],
|
|
306
|
+
type: fn,
|
|
307
|
+
loc,
|
|
308
|
+
},
|
|
252
309
|
loc,
|
|
253
310
|
},
|
|
254
311
|
],
|
|
@@ -256,6 +313,138 @@ function mockWrapperFactory(lowerer, ctxType, loc) {
|
|
|
256
313
|
});
|
|
257
314
|
});
|
|
258
315
|
}
|
|
316
|
+
/** `%mock.restore.N(ctx)`: fn.mock.restore(). A method mock writes the
|
|
317
|
+
* original back to its object and keeps its implementation; a mock.fn mock
|
|
318
|
+
* goes back to its original implementation. */
|
|
319
|
+
function mockRestoreHelper(lowerer, ctxType, loc) {
|
|
320
|
+
const { fn, unmock } = mockContextFields(lowerer, ctxType);
|
|
321
|
+
return mockHelper(lowerer, ctxType, "restore", [], (ctx) => {
|
|
322
|
+
const unmockArray = () => recordGet(ctx(), "%unmock", unmock, loc);
|
|
323
|
+
return [
|
|
324
|
+
{
|
|
325
|
+
kind: "if",
|
|
326
|
+
cond: {
|
|
327
|
+
kind: "bin",
|
|
328
|
+
op: "===",
|
|
329
|
+
left: length(unmockArray(), loc),
|
|
330
|
+
right: numLit(0, loc),
|
|
331
|
+
type: BOOL,
|
|
332
|
+
loc,
|
|
333
|
+
},
|
|
334
|
+
then: [recordSet(ctx(), "%impl", recordGet(ctx(), "%original", fn, loc), loc)],
|
|
335
|
+
else_: [
|
|
336
|
+
{
|
|
337
|
+
kind: "exprStmt",
|
|
338
|
+
expr: {
|
|
339
|
+
kind: "callValue",
|
|
340
|
+
callee: {
|
|
341
|
+
kind: "arrayGet",
|
|
342
|
+
arr: unmockArray(),
|
|
343
|
+
index: numLit(0, loc),
|
|
344
|
+
type: RESTORE_FN,
|
|
345
|
+
loc,
|
|
346
|
+
},
|
|
347
|
+
args: [],
|
|
348
|
+
type: VOID,
|
|
349
|
+
loc,
|
|
350
|
+
},
|
|
351
|
+
loc,
|
|
352
|
+
},
|
|
353
|
+
],
|
|
354
|
+
loc,
|
|
355
|
+
},
|
|
356
|
+
];
|
|
357
|
+
}, loc);
|
|
358
|
+
}
|
|
359
|
+
/** `%mock.tracked.N(ctx)`: the closure a tracker keeps, which calls the
|
|
360
|
+
* mock's restore(). */
|
|
361
|
+
function mockTrackedFactory(lowerer, ctxType, loc) {
|
|
362
|
+
const restore = mockRestoreHelper(lowerer, ctxType, loc);
|
|
363
|
+
return liftOnce(lowerer, ctxType, "tracked", (name) => {
|
|
364
|
+
const impl = `${name}.impl`;
|
|
365
|
+
lowerer.liftedFns.push({
|
|
366
|
+
name: impl,
|
|
367
|
+
params: [],
|
|
368
|
+
returnType: VOID,
|
|
369
|
+
captures: [{ localId: "ctx.0", name: "ctx", type: ctxType }],
|
|
370
|
+
locals: [boxedLocal("ctx.0", "ctx", ctxType)],
|
|
371
|
+
body: [
|
|
372
|
+
{
|
|
373
|
+
kind: "exprStmt",
|
|
374
|
+
expr: {
|
|
375
|
+
kind: "call",
|
|
376
|
+
callee: restore,
|
|
377
|
+
args: [varRef("ctx.0", ctxType, loc)],
|
|
378
|
+
type: VOID,
|
|
379
|
+
loc,
|
|
380
|
+
},
|
|
381
|
+
loc,
|
|
382
|
+
},
|
|
383
|
+
{ kind: "return", value: null, loc },
|
|
384
|
+
],
|
|
385
|
+
loc,
|
|
386
|
+
});
|
|
387
|
+
lowerer.liftedFns.push({
|
|
388
|
+
name,
|
|
389
|
+
params: [{ localId: "ctx.0", name: "ctx", type: ctxType }],
|
|
390
|
+
returnType: RESTORE_FN,
|
|
391
|
+
locals: [boxedLocal("ctx.0", "ctx", ctxType)],
|
|
392
|
+
body: [
|
|
393
|
+
{
|
|
394
|
+
kind: "return",
|
|
395
|
+
value: { kind: "closure", fnName: impl, captures: ["ctx.0"], type: RESTORE_FN, loc },
|
|
396
|
+
loc,
|
|
397
|
+
},
|
|
398
|
+
],
|
|
399
|
+
loc,
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
/** `%mock.unmock.N(object, original)`: the closure that writes `original`
|
|
404
|
+
* back to the object's field. */
|
|
405
|
+
function mockUnmockFactory(lowerer, ctxType, objType, field, loc) {
|
|
406
|
+
const { fn } = mockContextFields(lowerer, ctxType);
|
|
407
|
+
return liftOnce(lowerer, ctxType, "unmock", (name) => {
|
|
408
|
+
const impl = `${name}.impl`;
|
|
409
|
+
const captures = [
|
|
410
|
+
{ localId: "obj.0", name: "object", type: objType },
|
|
411
|
+
{ localId: "orig.0", name: "original", type: fn },
|
|
412
|
+
];
|
|
413
|
+
const boxedLocals = captures.map((c) => boxedLocal(c.localId, c.name, c.type));
|
|
414
|
+
lowerer.liftedFns.push({
|
|
415
|
+
name: impl,
|
|
416
|
+
params: [],
|
|
417
|
+
returnType: VOID,
|
|
418
|
+
captures,
|
|
419
|
+
locals: boxedLocals,
|
|
420
|
+
body: [
|
|
421
|
+
recordSet(varRef("obj.0", objType, loc), field, varRef("orig.0", fn, loc), loc),
|
|
422
|
+
{ kind: "return", value: null, loc },
|
|
423
|
+
],
|
|
424
|
+
loc,
|
|
425
|
+
});
|
|
426
|
+
lowerer.liftedFns.push({
|
|
427
|
+
name,
|
|
428
|
+
params: captures,
|
|
429
|
+
returnType: RESTORE_FN,
|
|
430
|
+
locals: boxedLocals,
|
|
431
|
+
body: [
|
|
432
|
+
{
|
|
433
|
+
kind: "return",
|
|
434
|
+
value: {
|
|
435
|
+
kind: "closure",
|
|
436
|
+
fnName: impl,
|
|
437
|
+
captures: ["obj.0", "orig.0"],
|
|
438
|
+
type: RESTORE_FN,
|
|
439
|
+
loc,
|
|
440
|
+
},
|
|
441
|
+
loc,
|
|
442
|
+
},
|
|
443
|
+
],
|
|
444
|
+
loc,
|
|
445
|
+
});
|
|
446
|
+
}, `${objType.shapeId}.${JSON.stringify(field)}`);
|
|
447
|
+
}
|
|
259
448
|
/** A VOID helper over the context: `%mock.<role>.N(ctx, ...extra)`. */
|
|
260
449
|
function mockHelper(lowerer, ctxType, role, extra, body, loc) {
|
|
261
450
|
return liftOnce(lowerer, ctxType, role, (name) => {
|
|
@@ -277,8 +466,98 @@ function mockHelper(lowerer, ctxType, role, extra, body, loc) {
|
|
|
277
466
|
});
|
|
278
467
|
});
|
|
279
468
|
}
|
|
280
|
-
/** mock
|
|
281
|
-
|
|
469
|
+
/** Registers a mock's restore with its tracker. */
|
|
470
|
+
function trackMock(lowerer, tracker, ctxType, ctx, loc) {
|
|
471
|
+
const restore = {
|
|
472
|
+
kind: "call",
|
|
473
|
+
callee: mockTrackedFactory(lowerer, ctxType, loc),
|
|
474
|
+
args: [ctx],
|
|
475
|
+
type: RESTORE_FN,
|
|
476
|
+
loc,
|
|
477
|
+
};
|
|
478
|
+
return {
|
|
479
|
+
kind: "exprStmt",
|
|
480
|
+
expr: {
|
|
481
|
+
kind: "libCall",
|
|
482
|
+
fn: tracker ? "test.ctxMockTrack" : "test.mockTrack",
|
|
483
|
+
args: tracker ? [tracker, restore] : [restore],
|
|
484
|
+
type: VOID,
|
|
485
|
+
loc,
|
|
486
|
+
},
|
|
487
|
+
loc,
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
/** The context record literal of a new mock. */
|
|
491
|
+
function mockContextLiteral(ctxType, fields, implementation, original, unmock, loc) {
|
|
492
|
+
return {
|
|
493
|
+
kind: "recordLit",
|
|
494
|
+
fields: [
|
|
495
|
+
{ name: "%impl", value: implementation },
|
|
496
|
+
{ name: "%once", value: { kind: "arrayLit", elems: [], type: fields.once, loc } },
|
|
497
|
+
{ name: "%original", value: original },
|
|
498
|
+
{ name: "%unmock", value: { kind: "arrayLit", elems: unmock, type: fields.unmock, loc } },
|
|
499
|
+
{ name: "calls", value: { kind: "arrayLit", elems: [], type: fields.calls, loc } },
|
|
500
|
+
],
|
|
501
|
+
type: ctxType,
|
|
502
|
+
loc,
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
/** The Mock<F> record over a context: { %call: wrapper, mock: context }. */
|
|
506
|
+
function mockRecord(lowerer, mockType, ctxType, ctx, loc) {
|
|
507
|
+
const { fn } = mockContextFields(lowerer, ctxType);
|
|
508
|
+
return {
|
|
509
|
+
kind: "recordLit",
|
|
510
|
+
fields: [
|
|
511
|
+
{
|
|
512
|
+
name: "%call",
|
|
513
|
+
value: {
|
|
514
|
+
kind: "call",
|
|
515
|
+
callee: mockWrapperFactory(lowerer, ctxType, loc),
|
|
516
|
+
args: [ctx],
|
|
517
|
+
type: fn,
|
|
518
|
+
loc,
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
{ name: "mock", value: ctx },
|
|
522
|
+
],
|
|
523
|
+
type: mockType,
|
|
524
|
+
loc,
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
/** A union return type needs an undefined arm: the calls log records
|
|
528
|
+
* undefined for calls that throw. */
|
|
529
|
+
function requireUndefinedResultArm(lowerer, fields, call, what) {
|
|
530
|
+
if (fields.fn.ret.kind === "union" && typeKey(fields.result) !== typeKey(fields.fn.ret)) {
|
|
531
|
+
lowerer.noLowering(`${what} of a function returning '${lowerer.fmt(fields.fn.ret)}'`, call, "a union return type needs an undefined arm here (the calls log records undefined for calls that throw)");
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
/** `%mock.noop.N`: mock.fn()'s original, Node's `function () {}` — it
|
|
535
|
+
* returns undefined. Null when the function type's return type cannot hold
|
|
536
|
+
* undefined. */
|
|
537
|
+
function mockNoopOriginal(lowerer, ctxType, fn, loc) {
|
|
538
|
+
const voidReturn = fn.ret.kind === "void" || fn.ret.kind === "undefinedT";
|
|
539
|
+
const undefinedValue = voidReturn ? null : lowerer.wrappedUndefined(fn.ret, loc);
|
|
540
|
+
if (!voidReturn && !undefinedValue)
|
|
541
|
+
return null;
|
|
542
|
+
const name = liftOnce(lowerer, ctxType, "noop", (name) => {
|
|
543
|
+
const params = fn.params.map((type, i) => ({ localId: `p${i}.0`, name: `p${i}`, type }));
|
|
544
|
+
if (fn.rest === true && fn.restAbi === undefined)
|
|
545
|
+
params.push({ localId: "rest.0", name: "args", type: DYN });
|
|
546
|
+
lowerer.liftedFns.push({
|
|
547
|
+
name,
|
|
548
|
+
params,
|
|
549
|
+
returnType: fn.ret,
|
|
550
|
+
locals: params.map((p) => local(p.localId, p.name, p.type)),
|
|
551
|
+
body: [{ kind: "return", value: undefinedValue, loc }],
|
|
552
|
+
loc,
|
|
553
|
+
});
|
|
554
|
+
});
|
|
555
|
+
return { kind: "closure", fnName: name, captures: [], type: fn, loc };
|
|
556
|
+
}
|
|
557
|
+
/** mock.fn(original?, implementation?) and t.mock.fn(...). Without an
|
|
558
|
+
* original, the mock's original and implementation are a function that
|
|
559
|
+
* returns undefined, as in Node. */
|
|
560
|
+
export function lowerMockFn(lowerer, call, what, tracker) {
|
|
282
561
|
const loc = locOf(call);
|
|
283
562
|
const mockType = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
284
563
|
const shape = mockType?.kind === "record" ? lowerer.shapes.get(mockType.shapeId) : undefined;
|
|
@@ -289,70 +568,276 @@ export function lowerMockFn(lowerer, call, what) {
|
|
|
289
568
|
!shape.fields.some((f) => f.name === "%call") ||
|
|
290
569
|
!ctxType ||
|
|
291
570
|
!isMockContextType(lowerer, ctxType)) {
|
|
292
|
-
lowerer.noLowering(`${what} of this function type`, call, "mock functions lower for functions with fixed parameters, or a single rest array parameter");
|
|
571
|
+
lowerer.noLowering(`${what} of this function type`, call, "mock functions lower for functions with fixed parameters, or a single rest array parameter, and an implementation of the same type");
|
|
293
572
|
}
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
|
|
573
|
+
const fields = mockContextFields(lowerer, ctxType);
|
|
574
|
+
const { fn } = fields;
|
|
575
|
+
requireUndefinedResultArm(lowerer, fields, call, what);
|
|
576
|
+
const args = call.arguments.nodes;
|
|
577
|
+
if (args.length > 2 || args.some(ts.isSpreadElement)) {
|
|
578
|
+
lowerer.noLowering(`${what} with ${args.length} arguments`, call, "the supported forms are mock.fn(), mock.fn(original) and mock.fn(original, implementation); mock options have no lowering");
|
|
297
579
|
}
|
|
298
|
-
const
|
|
299
|
-
if (args.length === 0
|
|
300
|
-
lowerer.noLowering(`${what}
|
|
580
|
+
const noop = args.length === 0 ? mockNoopOriginal(lowerer, ctxType, fn, loc) : null;
|
|
581
|
+
if (args.length === 0 && !noop) {
|
|
582
|
+
lowerer.noLowering(`${what}() of a function returning '${lowerer.fmt(fn.ret)}'`, call, "mock.fn() without an original returns undefined: pass an original, or use a function type whose return type includes undefined");
|
|
301
583
|
}
|
|
302
584
|
const stmts = [];
|
|
303
585
|
const originalLocal = lowerer.declareHiddenLocal("%mockOriginal", fn);
|
|
304
586
|
stmts.push({
|
|
305
587
|
kind: "varDecl",
|
|
306
588
|
localId: originalLocal.id,
|
|
307
|
-
init: lowerer.lowerExprExpecting(args[0], fn),
|
|
589
|
+
init: noop ?? lowerer.lowerExprExpecting(args[0], fn),
|
|
308
590
|
loc,
|
|
309
591
|
});
|
|
310
592
|
const implementation = args.length === 2
|
|
311
593
|
? lowerer.lowerExprExpecting(args[1], fn)
|
|
312
594
|
: varRef(originalLocal.id, fn, loc);
|
|
313
595
|
const ctxLocal = lowerer.declareHiddenLocal("%mockContext", ctxType);
|
|
596
|
+
const ctx = () => varRef(ctxLocal.id, ctxType, loc);
|
|
314
597
|
stmts.push({
|
|
315
598
|
kind: "varDecl",
|
|
316
599
|
localId: ctxLocal.id,
|
|
317
|
-
init:
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
600
|
+
init: mockContextLiteral(ctxType, fields, implementation, varRef(originalLocal.id, fn, loc), [], loc),
|
|
601
|
+
loc,
|
|
602
|
+
}, trackMock(lowerer, tracker, ctxType, ctx(), loc));
|
|
603
|
+
return {
|
|
604
|
+
kind: "seqExpr",
|
|
605
|
+
stmts,
|
|
606
|
+
result: mockRecord(lowerer, mockType, ctxType, ctx(), loc),
|
|
607
|
+
type: mockType,
|
|
608
|
+
loc,
|
|
609
|
+
};
|
|
610
|
+
}
|
|
611
|
+
const METHOD_HINT = "mock.method lowers for objects whose type maps to a record (object literals and interface-typed objects) and a function-valued field named by a string literal";
|
|
612
|
+
/** mock.method(object, methodName, implementation?) and t.mock.method. The
|
|
613
|
+
* field's function type F is the mock's type; an implementation must have
|
|
614
|
+
* the same type, unless the call's result is discarded. */
|
|
615
|
+
export function lowerMockMethod(lowerer, call, what, tracker) {
|
|
616
|
+
const loc = locOf(call);
|
|
617
|
+
const args = call.arguments.nodes;
|
|
618
|
+
if (args.length < 2 || args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
619
|
+
lowerer.noLowering(`${what} with ${args.length} arguments`, call, "the supported forms are mock.method(object, methodName) and mock.method(object, methodName, implementation); mock options have no lowering");
|
|
620
|
+
}
|
|
621
|
+
const nameArg = args[1];
|
|
622
|
+
if (!ts.isStringLiteralLike(nameArg)) {
|
|
623
|
+
lowerer.noLowering(`${what} with a computed method name`, nameArg, METHOD_HINT);
|
|
624
|
+
}
|
|
625
|
+
const field = nameArg.text;
|
|
626
|
+
if (args.length === 3 &&
|
|
627
|
+
lowerer.checker.getCallSignatures(lowerer.typeOf(args[2])).length === 0) {
|
|
628
|
+
lowerer.noLowering(`${what} with an options object`, args[2], "mock options (times, getter and setter) have no lowering");
|
|
629
|
+
}
|
|
630
|
+
const objType = lowerer.mapTypeOf(lowerer.typeOf(args[0]));
|
|
631
|
+
const objShape = objType?.kind === "record" ? lowerer.shapes.get(objType.shapeId) : undefined;
|
|
632
|
+
const fn = objShape?.fields.find((f) => f.name === field)?.type;
|
|
633
|
+
if (!objType || !objShape || fn?.kind !== "func") {
|
|
634
|
+
const typeName = ts.symbolNameOf(lowerer.typeOf(args[0]).getSymbol());
|
|
635
|
+
lowerer.noLowering(typeName && !typeName.startsWith("__")
|
|
636
|
+
? `${what} on '${typeName}'`
|
|
637
|
+
: `${what} on this object`, args[0], METHOD_HINT);
|
|
638
|
+
}
|
|
639
|
+
const mockType = mockHybridType(fn, lowerer.typeCtx);
|
|
640
|
+
const ctxType = mockType?.kind === "record"
|
|
641
|
+
? lowerer.shapes.get(mockType.shapeId)?.fields.find((f) => f.name === "mock")?.type
|
|
642
|
+
: undefined;
|
|
643
|
+
if (!mockType || !ctxType || !isMockContextType(lowerer, ctxType)) {
|
|
644
|
+
lowerer.noLowering(`${what} of a '${lowerer.fmt(fn)}' method`, call, "mock functions lower for functions with fixed parameters, or a single rest array parameter");
|
|
645
|
+
}
|
|
646
|
+
if (!resultIsDiscarded(call)) {
|
|
647
|
+
const resultType = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
648
|
+
if (!resultType || typeKey(resultType) !== typeKey(mockType)) {
|
|
649
|
+
lowerer.noLowering(`${what} with an implementation of another type`, args[2] ?? call, "give the implementation the method's parameter and return types, or discard the result");
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
const fields = mockContextFields(lowerer, ctxType);
|
|
653
|
+
requireUndefinedResultArm(lowerer, fields, call, what);
|
|
654
|
+
const stmts = [];
|
|
655
|
+
const objLocal = lowerer.declareHiddenLocal("%mockObject", objType);
|
|
656
|
+
const obj = () => varRef(objLocal.id, objType, loc);
|
|
657
|
+
stmts.push({ kind: "varDecl", localId: objLocal.id, init: lowerer.lowerExpr(args[0]), loc });
|
|
658
|
+
const originalLocal = lowerer.declareHiddenLocal("%mockOriginal", fn);
|
|
659
|
+
const original = () => varRef(originalLocal.id, fn, loc);
|
|
660
|
+
stmts.push({
|
|
661
|
+
kind: "varDecl",
|
|
662
|
+
localId: originalLocal.id,
|
|
663
|
+
init: recordGet(obj(), field, fn, loc),
|
|
328
664
|
loc,
|
|
329
665
|
});
|
|
330
|
-
const
|
|
666
|
+
const implementation = args.length === 3 ? lowerer.lowerExprExpecting(args[2], fn) : original();
|
|
667
|
+
const unmock = {
|
|
668
|
+
kind: "call",
|
|
669
|
+
callee: mockUnmockFactory(lowerer, ctxType, objType, field, loc),
|
|
670
|
+
args: [obj(), original()],
|
|
671
|
+
type: RESTORE_FN,
|
|
672
|
+
loc,
|
|
673
|
+
};
|
|
674
|
+
const ctxLocal = lowerer.declareHiddenLocal("%mockContext", ctxType);
|
|
675
|
+
const ctx = () => varRef(ctxLocal.id, ctxType, loc);
|
|
676
|
+
stmts.push({
|
|
677
|
+
kind: "varDecl",
|
|
678
|
+
localId: ctxLocal.id,
|
|
679
|
+
init: mockContextLiteral(ctxType, fields, implementation, original(), [unmock], loc),
|
|
680
|
+
loc,
|
|
681
|
+
}, trackMock(lowerer, tracker, ctxType, ctx(), loc),
|
|
682
|
+
// The object's field: the wrapper that records the object as `this`.
|
|
683
|
+
recordSet(obj(), field, {
|
|
684
|
+
kind: "call",
|
|
685
|
+
callee: mockWrapperFactory(lowerer, ctxType, loc, true),
|
|
686
|
+
args: [ctx(), lowerer.coerceToExpected(obj(), DYN)],
|
|
687
|
+
type: fn,
|
|
688
|
+
loc,
|
|
689
|
+
}, loc));
|
|
331
690
|
return {
|
|
332
691
|
kind: "seqExpr",
|
|
333
692
|
stmts,
|
|
334
|
-
result:
|
|
335
|
-
kind: "recordLit",
|
|
336
|
-
fields: [
|
|
337
|
-
{
|
|
338
|
-
name: "%call",
|
|
339
|
-
value: {
|
|
340
|
-
kind: "call",
|
|
341
|
-
callee: factory,
|
|
342
|
-
args: [varRef(ctxLocal.id, ctxType, loc)],
|
|
343
|
-
type: fn,
|
|
344
|
-
loc,
|
|
345
|
-
},
|
|
346
|
-
},
|
|
347
|
-
{ name: "mock", value: varRef(ctxLocal.id, ctxType, loc) },
|
|
348
|
-
],
|
|
349
|
-
type: mockType,
|
|
350
|
-
loc,
|
|
351
|
-
},
|
|
693
|
+
result: mockRecord(lowerer, mockType, ctxType, ctx(), loc),
|
|
352
694
|
type: mockType,
|
|
353
695
|
loc,
|
|
354
696
|
};
|
|
355
697
|
}
|
|
698
|
+
/** The trackers' restoreAll() and reset(): `mock.restoreAll()`,
|
|
699
|
+
* `t.mock.reset()`. */
|
|
700
|
+
export function lowerMockTrackerCall(lowerer, call, member, tracker) {
|
|
701
|
+
if (call.arguments.nodes.length > 0) {
|
|
702
|
+
lowerer.noLowering(`MockTracker.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
703
|
+
}
|
|
704
|
+
const fn = tracker
|
|
705
|
+
? member === "reset"
|
|
706
|
+
? "test.ctxMockReset"
|
|
707
|
+
: "test.ctxMockRestoreAll"
|
|
708
|
+
: member === "reset"
|
|
709
|
+
? "test.mockReset"
|
|
710
|
+
: "test.mockRestoreAll";
|
|
711
|
+
return {
|
|
712
|
+
kind: "libCall",
|
|
713
|
+
fn,
|
|
714
|
+
args: tracker ? [tracker] : [],
|
|
715
|
+
type: VOID,
|
|
716
|
+
loc: locOf(call),
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
const MOCK_TIMERS_HINT = "enable, tick, runAll, reset and setTime are the supported mock.timers members";
|
|
720
|
+
const MOCK_TIMERS_APIS_HINT = "list the mocked APIs as string literals: enable({ apis: ['setTimeout', 'Date'] })";
|
|
721
|
+
/** The codes scr_test.c reads for the APIs enable() mocks, in Node's
|
|
722
|
+
* SUPPORTED_APIS order. */
|
|
723
|
+
const MOCK_TIMERS_API_CODES = {
|
|
724
|
+
setTimeout: "T",
|
|
725
|
+
setInterval: "I",
|
|
726
|
+
setImmediate: "M",
|
|
727
|
+
Date: "D",
|
|
728
|
+
"scheduler.wait": "W",
|
|
729
|
+
"AbortSignal.timeout": "A",
|
|
730
|
+
};
|
|
731
|
+
/** enable() and enable({ now }) without `apis` mock every API. */
|
|
732
|
+
const MOCK_TIMERS_ALL_APIS = "TIMDWA";
|
|
733
|
+
/** `mock.timers.enable(...)` and the other MockTimers members, on the
|
|
734
|
+
* module's `mock` (tracker null) and t.mock. enable() takes no options or
|
|
735
|
+
* an object literal whose `apis`, when given, is an array literal of API
|
|
736
|
+
* names. */
|
|
737
|
+
export function lowerMockTimersCall(lowerer, call, member, what, tracker, sym) {
|
|
738
|
+
const loc = locOf(call);
|
|
739
|
+
const args = call.arguments.nodes;
|
|
740
|
+
const optionalNumber = (fallback) => {
|
|
741
|
+
if (args.length > 1)
|
|
742
|
+
lowerer.noLowering(`${what}.${member} with ${args.length} arguments`, call);
|
|
743
|
+
return [args.length === 1 ? lowerer.lowerExprExpecting(args[0], F64) : numLit(fallback, loc)];
|
|
744
|
+
};
|
|
745
|
+
if (!["enable", "tick", "setTime", "runAll", "reset"].includes(member)) {
|
|
746
|
+
lowerer.noLowering(`${what}.${member}`, call, MOCK_TIMERS_HINT, sym);
|
|
747
|
+
}
|
|
748
|
+
// The receiver evaluates before the arguments.
|
|
749
|
+
const t = tracker();
|
|
750
|
+
let rest;
|
|
751
|
+
switch (member) {
|
|
752
|
+
case "enable":
|
|
753
|
+
rest = lowerMockTimersOptions(lowerer, call, what);
|
|
754
|
+
break;
|
|
755
|
+
case "tick":
|
|
756
|
+
rest = optionalNumber(1);
|
|
757
|
+
break;
|
|
758
|
+
case "setTime":
|
|
759
|
+
rest = optionalNumber(0);
|
|
760
|
+
break;
|
|
761
|
+
default:
|
|
762
|
+
if (args.length > 0) {
|
|
763
|
+
lowerer.noLowering(`${what}.${member} with ${args.length} arguments`, call);
|
|
764
|
+
}
|
|
765
|
+
rest = [];
|
|
766
|
+
}
|
|
767
|
+
const name = member[0].toUpperCase() + member.slice(1);
|
|
768
|
+
return {
|
|
769
|
+
kind: "libCall",
|
|
770
|
+
fn: (t ? `test.ctxMockTimers${name}` : `test.mockTimers${name}`),
|
|
771
|
+
args: t ? [t, ...rest] : rest,
|
|
772
|
+
type: VOID,
|
|
773
|
+
loc,
|
|
774
|
+
};
|
|
775
|
+
}
|
|
776
|
+
/** enable()'s { apis, now } as the libCall's API codes, `now` and flags
|
|
777
|
+
* (1 = `now` given, 2 = it is a Date). */
|
|
778
|
+
function lowerMockTimersOptions(lowerer, call, what) {
|
|
779
|
+
const loc = locOf(call);
|
|
780
|
+
const options = call.arguments.nodes[0];
|
|
781
|
+
if (call.arguments.nodes.length > 1) {
|
|
782
|
+
lowerer.noLowering(`${what}.enable with ${call.arguments.nodes.length} arguments`, call);
|
|
783
|
+
}
|
|
784
|
+
if (options === undefined) {
|
|
785
|
+
return [strLit(MOCK_TIMERS_ALL_APIS, loc), numLit(0, loc), numLit(0, loc)];
|
|
786
|
+
}
|
|
787
|
+
if (!ts.isObjectLiteralExpression(options)) {
|
|
788
|
+
lowerer.noLowering(`${what}.enable with a non-literal options object`, options, MOCK_TIMERS_APIS_HINT);
|
|
789
|
+
}
|
|
790
|
+
let codes = "";
|
|
791
|
+
let listed = false;
|
|
792
|
+
let now = numLit(0, loc);
|
|
793
|
+
let flags = 0;
|
|
794
|
+
for (const prop of options.properties.nodes) {
|
|
795
|
+
// `{ apis: [...] }`, `{ "now": n }` and the `{ now }` shorthand.
|
|
796
|
+
const init = ts.isPropertyAssignment(prop)
|
|
797
|
+
? prop.initializer
|
|
798
|
+
: ts.isShorthandPropertyAssignment(prop) && ts.isIdentifier(prop.name)
|
|
799
|
+
? prop.name
|
|
800
|
+
: null;
|
|
801
|
+
const key = init && prop.name && (ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name))
|
|
802
|
+
? prop.name.text
|
|
803
|
+
: null;
|
|
804
|
+
if (key === "apis") {
|
|
805
|
+
const list = init;
|
|
806
|
+
if (!ts.isArrayLiteralExpression(list)) {
|
|
807
|
+
lowerer.noLowering(`${what}.enable with a non-literal apis list`, list, MOCK_TIMERS_APIS_HINT);
|
|
808
|
+
}
|
|
809
|
+
listed = true;
|
|
810
|
+
for (const el of list.elements.nodes) {
|
|
811
|
+
if (!ts.isStringLiteralLike(el)) {
|
|
812
|
+
lowerer.noLowering(`${what}.enable with a non-literal API name`, el, MOCK_TIMERS_APIS_HINT);
|
|
813
|
+
}
|
|
814
|
+
const code = MOCK_TIMERS_API_CODES[el.text] ?? "";
|
|
815
|
+
if (code === "") {
|
|
816
|
+
lowerer.noLowering(`${what}.enable with the ${el.text} API`, el, MOCK_TIMERS_APIS_HINT);
|
|
817
|
+
}
|
|
818
|
+
codes += code;
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
else if (key === "now") {
|
|
822
|
+
const value = lowerer.lowerExpr(init);
|
|
823
|
+
if (value.type.kind === "date") {
|
|
824
|
+
now = { kind: "libCall", fn: "date.getTime", args: [value], type: F64, loc };
|
|
825
|
+
flags = 3;
|
|
826
|
+
}
|
|
827
|
+
else if (value.type.kind === "f64") {
|
|
828
|
+
now = value;
|
|
829
|
+
flags = 1;
|
|
830
|
+
}
|
|
831
|
+
else {
|
|
832
|
+
lowerer.noLowering(`${what}.enable with a now value of this type`, prop, "now takes a number or a Date");
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
else {
|
|
836
|
+
lowerer.noLowering(`${what}.enable with this option`, prop, "apis and now are the supported enable options");
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
return [strLit(listed ? codes : MOCK_TIMERS_ALL_APIS, loc), now, numLit(flags, loc)];
|
|
840
|
+
}
|
|
356
841
|
/** `fn.mock.calls`: a copy of the log, as Node's getter returns. Null for
|
|
357
842
|
* other reads. */
|
|
358
843
|
export function lowerMockContextProperty(lowerer, expr) {
|
|
@@ -380,7 +865,7 @@ export function lowerMockContextCall(lowerer, call, access) {
|
|
|
380
865
|
const { fn, calls, once, onceEntry } = mockContextFields(lowerer, ctxType);
|
|
381
866
|
const loc = locOf(call);
|
|
382
867
|
const member = access.name.text;
|
|
383
|
-
const args = call.arguments;
|
|
868
|
+
const args = call.arguments.nodes;
|
|
384
869
|
const arity = (min, max = min) => {
|
|
385
870
|
if (args.length < min || args.length > max || args.some(ts.isSpreadElement))
|
|
386
871
|
lowerer.noLowering(`MockFunctionContext.${member} with ${args.length} arguments`, call);
|
|
@@ -492,11 +977,9 @@ export function lowerMockContextCall(lowerer, call, access) {
|
|
|
492
977
|
], loc);
|
|
493
978
|
return helperCall(helper, []);
|
|
494
979
|
}
|
|
495
|
-
case "restore":
|
|
980
|
+
case "restore":
|
|
496
981
|
arity(0);
|
|
497
|
-
|
|
498
|
-
return helperCall(helper, []);
|
|
499
|
-
}
|
|
982
|
+
return helperCall(mockRestoreHelper(lowerer, ctxType, loc), []);
|
|
500
983
|
default:
|
|
501
984
|
return lowerer.noLowering(`MockFunctionContext.${member}`, call, "calls, callCount, mockImplementation, mockImplementationOnce, resetCalls and restore are the supported mock context members");
|
|
502
985
|
}
|