@scriptc/compiler 0.3.6 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +717 -55
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +20 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +9 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.js +3 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +38 -1
- package/dist/backend/llvm/classes.js +185 -35
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +79 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -3
- package/dist/backend/llvm/common.js +51 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +15 -4
- package/dist/backend/llvm/dense-array-access.js +125 -44
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +63 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +37 -4
- package/dist/backend/llvm/dyn.js +354 -183
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1193 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1557 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +59 -0
- package/dist/backend/llvm/emit-statements.js +2041 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +566 -291
- package/dist/backend/llvm/emitter.js +728 -4671
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +87 -56
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +45 -24
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +113 -66
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +124 -28
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +57 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +65 -27
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +616 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +94 -53
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +209 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +42 -33
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +45 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +215 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +7 -0
- package/dist/backend/llvm/publish.js +50 -19
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +10 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +8 -2
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +74 -45
- package/dist/backend/llvm/shapes.js +289 -28
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +1 -1
- package/dist/backend/llvm/string-reads.js +4 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +111 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +12 -0
- package/dist/backend/mangle.js +18 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +57 -0
- package/dist/backend/native/executable.js +211 -139
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +2 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +6 -0
- package/dist/backend/native-codegen.js +19 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +27 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +48 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +13 -1
- package/dist/backend/runtime-pack-core.js +14 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +9 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +9 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +15 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +8 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +106 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +21 -1
- package/dist/cli/usage.js +43 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +22 -0
- package/dist/contracts/check.js +25 -8
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +27 -0
- package/dist/executable/executable-cache.js +19 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +12 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
- package/dist/frontend/lowering/builtins/crypto.js +215 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +284 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +41 -1
- package/dist/frontend/lowering/builtins/process.js +505 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +42 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +79 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +23 -1
- package/dist/frontend/lowering/call-signatures.js +379 -55
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +561 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +10 -0
- package/dist/frontend/lowering/class-protocols.js +76 -45
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +86 -19
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +264 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +58 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +94 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
- package/dist/frontend/lowering/containers/bytes.js +649 -113
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +126 -28
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
- package/dist/frontend/lowering/cycle-initialization.js +191 -35
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +723 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2557 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1804 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +301 -86
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
- package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
- package/dist/frontend/lowering/expressions/property-access.js +3787 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1724 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +551 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +43 -0
- package/dist/frontend/lowering/generic-functions.js +593 -118
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +33 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1404 -448
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +54 -3
- package/dist/frontend/lowering/lower-classes.js +1529 -472
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +241 -21
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1509 -12486
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +72 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +39 -20
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +900 -107
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +445 -94
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +65 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +514 -101
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +179 -118
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
- package/dist/frontend/lowering/lower-stmts.js +1950 -433
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +96 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +424 -27
- package/dist/frontend/lowering/lowerer.js +2062 -310
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +133 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +13 -12
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +282 -45
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
- package/dist/frontend/npm-static-bundled-chunks.js +981 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +988 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +25 -1
- package/dist/frontend/npm-static.js +212 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +230 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +100 -2
- package/dist/frontend/program.js +1627 -262
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +49 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +26 -1
- package/dist/frontend/services.js +59 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +10 -5
- package/dist/frontend/ts7/program-host.js +19 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +57 -24
- package/dist/frontend/ts7/semantic-model.js +114 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +30 -15
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2735 -723
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +87 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +31 -0
- package/dist/ir/array-length-stability.js +249 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +134 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +116 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +540 -29
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +7 -0
- package/dist/ir/integer-loop-facts.js +103 -17
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +13 -1
- package/dist/ir/integer-ranges.js +125 -26
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +273 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +221 -58
- package/dist/ir/ir.js +127 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +399 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +183 -33
- package/dist/ir/runtime-features.js +795 -422
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +201 -150
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +196 -76
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +41 -11
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +14 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +35 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +10 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +19 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +22 -20
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +304 -22
package/dist/backend/llvm/dyn.js
CHANGED
|
@@ -4,7 +4,7 @@ import { BYTES_ELEM_NUM, SCR_ARR_FIELD, f64Lit, sizeToDouble } from "./common.js
|
|
|
4
4
|
import { emitUnionPeek, emitUnionTag } from "./union-repr.js";
|
|
5
5
|
import { INLINE_UNION_FIELD, loadInlineUnion, stackUnionBox, storeInlineUnion, unionBoxBits, } from "./inline-unions.js";
|
|
6
6
|
import { InternalCompilerError } from "../../errors.js";
|
|
7
|
-
import { DYN_HANDLE_KINDS, isDirentShape, isDynTypedRefType, isRefCounted, typeKey, } from "../../ir/ir.js";
|
|
7
|
+
import { accessorSlotProp, DYN_HANDLE_KINDS, isDirentShape, isDynTypedRefType, isRefCounted, isUnitType, typeKey, } from "../../ir/ir.js";
|
|
8
8
|
import { dynDesc, streamTypedRefEligible } from "../../ir/analysis.js";
|
|
9
9
|
import { mangleRecordNew, mangleRecordStruct } from "../mangle.js";
|
|
10
10
|
import { BlockBuilder } from "./blocks.js";
|
|
@@ -23,8 +23,8 @@ export function recordDynKeepsIdentity(shape) {
|
|
|
23
23
|
shape.fields.some((f) => f.name === "handleEvent" && f.type.kind === "func"));
|
|
24
24
|
}
|
|
25
25
|
/** ScrDynKind values (scr_runtime.h). */
|
|
26
|
-
/** ScrDynHandleTag
|
|
27
|
-
const DYN_HANDLE_TAG_NUM = {
|
|
26
|
+
/** ScrDynHandleTag values (scr_dyn.h's explicit values; dyn-handle-tags.test.ts checks them). */
|
|
27
|
+
export const DYN_HANDLE_TAG_NUM = {
|
|
28
28
|
httpReq: 0,
|
|
29
29
|
httpRes: 1,
|
|
30
30
|
netSocket: 2,
|
|
@@ -35,6 +35,24 @@ const DYN_HANDLE_TAG_NUM = {
|
|
|
35
35
|
child: 16,
|
|
36
36
|
fileHandle: 17,
|
|
37
37
|
dir: 44,
|
|
38
|
+
dgramSocket: 62,
|
|
39
|
+
cryptoHash: 52,
|
|
40
|
+
cryptoHmac: 53,
|
|
41
|
+
};
|
|
42
|
+
/** Handle kinds whose runtime unit boxes them through its own function,
|
|
43
|
+
* which installs the tag's ops on first use (scr_crypto.h). Programs that
|
|
44
|
+
* never box one of these values do not link its dynamic members. */
|
|
45
|
+
const DYN_HANDLE_BOX_FN = {
|
|
46
|
+
cryptoHash: "scr_crypto_hash_to_dyn",
|
|
47
|
+
cryptoHmac: "scr_crypto_hash_to_dyn",
|
|
48
|
+
dgramSocket: "scr_dgram_to_dyn",
|
|
49
|
+
};
|
|
50
|
+
/** Handle kinds whose box holds a unit-owned wrapper rather than the
|
|
51
|
+
* handle itself (a dgram socket's box carries its untyped listeners):
|
|
52
|
+
* the unit's own function unwraps it, with the tag check and TypeError
|
|
53
|
+
* of scr_dyn_handle_unbox. */
|
|
54
|
+
const DYN_HANDLE_UNBOX_FN = {
|
|
55
|
+
dgramSocket: "scr_dgram_from_dyn",
|
|
38
56
|
};
|
|
39
57
|
export const DYN_KIND = {
|
|
40
58
|
NULL: 0,
|
|
@@ -54,6 +72,18 @@ export const DYN_KIND = {
|
|
|
54
72
|
SYMBOL: 15,
|
|
55
73
|
};
|
|
56
74
|
const FN_ATTRS = "#0";
|
|
75
|
+
/** scr_dyn_builtin_stream_check's kind for a runtime stream class (the
|
|
76
|
+
* numbering of scr_dyn_builtin_class.c), or null. */
|
|
77
|
+
function builtinStreamKind(className) {
|
|
78
|
+
const kinds = {
|
|
79
|
+
"%Readable": 2,
|
|
80
|
+
"%Writable": 3,
|
|
81
|
+
"%Duplex": 4,
|
|
82
|
+
"%Transform": 5,
|
|
83
|
+
"%PassThrough": 6,
|
|
84
|
+
};
|
|
85
|
+
return kinds[className] ?? null;
|
|
86
|
+
}
|
|
57
87
|
export class LlDyn {
|
|
58
88
|
host;
|
|
59
89
|
dynMatchers = new Map();
|
|
@@ -444,6 +474,16 @@ export class LlDyn {
|
|
|
444
474
|
* tracking does not count the read's reference. Returns the value and
|
|
445
475
|
* the matching release. */
|
|
446
476
|
memberRead(B, key, t) {
|
|
477
|
+
// An accessor slot reads the getter or setter of the accessor property
|
|
478
|
+
// the checked-dynamic copy holds for it (see accessorSlotProp).
|
|
479
|
+
const slot = accessorSlotProp(key);
|
|
480
|
+
if (slot !== null) {
|
|
481
|
+
this.host.declare(`declare ptr @scr_dyn_obj_accessor_fn(ptr, ptr, ${this.S}, i1 zeroext)`);
|
|
482
|
+
this.host.declare(`declare void @scr_dyn_release(ptr)`);
|
|
483
|
+
const fn = B.tmp();
|
|
484
|
+
B.line(`${fn} = call ptr @scr_dyn_obj_accessor_fn(ptr %d, ptr ${this.host.cstr(slot.prop)}, ${this.S} ${Buffer.byteLength(slot.prop, "utf8")}, i1 ${slot.kind === "set" ? "true" : "false"})`);
|
|
485
|
+
return { value: fn, release: "scr_dyn_release" };
|
|
486
|
+
}
|
|
447
487
|
const held = this.isRecursiveShape(t) || this.holdsRecursiveShape(t);
|
|
448
488
|
const release = held ? "scr_dyn_release_held" : "scr_dyn_release";
|
|
449
489
|
this.host.declare(`declare void @${release}(ptr)`);
|
|
@@ -489,6 +529,44 @@ export class LlDyn {
|
|
|
489
529
|
}
|
|
490
530
|
/** Emit the standard in-helper pending check: on a pending exception
|
|
491
531
|
* run `cleanup` and return `dummy`. */
|
|
532
|
+
/** The failure block of a union dynCheck whose value matched no arm. A
|
|
533
|
+
* value of the one container kind exactly one arm can take (an object
|
|
534
|
+
* for the union's only record arm, an array for its only array arm,
|
|
535
|
+
* beside unit and scalar arms) runs that arm's builder, which throws the
|
|
536
|
+
* deepest failing path and the reason there (`expected string at
|
|
537
|
+
* $.order.owner.id, got undefined`) instead of the union's own outer
|
|
538
|
+
* path. Other values, and an arm builder that unexpectedly succeeds,
|
|
539
|
+
* fall through to the union's message. Only the failure path changes. */
|
|
540
|
+
unionArmFailure(B, def, kind) {
|
|
541
|
+
const scalar = (arm) => isUnitType(arm) ||
|
|
542
|
+
arm.kind === "f64" ||
|
|
543
|
+
arm.kind === "bool" ||
|
|
544
|
+
arm.kind === "string" ||
|
|
545
|
+
arm.kind === "bigint";
|
|
546
|
+
const containers = def.arms.filter((arm) => !scalar(arm));
|
|
547
|
+
const arm = containers.length === 1 ? containers[0] : null;
|
|
548
|
+
const container = arm?.kind === "array"
|
|
549
|
+
? DYN_KIND.ARR
|
|
550
|
+
: arm?.kind === "record" && !this.host.recordsById.get(arm.shapeId)?.tuple
|
|
551
|
+
? DYN_KIND.OBJ
|
|
552
|
+
: null;
|
|
553
|
+
if (!arm || container === null)
|
|
554
|
+
return;
|
|
555
|
+
const host = this.host;
|
|
556
|
+
const deep = B.newLabel("dcu.deep");
|
|
557
|
+
const outer = B.newLabel("dcu.outer");
|
|
558
|
+
const same = B.tmp();
|
|
559
|
+
B.line(`${same} = icmp eq i32 ${kind}, ${container}`);
|
|
560
|
+
B.condBr(same, deep, outer);
|
|
561
|
+
B.startBlock(deep);
|
|
562
|
+
const built = B.tmp();
|
|
563
|
+
B.line(`${built} = call ptr @${this.dynCheckHelper(arm)}(ptr %d, ptr %path)`);
|
|
564
|
+
this.pendingBail(B, "dcu.deep", () => { }, "ptr null");
|
|
565
|
+
const rc = vAdapters(host, arm);
|
|
566
|
+
B.line(`call void ${rc.release}(ptr ${built})`);
|
|
567
|
+
B.br(outer);
|
|
568
|
+
B.startBlock(outer);
|
|
569
|
+
}
|
|
492
570
|
pendingBail(B, hint, cleanup, dummy) {
|
|
493
571
|
const p = B.tmp();
|
|
494
572
|
for (const line of this.host.pendingTestLines(p))
|
|
@@ -575,7 +653,9 @@ export class LlDyn {
|
|
|
575
653
|
B.terminate(`ret i1 true`);
|
|
576
654
|
B.startBlock(lNext);
|
|
577
655
|
}
|
|
578
|
-
|
|
656
|
+
// A union matches a capsule of another type through its arms below: a
|
|
657
|
+
// class capsule in a `C | undefined` field matches the `C` arm.
|
|
658
|
+
if (t.kind !== "dyn" && t.kind !== "union") {
|
|
579
659
|
const view = this.viewFn(wrapped);
|
|
580
660
|
this.host.declare(`declare void @scr_dyn_release_v(ptr)`);
|
|
581
661
|
const kind = this.kindOf(B, "%d");
|
|
@@ -902,12 +982,19 @@ export class LlDyn {
|
|
|
902
982
|
jsonSchemas = new Map();
|
|
903
983
|
jsonParsers = new Map();
|
|
904
984
|
recordNameTables = new Map();
|
|
985
|
+
/** Some emitted helper can keep a record's undeclared source: a checked
|
|
986
|
+
* record builder that notes it, or a JSON schema of a closed record
|
|
987
|
+
* (alloc.ts RECORD_SOURCES_GATE). */
|
|
988
|
+
keepsRecordSources = false;
|
|
905
989
|
/** Targets the one-pass parser (scr_json_parse_schema) can build
|
|
906
|
-
* directly: number, boolean and string leaves inside arrays and
|
|
907
|
-
*
|
|
908
|
-
*
|
|
909
|
-
*
|
|
910
|
-
|
|
990
|
+
* directly: number, boolean and string leaves inside arrays and records
|
|
991
|
+
* (no tuple, internal '%' slot or `__proto__` member; at most 64 declared
|
|
992
|
+
* fields, and at least one unless an index signature collects the
|
|
993
|
+
* members), record members typed as unions of those leaves, records and
|
|
994
|
+
* arrays, null and undefined (optional and nullable members; see
|
|
995
|
+
* jsonUnionSupported), and index signatures whose value type is not a
|
|
996
|
+
* union. Everything else keeps the checked-dynamic route alone. */
|
|
997
|
+
jsonSchemaSupported(t, visiting, member = false) {
|
|
911
998
|
switch (t.kind) {
|
|
912
999
|
case "f64":
|
|
913
1000
|
case "bool":
|
|
@@ -919,19 +1006,51 @@ export class LlDyn {
|
|
|
919
1006
|
if (visiting.has(t.shapeId))
|
|
920
1007
|
return true;
|
|
921
1008
|
const shape = this.host.recordsById.get(t.shapeId);
|
|
922
|
-
if (!shape || shape.tuple
|
|
1009
|
+
if (!shape || shape.tuple)
|
|
923
1010
|
return false;
|
|
924
|
-
|
|
1011
|
+
const index = shape.indexValue;
|
|
1012
|
+
if (shape.fields.length > 64 || (shape.fields.length === 0 && !index))
|
|
925
1013
|
return false;
|
|
926
1014
|
visiting.add(t.shapeId);
|
|
927
|
-
return shape.fields.every((f) => !f.name.startsWith("%") &&
|
|
1015
|
+
return (shape.fields.every((f) => !f.name.startsWith("%") &&
|
|
928
1016
|
f.name !== "__proto__" &&
|
|
929
|
-
this.jsonSchemaSupported(f.type, visiting))
|
|
1017
|
+
this.jsonSchemaSupported(f.type, visiting, true)) &&
|
|
1018
|
+
(!index || this.jsonSchemaSupported(index, visiting)));
|
|
930
1019
|
}
|
|
1020
|
+
case "union":
|
|
1021
|
+
return member && this.jsonUnionSupported(t, visiting);
|
|
931
1022
|
default:
|
|
932
1023
|
return false;
|
|
933
1024
|
}
|
|
934
1025
|
}
|
|
1026
|
+
/** A union record member the one-pass parser writes directly: every arm
|
|
1027
|
+
* a number, boolean, string, null, undefined, or a supported record or
|
|
1028
|
+
* array, with at most one record and one array arm and no discriminant.
|
|
1029
|
+
* Each JSON value kind then selects at most one arm, so the checked
|
|
1030
|
+
* route's first full match is that arm, and a value that arm rejects
|
|
1031
|
+
* fails every arm. */
|
|
1032
|
+
jsonUnionSupported(t, visiting) {
|
|
1033
|
+
const def = this.host.unionsById.get(t.unionId);
|
|
1034
|
+
if (!def || def.discriminant)
|
|
1035
|
+
return false;
|
|
1036
|
+
let records = 0, arrays = 0;
|
|
1037
|
+
return def.arms.every((arm) => {
|
|
1038
|
+
switch (arm.kind) {
|
|
1039
|
+
case "f64":
|
|
1040
|
+
case "bool":
|
|
1041
|
+
case "string":
|
|
1042
|
+
case "nullT":
|
|
1043
|
+
case "undefinedT":
|
|
1044
|
+
return true;
|
|
1045
|
+
case "record":
|
|
1046
|
+
return ++records === 1 && this.jsonSchemaSupported(arm, visiting);
|
|
1047
|
+
case "array":
|
|
1048
|
+
return ++arrays === 1 && this.jsonSchemaSupported(arm, visiting);
|
|
1049
|
+
default:
|
|
1050
|
+
return false;
|
|
1051
|
+
}
|
|
1052
|
+
});
|
|
1053
|
+
}
|
|
935
1054
|
/** The ScrJsonSchema constant for t (scr_runtime.h layout). Records list
|
|
936
1055
|
* fields in declaration order — the order JSON.stringify writes — so the
|
|
937
1056
|
* runtime's next-field guess usually matches without a scan. */
|
|
@@ -950,14 +1069,14 @@ export class LlDyn {
|
|
|
950
1069
|
case "bool":
|
|
951
1070
|
case "string": {
|
|
952
1071
|
const kind = t.kind === "f64" ? 0 : t.kind === "bool" ? 1 : 2;
|
|
953
|
-
body = `${S} ${kind}, ${S} 0, ptr null, ptr null, ptr null, ptr null, ptr null`;
|
|
1072
|
+
body = `${S} ${kind}, ${S} 0, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null, ${S} 0`;
|
|
954
1073
|
break;
|
|
955
1074
|
}
|
|
956
1075
|
case "array": {
|
|
957
1076
|
const elem = this.jsonSchema(t.elem);
|
|
958
1077
|
const ctor = `${name}_new`;
|
|
959
1078
|
this.defs.push(`define internal ptr @${ctor}(${S} %cap) ${FN_ATTRS} {`, `entry:`, ` %a = ${arrNewCall(host, t.elem, "%cap")}`, ` ret ptr %a`, `}`, ``);
|
|
960
|
-
body = `${S} 4, ${S} 0, ptr null, ptr @${elem}, ptr null, ptr @${ctor}, ptr ${vAdapters(host, t).release}`;
|
|
1079
|
+
body = `${S} 4, ${S} 0, ptr null, ptr @${elem}, ptr null, ptr @${ctor}, ptr ${vAdapters(host, t).release}, ptr null, ${S} 0`;
|
|
961
1080
|
break;
|
|
962
1081
|
}
|
|
963
1082
|
case "record": {
|
|
@@ -965,27 +1084,99 @@ export class LlDyn {
|
|
|
965
1084
|
if (!shape)
|
|
966
1085
|
throw new InternalCompilerError(`llvm emitter bug: JSON schema of unknown shape ${t.shapeId}`);
|
|
967
1086
|
const struct = mangleRecordStruct(t.shapeId);
|
|
968
|
-
const
|
|
1087
|
+
const base = host.nullableUnions.fieldBase(t.shapeId);
|
|
1088
|
+
const index = new Map(shape.fields.map((f, i) => [f.name, i + base]));
|
|
969
1089
|
// The runtime names kept-source keys by this index (record-sources.ts).
|
|
970
1090
|
const order = recordSourceFieldOrder(shape);
|
|
1091
|
+
if (recordMayKeepSource(shape))
|
|
1092
|
+
this.keepsRecordSources = true;
|
|
971
1093
|
const fieldTy = `{ ptr, ${S}, ${S}, ptr }`;
|
|
972
1094
|
const entries = order.map((fieldName) => {
|
|
973
|
-
const field = shape.fields[index.get(fieldName) -
|
|
1095
|
+
const field = shape.fields[index.get(fieldName) - base];
|
|
974
1096
|
const sub = this.jsonSchema(field.type);
|
|
975
1097
|
const offset = `ptrtoint (ptr getelementptr (%${struct}, ptr null, i64 0, i32 ${index.get(fieldName)}) to ${S})`;
|
|
976
1098
|
return `${fieldTy} { ptr ${host.cstr(fieldName)}, ${S} ${Buffer.byteLength(fieldName, "utf8")}, ${S} ${offset}, ptr @${sub} }`;
|
|
977
1099
|
});
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1100
|
+
let fields = "null";
|
|
1101
|
+
if (entries.length > 0) {
|
|
1102
|
+
fields = `@${name}_fields`;
|
|
1103
|
+
this.defs.push(`${fields} = internal constant [${entries.length} x ${fieldTy}] [${entries.join(", ")}]`, ``);
|
|
1104
|
+
}
|
|
1105
|
+
// An index signature's undeclared members go to the overflow map
|
|
1106
|
+
// after the declared fields.
|
|
1107
|
+
const overflow = shape.indexValue
|
|
1108
|
+
? {
|
|
1109
|
+
elem: `@${this.jsonSchema(shape.indexValue)}`,
|
|
1110
|
+
offset: `ptrtoint (ptr getelementptr (%${struct}, ptr null, i64 0, i32 ${shape.fields.length + base}) to ${S})`,
|
|
1111
|
+
}
|
|
1112
|
+
: { elem: "null", offset: "0" };
|
|
1113
|
+
body = `${S} 3, ${S} ${entries.length}, ptr ${fields}, ptr ${overflow.elem}, ptr @${mangleRecordNew(t.shapeId)}, ptr null, ptr ${vAdapters(host, t).release}, ptr null, ${S} ${overflow.offset}`;
|
|
981
1114
|
break;
|
|
982
1115
|
}
|
|
1116
|
+
case "union":
|
|
1117
|
+
body = `${S} 5, ${S} 0, ptr null, ptr null, ptr null, ptr null, ptr null, ptr @${this.jsonUnionSchema(t, name)}, ${S} 0`;
|
|
1118
|
+
break;
|
|
983
1119
|
default:
|
|
984
1120
|
throw new InternalCompilerError(`llvm emitter bug: JSON schema of ${t.kind}`);
|
|
985
1121
|
}
|
|
986
|
-
this.defs.push(`@${name} = internal constant { ${S}, ${S}, ptr, ptr, ptr, ptr, ptr } { ${body} }`, ``);
|
|
1122
|
+
this.defs.push(`@${name} = internal constant { ${S}, ${S}, ptr, ptr, ptr, ptr, ptr, ptr, ${S} } { ${body} }`, ``);
|
|
987
1123
|
return name;
|
|
988
1124
|
}
|
|
1125
|
+
/** The ScrJsonUnion descriptor of a union member (scr_json.h layout):
|
|
1126
|
+
* its slot representation, the arm each JSON value kind selects, and the
|
|
1127
|
+
* values the runtime stores for null and for a missing member. Boxed
|
|
1128
|
+
* unions build their boxes through `<name>_box`. */
|
|
1129
|
+
jsonUnionSchema(t, name) {
|
|
1130
|
+
const host = this.host;
|
|
1131
|
+
const S = host.sizeType;
|
|
1132
|
+
const def = host.unionsById.get(t.unionId);
|
|
1133
|
+
if (!def)
|
|
1134
|
+
throw new InternalCompilerError(`llvm emitter bug: JSON schema of ${t.unionId}`);
|
|
1135
|
+
const nullable = host.nullableUnions.has(t.unionId);
|
|
1136
|
+
const inline = host.inlineUnions.record(t);
|
|
1137
|
+
const repr = nullable ? 0 : inline ? 1 : 2;
|
|
1138
|
+
// Indexed by SCR_JARM_*: null, number, boolean, string, object, array, absent.
|
|
1139
|
+
const armKinds = ["nullT", "f64", "bool", "string", "record", "array", "undefinedT"];
|
|
1140
|
+
const tags = armKinds.map((kind) => def.arms.findIndex((arm) => arm.kind === kind));
|
|
1141
|
+
const arms = armKinds.map((_, i) => i >= 1 && i <= 5 && tags[i] >= 0
|
|
1142
|
+
? `ptr @${this.jsonSchema(def.arms[tags[i]])}`
|
|
1143
|
+
: "ptr null");
|
|
1144
|
+
const nullTag = tags[0];
|
|
1145
|
+
const absentTag = tags[6];
|
|
1146
|
+
const nullValue = !inline && nullTag >= 0 ? host.unitInstanceRef(t.unionId, nullTag) : "null";
|
|
1147
|
+
const absentValue = !inline && absentTag >= 0 ? host.absentInstanceRef(t.unionId) : "null";
|
|
1148
|
+
let box = "null";
|
|
1149
|
+
if (repr === 2) {
|
|
1150
|
+
box = `@${name}_box`;
|
|
1151
|
+
const lines = [`define internal ptr ${box}(i32 %tag, i64 %bits) ${FN_ATTRS} {`, `entry:`];
|
|
1152
|
+
const cases = [];
|
|
1153
|
+
const blocks = [];
|
|
1154
|
+
def.arms.forEach((arm, tag) => {
|
|
1155
|
+
if (arm.kind === "nullT" || arm.kind === "undefinedT")
|
|
1156
|
+
return;
|
|
1157
|
+
cases.push(`i32 ${tag}, label %arm${tag}`);
|
|
1158
|
+
blocks.push(`arm${tag}:`);
|
|
1159
|
+
if (arm.kind === "f64") {
|
|
1160
|
+
host.declare(`declare ptr @scr_union_new_f64(i32, double)`);
|
|
1161
|
+
blocks.push(` %f${tag} = bitcast i64 %bits to double`, ` %u${tag} = call ptr @scr_union_new_f64(i32 ${tag}, double %f${tag})`);
|
|
1162
|
+
}
|
|
1163
|
+
else if (arm.kind === "bool") {
|
|
1164
|
+
host.declare(`declare ptr @scr_union_new_bool(i32, i1 zeroext)`);
|
|
1165
|
+
blocks.push(` %b${tag} = trunc i64 %bits to i1`, ` %u${tag} = call ptr @scr_union_new_bool(i32 ${tag}, i1 zeroext %b${tag})`);
|
|
1166
|
+
}
|
|
1167
|
+
else {
|
|
1168
|
+
const rc = vAdapters(host, arm);
|
|
1169
|
+
host.declare(`declare ptr @scr_union_new_ref(i32, ptr, ptr, ptr, ptr)`);
|
|
1170
|
+
blocks.push(` %p${tag} = inttoptr i64 %bits to ptr`, ` %u${tag} = call ptr @scr_union_new_ref(i32 ${tag}, ptr %p${tag}, ptr ${rc.retain}, ptr ${rc.release}, ptr ${traceArg(host, arm)})`);
|
|
1171
|
+
}
|
|
1172
|
+
blocks.push(` ret ptr %u${tag}`);
|
|
1173
|
+
});
|
|
1174
|
+
this.defs.push(...lines, ` switch i32 %tag, label %none [ ${cases.join(" ")} ]`, `none:`, ` unreachable`, ...blocks, `}`, ``);
|
|
1175
|
+
}
|
|
1176
|
+
const descriptor = `${name}_union`;
|
|
1177
|
+
this.defs.push(`@${descriptor} = internal constant { ${S}, [7 x ${S}], [7 x ptr], ptr, ptr, ptr } { ${S} ${repr}, [7 x ${S}] [${tags.map((tag) => `${S} ${tag}`).join(", ")}], [7 x ptr] [${arms.join(", ")}], ptr ${nullValue}, ptr ${absentValue}, ptr ${box} }`, ``);
|
|
1178
|
+
return descriptor;
|
|
1179
|
+
}
|
|
989
1180
|
/** The declared-name tables scr_record_source_note scans: parallel
|
|
990
1181
|
* constant arrays of field-name bytes and byte lengths in declaration
|
|
991
1182
|
* order (the order the record serializes), interned per shape. Internal
|
|
@@ -1082,6 +1273,20 @@ export class LlDyn {
|
|
|
1082
1273
|
B.line(`${ref} = call ptr @scr_dyn_typed_ref_unbox(ptr %d)`);
|
|
1083
1274
|
B.terminate(`ret ptr ${ref}`);
|
|
1084
1275
|
B.startBlock(lNext);
|
|
1276
|
+
// A constructor-function stream (scr_dyn_builtin_stream.c) carries
|
|
1277
|
+
// its runtime stream.
|
|
1278
|
+
const streamKind = t.kind === "object" ? builtinStreamKind(t.className) : null;
|
|
1279
|
+
if (streamKind !== null && this.host.usesDynBuiltinStream?.() === true) {
|
|
1280
|
+
host.declare(`declare ptr @scr_dyn_builtin_stream_check(ptr, double)`);
|
|
1281
|
+
const own = B.tmp(), hit = B.tmp();
|
|
1282
|
+
B.line(`${own} = call ptr @scr_dyn_builtin_stream_check(ptr %d, double ${f64Lit(streamKind)})`);
|
|
1283
|
+
B.line(`${hit} = icmp ne ptr ${own}, null`);
|
|
1284
|
+
const lOwn = B.newLabel("dc.ctor"), lNotOwn = B.newLabel("dc.notctor");
|
|
1285
|
+
B.condBr(hit, lOwn, lNotOwn);
|
|
1286
|
+
B.startBlock(lOwn);
|
|
1287
|
+
B.terminate(`ret ptr ${own}`);
|
|
1288
|
+
B.startBlock(lNotOwn);
|
|
1289
|
+
}
|
|
1085
1290
|
if (t.kind !== "union" && preserveRefs) {
|
|
1086
1291
|
const kind = this.kindOf(B, "%d");
|
|
1087
1292
|
const capsule = B.tmp();
|
|
@@ -1162,17 +1367,18 @@ export class LlDyn {
|
|
|
1162
1367
|
B.line(`call void @scr_arr_outline(ptr ${cached})`);
|
|
1163
1368
|
B.line(`call void @scr_arr_outline(ptr ${checked})`);
|
|
1164
1369
|
}
|
|
1370
|
+
const base = t.kind === "record" ? host.nullableUnions.fieldBase(t.shapeId) : 1;
|
|
1165
1371
|
const members = t.kind === "record"
|
|
1166
1372
|
? [
|
|
1167
1373
|
...shape.fields.map((field, index) => ({
|
|
1168
|
-
index: index +
|
|
1374
|
+
index: index + base,
|
|
1169
1375
|
type: llFieldType(field.type, host.inlineUnions.record(field.type)),
|
|
1170
1376
|
name: field.name,
|
|
1171
1377
|
})),
|
|
1172
1378
|
...(shape.indexValue
|
|
1173
1379
|
? [
|
|
1174
1380
|
{
|
|
1175
|
-
index: shape.fields.length +
|
|
1381
|
+
index: shape.fields.length + base,
|
|
1176
1382
|
type: "ptr",
|
|
1177
1383
|
name: "[key: string] overflow",
|
|
1178
1384
|
},
|
|
@@ -1180,10 +1386,10 @@ export class LlDyn {
|
|
|
1180
1386
|
: []),
|
|
1181
1387
|
]
|
|
1182
1388
|
: [
|
|
1183
|
-
|
|
1184
|
-
{ index:
|
|
1389
|
+
// The dense states follow the data slots: they move with data and capacity.
|
|
1390
|
+
{ index: SCR_ARR_FIELD.len, type: "i32", name: "length" },
|
|
1391
|
+
{ index: SCR_ARR_FIELD.cap, type: "i32", name: "capacity" },
|
|
1185
1392
|
{ index: SCR_ARR_FIELD.data, type: "ptr", name: "data" },
|
|
1186
|
-
{ index: SCR_ARR_FIELD.present, type: "ptr", name: "presence" },
|
|
1187
1393
|
{ index: SCR_ARR_FIELD.filled, type: "i32", name: "filled" },
|
|
1188
1394
|
];
|
|
1189
1395
|
members.forEach((member) => {
|
|
@@ -1412,7 +1618,8 @@ export class LlDyn {
|
|
|
1412
1618
|
if (!shape)
|
|
1413
1619
|
throw new InternalCompilerError(`llvm emitter bug: dynCheck of unknown shape ${t.shapeId}`);
|
|
1414
1620
|
const struct = mangleRecordStruct(t.shapeId);
|
|
1415
|
-
const
|
|
1621
|
+
const base = host.nullableUnions.fieldBase(t.shapeId);
|
|
1622
|
+
const fieldIndex = new Map(shape.fields.map((f, i) => [f.name, i + base]));
|
|
1416
1623
|
const releaseR = () => {
|
|
1417
1624
|
B.line(`call void ${releaseSym(host, t)}(ptr %r0)`);
|
|
1418
1625
|
};
|
|
@@ -1555,6 +1762,7 @@ export class LlDyn {
|
|
|
1555
1762
|
// that has them stays beside the record so its reflective
|
|
1556
1763
|
// surfaces still observe them (scr_record_source_note).
|
|
1557
1764
|
if (recordMayKeepSource(shape)) {
|
|
1765
|
+
this.keepsRecordSources = true;
|
|
1558
1766
|
const names = this.recordNameTable(t.shapeId, shape);
|
|
1559
1767
|
host.declare(`declare void @scr_record_source_note(ptr, ptr, ptr, ptr, ${host.sizeType})`);
|
|
1560
1768
|
B.line(`call void @scr_record_source_note(ptr %r0, ptr %d, ptr ${names.names}, ptr ${names.lens}, ${host.sizeType} ${shape.fields.length})`);
|
|
@@ -1568,7 +1776,7 @@ export class LlDyn {
|
|
|
1568
1776
|
host.declare(`declare void @scr_str_release(ptr)`);
|
|
1569
1777
|
const ovfp = B.tmp();
|
|
1570
1778
|
const ovf = B.tmp();
|
|
1571
|
-
B.line(`${ovfp} = getelementptr inbounds %${struct}, ptr %r0, i64 0, i32 ${shape.fields.length +
|
|
1779
|
+
B.line(`${ovfp} = getelementptr inbounds %${struct}, ptr %r0, i64 0, i32 ${shape.fields.length + base}`);
|
|
1572
1780
|
B.line(`${ovf} = load ptr, ptr ${ovfp} ; overflow map`);
|
|
1573
1781
|
if (shape.fields.length === 0) {
|
|
1574
1782
|
// Object.create(null)'s dictionary keeps its null prototype:
|
|
@@ -1774,6 +1982,7 @@ export class LlDyn {
|
|
|
1774
1982
|
B.line(`call void @scr_dyn_release_v(ptr ${materialized})`);
|
|
1775
1983
|
B.terminate(`ret ptr ${checked}`);
|
|
1776
1984
|
B.startBlock(lFail);
|
|
1985
|
+
this.unionArmFailure(B, def, kind);
|
|
1777
1986
|
B.line(`call void @scr_dyn_check_fail(ptr %path, ptr ${want}, ptr %d)`);
|
|
1778
1987
|
B.terminate(`ret ptr null`);
|
|
1779
1988
|
break;
|
|
@@ -1834,6 +2043,7 @@ export class LlDyn {
|
|
|
1834
2043
|
B.line(`call void @scr_dyn_typed_ref_cache_cast(ptr %d, ptr ${host.cstr(key)}, ${host.sizeType} ${Buffer.byteLength(key, "utf8")}, ptr ${checked}, ptr ${rc.retain}, ptr ${rc.release}, i1 ${traceAdapter(host, t) !== null ? "true" : "false"})`);
|
|
1835
2044
|
B.terminate(`ret ptr ${checked}`);
|
|
1836
2045
|
B.startBlock(lFail);
|
|
2046
|
+
this.unionArmFailure(B, def, kind);
|
|
1837
2047
|
B.line(`call void @scr_dyn_check_fail(ptr %path, ptr ${want}, ptr %d)`);
|
|
1838
2048
|
B.terminate(`ret ptr null`);
|
|
1839
2049
|
break;
|
|
@@ -1918,9 +2128,16 @@ export class LlDyn {
|
|
|
1918
2128
|
// TypeError on any other kind or tag).
|
|
1919
2129
|
const h = DYN_HANDLE_KINDS.get(t.kind);
|
|
1920
2130
|
if (h) {
|
|
1921
|
-
host.declare(`declare ptr @scr_dyn_handle_unbox(ptr, i32, ptr, ptr)`);
|
|
1922
2131
|
const r = B.tmp();
|
|
1923
|
-
|
|
2132
|
+
const unbox = DYN_HANDLE_UNBOX_FN[t.kind];
|
|
2133
|
+
if (unbox) {
|
|
2134
|
+
host.declare(`declare ptr @${unbox}(ptr, ptr, ptr)`);
|
|
2135
|
+
B.line(`${r} = call ptr @${unbox}(ptr %d, ptr %path, ptr ${want})`);
|
|
2136
|
+
}
|
|
2137
|
+
else {
|
|
2138
|
+
host.declare(`declare ptr @scr_dyn_handle_unbox(ptr, i32, ptr, ptr)`);
|
|
2139
|
+
B.line(`${r} = call ptr @scr_dyn_handle_unbox(ptr %d, i32 ${DYN_HANDLE_TAG_NUM[t.kind]}, ptr %path, ptr ${want})`);
|
|
2140
|
+
}
|
|
1924
2141
|
B.terminate(`ret ptr ${r}`);
|
|
1925
2142
|
break;
|
|
1926
2143
|
}
|
|
@@ -1947,6 +2164,15 @@ export class LlDyn {
|
|
|
1947
2164
|
const B = new BlockBuilder();
|
|
1948
2165
|
let sourceAccessor = null;
|
|
1949
2166
|
switch (t.kind) {
|
|
2167
|
+
case "date": {
|
|
2168
|
+
// A Date handle holding the same time value; native Dates are
|
|
2169
|
+
// immutable values, and so is the handle.
|
|
2170
|
+
host.declare(`declare ptr @scr_dyn_native_date_from_ms(double)`);
|
|
2171
|
+
const r = B.tmp();
|
|
2172
|
+
B.line(`${r} = call ptr @scr_dyn_native_date_from_ms(double %v)`);
|
|
2173
|
+
B.terminate(`ret ptr ${r}`);
|
|
2174
|
+
break;
|
|
2175
|
+
}
|
|
1950
2176
|
case "url":
|
|
1951
2177
|
case "searchParams": {
|
|
1952
2178
|
const native = t.kind === "url" ? "url" : "search_params";
|
|
@@ -2084,7 +2310,8 @@ export class LlDyn {
|
|
|
2084
2310
|
if (!shape)
|
|
2085
2311
|
throw new InternalCompilerError(`llvm emitter bug: to-dyn of unknown shape ${t.shapeId}`);
|
|
2086
2312
|
const struct = mangleRecordStruct(t.shapeId);
|
|
2087
|
-
const
|
|
2313
|
+
const base = host.nullableUnions.fieldBase(t.shapeId);
|
|
2314
|
+
const fieldIndex = new Map(shape.fields.map((f, i) => [f.name, i + base]));
|
|
2088
2315
|
const loadFieldOf = (fname, ft) => {
|
|
2089
2316
|
const p = B.tmp();
|
|
2090
2317
|
B.line(`${p} = getelementptr inbounds %${struct}, ptr %v, i64 0, i32 ${fieldIndex.get(fname)} ; .${llvmCommentText(fname)}`);
|
|
@@ -2167,13 +2394,43 @@ export class LlDyn {
|
|
|
2167
2394
|
// Keys insert in DECLARED order (JS insertion order); internal
|
|
2168
2395
|
// '%'-fields follow so a record→dyn→record round trip keeps them.
|
|
2169
2396
|
const byName = new Map(shape.fields.map((f) => [f.name, f]));
|
|
2170
|
-
|
|
2397
|
+
// An accessor property is one key whose getter and setter are the
|
|
2398
|
+
// slot closures (see accessorSlotProp), in accessorOrder's place.
|
|
2399
|
+
const order = shape.accessorOrder ?? shape.declaredOrder ?? shape.fields.map((f) => f.name);
|
|
2171
2400
|
const inOrder = new Set(order);
|
|
2401
|
+
const accessors = new Set(shape.accessorOrder === undefined
|
|
2402
|
+
? []
|
|
2403
|
+
: shape.fields.flatMap((f) => {
|
|
2404
|
+
const slot = accessorSlotProp(f.name);
|
|
2405
|
+
return slot === null ? [] : [slot.prop];
|
|
2406
|
+
}));
|
|
2172
2407
|
const dynFields = [
|
|
2173
|
-
...order.
|
|
2174
|
-
|
|
2408
|
+
...order.flatMap((n) => {
|
|
2409
|
+
if (accessors.has(n))
|
|
2410
|
+
return [{ accessor: n }];
|
|
2411
|
+
const f = byName.get(n);
|
|
2412
|
+
return f === undefined ? [] : [f];
|
|
2413
|
+
}),
|
|
2414
|
+
...shape.fields.filter((f) => !inOrder.has(f.name) && !(accessors.size > 0 && accessorSlotProp(f.name) !== null)),
|
|
2175
2415
|
];
|
|
2176
|
-
for (const
|
|
2416
|
+
for (const entry of dynFields) {
|
|
2417
|
+
if ("accessor" in entry) {
|
|
2418
|
+
host.declare(`declare void @scr_dyn_obj_set_accessor(ptr, ptr, ${host.sizeType}, ptr, ptr)`);
|
|
2419
|
+
const boxed = (kind) => {
|
|
2420
|
+
const slot = byName.get(`%${kind}:${entry.accessor}`);
|
|
2421
|
+
if (slot === undefined)
|
|
2422
|
+
return "null";
|
|
2423
|
+
const fv = loadFieldOf(slot.name, slot.type);
|
|
2424
|
+
const conv = B.tmp();
|
|
2425
|
+
B.line(`${conv} = call ptr @${this.toDynHelper(slot.type)}(${this.valTy(slot.type)} ${fv})`);
|
|
2426
|
+
return conv;
|
|
2427
|
+
};
|
|
2428
|
+
const getter = boxed("get");
|
|
2429
|
+
const setter = boxed("set");
|
|
2430
|
+
B.line(`call void @scr_dyn_obj_set_accessor(ptr ${d}, ptr ${host.cstr(entry.accessor)}, ${host.sizeType} ${Buffer.byteLength(entry.accessor, "utf8")}, ptr ${getter}, ptr ${setter}) ; ${llvmCommentText(entry.accessor)}`);
|
|
2431
|
+
continue;
|
|
2432
|
+
}
|
|
2433
|
+
const f = entry;
|
|
2177
2434
|
const klen = Buffer.byteLength(f.name, "utf8");
|
|
2178
2435
|
const fv = loadFieldOf(f.name, f.type);
|
|
2179
2436
|
// An ABSENT optional field contributes no key.
|
|
@@ -2201,7 +2458,7 @@ export class LlDyn {
|
|
|
2201
2458
|
host.declare(`declare void @scr_arr_release(ptr)`);
|
|
2202
2459
|
const ovfp = B.tmp();
|
|
2203
2460
|
const ovf = B.tmp();
|
|
2204
|
-
B.line(`${ovfp} = getelementptr inbounds %${struct}, ptr %v, i64 0, i32 ${shape.fields.length +
|
|
2461
|
+
B.line(`${ovfp} = getelementptr inbounds %${struct}, ptr %v, i64 0, i32 ${shape.fields.length + base}`);
|
|
2205
2462
|
B.line(`${ovf} = load ptr, ptr ${ovfp} ; overflow map`);
|
|
2206
2463
|
const ks = B.tmp();
|
|
2207
2464
|
const len = B.tmp();
|
|
@@ -2437,9 +2694,16 @@ export class LlDyn {
|
|
|
2437
2694
|
// tag's installed ops.
|
|
2438
2695
|
const h = DYN_HANDLE_KINDS.get(t.kind);
|
|
2439
2696
|
if (h) {
|
|
2440
|
-
|
|
2697
|
+
const box = DYN_HANDLE_BOX_FN[t.kind];
|
|
2441
2698
|
const r = B.tmp();
|
|
2442
|
-
|
|
2699
|
+
if (box) {
|
|
2700
|
+
host.declare(`declare ptr @${box}(ptr)`);
|
|
2701
|
+
B.line(`${r} = call ptr @${box}(ptr %v)`);
|
|
2702
|
+
}
|
|
2703
|
+
else {
|
|
2704
|
+
host.declare(`declare ptr @scr_dyn_new_handle(ptr, i32)`);
|
|
2705
|
+
B.line(`${r} = call ptr @scr_dyn_new_handle(ptr %v, i32 ${DYN_HANDLE_TAG_NUM[t.kind]})`);
|
|
2706
|
+
}
|
|
2443
2707
|
B.terminate(`ret ptr ${r}`);
|
|
2444
2708
|
break;
|
|
2445
2709
|
}
|
|
@@ -2690,88 +2954,26 @@ export class LlDyn {
|
|
|
2690
2954
|
this.puts(B, "%b", "[object Object]");
|
|
2691
2955
|
B.br(done);
|
|
2692
2956
|
B.startBlock(lErr);
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
const k = this.kindOf(B, m);
|
|
2707
|
-
const isStr = B.tmp();
|
|
2708
|
-
B.line(`${isStr} = icmp eq i32 ${k}, ${DYN_KIND.STR}`);
|
|
2709
|
-
const ls = B.newLabel(`${hint}.s`);
|
|
2710
|
-
B.condBr(isStr, ls, lj);
|
|
2711
|
-
B.startBlock(ls);
|
|
2712
|
-
const sv = this.payloadOf(B, m, "ptr");
|
|
2713
|
-
B.line(`store ptr ${sv}, ptr ${slot}`);
|
|
2714
|
-
B.br(lj);
|
|
2715
|
-
B.startBlock(lj);
|
|
2716
|
-
const out = B.tmp();
|
|
2717
|
-
B.line(`${out} = load ptr, ptr ${slot}`);
|
|
2718
|
-
return out;
|
|
2719
|
-
};
|
|
2720
|
-
const ens = strOf(en, "ds.en");
|
|
2721
|
-
const ems = strOf(em, "ds.em");
|
|
2722
|
-
const putIf = (s, hint) => {
|
|
2723
|
-
const nn = B.tmp();
|
|
2724
|
-
B.line(`${nn} = icmp ne ptr ${s}, null`);
|
|
2725
|
-
const lt = B.newLabel(`${hint}.t`);
|
|
2726
|
-
const lj = B.newLabel(`${hint}.j`);
|
|
2727
|
-
B.condBr(nn, lt, lj);
|
|
2728
|
-
B.startBlock(lt);
|
|
2729
|
-
this.putScrStr(B, "%b", s);
|
|
2730
|
-
B.br(lj);
|
|
2731
|
-
B.startBlock(lj);
|
|
2732
|
-
};
|
|
2733
|
-
putIf(ens, "ds.pn");
|
|
2734
|
-
{
|
|
2735
|
-
// if (ens && ens->len && ems && ems->len) ": "
|
|
2736
|
-
const lenNz = (s, hint) => {
|
|
2737
|
-
const slot = B.slot();
|
|
2738
|
-
B.entryAllocas.push(`${slot} = alloca i1`);
|
|
2739
|
-
B.line(`store i1 false, ptr ${slot}`);
|
|
2740
|
-
const nn = B.tmp();
|
|
2741
|
-
B.line(`${nn} = icmp ne ptr ${s}, null`);
|
|
2742
|
-
const lt = B.newLabel(`${hint}.t`);
|
|
2743
|
-
const lj = B.newLabel(`${hint}.j`);
|
|
2744
|
-
B.condBr(nn, lt, lj);
|
|
2745
|
-
B.startBlock(lt);
|
|
2746
|
-
const { len } = this.strParts(B, s);
|
|
2747
|
-
const nz = B.tmp();
|
|
2748
|
-
B.line(`${nz} = icmp ne ${this.S} ${len}, 0`);
|
|
2749
|
-
B.line(`store i1 ${nz}, ptr ${slot}`);
|
|
2750
|
-
B.br(lj);
|
|
2751
|
-
B.startBlock(lj);
|
|
2752
|
-
const out = B.tmp();
|
|
2753
|
-
B.line(`${out} = load i1, ptr ${slot}`);
|
|
2754
|
-
return out;
|
|
2755
|
-
};
|
|
2756
|
-
const a = lenNz(ens, "ds.ln");
|
|
2757
|
-
const b2 = lenNz(ems, "ds.lm");
|
|
2758
|
-
const both = B.tmp();
|
|
2759
|
-
B.line(`${both} = and i1 ${a}, ${b2}`);
|
|
2760
|
-
const lt = B.newLabel("ds.cl");
|
|
2761
|
-
const lj = B.newLabel("ds.cj");
|
|
2762
|
-
B.condBr(both, lt, lj);
|
|
2763
|
-
B.startBlock(lt);
|
|
2764
|
-
this.puts(B, "%b", ": ");
|
|
2765
|
-
B.br(lj);
|
|
2766
|
-
B.startBlock(lj);
|
|
2767
|
-
}
|
|
2768
|
-
putIf(ems, "ds.pm");
|
|
2957
|
+
// Error.prototype.toString, reading name and message through the
|
|
2958
|
+
// prototype. Null leaves the exception its conversion threw pending.
|
|
2959
|
+
host.declare(`declare ptr @scr_dyn_error_string(ptr)`);
|
|
2960
|
+
host.declare(`declare void @scr_str_release(ptr)`);
|
|
2961
|
+
const text = B.tmp();
|
|
2962
|
+
B.line(`${text} = call ptr @scr_dyn_error_string(ptr %d)`);
|
|
2963
|
+
const written = B.tmp();
|
|
2964
|
+
B.line(`${written} = icmp ne ptr ${text}, null`);
|
|
2965
|
+
const lPut = B.newLabel("ds.ep");
|
|
2966
|
+
B.condBr(written, lPut, done);
|
|
2967
|
+
B.startBlock(lPut);
|
|
2968
|
+
this.putScrStr(B, "%b", text);
|
|
2969
|
+
B.line(`call void @scr_str_release(ptr ${text})`);
|
|
2769
2970
|
B.br(done);
|
|
2770
2971
|
}
|
|
2771
2972
|
B.startBlock(labels.get(DYN_KIND.BYTES));
|
|
2772
2973
|
{
|
|
2773
|
-
// Buffer-flavored values coerce utf8;
|
|
2774
|
-
//
|
|
2974
|
+
// Buffer-flavored values coerce utf8; typed arrays join their
|
|
2975
|
+
// elements and a DataView answers "[object DataView]" (the
|
|
2976
|
+
// runtime's conversion).
|
|
2775
2977
|
const bufp = B.tmp();
|
|
2776
2978
|
const bufRaw = B.tmp();
|
|
2777
2979
|
const isBuf = B.tmp();
|
|
@@ -2791,10 +2993,9 @@ export class LlDyn {
|
|
|
2791
2993
|
B.line(`call void @scr_str_release(ptr ${txt})`);
|
|
2792
2994
|
B.br(done);
|
|
2793
2995
|
B.startBlock(lJoin);
|
|
2794
|
-
|
|
2795
|
-
host.declare(`declare ptr @scr_bytes_join(ptr, ptr)`);
|
|
2996
|
+
host.declare(`declare ptr @scr_dyn_to_string(ptr, ptr)`);
|
|
2796
2997
|
const joined = B.tmp();
|
|
2797
|
-
B.line(`${joined} = call ptr @
|
|
2998
|
+
B.line(`${joined} = call ptr @scr_dyn_to_string(ptr %d, ptr null)`);
|
|
2798
2999
|
this.putScrStr(B, "%b", joined);
|
|
2799
3000
|
B.line(`call void @scr_str_release(ptr ${joined})`);
|
|
2800
3001
|
B.br(done);
|
|
@@ -3161,6 +3362,21 @@ export class LlDyn {
|
|
|
3161
3362
|
B.terminate(`ret ptr ${r}`);
|
|
3162
3363
|
B.startBlock(lNext);
|
|
3163
3364
|
}
|
|
3365
|
+
// PROMISE: Promise.prototype.then/catch/finally as function values;
|
|
3366
|
+
// every other key is undefined (promises have no own properties).
|
|
3367
|
+
{
|
|
3368
|
+
const isP = B.tmp();
|
|
3369
|
+
B.line(`${isP} = icmp eq i32 ${kd}, ${DYN_KIND.PROMISE}`);
|
|
3370
|
+
const lP = B.newLabel("kg.p");
|
|
3371
|
+
const lNext = B.newLabel("kg.n");
|
|
3372
|
+
B.condBr(isP, lP, lNext);
|
|
3373
|
+
B.startBlock(lP);
|
|
3374
|
+
host.declare(`declare ptr @scr_dyn_promise_key_get(ptr, ptr)`);
|
|
3375
|
+
const r = B.tmp();
|
|
3376
|
+
B.line(`${r} = call ptr @scr_dyn_promise_key_get(ptr %d, ptr %k)`);
|
|
3377
|
+
B.terminate(`ret ptr ${r}`);
|
|
3378
|
+
B.startBlock(lNext);
|
|
3379
|
+
}
|
|
3164
3380
|
// The canonical-index parse, shared by BYTES/ARR/STR: digits only,
|
|
3165
3381
|
// no leading zero. Leaves (digits, idx).
|
|
3166
3382
|
const parseIndex = () => {
|
|
@@ -3455,14 +3671,9 @@ export class LlDyn {
|
|
|
3455
3671
|
const name = "sc_dyn_iter_n";
|
|
3456
3672
|
this.dynBuilders.set(memoKey, name);
|
|
3457
3673
|
const host = this.host;
|
|
3458
|
-
host.declare(`declare void @scr_jb_init(ptr)`);
|
|
3459
|
-
host.declare(`declare ptr @scr_jb_finish(ptr)`);
|
|
3460
|
-
host.declare(`declare void @scr_jb_puts(ptr, ptr)`);
|
|
3461
|
-
host.declare(`declare void @scr_throw_error(i32, ptr)`);
|
|
3462
3674
|
host.declare(`declare ptr @scr_dyn_new_arr()`);
|
|
3463
3675
|
host.declare(`declare void @scr_dyn_arr_push(ptr, ptr)`);
|
|
3464
3676
|
host.declare(`declare ptr @scr_dyn_new_num(double)`);
|
|
3465
|
-
host.declare(`declare ptr @scr_f64_to_scrstr(double)`);
|
|
3466
3677
|
host.declare(`declare void @scr_str_release(ptr)`);
|
|
3467
3678
|
const B = new BlockBuilder();
|
|
3468
3679
|
const kd = this.kindOf(B, "%d");
|
|
@@ -3474,6 +3685,19 @@ export class LlDyn {
|
|
|
3474
3685
|
const lNext = B.newLabel("din.nt");
|
|
3475
3686
|
B.condBr(isTyped, lTyped, lNext);
|
|
3476
3687
|
B.startBlock(lTyped);
|
|
3688
|
+
// Compiled generators step through the iterator protocol.
|
|
3689
|
+
host.declare(`declare i1 @scr_dyn_iterates_by_protocol(ptr)`);
|
|
3690
|
+
host.declare(`declare ptr @scr_dyn_iter_take(ptr, ${host.sizeType}, ptr)`);
|
|
3691
|
+
const protocol = B.tmp();
|
|
3692
|
+
const lProtocol = B.newLabel("din.pr");
|
|
3693
|
+
const lView = B.newLabel("din.vw");
|
|
3694
|
+
B.line(`${protocol} = call i1 @scr_dyn_iterates_by_protocol(ptr %d)`);
|
|
3695
|
+
B.condBr(protocol, lProtocol, lView);
|
|
3696
|
+
B.startBlock(lProtocol);
|
|
3697
|
+
const stepped = B.tmp();
|
|
3698
|
+
B.line(`${stepped} = call ptr @scr_dyn_iter_take(ptr %d, ${host.sizeType} %n, ptr %spelling)`);
|
|
3699
|
+
B.terminate(`ret ptr ${stepped}`);
|
|
3700
|
+
B.startBlock(lView);
|
|
3477
3701
|
host.declare(`declare ptr @scr_dyn_typed_ref_materialize(ptr)`);
|
|
3478
3702
|
host.declare(`declare void @scr_dyn_release_v(ptr)`);
|
|
3479
3703
|
const materialized = B.tmp();
|
|
@@ -3497,66 +3721,13 @@ export class LlDyn {
|
|
|
3497
3721
|
const lGo = B.newLabel("din.g");
|
|
3498
3722
|
const lThrow = B.newLabel("din.t");
|
|
3499
3723
|
B.condBr(ok, lGo, lThrow);
|
|
3500
|
-
//
|
|
3724
|
+
// Other iterables step through the iterator protocol; non-iterables
|
|
3725
|
+
// throw V8's exact not-iterable TypeError.
|
|
3501
3726
|
B.startBlock(lThrow);
|
|
3502
|
-
|
|
3503
|
-
B.
|
|
3504
|
-
B.line(
|
|
3505
|
-
|
|
3506
|
-
B.line(`${hasSpelling} = icmp ne ptr %spelling, null`);
|
|
3507
|
-
const named = B.newLabel("din.named"), unnamed = B.newLabel("din.unnamed");
|
|
3508
|
-
B.condBr(hasSpelling, named, unnamed);
|
|
3509
|
-
B.startBlock(named);
|
|
3510
|
-
B.line(`call void @scr_jb_puts(ptr ${buf}, ptr %spelling)`);
|
|
3511
|
-
const namedMessage = B.tmp();
|
|
3512
|
-
B.line(`${namedMessage} = call ptr @scr_jb_finish(ptr ${buf})`);
|
|
3513
|
-
B.line(`call void @scr_throw_error(i32 1, ptr ${namedMessage})`);
|
|
3514
|
-
B.terminate(`ret ptr null`);
|
|
3515
|
-
B.startBlock(unnamed);
|
|
3516
|
-
const lU = B.newLabel("din.u");
|
|
3517
|
-
const lN = B.newLabel("din.n");
|
|
3518
|
-
const lB2 = B.newLabel("din.b");
|
|
3519
|
-
const lNum = B.newLabel("din.m");
|
|
3520
|
-
const lF = B.newLabel("din.f");
|
|
3521
|
-
const lDef = B.newLabel("din.d");
|
|
3522
|
-
const lTail = B.newLabel("din.e");
|
|
3523
|
-
B.terminate(`switch i32 ${kd}, label %${lDef} [ i32 ${DYN_KIND.UNDEF}, label %${lU} i32 ${DYN_KIND.NULL}, label %${lN} i32 ${DYN_KIND.BOOL}, label %${lB2} i32 ${DYN_KIND.NUM}, label %${lNum} i32 ${DYN_KIND.FUNC}, label %${lF} ]`);
|
|
3524
|
-
B.startBlock(lU);
|
|
3525
|
-
this.puts(B, buf, "undefined");
|
|
3526
|
-
B.br(lTail);
|
|
3527
|
-
B.startBlock(lN);
|
|
3528
|
-
this.puts(B, buf, "object null");
|
|
3529
|
-
B.br(lTail);
|
|
3530
|
-
B.startBlock(lB2);
|
|
3531
|
-
{
|
|
3532
|
-
const bv = this.boolOf(B, "%d");
|
|
3533
|
-
const s = B.tmp();
|
|
3534
|
-
B.line(`${s} = select i1 ${bv}, ptr ${host.cstr("boolean true")}, ptr ${host.cstr("boolean false")}`);
|
|
3535
|
-
B.line(`call void @scr_jb_puts(ptr ${buf}, ptr ${s})`);
|
|
3536
|
-
B.br(lTail);
|
|
3537
|
-
}
|
|
3538
|
-
B.startBlock(lNum);
|
|
3539
|
-
{
|
|
3540
|
-
this.puts(B, buf, "number ");
|
|
3541
|
-
const x = this.payloadOf(B, "%d", "double");
|
|
3542
|
-
const s = B.tmp();
|
|
3543
|
-
B.line(`${s} = call ptr @scr_f64_to_scrstr(double ${x})`);
|
|
3544
|
-
this.putScrStr(B, buf, s);
|
|
3545
|
-
B.line(`call void @scr_str_release(ptr ${s})`);
|
|
3546
|
-
B.br(lTail);
|
|
3547
|
-
}
|
|
3548
|
-
B.startBlock(lF);
|
|
3549
|
-
this.puts(B, buf, "function");
|
|
3550
|
-
B.br(lTail);
|
|
3551
|
-
B.startBlock(lDef);
|
|
3552
|
-
this.puts(B, buf, "object");
|
|
3553
|
-
B.br(lTail);
|
|
3554
|
-
B.startBlock(lTail);
|
|
3555
|
-
this.puts(B, buf, " is not iterable (cannot read property Symbol(Symbol.iterator))");
|
|
3556
|
-
const msg = B.tmp();
|
|
3557
|
-
B.line(`${msg} = call ptr @scr_jb_finish(ptr ${buf})`);
|
|
3558
|
-
B.line(`call void @scr_throw_error(i32 1, ptr ${msg}) ; SCR_ERR_TYPE`);
|
|
3559
|
-
B.terminate(`ret ptr null`);
|
|
3727
|
+
host.declare(`declare ptr @scr_dyn_iter_take(ptr, ${host.sizeType}, ptr)`);
|
|
3728
|
+
const taken = B.tmp();
|
|
3729
|
+
B.line(`${taken} = call ptr @scr_dyn_iter_take(ptr %d, ${host.sizeType} %n, ptr %spelling)`);
|
|
3730
|
+
B.terminate(`ret ptr ${taken}`);
|
|
3560
3731
|
B.startBlock(lGo);
|
|
3561
3732
|
const out = B.tmp();
|
|
3562
3733
|
B.line(`${out} = call ptr @scr_dyn_new_arr()`);
|