@scriptc/compiler 0.2.7 → 0.2.8
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 +2 -0
- package/dist/backend/llvm/alloc.d.ts +3 -0
- package/dist/backend/llvm/alloc.js +54 -13
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +9 -0
- package/dist/backend/llvm/blocks.js +9 -0
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/borrowed-receivers.d.ts +7 -0
- package/dist/backend/llvm/borrowed-receivers.js +39 -0
- package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +4 -1
- package/dist/backend/llvm/call-lifetimes.js +14 -3
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +8 -3
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.d.ts +24 -0
- package/dist/backend/llvm/checked-narrows.js +108 -0
- package/dist/backend/llvm/checked-narrows.js.map +1 -0
- package/dist/backend/llvm/checked-narrows.test.d.ts +1 -0
- package/dist/backend/llvm/checked-narrows.test.js +208 -0
- package/dist/backend/llvm/checked-narrows.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +13 -1
- package/dist/backend/llvm/classes.js +26 -18
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +32 -3
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +6 -2
- package/dist/backend/llvm/debug-info.js +11 -1
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +89 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +31 -20
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +184 -11
- package/dist/backend/llvm/emitter.js +1189 -125
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +21 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +4 -4
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +85 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +29 -21
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +5 -0
- package/dist/backend/llvm/expr-calls.js +55 -10
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +7 -1
- package/dist/backend/llvm/expr-containers.js +230 -27
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +25 -10
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +72 -21
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.js +3 -8
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +41 -12
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +50 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +28 -14
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +41 -31
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +6 -3
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +2 -1
- package/dist/backend/llvm/layouts.js +2 -2
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +10 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +7 -11
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +8 -8
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +1 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +73 -13
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +7 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.js +10 -6
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +3 -2
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +18 -0
- package/dist/backend/llvm/map-number-lookup.js +62 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -0
- package/dist/backend/llvm/map-read-lifetimes.js +24 -3
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +38 -19
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +68 -0
- package/dist/backend/llvm/nullable-unions.js +132 -0
- package/dist/backend/llvm/nullable-unions.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +58 -0
- package/dist/backend/llvm/publish.js +286 -0
- package/dist/backend/llvm/publish.js.map +1 -0
- package/dist/backend/llvm/rebound-parameters.d.ts +12 -0
- package/dist/backend/llvm/rebound-parameters.js +72 -0
- package/dist/backend/llvm/rebound-parameters.js.map +1 -0
- package/dist/backend/llvm/rebound-parameters.test.d.ts +1 -0
- package/dist/backend/llvm/rebound-parameters.test.js +67 -0
- package/dist/backend/llvm/rebound-parameters.test.js.map +1 -0
- package/dist/backend/llvm/reference-effects.d.ts +18 -2
- package/dist/backend/llvm/reference-effects.js +106 -16
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-effects.test.js +52 -1
- package/dist/backend/llvm/reference-effects.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +45 -17
- package/dist/backend/llvm/shapes.js +131 -53
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +33 -8
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +5 -2
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-construction.d.ts +10 -0
- package/dist/backend/llvm/string-construction.js +42 -0
- package/dist/backend/llvm/string-construction.js.map +1 -1
- package/dist/backend/llvm/string-key-hash.d.ts +9 -2
- package/dist/backend/llvm/string-key-hash.js +20 -3
- package/dist/backend/llvm/string-key-hash.js.map +1 -1
- package/dist/backend/llvm/string-key-hash.test.js +14 -3
- package/dist/backend/llvm/string-key-hash.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +24 -11
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +7 -0
- package/dist/backend/llvm/string-reads.js +76 -0
- package/dist/backend/llvm/string-reads.js.map +1 -0
- package/dist/backend/llvm/switch-dispatch.test.js +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
- package/dist/backend/llvm/test-boxed-unions.d.ts +5 -0
- package/dist/backend/llvm/test-boxed-unions.js +13 -0
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +15 -0
- package/dist/backend/llvm/union-repr.js +89 -0
- package/dist/backend/llvm/union-repr.js.map +1 -0
- package/dist/backend/llvm/virtual-borrows.d.ts +31 -0
- package/dist/backend/llvm/virtual-borrows.js +82 -0
- package/dist/backend/llvm/virtual-borrows.js.map +1 -0
- package/dist/backend/llvm/walk-borrows.d.ts +43 -0
- package/dist/backend/llvm/walk-borrows.js +150 -0
- package/dist/backend/llvm/walk-borrows.js.map +1 -0
- package/dist/backend/llvm/walk-borrows.test.d.ts +1 -0
- package/dist/backend/llvm/walk-borrows.test.js +119 -0
- package/dist/backend/llvm/walk-borrows.test.js.map +1 -0
- package/dist/backend/llvm/walkers.d.ts +5 -1
- package/dist/backend/llvm/walkers.js +24 -21
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.d.ts +29 -1
- package/dist/backend/may-throw.js +346 -3
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +113 -1
- package/dist/backend/may-throw.test.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 +7 -5
- package/dist/backend/native-codegen-core.js +14 -9
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +4 -0
- package/dist/backend/native-codegen.js +49 -2
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +41 -10
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +2 -0
- package/dist/backend/native-tools.js +3 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/publication.d.ts +28 -0
- package/dist/backend/publication.js +155 -0
- package/dist/backend/publication.js.map +1 -0
- package/dist/backend/publication.test.d.ts +1 -0
- package/dist/backend/publication.test.js +72 -0
- package/dist/backend/publication.test.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-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/cli/command.js +70 -7
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +4 -1
- package/dist/cli/usage.js +8 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +12 -3
- package/dist/coverage/report.d.ts +25 -2
- package/dist/coverage/report.js +161 -33
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +63 -0
- package/dist/coverage/verdict-cache.js +193 -0
- package/dist/coverage/verdict-cache.js.map +1 -0
- package/dist/coverage/verdict-cache.test.d.ts +1 -0
- package/dist/coverage/verdict-cache.test.js +52 -0
- package/dist/coverage/verdict-cache.test.js.map +1 -0
- package/dist/coverage/verdict-semantic.d.ts +2 -0
- package/dist/coverage/verdict-semantic.js +24 -0
- package/dist/coverage/verdict-semantic.js.map +1 -0
- package/dist/coverage/verdict-startup.d.ts +15 -0
- package/dist/coverage/verdict-startup.js +66 -0
- package/dist/coverage/verdict-startup.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +29 -1
- package/dist/diagnostics/diagnostic.js +74 -4
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +130 -0
- package/dist/diagnostics/envelope.js +257 -0
- package/dist/diagnostics/envelope.js.map +1 -0
- package/dist/diagnostics/envelope.test.d.ts +1 -0
- package/dist/diagnostics/envelope.test.js +91 -0
- package/dist/diagnostics/envelope.test.js.map +1 -0
- package/dist/diagnostics/render.d.ts +3 -0
- package/dist/diagnostics/render.js +13 -2
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/prepare.d.ts +4 -0
- package/dist/executable/prepare.js +7 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +7 -0
- package/dist/frontend/lowering/array-values.js +120 -4
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +29 -1
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +4 -0
- package/dist/frontend/lowering/builtins/process.js +10 -0
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/workers.js +4 -2
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.d.ts +8 -0
- package/dist/frontend/lowering/class-assertions.js +217 -1
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +8 -5
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +6 -0
- package/dist/frontend/lowering/coercions/state.js +2 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +8 -0
- package/dist/frontend/lowering/coercions/unions.js +67 -2
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.d.ts +1 -0
- package/dist/frontend/lowering/collation-repertoire.js +19 -0
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -0
- package/dist/frontend/lowering/construction-escapes.d.ts +38 -0
- package/dist/frontend/lowering/construction-escapes.js +146 -0
- package/dist/frontend/lowering/construction-escapes.js.map +1 -0
- package/dist/frontend/lowering/construction-escapes.test.d.ts +1 -0
- package/dist/frontend/lowering/construction-escapes.test.js +150 -0
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +81 -44
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +15 -2
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +231 -12
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +43 -1
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +7 -63
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +6 -1
- package/dist/frontend/lowering/cycle-initialization.js +59 -33
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +9 -0
- package/dist/frontend/lowering/divergences.js +630 -0
- package/dist/frontend/lowering/divergences.js.map +1 -0
- package/dist/frontend/lowering/expressions/object-literals.js +40 -2
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +5 -0
- package/dist/frontend/lowering/lower-calls.js +226 -157
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +4 -0
- package/dist/frontend/lowering/lower-classes.js +72 -22
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +13 -0
- package/dist/frontend/lowering/lower-exprs.js +431 -107
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +19 -13
- package/dist/frontend/lowering/lower-generators.js +67 -44
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +3 -2
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +1 -1
- package/dist/frontend/lowering/lower-island.js +24 -7
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +90 -1
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +36 -6
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +78 -2
- package/dist/frontend/lowering/lowerer.js +986 -73
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-bounds.d.ts +19 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +354 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js +66 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +117 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +738 -0
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.d.ts +36 -0
- package/dist/frontend/lowering/runtime-optional-guards.js +375 -0
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.js +92 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-ownership.d.ts +63 -0
- package/dist/frontend/lowering/runtime-optional-ownership.js +382 -0
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +2 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.d.ts +36 -0
- package/dist/frontend/lowering/string-index-bounds.js +537 -0
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.test.d.ts +1 -0
- package/dist/frontend/lowering/string-index-bounds.test.js +223 -0
- package/dist/frontend/lowering/string-index-bounds.test.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.d.ts +2 -0
- package/dist/frontend/lowering/union-narrow.js +10 -6
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +10 -0
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +25 -0
- package/dist/frontend/program.js +613 -17
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +64 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.d.ts +6 -0
- package/dist/frontend/resolve.js +14 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/threads-import.d.ts +5 -0
- package/dist/frontend/threads-import.js +21 -0
- package/dist/frontend/threads-import.js.map +1 -0
- package/dist/frontend/type-mapper.d.ts +3 -0
- package/dist/frontend/type-mapper.js +72 -6
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/worker-target.d.ts +4 -0
- package/dist/frontend/worker-target.js +8 -1
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +47 -9
- package/dist/index.js.map +1 -1
- package/dist/ir/build.d.ts +5 -0
- package/dist/ir/build.js +7 -0
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +3 -0
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +72 -0
- package/dist/ir/int32-slots.js +837 -0
- package/dist/ir/int32-slots.js.map +1 -0
- package/dist/ir/int32-slots.test.d.ts +1 -0
- package/dist/ir/int32-slots.test.js +222 -0
- package/dist/ir/int32-slots.test.js.map +1 -0
- package/dist/ir/integer-ranges.d.ts +19 -3
- package/dist/ir/integer-ranges.js +168 -23
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +74 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +24 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/validate.js +21 -2
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +39 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/native/cache.d.ts +3 -0
- package/dist/native/cache.js +49 -1
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +21 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +1 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +5 -0
- package/dist/native/compiler.js +51 -4
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.d.ts +4 -0
- package/dist/native/prepare.js +2 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/startup-cache.d.ts +2 -0
- package/dist/startup-cache.js +2 -0
- package/dist/startup-cache.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +1 -1
|
@@ -33,7 +33,8 @@ export function lowerArrayHofCall(lowerer, call, access, method, elem) {
|
|
|
33
33
|
ts.isIdentifier(argNode) &&
|
|
34
34
|
argNode.text === "Boolean" &&
|
|
35
35
|
lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(argNode) ?? undefined);
|
|
36
|
-
const
|
|
36
|
+
const present = !booleanFilter && presentElements(lowerer, call, elem);
|
|
37
|
+
const valueT = callbackValueType(lowerer, elem, present);
|
|
37
38
|
if (booleanFilter) {
|
|
38
39
|
if (valueT.kind === "union")
|
|
39
40
|
lowerer.requireTruthyUnion(valueT.unionId, argNode);
|
|
@@ -74,10 +75,10 @@ export function lowerArrayHofCall(lowerer, call, access, method, elem) {
|
|
|
74
75
|
? filterResultElem(lowerer, call, argNode, elem, valueT, booleanFilter)
|
|
75
76
|
: callbackArrayElement(lowerer, call, fnRet);
|
|
76
77
|
// A filter that re-tags its elements keeps the single union-typed visit.
|
|
77
|
-
const fast = booleanFilter || (method === "filter" && !typeEquals(outElem, elem))
|
|
78
|
+
const fast = present || booleanFilter || (method === "filter" && !typeEquals(outElem, elem))
|
|
78
79
|
? null
|
|
79
80
|
: lowerFastCallback(lowerer, argNode, [valueT], 0, elem, arrayOf(elem), callback);
|
|
80
|
-
const helper = arrayHofHelper(lowerer, method, elem, fnRet, arity, loc, outElem, callbackSite(fast ?? fnArg), fast?.type ?? null);
|
|
81
|
+
const helper = arrayHofHelper(lowerer, method, elem, fnRet, arity, loc, outElem, callbackSite(fast ?? fnArg), fast?.type ?? null, present);
|
|
81
82
|
const resultType = method === "map" || method === "filter" ? arrayOf(outElem) : VOID;
|
|
82
83
|
return {
|
|
83
84
|
kind: "call",
|
|
@@ -383,18 +384,39 @@ function withFastCallback(fn, fastT, elem) {
|
|
|
383
384
|
function callbackSite(fnArg) {
|
|
384
385
|
return fnArg.kind === "closure" ? `@${fnArg.fnName}` : "";
|
|
385
386
|
}
|
|
387
|
+
/** The optional-read analysis proved this call's receiver never holds an
|
|
388
|
+
* explicit undefined (or, for the find family, a hole): its callback takes
|
|
389
|
+
* the element type itself, read without a state test. A missing value the
|
|
390
|
+
* proof excluded would make the element read trap instead of producing a
|
|
391
|
+
* wrong value. */
|
|
392
|
+
function presentElements(lowerer, call, elem) {
|
|
393
|
+
return (lowerer.presentElementCalls.has(call) &&
|
|
394
|
+
elem.kind !== "dyn" &&
|
|
395
|
+
elem.kind !== "jsval" &&
|
|
396
|
+
elem.kind !== "void" &&
|
|
397
|
+
!isUnitType(elem));
|
|
398
|
+
}
|
|
399
|
+
/** The value a helper passes its callback for one visited index. */
|
|
400
|
+
function callbackValueType(lowerer, elem, present) {
|
|
401
|
+
return present ? elem : arrayValueType(lowerer, elem);
|
|
402
|
+
}
|
|
403
|
+
function callbackValueRead(lowerer, arr, index, elem, present, loc) {
|
|
404
|
+
return present
|
|
405
|
+
? { kind: "arrayGet", arr, index, type: elem, loc }
|
|
406
|
+
: arrayValueRead(lowerer, arr, index, elem, loc);
|
|
407
|
+
}
|
|
386
408
|
/** Interned synthetic loop function for one (method, elem, fnRet, arity)
|
|
387
409
|
* combo. Named `%arr.<method>.<n>` ('%' keeps it out of the user
|
|
388
410
|
* namespace); rides `liftedFns` into the module like a lifted lambda (it
|
|
389
411
|
* is a plain function — no captures). */
|
|
390
|
-
function arrayHofHelper(lowerer, method, elem, fnRet, arity, loc, outElem = fnRet, site = "", fastT = null) {
|
|
391
|
-
const key = `${method}:${typeKey(elem)}:${typeKey(fnRet)}:${arity}:${typeKey(outElem)}${site}${fastT ? ":split" : ""}`;
|
|
412
|
+
function arrayHofHelper(lowerer, method, elem, fnRet, arity, loc, outElem = fnRet, site = "", fastT = null, present = false) {
|
|
413
|
+
const key = `${method}:${typeKey(elem)}:${typeKey(fnRet)}:${arity}:${typeKey(outElem)}${site}${fastT ? ":split" : ""}${present ? ":present" : ""}`;
|
|
392
414
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
393
415
|
if (existing)
|
|
394
416
|
return existing;
|
|
395
417
|
const name = `%arr.${method}.${lowerer.arrHofHelpers.size}`;
|
|
396
418
|
lowerer.arrHofHelpers.set(key, name);
|
|
397
|
-
const fn = buildArrayHofFn(lowerer, name, method, elem, fnRet, arity, loc, outElem, fastT);
|
|
419
|
+
const fn = buildArrayHofFn(lowerer, name, method, elem, fnRet, arity, loc, outElem, fastT, present);
|
|
398
420
|
lowerer.liftedFns.push(fastT ? withFastCallback(fn, fastT, elem) : fn);
|
|
399
421
|
return name;
|
|
400
422
|
}
|
|
@@ -553,14 +575,14 @@ function arrayUnionHofHelper(lowerer, method, receiverT, arrays, callbackT, arit
|
|
|
553
575
|
* `arity` is the callback's declared parameter count (1–3): the loop
|
|
554
576
|
* passes the index and the receiver itself after the element when the
|
|
555
577
|
* callback names them, exactly the arguments JS supplies. */
|
|
556
|
-
function buildArrayHofFn(lowerer, name, method, elem, fnRet, arity, loc, outElem, fastT = null) {
|
|
578
|
+
function buildArrayHofFn(lowerer, name, method, elem, fnRet, arity, loc, outElem, fastT = null, present = false) {
|
|
557
579
|
const arrT = arrayOf(elem);
|
|
558
|
-
const valueT =
|
|
559
|
-
const fnT = funcOf([
|
|
580
|
+
const valueT = callbackValueType(lowerer, elem, present);
|
|
581
|
+
const fnT = funcOf([valueT, F64, arrT].slice(0, arity), fnRet);
|
|
560
582
|
const locals = arrayCallbackLocals(arrT, fnT);
|
|
561
583
|
const params = arrayCallbackParams(arrT, fnT);
|
|
562
584
|
const callF = (arg) => callArrayCallback(arrT, fnT, fnRet, arity, arg, loc);
|
|
563
|
-
const getElem =
|
|
585
|
+
const getElem = callbackValueRead(lowerer, varRef("a.0", arrT, loc), varRef("i.0", F64, loc), elem, present, loc);
|
|
564
586
|
const hasElem = {
|
|
565
587
|
kind: "arrayHas",
|
|
566
588
|
arr: varRef("a.0", arrT, loc),
|
|
@@ -798,7 +820,12 @@ export function lowerArrayFindLikeCall(lowerer, call, access, method, elem, bind
|
|
|
798
820
|
const argNode = call.arguments[0];
|
|
799
821
|
if (!argNode)
|
|
800
822
|
lowerer.unsupported("SC1090", call, "this call form"); // tsc-guarded
|
|
801
|
-
|
|
823
|
+
// find's result must be reachable from the element itself; a predicate
|
|
824
|
+
// that narrows to another layout keeps the optional element visit.
|
|
825
|
+
const present = presentElements(lowerer, call, elem) &&
|
|
826
|
+
((method !== "find" && method !== "findLast") ||
|
|
827
|
+
(!bindUntyped && lowerer.coercibleValue(elem, lowerer.irTypeOf(call))));
|
|
828
|
+
const { fnArg, arity } = lowerArrayCallback(lowerer, argNode, [callbackValueType(lowerer, elem, present)], arrT, bindUntyped);
|
|
802
829
|
// JS takes the ToBoolean of the predicate's result — allowed wherever
|
|
803
830
|
// that ToBoolean has a static answer (bool passes through; f64/string
|
|
804
831
|
// by value; a truthy-answerable union by its arm — the
|
|
@@ -818,11 +845,13 @@ export function lowerArrayFindLikeCall(lowerer, call, access, method, elem, bind
|
|
|
818
845
|
method === "every" ||
|
|
819
846
|
method === "findIndex" ||
|
|
820
847
|
method === "findLastIndex") {
|
|
821
|
-
const fast =
|
|
848
|
+
const fast = present
|
|
849
|
+
? null
|
|
850
|
+
: lowerFastCallback(lowerer, argNode, [arrayValueType(lowerer, elem)], 0, elem, arrT, { fnArg, arity }, bindUntyped);
|
|
822
851
|
const fastT = fast?.type ?? null;
|
|
823
852
|
const helper = method === "findIndex" || method === "findLastIndex"
|
|
824
|
-
? findIndexHelper(lowerer, elem, fnRet, arity, last, loc, callbackSite(fast ?? fnArg), fastT)
|
|
825
|
-
: someEveryHelper(lowerer, method, elem, fnRet, arity, loc, callbackSite(fast ?? fnArg), fastT);
|
|
853
|
+
? findIndexHelper(lowerer, elem, fnRet, arity, last, loc, callbackSite(fast ?? fnArg), fastT, present)
|
|
854
|
+
: someEveryHelper(lowerer, method, elem, fnRet, arity, loc, callbackSite(fast ?? fnArg), fastT, present);
|
|
826
855
|
return {
|
|
827
856
|
kind: "call",
|
|
828
857
|
callee: helper,
|
|
@@ -836,7 +865,7 @@ export function lowerArrayFindLikeCall(lowerer, call, access, method, elem, bind
|
|
|
836
865
|
// element inherits that earlier refinement. Otherwise only an inline,
|
|
837
866
|
// inferred predicate proves a new narrowing; explicit assertions keep
|
|
838
867
|
// the same refusal boundary as filter.
|
|
839
|
-
const valueT =
|
|
868
|
+
const valueT = callbackValueType(lowerer, elem, present);
|
|
840
869
|
const checkerReceiver = lowerer.mapTypeOf(lowerer.typeOf(access.expression));
|
|
841
870
|
const checkerResult = lowerer.irTypeOf(call);
|
|
842
871
|
const unchangedElement = checkerReceiver?.kind === "array" &&
|
|
@@ -867,7 +896,7 @@ export function lowerArrayFindLikeCall(lowerer, call, access, method, elem, bind
|
|
|
867
896
|
!(present.kind === "object" && canAssertClassValue(lowerer, valueT, present)))
|
|
868
897
|
lowerer.unsupported("SC1090", call, `'.${method}' narrowing to an incompatible result layout`);
|
|
869
898
|
}
|
|
870
|
-
const helper = findHelper(lowerer, elem, resultT, undefTag, fnRet, arity, last, loc, retag, callbackSite(fnArg));
|
|
899
|
+
const helper = findHelper(lowerer, elem, resultT, undefTag, fnRet, arity, last, loc, retag, callbackSite(fnArg), present);
|
|
871
900
|
return { kind: "call", callee: helper, args: [receiver, fnArg], type: resultT, loc };
|
|
872
901
|
}
|
|
873
902
|
/** ToBoolean of a predicate result inside a synthesized HOF helper — the
|
|
@@ -886,23 +915,23 @@ function predicateToBoolean(e) {
|
|
|
886
915
|
* for (i = 0; i < n; i++) { v = a[i]; if (f(v)) return <v as result arm>; }
|
|
887
916
|
* return <undefined arm>;
|
|
888
917
|
*/
|
|
889
|
-
function findHelper(lowerer, elem, resultT, undefTag, fnRet, arity, last, loc, retag, site = "") {
|
|
918
|
+
function findHelper(lowerer, elem, resultT, undefTag, fnRet, arity, last, loc, retag, site = "", present = false) {
|
|
890
919
|
const method = last ? "findLast" : "find";
|
|
891
|
-
const key = `${method}:${typeKey(elem)}:${typeKey(resultT)}:${typeKey(fnRet)}:${arity}${site}`;
|
|
920
|
+
const key = `${method}:${typeKey(elem)}:${typeKey(resultT)}:${typeKey(fnRet)}:${arity}${site}${present ? ":present" : ""}`;
|
|
892
921
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
893
922
|
if (existing)
|
|
894
923
|
return existing;
|
|
895
924
|
const name = `%arr.${method}.${lowerer.arrHofHelpers.size}`;
|
|
896
925
|
lowerer.arrHofHelpers.set(key, name);
|
|
897
926
|
const arrT = arrayOf(elem);
|
|
898
|
-
const
|
|
899
|
-
const
|
|
927
|
+
const valueT = callbackValueType(lowerer, elem, present);
|
|
928
|
+
const fnT = funcOf([valueT, F64, arrT].slice(0, arity), fnRet);
|
|
900
929
|
const v = varRef("v.0", valueT, loc);
|
|
901
|
-
const
|
|
930
|
+
const presentArm = lowerer.stripUndefinedArm(resultT);
|
|
902
931
|
// A successful inferred class predicate may select a descendant of a
|
|
903
932
|
// stored base arm. Keep the value read before the callback mutated the array.
|
|
904
|
-
const classView = retag === null && !lowerer.coercibleValue(valueT, resultT) &&
|
|
905
|
-
? checkedClassAssertion(lowerer, v,
|
|
933
|
+
const classView = retag === null && !lowerer.coercibleValue(valueT, resultT) && presentArm.kind === "object"
|
|
934
|
+
? checkedClassAssertion(lowerer, v, presentArm, loc)
|
|
906
935
|
: null;
|
|
907
936
|
const found = retag === null
|
|
908
937
|
? lowerer.coerceToExpected(classView ?? v, resultT)
|
|
@@ -919,7 +948,7 @@ function findHelper(lowerer, elem, resultT, undefTag, fnRet, arity, last, loc, r
|
|
|
919
948
|
{
|
|
920
949
|
kind: "varDecl",
|
|
921
950
|
localId: "v.0",
|
|
922
|
-
init:
|
|
951
|
+
init: callbackValueRead(lowerer, varRef("a.0", arrT, loc), varRef("i.0", F64, loc), elem, present, loc),
|
|
923
952
|
loc,
|
|
924
953
|
},
|
|
925
954
|
{
|
|
@@ -957,20 +986,20 @@ function findHelper(lowerer, elem, resultT, undefTag, fnRet, arity, last, loc, r
|
|
|
957
986
|
*
|
|
958
987
|
* n = a.length; for (...) if (f(a[i], i, a)) return i; return -1;
|
|
959
988
|
*/
|
|
960
|
-
function findIndexHelper(lowerer, elem, fnRet, arity, last, loc, site = "", fastT = null) {
|
|
989
|
+
function findIndexHelper(lowerer, elem, fnRet, arity, last, loc, site = "", fastT = null, present = false) {
|
|
961
990
|
const method = last ? "findLastIndex" : "findIndex";
|
|
962
|
-
const key = `${method}:${typeKey(elem)}:${typeKey(fnRet)}:${arity}${site}${fastT ? ":split" : ""}`;
|
|
991
|
+
const key = `${method}:${typeKey(elem)}:${typeKey(fnRet)}:${arity}${site}${fastT ? ":split" : ""}${present ? ":present" : ""}`;
|
|
963
992
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
964
993
|
if (existing)
|
|
965
994
|
return existing;
|
|
966
995
|
const name = `%arr.${method}.${lowerer.arrHofHelpers.size}`;
|
|
967
996
|
lowerer.arrHofHelpers.set(key, name);
|
|
968
997
|
const arrT = arrayOf(elem);
|
|
969
|
-
const fnT = funcOf([
|
|
998
|
+
const fnT = funcOf([callbackValueType(lowerer, elem, present), F64, arrT].slice(0, arity), fnRet);
|
|
970
999
|
const visit = [
|
|
971
1000
|
{
|
|
972
1001
|
kind: "if",
|
|
973
|
-
cond: predicateToBoolean(callArrayCallback(arrT, fnT, fnRet, arity,
|
|
1002
|
+
cond: predicateToBoolean(callArrayCallback(arrT, fnT, fnRet, arity, callbackValueRead(lowerer, varRef("a.0", arrT, loc), varRef("i.0", F64, loc), elem, present, loc), loc)),
|
|
974
1003
|
then: [{ kind: "return", value: varRef("i.0", F64, loc), loc }],
|
|
975
1004
|
else_: null,
|
|
976
1005
|
loc,
|
|
@@ -999,16 +1028,16 @@ function findIndexHelper(lowerer, elem, fnRet, arity, last, loc, site = "", fast
|
|
|
999
1028
|
* some: n = a.length; for (...) if (f(a[i])) return true; return false;
|
|
1000
1029
|
* every: n = a.length; for (...) if (!f(a[i])) return false; return true;
|
|
1001
1030
|
*/
|
|
1002
|
-
function someEveryHelper(lowerer, method, elem, fnRet, arity, loc, site = "", fastT = null) {
|
|
1003
|
-
const key = `${method}:${typeKey(elem)}:${typeKey(fnRet)}:${arity}${site}${fastT ? ":split" : ""}`;
|
|
1031
|
+
function someEveryHelper(lowerer, method, elem, fnRet, arity, loc, site = "", fastT = null, present = false) {
|
|
1032
|
+
const key = `${method}:${typeKey(elem)}:${typeKey(fnRet)}:${arity}${site}${fastT ? ":split" : ""}${present ? ":present" : ""}`;
|
|
1004
1033
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
1005
1034
|
if (existing)
|
|
1006
1035
|
return existing;
|
|
1007
1036
|
const name = `%arr.${method}.${lowerer.arrHofHelpers.size}`;
|
|
1008
1037
|
lowerer.arrHofHelpers.set(key, name);
|
|
1009
1038
|
const arrT = arrayOf(elem);
|
|
1010
|
-
const fnT = funcOf([
|
|
1011
|
-
const callF = predicateToBoolean(callArrayCallback(arrT, fnT, fnRet, arity,
|
|
1039
|
+
const fnT = funcOf([callbackValueType(lowerer, elem, present), F64, arrT].slice(0, arity), fnRet);
|
|
1040
|
+
const callF = predicateToBoolean(callArrayCallback(arrT, fnT, fnRet, arity, callbackValueRead(lowerer, varRef("a.0", arrT, loc), varRef("i.0", F64, loc), elem, present, loc), loc));
|
|
1012
1041
|
const body = [
|
|
1013
1042
|
arrayLengthDeclaration(arrT, loc),
|
|
1014
1043
|
countedFor(loc, varRef("n.0", F64, loc), () => [
|
|
@@ -1055,7 +1084,8 @@ export function lowerArrayFlatMapCall(lowerer, call, access, elem) {
|
|
|
1055
1084
|
const argNode = call.arguments[0];
|
|
1056
1085
|
if (!argNode)
|
|
1057
1086
|
lowerer.unsupported("SC1090", call, "this call form"); // tsc-guarded
|
|
1058
|
-
const
|
|
1087
|
+
const present = presentElements(lowerer, call, elem);
|
|
1088
|
+
const { fnArg, arity } = lowerArrayCallback(lowerer, argNode, [callbackValueType(lowerer, elem, present)], arrT);
|
|
1059
1089
|
const fnRet = fnArg.type.ret;
|
|
1060
1090
|
if (fnRet.kind === "dyn" ||
|
|
1061
1091
|
fnRet.kind === "jsval" ||
|
|
@@ -1083,8 +1113,13 @@ export function lowerArrayFlatMapCall(lowerer, call, access, elem) {
|
|
|
1083
1113
|
lowerer.badType(call, lowerer.typeOf(call));
|
|
1084
1114
|
requireProducedArrayElement(lowerer, call, "'.flatMap()'", fnRet);
|
|
1085
1115
|
const outElem = callbackArrayElement(lowerer, call, fnRet);
|
|
1086
|
-
const fast =
|
|
1087
|
-
|
|
1116
|
+
const fast = present
|
|
1117
|
+
? null
|
|
1118
|
+
: lowerFastCallback(lowerer, argNode, [arrayValueType(lowerer, elem)], 0, elem, arrT, {
|
|
1119
|
+
fnArg,
|
|
1120
|
+
arity,
|
|
1121
|
+
});
|
|
1122
|
+
const helper = arrayHofHelper(lowerer, "flatMap", elem, fnRet, arity, loc, outElem, callbackSite(fast ?? fnArg), fast?.type ?? null, present);
|
|
1088
1123
|
return {
|
|
1089
1124
|
kind: "call",
|
|
1090
1125
|
callee: helper,
|
|
@@ -1093,11 +1128,13 @@ export function lowerArrayFlatMapCall(lowerer, call, access, elem) {
|
|
|
1093
1128
|
loc,
|
|
1094
1129
|
};
|
|
1095
1130
|
}
|
|
1096
|
-
const fast =
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1131
|
+
const fast = present
|
|
1132
|
+
? null
|
|
1133
|
+
: lowerFastCallback(lowerer, argNode, [arrayValueType(lowerer, elem)], 0, elem, arrT, {
|
|
1134
|
+
fnArg,
|
|
1135
|
+
arity,
|
|
1136
|
+
});
|
|
1137
|
+
const helper = flatMapHelper(lowerer, elem, fnRet, arity, loc, callbackSite(fast ?? fnArg), fast?.type ?? null, present);
|
|
1101
1138
|
return {
|
|
1102
1139
|
kind: "call",
|
|
1103
1140
|
callee: helper,
|
|
@@ -1115,8 +1152,8 @@ export function lowerArrayFlatMapCall(lowerer, call, access, elem) {
|
|
|
1115
1152
|
* }
|
|
1116
1153
|
* return out;
|
|
1117
1154
|
*/
|
|
1118
|
-
function flatMapHelper(lowerer, elem, fnRet, arity, loc, site = "", fastT = null) {
|
|
1119
|
-
const key = `flatMap:${typeKey(elem)}:${typeKey(fnRet)}:${arity}${site}${fastT ? ":split" : ""}`;
|
|
1155
|
+
function flatMapHelper(lowerer, elem, fnRet, arity, loc, site = "", fastT = null, present = false) {
|
|
1156
|
+
const key = `flatMap:${typeKey(elem)}:${typeKey(fnRet)}:${arity}${site}${fastT ? ":split" : ""}${present ? ":present" : ""}`;
|
|
1120
1157
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
1121
1158
|
if (existing)
|
|
1122
1159
|
return existing;
|
|
@@ -1124,7 +1161,7 @@ function flatMapHelper(lowerer, elem, fnRet, arity, loc, site = "", fastT = null
|
|
|
1124
1161
|
lowerer.arrHofHelpers.set(key, name);
|
|
1125
1162
|
const arrT = arrayOf(elem);
|
|
1126
1163
|
const inner = fnRet.elem;
|
|
1127
|
-
const fnT = funcOf([
|
|
1164
|
+
const fnT = funcOf([callbackValueType(lowerer, elem, present), F64, arrT].slice(0, arity), fnRet);
|
|
1128
1165
|
const innerLoop = {
|
|
1129
1166
|
kind: "for",
|
|
1130
1167
|
init: { kind: "varDecl", localId: "j.0", init: numLit(0, loc), loc },
|
|
@@ -1191,7 +1228,7 @@ function flatMapHelper(lowerer, elem, fnRet, arity, loc, site = "", fastT = null
|
|
|
1191
1228
|
{
|
|
1192
1229
|
kind: "varDecl",
|
|
1193
1230
|
localId: "r.0",
|
|
1194
|
-
init: callArrayCallback(arrT, fnT, fnRet, arity,
|
|
1231
|
+
init: callArrayCallback(arrT, fnT, fnRet, arity, callbackValueRead(lowerer, varRef("a.0", arrT, loc), varRef("i.0", F64, loc), elem, present, loc), loc),
|
|
1195
1232
|
loc,
|
|
1196
1233
|
},
|
|
1197
1234
|
{
|