@scriptc/compiler 0.4.2 → 0.4.4
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 +470 -66
- package/dist/backend/cycle-analysis.d.ts +4 -1
- package/dist/backend/cycle-analysis.js +6 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +55 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +7 -0
- package/dist/backend/cycle-mutability.js +19 -1
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +2 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +6 -3
- package/dist/backend/immutability.js +33 -29
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +16 -1
- package/dist/backend/llvm/alloc.js +54 -4
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
- package/dist/backend/llvm/appended-array-literals.js +44 -36
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +4 -3
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +4 -3
- package/dist/backend/llvm/array-search.js +21 -9
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +1 -1
- package/dist/backend/llvm/blocks.js +2 -2
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/byte-windows.js +2 -0
- package/dist/backend/llvm/byte-windows.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +6 -1
- package/dist/backend/llvm/bytes-alias.js +8 -2
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +47 -5
- package/dist/backend/llvm/bytes-loop-versions.js +479 -32
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +263 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +7 -5
- package/dist/backend/llvm/classes.js +44 -20
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +167 -7
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +9 -3
- package/dist/backend/llvm/common.js +9 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
- package/dist/backend/llvm/constant-callbacks.js +83 -52
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +7 -0
- package/dist/backend/llvm/counted-loops.js +18 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/debug-info.js +2 -5
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +39 -8
- package/dist/backend/llvm/dense-array-access.js +222 -52
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +36 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +17 -1
- package/dist/backend/llvm/dense-array-loops.js +194 -5
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +90 -1
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +30 -0
- package/dist/backend/llvm/dyn.js +373 -70
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +13 -28
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +93 -0
- package/dist/backend/llvm/emit-journal.js +170 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -0
- package/dist/backend/llvm/emit-module.js +211 -33
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -4
- package/dist/backend/llvm/emit-statements.js +268 -84
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter-state.d.ts +7 -0
- package/dist/backend/llvm/emitter-state.js +14 -0
- package/dist/backend/llvm/emitter-state.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +186 -37
- package/dist/backend/llvm/emitter.js +733 -90
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +65 -7
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +11 -13
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +48 -20
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +47 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +28 -14
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +14 -2
- package/dist/backend/llvm/expr-containers.js +143 -37
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +14 -0
- package/dist/backend/llvm/expr-dynamic.js +18 -11
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +119 -38
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -6
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +12 -0
- package/dist/backend/llvm/expr-records.js +106 -0
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-bridges.js +210 -69
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +74 -20
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
- package/dist/backend/llvm/int32-kind-loops.js +106 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +25 -1
- package/dist/backend/llvm/integer-values.js +95 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +1 -1
- package/dist/backend/llvm/js-ic.js +1 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/key-orders.d.ts +7 -0
- package/dist/backend/llvm/key-orders.js +33 -0
- package/dist/backend/llvm/key-orders.js.map +1 -0
- package/dist/backend/llvm/lib-connect.js +4 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +11 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +213 -5
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +4 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +4 -0
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +16 -6
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +37 -1
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +94 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +35 -5
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +115 -19
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +14 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +33 -0
- package/dist/backend/llvm/loop-state.js +42 -0
- package/dist/backend/llvm/loop-state.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
- package/dist/backend/llvm/map-number-lookup.js +91 -31
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +55 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +4 -2
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +2 -1
- package/dist/backend/llvm/nullable-unions.js +15 -3
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +10 -0
- package/dist/backend/llvm/publish.js +15 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/receivers.js +6 -1
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +1 -9
- package/dist/backend/llvm/record-results.js +2 -11
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +3 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +7 -2
- package/dist/backend/llvm/reference-writes.js +89 -72
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/running-extrema.d.ts +11 -0
- package/dist/backend/llvm/running-extrema.js +115 -0
- package/dist/backend/llvm/running-extrema.js.map +1 -0
- package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
- package/dist/backend/llvm/running-extrema.test.js +89 -0
- package/dist/backend/llvm/running-extrema.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +71 -15
- package/dist/backend/llvm/shapes.js +224 -40
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +53 -7
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +6 -0
- package/dist/backend/llvm/speculative-integers.js +2 -2
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-captures.js +1 -5
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +3 -2
- package/dist/backend/llvm/stack-objects.js +5 -2
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +12 -0
- package/dist/backend/llvm/string-reads.js +44 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/union-repr.d.ts +4 -3
- package/dist/backend/llvm/union-repr.js +6 -5
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -0
- package/dist/backend/llvm/walk-borrows.js +46 -41
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +3 -0
- package/dist/backend/llvm/walkers.js +101 -65
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
- package/dist/backend/llvm/wrapping-sums.js +126 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/may-throw.d.ts +8 -10
- package/dist/backend/may-throw.js +14 -10
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -0
- package/dist/backend/native/executable.js +7 -0
- package/dist/backend/native/executable.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-core.d.ts +5 -3
- package/dist/backend/native-codegen-core.js +13 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +6 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +4 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.d.ts +12 -1
- package/dist/backend/publication.js +37 -14
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/publication.test.js +30 -0
- package/dist/backend/publication.test.js.map +1 -1
- package/dist/backend/result-slots.d.ts +16 -0
- package/dist/backend/result-slots.js +23 -0
- package/dist/backend/result-slots.js.map +1 -0
- 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 +1 -0
- package/dist/backend/runtime-pack-core.js +1 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +2 -1
- package/dist/backend/stack-observations.js +67 -42
- package/dist/backend/stack-observations.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +26 -0
- package/dist/backend/target-cpu.js +98 -0
- package/dist/backend/target-cpu.js.map +1 -0
- package/dist/backend/target-cpu.test.d.ts +1 -0
- package/dist/backend/target-cpu.test.js +38 -0
- package/dist/backend/target-cpu.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +5 -3
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +20 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +4 -1
- package/dist/cli/usage.js +10 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +1 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/check.js +4 -3
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.js +10 -2
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.js +12 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +3 -0
- package/dist/diagnostics/envelope.js +1 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +5 -0
- package/dist/executable/executable-cache.js +5 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +3 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +41 -0
- package/dist/frontend/decl-projection.js +949 -0
- package/dist/frontend/decl-projection.js.map +1 -0
- package/dist/frontend/decl-projection.test.d.ts +1 -0
- package/dist/frontend/decl-projection.test.js +30 -0
- package/dist/frontend/decl-projection.test.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +15 -0
- package/dist/frontend/dts-paths.js +25 -0
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +6 -0
- package/dist/frontend/input-tracker.js +51 -28
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +19 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +100 -2
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
- package/dist/frontend/lowering/builtins/async-context.js +62 -3
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +13 -2
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +87 -10
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.js +4 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +3 -3
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
- package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
- package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +6 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +9 -1
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +7 -1
- package/dist/frontend/lowering/builtins/promises.js +236 -139
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
- package/dist/frontend/lowering/builtins/readline.js +35 -3
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +24 -1
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +6 -3
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +0 -1
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
- package/dist/frontend/lowering/cjs-inline-require.js +307 -4
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
- package/dist/frontend/lowering/class-callbacks.js +82 -12
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +4 -1
- package/dist/frontend/lowering/class-construction.js +17 -3
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +49 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.js +880 -108
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +47 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +2 -1
- package/dist/frontend/lowering/class-iterables.js +9 -1
- package/dist/frontend/lowering/class-iterables.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +83 -24
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +25 -0
- package/dist/frontend/lowering/class-protocols.js +183 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +31 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
- package/dist/frontend/lowering/class-runtime-statics.js +29 -4
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +91 -1
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
- package/dist/frontend/lowering/completion-callbacks.js +146 -0
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
- package/dist/frontend/lowering/containers/array-callbacks.js +345 -24
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +10 -0
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +5 -0
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +26 -3
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +19 -8
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
- package/dist/frontend/lowering/containers/bytes.js +455 -46
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +3 -0
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +7 -2
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
- package/dist/frontend/lowering/containers/indexed-objects.js +46 -7
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +55 -9
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +43 -19
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +11 -0
- package/dist/frontend/lowering/date-values.js +207 -0
- package/dist/frontend/lowering/date-values.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.js +15 -1
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.js +9 -1
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/error-methods.js +47 -2
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +53 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +100 -28
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +169 -13
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +64 -5
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +95 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
- 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 +138 -51
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +12 -0
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +168 -10
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +212 -33
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +6 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js +4 -0
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +39 -3
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +28 -0
- package/dist/frontend/lowering/frozen-records.js +322 -0
- package/dist/frontend/lowering/frozen-records.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +64 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +7 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
- package/dist/frontend/lowering/indexed-unions.js +401 -0
- package/dist/frontend/lowering/indexed-unions.js.map +1 -0
- package/dist/frontend/lowering/iterable-values.d.ts +49 -0
- package/dist/frontend/lowering/iterable-values.js +297 -0
- package/dist/frontend/lowering/iterable-values.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +186 -1
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
- package/dist/frontend/lowering/js-class-fields.js +45 -10
- package/dist/frontend/lowering/js-class-fields.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +18 -3
- package/dist/frontend/lowering/key-order-witness.js +974 -48
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +530 -10
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +15 -3
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +4 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +7 -0
- package/dist/frontend/lowering/lower-calls.js +462 -44
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +11 -2
- package/dist/frontend/lowering/lower-classes.js +324 -69
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +3 -1
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +215 -3
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +11 -0
- package/dist/frontend/lowering/lower-functions.js +83 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +42 -32
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +6 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +53 -17
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +53 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +5 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +2 -2
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
- package/dist/frontend/lowering/lower-stdlib.js +30 -0
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
- package/dist/frontend/lowering/lower-stmts.js +553 -81
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +20 -2
- package/dist/frontend/lowering/lower-stream.js +1483 -156
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +107 -8
- package/dist/frontend/lowering/lowerer.js +381 -36
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
- package/dist/frontend/lowering/module-namespace-elements.js +82 -5
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/new-target.d.ts +12 -0
- package/dist/frontend/lowering/new-target.js +280 -0
- package/dist/frontend/lowering/new-target.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
- package/dist/frontend/lowering/object-factory-new.js +20 -6
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/overload-choice.d.ts +33 -0
- package/dist/frontend/lowering/overload-choice.js +190 -0
- package/dist/frontend/lowering/overload-choice.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +73 -8
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/undefined-index.d.ts +27 -0
- package/dist/frontend/lowering/undefined-index.js +82 -0
- package/dist/frontend/lowering/undefined-index.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +29 -13
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +18 -0
- package/dist/frontend/npm-static-bundled-chunks.js +9 -11
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static.js +4 -20
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +3 -0
- package/dist/frontend/package-shims.js +71 -8
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.js +19 -11
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +25 -0
- package/dist/frontend/process-fork.js +2 -0
- package/dist/frontend/process-fork.js.map +1 -0
- package/dist/frontend/program-analysis.d.ts +5 -1
- package/dist/frontend/program-analysis.js +5 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +21 -6
- package/dist/frontend/program.js +681 -83
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +43 -3
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/token-equivalence.d.ts +3 -0
- package/dist/frontend/token-equivalence.js +409 -0
- package/dist/frontend/token-equivalence.js.map +1 -0
- package/dist/frontend/token-equivalence.test.d.ts +1 -0
- package/dist/frontend/token-equivalence.test.js +67 -0
- package/dist/frontend/token-equivalence.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +22 -0
- package/dist/frontend/ts7/ast-node.js +1048 -103
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +24 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +4 -3
- package/dist/frontend/ts7/ast-wire.js +34 -24
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.test.js +23 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +3 -4
- package/dist/frontend/ts7/checker-backend.js +2 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +5 -9
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +4 -0
- package/dist/frontend/ts7/checker.js +7 -0
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
- package/dist/frontend/ts7/lib-diagnostics.js +307 -0
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +7 -0
- package/dist/frontend/ts7/program-host.js +25 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +3 -0
- package/dist/frontend/ts7/semantic-model.js +5 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +6 -1
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +1 -1
- 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 +14 -1
- package/dist/frontend/ts7/session.js +22 -0
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +13 -1
- package/dist/frontend/type-mapper.js +229 -20
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +46 -4
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +5 -3
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +4 -0
- package/dist/ir/array-length-stability.js +19 -6
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +24 -0
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.d.ts +7 -0
- package/dist/ir/builtin-effects.js +60 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +6 -4
- package/dist/ir/builtin-signatures.js +222 -13
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +2 -1
- package/dist/ir/callback-specialization.js +23 -18
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +19 -0
- package/dist/ir/char-unit-locals.js +185 -0
- package/dist/ir/char-unit-locals.js.map +1 -0
- package/dist/ir/char-unit-locals.test.d.ts +1 -0
- package/dist/ir/char-unit-locals.test.js +94 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +2 -1
- package/dist/ir/final-fields.js +14 -16
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +2 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +3 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/initializer-bindings.d.ts +2 -1
- package/dist/ir/initializer-bindings.js +27 -20
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +108 -0
- package/dist/ir/int32-arrays.js +831 -0
- package/dist/ir/int32-arrays.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +24 -2
- package/dist/ir/int32-slots.js +266 -57
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +33 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +3 -3
- package/dist/ir/integer-loops.js +28 -10
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +10 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +5 -0
- package/dist/ir/integer-ranges.js +125 -12
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +30 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +83 -10
- package/dist/ir/ir.js +77 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +23 -2
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +4 -0
- package/dist/ir/js-ic.js +17 -1
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +46 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +57 -0
- package/dist/ir/node-index.js +215 -0
- package/dist/ir/node-index.js.map +1 -0
- package/dist/ir/paired-while-loops.d.ts +25 -0
- package/dist/ir/paired-while-loops.js +335 -0
- package/dist/ir/paired-while-loops.js.map +1 -0
- package/dist/ir/paired-while-loops.test.d.ts +1 -0
- package/dist/ir/paired-while-loops.test.js +163 -0
- package/dist/ir/paired-while-loops.test.js.map +1 -0
- package/dist/ir/parameter-versions.d.ts +25 -0
- package/dist/ir/parameter-versions.js +300 -0
- package/dist/ir/parameter-versions.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +34 -13
- package/dist/ir/runtime-features.js +177 -39
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.d.ts +12 -2
- package/dist/ir/serialize.js +16 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +17 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/traverse.js +18 -6
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +167 -40
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +3 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cache.d.ts +6 -1
- package/dist/native/cache.js +28 -5
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +16 -2
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +21 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.d.ts +1 -1
- package/dist/native/executable-cache.js +2 -2
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +4 -2
- package/dist/native/prepare.js +130 -32
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +96 -20
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.test.js +2 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/text-file.d.ts +13 -3
- package/dist/native/text-file.js +63 -9
- package/dist/native/text-file.js.map +1 -1
- package/dist/native/text-file.test.d.ts +1 -0
- package/dist/native/text-file.test.js +49 -0
- package/dist/native/text-file.test.js.map +1 -0
- package/dist/native/toolchain.js +4 -4
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +3 -3
- package/dist/native/toolchain.test.js.map +1 -1
- package/package.json +21 -21
- package/shims/chalk/v5.ts +688 -0
- package/shims/hono-node-server/v2.ts +645 -0
- package/shims/hot-shots/client.ts +1126 -0
- package/shims/hot-shots/v8-unix-dgram.ts +8 -0
- package/shims/hot-shots/v8.ts +8 -0
- package/surface-manifest.json +27 -7
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* Element reads and writes (`a[i]`, `a[i] = v`), compound element updates, and keyed record reads. */
|
|
2
2
|
import * as ts from "../../ts7/adapter.js";
|
|
3
|
+
import { lowerOptionalIndex, splitUndefinedIndex, undefinedTypedArrayKeyFence, } from "../undefined-index.js";
|
|
3
4
|
import { jsFuncNameOf, neverTaintedJsType } from "../lowerer.js";
|
|
4
5
|
import { BOOL, DYN, F64, NULL_T, STRING, UNDEFINED_T, VOID, canBoxFuncIntoDyn, canDynCheckTo, isDynTypedRefType, isUnitType, shapeHasAccessorSlots, typeEquals, } from "../../../ir/ir.js";
|
|
5
6
|
import { importMetaField, isImportMeta } from "../import-meta.js";
|
|
@@ -26,6 +27,9 @@ import { lowerClassPrototypeComputedAssignment } from "../class-prototypes.js";
|
|
|
26
27
|
import { isClassCallback } from "../class-callbacks.js";
|
|
27
28
|
import { isKeyedFieldAccess } from "./keyed-field-targets.js";
|
|
28
29
|
import { lowerFieldCompoundValue } from "./updates.js";
|
|
30
|
+
import { readsHeldEvolvingArray } from "../lower-stmts.js";
|
|
31
|
+
import { indexedUnionArms, lowerIndexedUnionNumberRead, lowerIndexedUnionRead, lowerIndexedUnionWrite, } from "../indexed-unions.js";
|
|
32
|
+
import { lowerBufferPrototypeMember } from "../containers/bytes.js";
|
|
29
33
|
/** `a[i]` reads. Only f64 indices into array receivers are modeled; JS
|
|
30
34
|
* string-key element access (`a["length"]`) and string indexing (`s[0]`
|
|
31
35
|
* typechecks against the lib's index signature; use .charAt) stay out. */
|
|
@@ -54,6 +58,9 @@ export function lowerElementAccess(lowerer, expr) {
|
|
|
54
58
|
if (en)
|
|
55
59
|
return en;
|
|
56
60
|
}
|
|
61
|
+
const bufferMember = lowerBufferPrototypeMember(lowerer, expr);
|
|
62
|
+
if (bufferMember)
|
|
63
|
+
return bufferMember;
|
|
57
64
|
const cachedModule = lowerRequireCacheElement(lowerer, expr);
|
|
58
65
|
if (cachedModule)
|
|
59
66
|
return cachedModule;
|
|
@@ -234,6 +241,24 @@ export function lowerElementAccess(lowerer, expr) {
|
|
|
234
241
|
return lowerer.maybeNarrow({ kind: "dynKeyGet", value: receiver, key, type: DYN, loc: locOf(expr) }, expr);
|
|
235
242
|
}
|
|
236
243
|
}
|
|
244
|
+
// An element read of a union of typed arrays and number arrays: each
|
|
245
|
+
// arm's own read, dispatched on the tag (indexed-unions.ts).
|
|
246
|
+
const indexedArms = receiverIr ? indexedUnionArms(lowerer, receiverIr) : null;
|
|
247
|
+
if (indexedArms && receiverIr && !isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
248
|
+
let recv = lowerer.lowerExpr(expr.expression);
|
|
249
|
+
if (recv.type.kind === "dyn")
|
|
250
|
+
recv = lowerer.coerceInto(expr.expression, recv, receiverIr);
|
|
251
|
+
const arms = indexedUnionArms(lowerer, recv.type);
|
|
252
|
+
if (arms) {
|
|
253
|
+
const index = lowerOptionalNumber(lowerer, lowerer.lowerExpr(expr.argumentExpression), locOf(expr.argumentExpression), expr.argumentExpression);
|
|
254
|
+
if (index.type.kind !== "f64")
|
|
255
|
+
lowerer.unsupported("SC1090", expr.argumentExpression, "indexing with non-number keys");
|
|
256
|
+
if ((ts.isNonNullExpression(expr.parent) && expr.parent.expression === expr) ||
|
|
257
|
+
lowerer.nanCodedReads?.isNumericRead(expr) === true)
|
|
258
|
+
return lowerIndexedUnionNumberRead(lowerer, recv, arms, index, locOf(expr));
|
|
259
|
+
return lowerIndexedUnionRead(lowerer, recv, arms, index, locOf(expr));
|
|
260
|
+
}
|
|
261
|
+
}
|
|
237
262
|
// Typed-array element read `b[i]` — like arrayGet with a scalar
|
|
238
263
|
// result; any invalid index traps (the array discipline; JS would
|
|
239
264
|
// read undefined — divergence 4's policy).
|
|
@@ -469,8 +494,8 @@ export function lowerElementAccess(lowerer, expr) {
|
|
|
469
494
|
}
|
|
470
495
|
}
|
|
471
496
|
if (receiverIr?.kind !== "array") {
|
|
497
|
+
const receiver = tryLowerExpression(lowerer, expr.expression);
|
|
472
498
|
{
|
|
473
|
-
const receiver = tryLowerExpression(lowerer, expr.expression);
|
|
474
499
|
if (receiver?.type.kind === "dyn" ||
|
|
475
500
|
(receiver &&
|
|
476
501
|
isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
|
|
@@ -499,7 +524,11 @@ export function lowerElementAccess(lowerer, expr) {
|
|
|
499
524
|
}
|
|
500
525
|
}
|
|
501
526
|
}
|
|
502
|
-
|
|
527
|
+
// A checker-`any` receiver that lowers to a string (an implicit-any
|
|
528
|
+
// package parameter specialized for a string argument) indexes the
|
|
529
|
+
// string the same way.
|
|
530
|
+
if (receiverIr?.kind === "string" ||
|
|
531
|
+
(receiverIr === null && receiver?.type.kind === "string")) {
|
|
503
532
|
// An indexed string property is absent for non-integer and missing
|
|
504
533
|
// indexes. charAt has different coercion and out-of-range semantics.
|
|
505
534
|
const recv = lowerer.lowerExpr(expr.expression);
|
|
@@ -605,12 +634,16 @@ export function lowerElementAccess(lowerer, expr) {
|
|
|
605
634
|
? lowerer.checkedNarrowCall(helper, arr, present, locOf(expr.expression))
|
|
606
635
|
: lowerer.maybeNarrow(arr, expr.expression);
|
|
607
636
|
}
|
|
637
|
+
// An alias or container of an evolving array whose reads disagree
|
|
638
|
+
// (`rows[0]` after `const rows = [xs]`) holds elements the checker's type
|
|
639
|
+
// does not list, so its element read stays checked-dynamic.
|
|
640
|
+
const heldEvolving = arr.type.kind === "dyn" && readsHeldEvolvingArray(lowerer, expr.expression);
|
|
608
641
|
// The checker sees an array but the VALUE lowered checked-dynamic (a
|
|
609
642
|
// jsdoc-typed default export from a .js module — signature 14): the
|
|
610
643
|
// read rides the dynCheck boundary when the array shape is one the checked-dynamic tree
|
|
611
644
|
// can validate, and fences by name when it is not — an arrayGet over a
|
|
612
645
|
// dyn receiver is never emitted (the validator ICE).
|
|
613
|
-
if (arr.type.kind === "dyn") {
|
|
646
|
+
if (arr.type.kind === "dyn" && !heldEvolving) {
|
|
614
647
|
if (canDynCheckTo(receiverIr, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))) {
|
|
615
648
|
arr = { kind: "dynCheck", value: arr, type: receiverIr, loc: locOf(expr) };
|
|
616
649
|
}
|
|
@@ -619,9 +652,17 @@ export function lowerElementAccess(lowerer, expr) {
|
|
|
619
652
|
}
|
|
620
653
|
}
|
|
621
654
|
// Array reads can themselves supply an index. A missing numeric value
|
|
622
|
-
// is undefined,
|
|
623
|
-
//
|
|
624
|
-
const index =
|
|
655
|
+
// is undefined, which names the array's "undefined" property
|
|
656
|
+
// (undefined-index.ts).
|
|
657
|
+
const index = lowerOptionalIndex(lowerer, lowerer.lowerExpr(expr.argumentExpression), locOf(expr.argumentExpression), expr.argumentExpression);
|
|
658
|
+
if (heldEvolving)
|
|
659
|
+
return {
|
|
660
|
+
kind: "dynKeyGet",
|
|
661
|
+
value: arr,
|
|
662
|
+
key: lowerer.coerceToExpected(index, DYN),
|
|
663
|
+
type: DYN,
|
|
664
|
+
loc: locOf(expr),
|
|
665
|
+
};
|
|
625
666
|
if (arr.type.kind === "array" &&
|
|
626
667
|
(index.type.kind === "dyn" ||
|
|
627
668
|
(isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
|
|
@@ -798,7 +839,7 @@ function lowerGuardedRecordWrite(lowerer, expr, target) {
|
|
|
798
839
|
const { receiver, key, name } = guarded;
|
|
799
840
|
const loc = locOf(expr);
|
|
800
841
|
const value = stabilized(lowerer, lowerer.lowerExpr(expr.right), "%recordValue", receiver.stmts);
|
|
801
|
-
const write = lowerer.withExpressionOverride(target.expression, receiver.present, () => lowerer.withExpressionOverride(target.argumentExpression, key, () => lowerer.withExpressionOverride(expr.right, value, () => lowerElementWrite(
|
|
842
|
+
const write = lowerer.withExpressionOverride(target.expression, receiver.present, () => lowerer.withExpressionOverride(target.argumentExpression, key, () => lowerer.withExpressionOverride(expr.right, value, () => lowerer.lowerElementWrite(expr))));
|
|
802
843
|
return {
|
|
803
844
|
kind: "block",
|
|
804
845
|
body: [
|
|
@@ -1076,6 +1117,16 @@ export function lowerRecordKeyRead(lowerer, expr, shapeId, shape, includeUndefin
|
|
|
1076
1117
|
shape.fields.every((f) => typeEquals(f.type, shape.fields[0].type))) {
|
|
1077
1118
|
declared = shape.fields[0].type;
|
|
1078
1119
|
}
|
|
1120
|
+
else if (shape.fields.length > 0) {
|
|
1121
|
+
// Fields of different types (`row[key]` with `key: keyof Row`): the
|
|
1122
|
+
// checker types the read as the union of the field types the key can
|
|
1123
|
+
// name. When every declared field surfaces in that union (an arm, or a
|
|
1124
|
+
// union that widens into it), the per-field dispatch wraps each hit
|
|
1125
|
+
// into its arm.
|
|
1126
|
+
const read = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
1127
|
+
if (read !== null && read.kind === "union" && recordKeyResultOk(lowerer, shape, read))
|
|
1128
|
+
declared = read;
|
|
1129
|
+
}
|
|
1079
1130
|
// Fields of different types answer a checked-dynamic value where nothing
|
|
1080
1131
|
// typed the read: in JavaScript, and where the checker types it 'any'
|
|
1081
1132
|
// (an object literal of a package's JavaScript indexed by a runtime key,
|
|
@@ -1222,6 +1273,9 @@ export function lowerElementCompoundParts(lowerer, expr, op, statement) {
|
|
|
1222
1273
|
});
|
|
1223
1274
|
return { expr: { kind: "seqExpr", stmts, result: value, type: DYN, loc }, stmts: null };
|
|
1224
1275
|
}
|
|
1276
|
+
const indexedArms = indexedUnionArms(lowerer, checked.type);
|
|
1277
|
+
if (indexedArms && !isJsSourceFile(ts.getSourceFileOfNode(expr)))
|
|
1278
|
+
return lowerIndexedUnionCompound(lowerer, expr, op, checked, indexedArms);
|
|
1225
1279
|
const receiverType = checked.type.kind === "array" || checked.type.kind === "bytes"
|
|
1226
1280
|
? checked.type
|
|
1227
1281
|
: lowerer.mapTypeOf(lowerer.typeOf(target.expression));
|
|
@@ -1240,7 +1294,14 @@ export function lowerElementCompoundParts(lowerer, expr, op, statement) {
|
|
|
1240
1294
|
if (receiver.type.kind !== receiverType.kind) {
|
|
1241
1295
|
lowerer.unsupported("SC1090", target.expression, "compound assignment through a non-native array or byte view");
|
|
1242
1296
|
}
|
|
1243
|
-
|
|
1297
|
+
// An undefined index names the "undefined" property (undefined-index.ts),
|
|
1298
|
+
// which a typed array cannot hold.
|
|
1299
|
+
const rawIndex = lowerer.lowerExpr(target.argumentExpression);
|
|
1300
|
+
const split = receiver.type.kind === "bytes"
|
|
1301
|
+
? splitUndefinedIndex(lowerer, rawIndex, target.argumentExpression, locOf(target.argumentExpression))
|
|
1302
|
+
: null;
|
|
1303
|
+
const index = split?.index ??
|
|
1304
|
+
lowerOptionalIndex(lowerer, rawIndex, locOf(target.argumentExpression), target.argumentExpression);
|
|
1244
1305
|
if (index.type.kind !== "f64")
|
|
1245
1306
|
lowerer.unsupported("SC1090", target.argumentExpression, "indexing with non-number keys");
|
|
1246
1307
|
const receiverLocal = lowerer.declareHiddenLocal("%compoundArray", receiver.type);
|
|
@@ -1336,14 +1397,24 @@ export function lowerElementCompoundParts(lowerer, expr, op, statement) {
|
|
|
1336
1397
|
}
|
|
1337
1398
|
const resultLocal = lowerer.declareHiddenLocal("%compoundResult", computed.type);
|
|
1338
1399
|
const resultRef = () => varRef(resultLocal.id, computed.type, loc);
|
|
1339
|
-
const
|
|
1400
|
+
const store = receiver.type.kind === "array"
|
|
1340
1401
|
? arrayValueStore(lowerer, receiverRef(), indexRef(), resultRef(), receiver.type.elem, loc)
|
|
1341
1402
|
: { kind: "bytesSet", arr: receiverRef(), index: indexRef(), value: resultRef(), loc };
|
|
1403
|
+
const write = split
|
|
1404
|
+
? {
|
|
1405
|
+
kind: "if",
|
|
1406
|
+
cond: split.isUndefined,
|
|
1407
|
+
then: [undefinedTypedArrayKeyFence(lowerer, target, loc)],
|
|
1408
|
+
else_: [store],
|
|
1409
|
+
loc,
|
|
1410
|
+
}
|
|
1411
|
+
: store;
|
|
1342
1412
|
return {
|
|
1343
1413
|
expr: {
|
|
1344
1414
|
kind: "seqExpr",
|
|
1345
1415
|
stmts: [
|
|
1346
1416
|
{ kind: "varDecl", localId: receiverLocal.id, init: receiver, loc },
|
|
1417
|
+
...(split?.stmts ?? []),
|
|
1347
1418
|
{ kind: "varDecl", localId: indexLocal.id, init: index, loc },
|
|
1348
1419
|
{ kind: "varDecl", localId: oldLocal.id, init: oldValue, loc },
|
|
1349
1420
|
{ kind: "varDecl", localId: resultLocal.id, init: computed, loc },
|
|
@@ -1356,6 +1427,43 @@ export function lowerElementCompoundParts(lowerer, expr, op, statement) {
|
|
|
1356
1427
|
stmts: null,
|
|
1357
1428
|
};
|
|
1358
1429
|
}
|
|
1430
|
+
/** `u[i] op= v` on a union of typed arrays and number arrays: the
|
|
1431
|
+
* receiver and index evaluate once, the old element reads as a number (NaN
|
|
1432
|
+
* for an invalid index, as in the typed-array form), and the result is
|
|
1433
|
+
* stored through the union's element write. */
|
|
1434
|
+
function lowerIndexedUnionCompound(lowerer, expr, op, receiver, arms) {
|
|
1435
|
+
const target = expr.left;
|
|
1436
|
+
const loc = locOf(expr);
|
|
1437
|
+
const index = lowerOptionalIndex(lowerer, lowerer.lowerExpr(target.argumentExpression), locOf(target.argumentExpression), target.argumentExpression);
|
|
1438
|
+
if (index.type.kind !== "f64")
|
|
1439
|
+
lowerer.unsupported("SC1090", target.argumentExpression, "indexing with non-number keys");
|
|
1440
|
+
const receiverLocal = lowerer.declareHiddenLocal("%compoundArray", receiver.type);
|
|
1441
|
+
const indexLocal = lowerer.declareHiddenLocal("%compoundIndex", F64);
|
|
1442
|
+
const receiverRef = () => varRef(receiverLocal.id, receiver.type, loc);
|
|
1443
|
+
const indexRef = () => varRef(indexLocal.id, F64, loc);
|
|
1444
|
+
const oldValue = lowerIndexedUnionNumberRead(lowerer, receiverRef(), arms, indexRef(), loc);
|
|
1445
|
+
const rhs = lowerOptionalNumber(lowerer, lowerer.lowerExpr(expr.right), loc);
|
|
1446
|
+
if (rhs.type.kind !== "f64")
|
|
1447
|
+
compoundUnsupported(lowerer, expr, op, F64, rhs.type);
|
|
1448
|
+
const computed = { kind: "bin", op, left: oldValue, right: rhs, type: F64, loc };
|
|
1449
|
+
const resultLocal = lowerer.declareHiddenLocal("%compoundResult", F64);
|
|
1450
|
+
const resultRef = () => varRef(resultLocal.id, F64, loc);
|
|
1451
|
+
return {
|
|
1452
|
+
expr: {
|
|
1453
|
+
kind: "seqExpr",
|
|
1454
|
+
stmts: [
|
|
1455
|
+
{ kind: "varDecl", localId: receiverLocal.id, init: receiver, loc },
|
|
1456
|
+
{ kind: "varDecl", localId: indexLocal.id, init: index, loc },
|
|
1457
|
+
{ kind: "varDecl", localId: resultLocal.id, init: computed, loc },
|
|
1458
|
+
lowerIndexedUnionWrite(lowerer, receiverRef(), arms, indexRef(), resultRef(), loc),
|
|
1459
|
+
],
|
|
1460
|
+
result: resultRef(),
|
|
1461
|
+
type: F64,
|
|
1462
|
+
loc,
|
|
1463
|
+
},
|
|
1464
|
+
stmts: null,
|
|
1465
|
+
};
|
|
1466
|
+
}
|
|
1359
1467
|
/** ToString of one stabilized `string[]` element read for `+=`: a missing
|
|
1360
1468
|
* element concatenates as "undefined". */
|
|
1361
1469
|
function arrayStringOperand(arr, index, loc) {
|
|
@@ -1534,8 +1642,12 @@ export function lowerElementWrite(lowerer, expr) {
|
|
|
1534
1642
|
if (recv.type.kind !== "bytes")
|
|
1535
1643
|
return lowerWiderBytesWrite(lowerer, expr, target, recv);
|
|
1536
1644
|
// An index the checker types as a number but whose storage may hold
|
|
1537
|
-
// undefined (a hole read) converts with ToNumber, as the reads do
|
|
1538
|
-
|
|
1645
|
+
// undefined (a hole read) converts with ToNumber, as the reads do; an
|
|
1646
|
+
// undefined index names a property the typed array cannot hold.
|
|
1647
|
+
const rawIndex = lowerer.lowerExpr(target.argumentExpression);
|
|
1648
|
+
const split = splitUndefinedIndex(lowerer, rawIndex, target.argumentExpression, locOf(target.argumentExpression));
|
|
1649
|
+
const index = split?.index ??
|
|
1650
|
+
lowerOptionalNumber(lowerer, rawIndex, locOf(target.argumentExpression), target.argumentExpression);
|
|
1539
1651
|
if (index.type.kind === "dyn" && recv.type.kind === "bytes") {
|
|
1540
1652
|
return {
|
|
1541
1653
|
kind: "exprStmt",
|
|
@@ -1547,7 +1659,35 @@ export function lowerElementWrite(lowerer, expr) {
|
|
|
1547
1659
|
lowerer.unsupported("SC1090", target.argumentExpression, "indexing with non-number keys");
|
|
1548
1660
|
}
|
|
1549
1661
|
const value = lowerer.lowerExprExpecting(expr.right, F64);
|
|
1550
|
-
|
|
1662
|
+
if (split === null)
|
|
1663
|
+
return { kind: "bytesSet", arr: recv, index, value, loc: locOf(expr) };
|
|
1664
|
+
const loc = locOf(expr);
|
|
1665
|
+
const receiver = lowerer.declareHiddenLocal("%indexedBytes", recv.type);
|
|
1666
|
+
const valueLocal = lowerer.declareHiddenLocal("%elementValue", F64);
|
|
1667
|
+
return {
|
|
1668
|
+
kind: "block",
|
|
1669
|
+
body: [
|
|
1670
|
+
{ kind: "varDecl", localId: receiver.id, init: recv, loc },
|
|
1671
|
+
...split.stmts,
|
|
1672
|
+
{ kind: "varDecl", localId: valueLocal.id, init: value, loc },
|
|
1673
|
+
{
|
|
1674
|
+
kind: "if",
|
|
1675
|
+
cond: split.isUndefined,
|
|
1676
|
+
then: [undefinedTypedArrayKeyFence(lowerer, target, loc)],
|
|
1677
|
+
else_: [
|
|
1678
|
+
{
|
|
1679
|
+
kind: "bytesSet",
|
|
1680
|
+
arr: varRef(receiver.id, recv.type, loc),
|
|
1681
|
+
index,
|
|
1682
|
+
value: varRef(valueLocal.id, F64, loc),
|
|
1683
|
+
loc,
|
|
1684
|
+
},
|
|
1685
|
+
],
|
|
1686
|
+
loc,
|
|
1687
|
+
},
|
|
1688
|
+
],
|
|
1689
|
+
loc,
|
|
1690
|
+
};
|
|
1551
1691
|
}
|
|
1552
1692
|
// Tuple element write `t[0] = v`: a positional-field write (recordSet)
|
|
1553
1693
|
// — literal indices only, like the read.
|
|
@@ -1762,6 +1902,22 @@ export function lowerElementWrite(lowerer, expr) {
|
|
|
1762
1902
|
};
|
|
1763
1903
|
}
|
|
1764
1904
|
}
|
|
1905
|
+
// An element write into a union of typed arrays and number arrays
|
|
1906
|
+
// (indexed-unions.ts).
|
|
1907
|
+
const indexedArms = receiverIr ? indexedUnionArms(lowerer, receiverIr) : null;
|
|
1908
|
+
if (indexedArms && receiverIr && !isJsSourceFile(ts.getSourceFileOfNode(expr))) {
|
|
1909
|
+
let recv = lowerer.lowerExpr(target.expression);
|
|
1910
|
+
if (recv.type.kind === "dyn")
|
|
1911
|
+
recv = lowerer.coerceInto(target.expression, recv, receiverIr);
|
|
1912
|
+
const arms = indexedUnionArms(lowerer, recv.type);
|
|
1913
|
+
if (arms) {
|
|
1914
|
+
const index = lowerOptionalNumber(lowerer, lowerer.lowerExpr(target.argumentExpression), locOf(target.argumentExpression), target.argumentExpression);
|
|
1915
|
+
if (index.type.kind !== "f64")
|
|
1916
|
+
lowerer.unsupported("SC1090", target.argumentExpression, "indexing with non-number keys");
|
|
1917
|
+
const value = lowerer.lowerExprExpecting(expr.right, F64);
|
|
1918
|
+
return lowerIndexedUnionWrite(lowerer, recv, arms, index, value, locOf(expr));
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1765
1921
|
if (receiverIr?.kind !== "array") {
|
|
1766
1922
|
lowerer.unsupported("SC1090", target, "assignment to non-array elements");
|
|
1767
1923
|
}
|
|
@@ -1780,7 +1936,7 @@ export function lowerElementWrite(lowerer, expr) {
|
|
|
1780
1936
|
if (arr.type.kind !== "array") {
|
|
1781
1937
|
lowerer.unsupported("SC1090", target.expression, "assignment through a possibly missing nested array receiver");
|
|
1782
1938
|
}
|
|
1783
|
-
const index =
|
|
1939
|
+
const index = lowerOptionalIndex(lowerer, lowerer.lowerExpr(target.argumentExpression), locOf(target.argumentExpression), target.argumentExpression);
|
|
1784
1940
|
if (index.type.kind === "dyn" && lowerer.dynConvertible(arr.type)) {
|
|
1785
1941
|
return {
|
|
1786
1942
|
kind: "exprStmt",
|