@scriptc/compiler 0.3.2 → 0.3.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 +1202 -64
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.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.js +24 -10
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +47 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +8 -0
- package/dist/backend/llvm/array-search.js +52 -0
- package/dist/backend/llvm/array-search.js.map +1 -0
- package/dist/backend/llvm/array-search.test.d.ts +1 -0
- package/dist/backend/llvm/array-search.test.js +72 -0
- package/dist/backend/llvm/array-search.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +12 -1
- package/dist/backend/llvm/call-lifetimes.js +41 -11
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +85 -1
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +87 -36
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +6 -1
- package/dist/backend/llvm/common.js +8 -1
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +3 -3
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +44 -1
- package/dist/backend/llvm/dyn.js +251 -36
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +77 -14
- package/dist/backend/llvm/emitter.js +461 -108
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +26 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +52 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +169 -63
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +16 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +57 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +57 -19
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +19 -8
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +28 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +8 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +35 -32
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/inline-unions.d.ts +48 -0
- package/dist/backend/llvm/inline-unions.js +134 -0
- package/dist/backend/llvm/inline-unions.js.map +1 -0
- package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
- package/dist/backend/llvm/inline-unions.test.js +124 -0
- package/dist/backend/llvm/inline-unions.test.js.map +1 -0
- package/dist/backend/llvm/integer-remainder.d.ts +28 -5
- package/dist/backend/llvm/integer-remainder.js +80 -9
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +10 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +255 -29
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +176 -7
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +25 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +2 -2
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +212 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +184 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +7 -3
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +6 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +2 -0
- package/dist/backend/llvm/local-union-storage.js +5 -0
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
- package/dist/backend/llvm/loop-array-borrows.js +93 -13
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +24 -0
- package/dist/backend/llvm/map-number-lookup.js +88 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
- package/dist/backend/llvm/map-number-lookup.test.js +158 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
- package/dist/backend/llvm/map-read-lifetimes.js +90 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +9 -0
- package/dist/backend/llvm/publish.js +25 -4
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +8 -5
- package/dist/backend/llvm/record-results.js +20 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +13 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +19 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +5 -1
- package/dist/backend/llvm/regions.js +24 -10
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +56 -10
- package/dist/backend/llvm/shapes.js +178 -39
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +61 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.js +16 -4
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +11 -0
- package/dist/backend/llvm/walkers.js +106 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +13 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -2
- package/dist/backend/native/executable.js +27 -8
- 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 +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +1 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/publication.js +3 -1
- package/dist/backend/publication.js.map +1 -1
- 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 +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/target-diagnostics.js +11 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +4 -1
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.js +4 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +2 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +1 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +6 -5
- package/dist/diagnostics/diagnostic.js +7 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/comptime-node.js +2 -2
- package/dist/frontend/comptime-node.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +8 -4
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
- package/dist/frontend/lowering/builtins/blob.js +167 -0
- package/dist/frontend/lowering/builtins/blob.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +178 -4
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +526 -121
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
- package/dist/frontend/lowering/builtins/filesystem.js +97 -15
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
- package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
- package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
- package/dist/frontend/lowering/builtins/key-object.js +56 -0
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +44 -11
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
- package/dist/frontend/lowering/builtins/performance.js +340 -5
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +107 -14
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
- package/dist/frontend/lowering/builtins/properties.js +39 -11
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
- package/dist/frontend/lowering/builtins/readline.js +266 -90
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +8 -0
- package/dist/frontend/lowering/builtins/url.js +36 -0
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +1 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +26 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +171 -13
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +3 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.js +6 -5
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
- package/dist/frontend/lowering/containers/array-methods.js +43 -2
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +38 -26
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
- package/dist/frontend/lowering/containers/for-of.js +5 -1
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +77 -12
- package/dist/frontend/lowering/crypto-tables.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +16 -12
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +2 -2
- package/dist/frontend/lowering/generic-functions.js +2 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
- package/dist/frontend/lowering/lower-array-sort.js +561 -191
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +702 -63
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +259 -4
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +118 -12
- 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 +76 -9
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +4 -4
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +77 -52
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
- package/dist/frontend/lowering/lower-event-target.js +362 -0
- package/dist/frontend/lowering/lower-event-target.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.js +2 -2
- package/dist/frontend/lowering/lower-exprs.js +124 -22
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +240 -49
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +14 -3
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
- package/dist/frontend/lowering/lower-namespaces.js +2 -2
- package/dist/frontend/lowering/lower-server.d.ts +3 -0
- package/dist/frontend/lowering/lower-server.js +419 -44
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
- package/dist/frontend/lowering/lower-stdlib.js +10 -3
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
- package/dist/frontend/lowering/lower-stmts.js +69 -14
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +1020 -49
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +45 -5
- package/dist/frontend/lowering/lowerer.js +317 -48
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +2 -2
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
- package/dist/frontend/lowering/runtime-optional-records.js +715 -0
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +11 -3
- package/dist/frontend/lowering/surfaces.js +334 -37
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +1 -1
- package/dist/frontend/npm-static-prune.js +1 -1
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/pipeline.js +6 -4
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -3
- package/dist/frontend/program.js +25 -18
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +15 -1
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/ts7/adapter.js +1 -1
- package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
- package/dist/frontend/ts7/ast-bytes.js +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +1 -1
- package/dist/frontend/ts7/semantic-json.js +1 -1
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/world-check.js +1 -1
- package/dist/frontend/tsc-codes.js +3 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +21 -1
- package/dist/frontend/type-mapper.js +245 -27
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +12 -6
- package/dist/ir/analysis.js +26 -10
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -3
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +115 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +438 -46
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +1 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +84 -17
- package/dist/ir/ir.js +54 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +111 -7
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +1 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +295 -14
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +60 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.d.ts +1 -1
- package/dist/library/fence-eval.js +5 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +11 -4
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-profile.js +13 -13
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +1 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/library/sidecar.js +3 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +4 -2
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +1279 -221
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { dynUndefinedExpr, varRef } from "../../ir/build.js";
|
|
2
|
+
import { eventTargetApiMembers, eventTargetInheritedMember } from "./lower-event-target.js";
|
|
2
3
|
import { BOOL, DYN, F64, DYN_CLASS_PROPERTIES as PROPERTY_BAG, STRING, VOID, canConvertToDyn, canDynCheckTo, isClassOwnEnumerableFieldName, isDynTypedRefType, isUnitType, typeEquals, typeKey, } from "../../ir/ir.js";
|
|
3
4
|
import { streamTypedRefEligible } from "../../ir/analysis.js";
|
|
4
5
|
import { everyStmtList, transformExpr, transformStmtList } from "../../ir/traverse.js";
|
|
@@ -19,6 +20,8 @@ import { CaughtValueDispatch } from "./caught-value-dispatch.js";
|
|
|
19
20
|
import { refreshDescriptorGuards } from "./class-descriptors.js";
|
|
20
21
|
import { ClassConstructionDispatch } from "./class-construction.js";
|
|
21
22
|
import { emitterRooted } from "./lower-event-emitter.js";
|
|
23
|
+
import { protocolArm, protocolFieldArm } from "./class-protocol-dispatch.js";
|
|
24
|
+
import { STREAM_OPERATORS } from "./lower-stream.js";
|
|
22
25
|
const STREAM_METHODS = new Set([
|
|
23
26
|
"on",
|
|
24
27
|
"addListener",
|
|
@@ -465,6 +468,8 @@ export class ClassDynamicDispatch {
|
|
|
465
468
|
typedPropertyBags = new Map();
|
|
466
469
|
readPropertyBags = [];
|
|
467
470
|
generated = new Set();
|
|
471
|
+
/** Protocol dispatch helpers and callee reads whose receivers normalize. */
|
|
472
|
+
protocols = [];
|
|
468
473
|
constructDispatch = null;
|
|
469
474
|
constructors = new Map();
|
|
470
475
|
constructed = new Set();
|
|
@@ -956,8 +961,12 @@ export class ClassDynamicDispatch {
|
|
|
956
961
|
return [];
|
|
957
962
|
if (emitterRooted(lowerer, info) && EMITTER_METHODS.has(method))
|
|
958
963
|
return [info];
|
|
959
|
-
if (info.builtinStream)
|
|
960
|
-
return STREAM_METHODS.has(method)
|
|
964
|
+
if (info.builtinStream) {
|
|
965
|
+
return STREAM_METHODS.has(method) ||
|
|
966
|
+
(STREAM_OPERATORS.has(method) && info.builtinStream !== "w")
|
|
967
|
+
? [info]
|
|
968
|
+
: [];
|
|
969
|
+
}
|
|
961
970
|
return findMethodOn(lowerer, info, method) || findGenericMethodOn(lowerer, info, method)
|
|
962
971
|
? [info]
|
|
963
972
|
: [];
|
|
@@ -1443,6 +1452,9 @@ export class ClassDynamicDispatch {
|
|
|
1443
1452
|
]
|
|
1444
1453
|
: [{ kind: "return", value: fallback, loc }],
|
|
1445
1454
|
loc,
|
|
1455
|
+
...(numericKey && computedRead && !reflect && !dynamicKey
|
|
1456
|
+
? { fastRead: "index" }
|
|
1457
|
+
: {}),
|
|
1446
1458
|
};
|
|
1447
1459
|
if (dynamicKey)
|
|
1448
1460
|
helper.body.unshift({
|
|
@@ -1631,21 +1643,24 @@ export class ClassDynamicDispatch {
|
|
|
1631
1643
|
loc,
|
|
1632
1644
|
}
|
|
1633
1645
|
: instanceBag;
|
|
1646
|
+
// A read compares the bag with the receiver and then reads it:
|
|
1647
|
+
// evaluate it once, so each read retains the receiver once.
|
|
1648
|
+
const bagRead = varRef("bag.0", DYN, loc);
|
|
1634
1649
|
const fallback = read
|
|
1635
1650
|
? {
|
|
1636
1651
|
kind: "ternary",
|
|
1637
1652
|
cond: {
|
|
1638
1653
|
kind: "dynScalarEq",
|
|
1639
|
-
left:
|
|
1654
|
+
left: bagRead,
|
|
1640
1655
|
right: varRef("p.0", DYN, loc),
|
|
1641
1656
|
type: BOOL,
|
|
1642
1657
|
loc,
|
|
1643
1658
|
},
|
|
1644
|
-
then: { ...read, value:
|
|
1659
|
+
then: { ...read, value: bagRead },
|
|
1645
1660
|
else_: {
|
|
1646
1661
|
kind: "libCall",
|
|
1647
1662
|
fn: "dyn.bagGet",
|
|
1648
|
-
args: [
|
|
1663
|
+
args: [bagRead, read.key, varRef("p.0", DYN, loc)],
|
|
1649
1664
|
type: DYN,
|
|
1650
1665
|
loc,
|
|
1651
1666
|
},
|
|
@@ -1657,18 +1672,24 @@ export class ClassDynamicDispatch {
|
|
|
1657
1672
|
name: `%dyn.class.property.${this.properties.size}`,
|
|
1658
1673
|
params,
|
|
1659
1674
|
returnType: write ? VOID : DYN,
|
|
1660
|
-
locals:
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1675
|
+
locals: [
|
|
1676
|
+
...params.map((p) => ({
|
|
1677
|
+
id: p.localId,
|
|
1678
|
+
name: p.name,
|
|
1679
|
+
type: DYN,
|
|
1680
|
+
mutable: false,
|
|
1681
|
+
})),
|
|
1682
|
+
...(read ? [{ id: "bag.0", name: "bag", type: DYN, mutable: false }] : []),
|
|
1683
|
+
],
|
|
1666
1684
|
body: write
|
|
1667
1685
|
? [
|
|
1668
1686
|
{ kind: "exprStmt", expr: fallback, loc },
|
|
1669
1687
|
{ kind: "return", value: null, loc },
|
|
1670
1688
|
]
|
|
1671
|
-
: [
|
|
1689
|
+
: [
|
|
1690
|
+
{ kind: "varDecl", localId: "bag.0", init: bag, loc },
|
|
1691
|
+
{ kind: "return", value: fallback, loc },
|
|
1692
|
+
],
|
|
1672
1693
|
loc,
|
|
1673
1694
|
};
|
|
1674
1695
|
if (!write && name === "toString" && lowerer.classes.has("%Error")) {
|
|
@@ -2079,6 +2100,56 @@ export class ClassDynamicDispatch {
|
|
|
2079
2100
|
changed = true;
|
|
2080
2101
|
}
|
|
2081
2102
|
}
|
|
2103
|
+
for (const dispatch of lowerer.protocolDispatches.values()) {
|
|
2104
|
+
if (!this.generated.has(dispatch.fn)) {
|
|
2105
|
+
this.generated.add(dispatch.fn);
|
|
2106
|
+
this.protocols.push(dispatch.fn, ...(dispatch.probe ? [dispatch.probe] : []));
|
|
2107
|
+
}
|
|
2108
|
+
// Normalized receivers name their exact class, so one key pointer
|
|
2109
|
+
// test selects an arm; any other capsule takes the fallback.
|
|
2110
|
+
for (const plan of this.propertyReceivers(lowerer)) {
|
|
2111
|
+
if (plan.info !== plan.capsule ||
|
|
2112
|
+
dispatch.classes.has(plan.key) ||
|
|
2113
|
+
(!dispatch.field && !candidates(dispatch.method).includes(plan.info)))
|
|
2114
|
+
continue;
|
|
2115
|
+
dispatch.classes.add(plan.key);
|
|
2116
|
+
const loc = dispatch.fn.loc;
|
|
2117
|
+
const type = { kind: "object", className: plan.info.def.name };
|
|
2118
|
+
const receiver = {
|
|
2119
|
+
kind: "dynCheck",
|
|
2120
|
+
value: varRef("p.0", DYN, loc),
|
|
2121
|
+
exact: true,
|
|
2122
|
+
type,
|
|
2123
|
+
loc,
|
|
2124
|
+
};
|
|
2125
|
+
const arm = dispatch.field
|
|
2126
|
+
? protocolFieldArm(lowerer, dispatch, plan.info, receiver)
|
|
2127
|
+
: protocolArm(lowerer, dispatch, plan.info, receiver, this.asyncFree);
|
|
2128
|
+
if (!arm)
|
|
2129
|
+
continue;
|
|
2130
|
+
const condition = () => ({
|
|
2131
|
+
kind: "libCall",
|
|
2132
|
+
fn: "dyn.typedRefKeyIs",
|
|
2133
|
+
args: [
|
|
2134
|
+
varRef("p.0", DYN, loc),
|
|
2135
|
+
{ kind: "strLit", value: typeKey(type), type: STRING, loc },
|
|
2136
|
+
],
|
|
2137
|
+
type: BOOL,
|
|
2138
|
+
loc,
|
|
2139
|
+
});
|
|
2140
|
+
dispatch.fn.body.unshift({ kind: "if", cond: condition(), then: arm, else_: null, loc });
|
|
2141
|
+
// The method of a native arm is never an own property, so reading
|
|
2142
|
+
// it ahead of the arguments observes nothing.
|
|
2143
|
+
dispatch.probe?.body.unshift({
|
|
2144
|
+
kind: "if",
|
|
2145
|
+
cond: condition(),
|
|
2146
|
+
then: [{ kind: "return", value: dynUndefinedExpr(loc), loc }],
|
|
2147
|
+
else_: null,
|
|
2148
|
+
loc,
|
|
2149
|
+
});
|
|
2150
|
+
changed = true;
|
|
2151
|
+
}
|
|
2152
|
+
}
|
|
2082
2153
|
for (const dispatch of this.properties.values()) {
|
|
2083
2154
|
if (!dispatch.write)
|
|
2084
2155
|
for (const name of this.boxedConstructors) {
|
|
@@ -2126,6 +2197,7 @@ export class ClassDynamicDispatch {
|
|
|
2126
2197
|
const { info } = plan;
|
|
2127
2198
|
if (!isClassOwnEnumerableFieldName(dispatch.name) ||
|
|
2128
2199
|
(!(info.builtinStream !== undefined && streamProperty(dispatch.name)) &&
|
|
2200
|
+
!eventTargetInheritedMember(info, dispatch.name) &&
|
|
2129
2201
|
!findMethodOn(lowerer, info, dispatch.name) &&
|
|
2130
2202
|
!findGenericMethodOn(lowerer, info, dispatch.name) &&
|
|
2131
2203
|
dispatch.name !== "constructor" &&
|
|
@@ -2229,7 +2301,9 @@ export class ClassDynamicDispatch {
|
|
|
2229
2301
|
loc,
|
|
2230
2302
|
},
|
|
2231
2303
|
];
|
|
2232
|
-
if (info.builtinStream !== undefined && streamProperty(name)
|
|
2304
|
+
if (((info.builtinStream !== undefined && streamProperty(name)) ||
|
|
2305
|
+
eventTargetInheritedMember(info, name)) &&
|
|
2306
|
+
dispatch.probe)
|
|
2233
2307
|
return [
|
|
2234
2308
|
{
|
|
2235
2309
|
kind: "return",
|
|
@@ -2435,6 +2509,10 @@ export class ClassDynamicDispatch {
|
|
|
2435
2509
|
if (info.builtinStream)
|
|
2436
2510
|
for (const name of [...STREAM_BOOL_PROPERTIES, ...STREAM_NUM_PROPERTIES])
|
|
2437
2511
|
names.add(name);
|
|
2512
|
+
const inherited = eventTargetApiMembers(info);
|
|
2513
|
+
if (inherited)
|
|
2514
|
+
for (const name of inherited)
|
|
2515
|
+
names.add(name);
|
|
2438
2516
|
for (let owner = info; owner; owner = owner.base) {
|
|
2439
2517
|
const methodNames = [...owner.methods.keys()];
|
|
2440
2518
|
if (owner.genericMethods)
|
|
@@ -2827,6 +2905,7 @@ export class ClassDynamicDispatch {
|
|
|
2827
2905
|
...[...this.properties.values()].map((dispatch) => dispatch.fn),
|
|
2828
2906
|
...[...this.computed.values()].map((dispatch) => dispatch.fn),
|
|
2829
2907
|
...[...this.dispatches.values()].flatMap((dispatch) => [dispatch.fn, dispatch.callback]),
|
|
2908
|
+
...this.protocols,
|
|
2830
2909
|
];
|
|
2831
2910
|
}
|
|
2832
2911
|
constructorPropertyBag(lowerer, loc) {
|
|
@@ -3157,6 +3236,48 @@ export class ClassDynamicDispatch {
|
|
|
3157
3236
|
propertyBody(lowerer, dispatch, info, receiver) {
|
|
3158
3237
|
const { name, write } = dispatch;
|
|
3159
3238
|
const loc = dispatch.fn.loc;
|
|
3239
|
+
// The inherited EventTarget/Event members of a subclass instance: the
|
|
3240
|
+
// runtime's capsule view answers the accessors and method values.
|
|
3241
|
+
if (eventTargetInheritedMember(info, name)) {
|
|
3242
|
+
const key = { kind: "strLit", value: name, type: STRING, loc };
|
|
3243
|
+
if (!write)
|
|
3244
|
+
return [
|
|
3245
|
+
{
|
|
3246
|
+
kind: "return",
|
|
3247
|
+
value: {
|
|
3248
|
+
kind: "dynKeyGet",
|
|
3249
|
+
value: lowerer.coerceToExpected(receiver, DYN),
|
|
3250
|
+
key,
|
|
3251
|
+
type: DYN,
|
|
3252
|
+
loc,
|
|
3253
|
+
},
|
|
3254
|
+
loc,
|
|
3255
|
+
},
|
|
3256
|
+
];
|
|
3257
|
+
if (name !== "returnValue" && name !== "cancelBubble")
|
|
3258
|
+
return [
|
|
3259
|
+
{
|
|
3260
|
+
kind: "runtimeFence",
|
|
3261
|
+
code: "SC2020",
|
|
3262
|
+
message: `writing the inherited member '${name}' through an untyped value is not supported`,
|
|
3263
|
+
loc,
|
|
3264
|
+
},
|
|
3265
|
+
];
|
|
3266
|
+
return [
|
|
3267
|
+
{
|
|
3268
|
+
kind: "exprStmt",
|
|
3269
|
+
expr: {
|
|
3270
|
+
kind: "libCall",
|
|
3271
|
+
fn: "event.set",
|
|
3272
|
+
args: [receiver, key, varRef("p.1", DYN, loc)],
|
|
3273
|
+
type: VOID,
|
|
3274
|
+
loc,
|
|
3275
|
+
},
|
|
3276
|
+
loc,
|
|
3277
|
+
},
|
|
3278
|
+
{ kind: "return", value: null, loc },
|
|
3279
|
+
];
|
|
3280
|
+
}
|
|
3160
3281
|
if (info.builtinStream !== undefined && streamProperty(name)) {
|
|
3161
3282
|
if (write)
|
|
3162
3283
|
return [
|
|
@@ -3611,6 +3732,43 @@ export class ClassDynamicDispatch {
|
|
|
3611
3732
|
type: method === "isPaused" ? BOOL : receiver.type,
|
|
3612
3733
|
loc,
|
|
3613
3734
|
});
|
|
3735
|
+
if (STREAM_OPERATORS.has(method) && info.builtinStream && info.builtinStream !== "w") {
|
|
3736
|
+
// The Readable operators over a checked-dynamic receiver: every
|
|
3737
|
+
// argument is already a checked value.
|
|
3738
|
+
const arg = (i) => incoming[i] ?? dynUndefinedExpr(loc);
|
|
3739
|
+
const readableT = { kind: "object", className: "%Readable" };
|
|
3740
|
+
const op = (fn, args, type) => ret({ kind: "libCall", fn: fn, args: [receiver, ...args], type, loc });
|
|
3741
|
+
switch (method) {
|
|
3742
|
+
case "map":
|
|
3743
|
+
return op("readable.opMap", [arg(0), arg(1)], readableT);
|
|
3744
|
+
case "filter":
|
|
3745
|
+
return op("readable.opFilter", [arg(0), arg(1)], readableT);
|
|
3746
|
+
case "flatMap":
|
|
3747
|
+
return op("readable.opFlatMap", [arg(0), arg(1)], readableT);
|
|
3748
|
+
case "drop":
|
|
3749
|
+
return op("readable.opDrop", [arg(0), arg(1)], readableT);
|
|
3750
|
+
case "take":
|
|
3751
|
+
return op("readable.opTake", [arg(0), arg(1)], readableT);
|
|
3752
|
+
case "toArray":
|
|
3753
|
+
return op("readable.opToArray", [arg(0)], { kind: "promise", inner: DYN });
|
|
3754
|
+
case "forEach":
|
|
3755
|
+
return op("readable.opForEach", [arg(0), arg(1)], { kind: "promise", inner: VOID });
|
|
3756
|
+
case "some":
|
|
3757
|
+
return op("readable.opSome", [arg(0), arg(1)], { kind: "promise", inner: BOOL });
|
|
3758
|
+
case "every":
|
|
3759
|
+
return op("readable.opEvery", [arg(0), arg(1)], { kind: "promise", inner: BOOL });
|
|
3760
|
+
case "find":
|
|
3761
|
+
return op("readable.opFind", [arg(0), arg(1)], { kind: "promise", inner: DYN });
|
|
3762
|
+
case "reduce":
|
|
3763
|
+
return op("readable.opReduce", [
|
|
3764
|
+
arg(0),
|
|
3765
|
+
arg(1),
|
|
3766
|
+
{ kind: "boolLit", value: dispatch.source.args.length >= 2, type: BOOL, loc },
|
|
3767
|
+
arg(2),
|
|
3768
|
+
{ kind: "numLit", value: 0, type: F64, loc },
|
|
3769
|
+
], { kind: "promise", inner: DYN });
|
|
3770
|
+
}
|
|
3771
|
+
}
|
|
3614
3772
|
if (method === "destroy" && (!incoming.length || incoming[0]?.kind === "unitLit"))
|
|
3615
3773
|
return ret({
|
|
3616
3774
|
kind: "libCall",
|