@scriptc/compiler 0.3.1 → 0.3.3
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 +832 -55
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/literals.d.ts +7 -0
- package/dist/backend/literals.js +32 -0
- package/dist/backend/literals.js.map +1 -1
- package/dist/backend/literals.test.js +17 -1
- package/dist/backend/literals.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -4
- package/dist/backend/llvm/alloc.js +63 -25
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +62 -2
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
- package/dist/backend/llvm/appended-array-literals.js +109 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
- package/dist/backend/llvm/appended-array-literals.test.js +90 -0
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
- 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 +11 -1
- package/dist/backend/llvm/call-lifetimes.js +74 -4
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +54 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +97 -38
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +2 -2
- package/dist/backend/llvm/common.d.ts +1 -1
- package/dist/backend/llvm/common.js +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +18 -13
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +15 -2
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +6 -0
- package/dist/backend/llvm/dyn.js +84 -11
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +108 -16
- package/dist/backend/llvm/emitter.js +598 -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 +174 -7
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +11 -0
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
- package/dist/backend/llvm/expr-callbacks.js +96 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +12 -1
- package/dist/backend/llvm/expr-calls.js +133 -54
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +7 -0
- package/dist/backend/llvm/expr-containers.js +80 -22
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +2 -0
- package/dist/backend/llvm/expr-control.d.ts +8 -0
- package/dist/backend/llvm/expr-control.js +103 -69
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +21 -10
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +7 -0
- package/dist/backend/llvm/expr-primitives.js +53 -51
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +19 -5
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +111 -39
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
- package/dist/backend/llvm/expr-stream-bridges.test.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/int32-abi.d.ts +18 -2
- package/dist/backend/llvm/int32-abi.js +23 -2
- package/dist/backend/llvm/int32-abi.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +75 -1
- package/dist/backend/llvm/int32-abi.test.js.map +1 -1
- 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/lib-dispatch.js +170 -28
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +181 -5
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +9 -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.js +208 -9
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +12 -6
- 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 +26 -2
- package/dist/backend/llvm/local-union-storage.js +132 -12
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +107 -1
- 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 +20 -0
- package/dist/backend/llvm/map-number-lookup.js +66 -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 +102 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +3 -1
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +29 -0
- package/dist/backend/llvm/record-results.js +260 -0
- package/dist/backend/llvm/record-results.js.map +1 -0
- package/dist/backend/llvm/reference-effects.js +15 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +29 -9
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +68 -0
- package/dist/backend/llvm/regions.js +314 -0
- package/dist/backend/llvm/regions.js.map +1 -0
- package/dist/backend/llvm/regions.test.d.ts +1 -0
- package/dist/backend/llvm/regions.test.js +173 -0
- package/dist/backend/llvm/regions.test.js.map +1 -0
- 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 +86 -13
- package/dist/backend/llvm/shapes.js +208 -54
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +68 -9
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +1 -1
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +29 -0
- package/dist/backend/llvm/stack-objects.js +142 -0
- package/dist/backend/llvm/stack-objects.js.map +1 -0
- package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
- package/dist/backend/llvm/stack-objects.test.js +255 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -0
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +89 -9
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.js +5 -4
- package/dist/backend/llvm/switch-dispatch.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +13 -0
- package/dist/backend/llvm/walkers.js +108 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +10 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +7 -2
- package/dist/backend/native/executable.js +28 -2
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +3 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +1 -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/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 +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.js +17 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +16 -0
- package/dist/backend/target-diagnostics.test.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.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 +12 -0
- package/dist/frontend/experimental-import.js +63 -0
- package/dist/frontend/experimental-import.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/builtin-calls.d.ts +6 -1
- package/dist/frontend/lowering/builtin-calls.js +36 -0
- package/dist/frontend/lowering/builtin-calls.js.map +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.js +3 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/console.d.ts +16 -6
- package/dist/frontend/lowering/builtins/console.js +33 -9
- package/dist/frontend/lowering/builtins/console.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +415 -120
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +20 -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/json.d.ts +2 -2
- package/dist/frontend/lowering/builtins/json.js +13 -4
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- 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 +60 -12
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +17 -0
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
- package/dist/frontend/lowering/builtins/operating-system.js +361 -1
- package/dist/frontend/lowering/builtins/operating-system.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 +122 -17
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +109 -2
- package/dist/frontend/lowering/builtins/promises.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/text-codecs.d.ts +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.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 +20 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
- package/dist/frontend/lowering/checked-promise-all.js +52 -6
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +8 -3
- package/dist/frontend/lowering/class-dynamic-dispatch.js +159 -32
- 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 +33 -6
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +8 -4
- package/dist/frontend/lowering/containers/array-construction.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/array-pipelines.js +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.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/containers/string-and-regexp.js +91 -0
- package/dist/frontend/lowering/containers/string-and-regexp.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/cycle-initialization.d.ts +18 -2
- package/dist/frontend/lowering/cycle-initialization.js +166 -12
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.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 +21 -68
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +231 -10
- package/dist/frontend/lowering/generator-delegation.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/lifetime-regions.d.ts +11 -0
- package/dist/frontend/lowering/lifetime-regions.js +216 -0
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +40 -3
- package/dist/frontend/lowering/lower-array-sort.js +661 -194
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +103 -4
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +2 -2
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +248 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +173 -111
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +12 -5
- package/dist/frontend/lowering/lower-classes.js +156 -11
- 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-console.d.ts +13 -0
- package/dist/frontend/lowering/lower-console.js +460 -4
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
- package/dist/frontend/lowering/lower-event-emitter.js +124 -38
- package/dist/frontend/lowering/lower-event-emitter.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 +247 -42
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +15 -7
- package/dist/frontend/lowering/lower-generators.js +183 -99
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
- package/dist/frontend/lowering/lower-inspect.js +247 -28
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +27 -17
- 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.js +39 -14
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +11 -1
- package/dist/frontend/lowering/lower-stdlib.js +45 -4
- 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 +112 -23
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +234 -22
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +45 -6
- package/dist/frontend/lowering/lowerer.js +360 -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/regex-span-reads.d.ts +12 -0
- package/dist/frontend/lowering/regex-span-reads.js +164 -0
- package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
- 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 +7 -3
- package/dist/frontend/lowering/surfaces.js +385 -32
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
- package/dist/frontend/lowering/var-hoisting.js +261 -0
- package/dist/frontend/lowering/var-hoisting.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 +6 -5
- package/dist/frontend/program.js +42 -22
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +13 -0
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +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 +2 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +28 -1
- package/dist/frontend/type-mapper.js +288 -30
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +6 -4
- 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 +108 -2
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +436 -53
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/function-references.test.js +1 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-slots.js +2 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +2 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +129 -36
- package/dist/ir/ir.js +42 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +116 -5
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.js +1 -2
- package/dist/ir/scalar-records.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 +250 -34
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +125 -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/prepare.js +3 -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 +537 -142
|
@@ -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,7 @@ 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";
|
|
22
24
|
const STREAM_METHODS = new Set([
|
|
23
25
|
"on",
|
|
24
26
|
"addListener",
|
|
@@ -222,8 +224,10 @@ export function classPropertiesHelper(lowerer, loc, readOnly = false) {
|
|
|
222
224
|
lowerer.liftedFns.push(helper);
|
|
223
225
|
return helper;
|
|
224
226
|
}
|
|
225
|
-
/** A for-in presence recheck
|
|
226
|
-
* value conversion or a dispatch branch for every possible member name.
|
|
227
|
+
/** A for-in presence recheck asks the live property table first, avoiding
|
|
228
|
+
* value conversion or a dispatch branch for every possible member name.
|
|
229
|
+
* Declared fields of a compiled class live in its native layout rather
|
|
230
|
+
* than that table, so a miss rechecks the instance itself. */
|
|
227
231
|
export function classForInHasKey(lowerer, value, key, loc) {
|
|
228
232
|
const name = "%dyn.class.forInHasKey";
|
|
229
233
|
if (!lowerer.liftedFns.some((fn) => fn.name === name)) {
|
|
@@ -242,18 +246,31 @@ export function classForInHasKey(lowerer, value, key, loc) {
|
|
|
242
246
|
{
|
|
243
247
|
kind: "return",
|
|
244
248
|
value: {
|
|
245
|
-
kind: "
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
249
|
+
kind: "logical",
|
|
250
|
+
op: "||",
|
|
251
|
+
left: {
|
|
252
|
+
kind: "libCall",
|
|
253
|
+
fn: "dyn.hasKey",
|
|
254
|
+
args: [
|
|
255
|
+
{
|
|
256
|
+
kind: "call",
|
|
257
|
+
callee: classPropertiesHelper(lowerer, loc).name,
|
|
258
|
+
args: [varRef("value", DYN, loc)],
|
|
259
|
+
type: DYN,
|
|
260
|
+
loc,
|
|
261
|
+
},
|
|
262
|
+
varRef("key", STRING, loc),
|
|
263
|
+
],
|
|
264
|
+
type: BOOL,
|
|
265
|
+
loc,
|
|
266
|
+
},
|
|
267
|
+
right: {
|
|
268
|
+
kind: "libCall",
|
|
269
|
+
fn: "dyn.hasKey",
|
|
270
|
+
args: [varRef("value", DYN, loc), varRef("key", STRING, loc)],
|
|
271
|
+
type: BOOL,
|
|
272
|
+
loc,
|
|
273
|
+
},
|
|
257
274
|
type: BOOL,
|
|
258
275
|
loc,
|
|
259
276
|
},
|
|
@@ -450,6 +467,8 @@ export class ClassDynamicDispatch {
|
|
|
450
467
|
typedPropertyBags = new Map();
|
|
451
468
|
readPropertyBags = [];
|
|
452
469
|
generated = new Set();
|
|
470
|
+
/** Protocol dispatch helpers and callee reads whose receivers normalize. */
|
|
471
|
+
protocols = [];
|
|
453
472
|
constructDispatch = null;
|
|
454
473
|
constructors = new Map();
|
|
455
474
|
constructed = new Set();
|
|
@@ -463,7 +482,8 @@ export class ClassDynamicDispatch {
|
|
|
463
482
|
prototypeIdentityClasses = new Set();
|
|
464
483
|
instancePrototypes = new Map();
|
|
465
484
|
checkedCasts = new Map();
|
|
466
|
-
|
|
485
|
+
/** The for-in key helpers, by libCall (dyn and native string[] keys). */
|
|
486
|
+
enumerations = new Map();
|
|
467
487
|
enumerationClasses = new Set();
|
|
468
488
|
process(lowerer, functions) {
|
|
469
489
|
// Dispatch tables grow between worklist waves. Keep their normalization
|
|
@@ -559,6 +579,7 @@ export class ClassDynamicDispatch {
|
|
|
559
579
|
expr.fn === "dyn.toString" ||
|
|
560
580
|
expr.fn === "dyn.stringConstructor" ||
|
|
561
581
|
expr.fn === "dyn.forInKeys" ||
|
|
582
|
+
expr.fn === "dyn.forInKeyStrings" ||
|
|
562
583
|
expr.fn === "dyn.hasKeyComputed" ||
|
|
563
584
|
expr.fn === "dyn.hasOwnComputed" ||
|
|
564
585
|
expr.fn === "dyn.propertyIsEnumerableComputed" ||
|
|
@@ -1198,27 +1219,32 @@ export class ClassDynamicDispatch {
|
|
|
1198
1219
|
loc: expr.loc,
|
|
1199
1220
|
};
|
|
1200
1221
|
}
|
|
1201
|
-
if (expr.kind === "libCall" &&
|
|
1202
|
-
|
|
1222
|
+
if (expr.kind === "libCall" &&
|
|
1223
|
+
(expr.fn === "dyn.forInKeys" || expr.fn === "dyn.forInKeyStrings")) {
|
|
1224
|
+
let enumeration = this.enumerations.get(expr.fn);
|
|
1225
|
+
if (!enumeration) {
|
|
1203
1226
|
const loc = expr.loc;
|
|
1204
1227
|
const value = varRef("p.0", DYN, loc);
|
|
1205
|
-
|
|
1206
|
-
name: "
|
|
1228
|
+
enumeration = {
|
|
1229
|
+
name: expr.fn === "dyn.forInKeys"
|
|
1230
|
+
? "%dyn.class.forInKeys"
|
|
1231
|
+
: "%dyn.class.forInKeyStrings",
|
|
1207
1232
|
params: [{ localId: "p.0", name: "value", type: DYN }],
|
|
1208
|
-
returnType:
|
|
1233
|
+
returnType: expr.type,
|
|
1209
1234
|
locals: [{ id: "p.0", name: "value", type: DYN, mutable: false }],
|
|
1210
1235
|
body: [{ kind: "return", value: { ...expr, args: [value] }, loc }],
|
|
1211
1236
|
loc,
|
|
1212
1237
|
};
|
|
1213
|
-
this.
|
|
1214
|
-
|
|
1238
|
+
this.enumerations.set(expr.fn, enumeration);
|
|
1239
|
+
this.generated.add(enumeration);
|
|
1240
|
+
lowerer.liftedFns.push(enumeration);
|
|
1215
1241
|
changed = true;
|
|
1216
1242
|
}
|
|
1217
1243
|
return {
|
|
1218
1244
|
kind: "call",
|
|
1219
|
-
callee:
|
|
1245
|
+
callee: enumeration.name,
|
|
1220
1246
|
args: expr.args,
|
|
1221
|
-
type:
|
|
1247
|
+
type: expr.type,
|
|
1222
1248
|
loc: expr.loc,
|
|
1223
1249
|
};
|
|
1224
1250
|
}
|
|
@@ -1384,7 +1410,7 @@ export class ClassDynamicDispatch {
|
|
|
1384
1410
|
? {
|
|
1385
1411
|
...computedProbe,
|
|
1386
1412
|
fn: probe === "in"
|
|
1387
|
-
? "dyn.
|
|
1413
|
+
? "dyn.in"
|
|
1388
1414
|
: probe === "own"
|
|
1389
1415
|
? "dyn.hasOwn"
|
|
1390
1416
|
: "dyn.propertyIsEnumerable",
|
|
@@ -2057,6 +2083,56 @@ export class ClassDynamicDispatch {
|
|
|
2057
2083
|
changed = true;
|
|
2058
2084
|
}
|
|
2059
2085
|
}
|
|
2086
|
+
for (const dispatch of lowerer.protocolDispatches.values()) {
|
|
2087
|
+
if (!this.generated.has(dispatch.fn)) {
|
|
2088
|
+
this.generated.add(dispatch.fn);
|
|
2089
|
+
this.protocols.push(dispatch.fn, ...(dispatch.probe ? [dispatch.probe] : []));
|
|
2090
|
+
}
|
|
2091
|
+
// Normalized receivers name their exact class, so one key pointer
|
|
2092
|
+
// test selects an arm; any other capsule takes the fallback.
|
|
2093
|
+
for (const plan of this.propertyReceivers(lowerer)) {
|
|
2094
|
+
if (plan.info !== plan.capsule ||
|
|
2095
|
+
dispatch.classes.has(plan.key) ||
|
|
2096
|
+
(!dispatch.field && !candidates(dispatch.method).includes(plan.info)))
|
|
2097
|
+
continue;
|
|
2098
|
+
dispatch.classes.add(plan.key);
|
|
2099
|
+
const loc = dispatch.fn.loc;
|
|
2100
|
+
const type = { kind: "object", className: plan.info.def.name };
|
|
2101
|
+
const receiver = {
|
|
2102
|
+
kind: "dynCheck",
|
|
2103
|
+
value: varRef("p.0", DYN, loc),
|
|
2104
|
+
exact: true,
|
|
2105
|
+
type,
|
|
2106
|
+
loc,
|
|
2107
|
+
};
|
|
2108
|
+
const arm = dispatch.field
|
|
2109
|
+
? protocolFieldArm(lowerer, dispatch, plan.info, receiver)
|
|
2110
|
+
: protocolArm(lowerer, dispatch, plan.info, receiver, this.asyncFree);
|
|
2111
|
+
if (!arm)
|
|
2112
|
+
continue;
|
|
2113
|
+
const condition = () => ({
|
|
2114
|
+
kind: "libCall",
|
|
2115
|
+
fn: "dyn.typedRefKeyIs",
|
|
2116
|
+
args: [
|
|
2117
|
+
varRef("p.0", DYN, loc),
|
|
2118
|
+
{ kind: "strLit", value: typeKey(type), type: STRING, loc },
|
|
2119
|
+
],
|
|
2120
|
+
type: BOOL,
|
|
2121
|
+
loc,
|
|
2122
|
+
});
|
|
2123
|
+
dispatch.fn.body.unshift({ kind: "if", cond: condition(), then: arm, else_: null, loc });
|
|
2124
|
+
// The method of a native arm is never an own property, so reading
|
|
2125
|
+
// it ahead of the arguments observes nothing.
|
|
2126
|
+
dispatch.probe?.body.unshift({
|
|
2127
|
+
kind: "if",
|
|
2128
|
+
cond: condition(),
|
|
2129
|
+
then: [{ kind: "return", value: dynUndefinedExpr(loc), loc }],
|
|
2130
|
+
else_: null,
|
|
2131
|
+
loc,
|
|
2132
|
+
});
|
|
2133
|
+
changed = true;
|
|
2134
|
+
}
|
|
2135
|
+
}
|
|
2060
2136
|
for (const dispatch of this.properties.values()) {
|
|
2061
2137
|
if (!dispatch.write)
|
|
2062
2138
|
for (const name of this.boxedConstructors) {
|
|
@@ -2104,6 +2180,7 @@ export class ClassDynamicDispatch {
|
|
|
2104
2180
|
const { info } = plan;
|
|
2105
2181
|
if (!isClassOwnEnumerableFieldName(dispatch.name) ||
|
|
2106
2182
|
(!(info.builtinStream !== undefined && streamProperty(dispatch.name)) &&
|
|
2183
|
+
!eventTargetInheritedMember(info, dispatch.name) &&
|
|
2107
2184
|
!findMethodOn(lowerer, info, dispatch.name) &&
|
|
2108
2185
|
!findGenericMethodOn(lowerer, info, dispatch.name) &&
|
|
2109
2186
|
dispatch.name !== "constructor" &&
|
|
@@ -2207,7 +2284,9 @@ export class ClassDynamicDispatch {
|
|
|
2207
2284
|
loc,
|
|
2208
2285
|
},
|
|
2209
2286
|
];
|
|
2210
|
-
if (info.builtinStream !== undefined && streamProperty(name)
|
|
2287
|
+
if (((info.builtinStream !== undefined && streamProperty(name)) ||
|
|
2288
|
+
eventTargetInheritedMember(info, name)) &&
|
|
2289
|
+
dispatch.probe)
|
|
2211
2290
|
return [
|
|
2212
2291
|
{
|
|
2213
2292
|
kind: "return",
|
|
@@ -2413,6 +2492,10 @@ export class ClassDynamicDispatch {
|
|
|
2413
2492
|
if (info.builtinStream)
|
|
2414
2493
|
for (const name of [...STREAM_BOOL_PROPERTIES, ...STREAM_NUM_PROPERTIES])
|
|
2415
2494
|
names.add(name);
|
|
2495
|
+
const inherited = eventTargetApiMembers(info);
|
|
2496
|
+
if (inherited)
|
|
2497
|
+
for (const name of inherited)
|
|
2498
|
+
names.add(name);
|
|
2416
2499
|
for (let owner = info; owner; owner = owner.base) {
|
|
2417
2500
|
const methodNames = [...owner.methods.keys()];
|
|
2418
2501
|
if (owner.genericMethods)
|
|
@@ -2508,21 +2591,22 @@ export class ClassDynamicDispatch {
|
|
|
2508
2591
|
changed = true;
|
|
2509
2592
|
}
|
|
2510
2593
|
}
|
|
2511
|
-
|
|
2594
|
+
for (const [fn, enumeration] of this.enumerations)
|
|
2512
2595
|
for (const plan of this.propertyReceivers(lowerer, false, false)) {
|
|
2513
|
-
|
|
2596
|
+
const classKey = `${fn}:${plan.key}`;
|
|
2597
|
+
if (!plan.info.def.tracksOwnFields || this.enumerationClasses.has(classKey))
|
|
2514
2598
|
continue;
|
|
2515
|
-
this.enumerationClasses.add(
|
|
2516
|
-
const loc =
|
|
2599
|
+
this.enumerationClasses.add(classKey);
|
|
2600
|
+
const loc = enumeration.loc;
|
|
2517
2601
|
const { condition } = this.propertyReceiver(plan, loc);
|
|
2518
2602
|
const bag = this.readPropertyBagOrEmpty(lowerer, varRef("p.0", DYN, loc), loc);
|
|
2519
|
-
|
|
2603
|
+
enumeration.body.unshift({
|
|
2520
2604
|
kind: "if",
|
|
2521
2605
|
cond: condition,
|
|
2522
2606
|
then: [
|
|
2523
2607
|
{
|
|
2524
2608
|
kind: "return",
|
|
2525
|
-
value: { kind: "libCall", fn
|
|
2609
|
+
value: { kind: "libCall", fn, args: [bag], type: enumeration.returnType, loc },
|
|
2526
2610
|
loc,
|
|
2527
2611
|
},
|
|
2528
2612
|
],
|
|
@@ -2804,6 +2888,7 @@ export class ClassDynamicDispatch {
|
|
|
2804
2888
|
...[...this.properties.values()].map((dispatch) => dispatch.fn),
|
|
2805
2889
|
...[...this.computed.values()].map((dispatch) => dispatch.fn),
|
|
2806
2890
|
...[...this.dispatches.values()].flatMap((dispatch) => [dispatch.fn, dispatch.callback]),
|
|
2891
|
+
...this.protocols,
|
|
2807
2892
|
];
|
|
2808
2893
|
}
|
|
2809
2894
|
constructorPropertyBag(lowerer, loc) {
|
|
@@ -3134,6 +3219,48 @@ export class ClassDynamicDispatch {
|
|
|
3134
3219
|
propertyBody(lowerer, dispatch, info, receiver) {
|
|
3135
3220
|
const { name, write } = dispatch;
|
|
3136
3221
|
const loc = dispatch.fn.loc;
|
|
3222
|
+
// The inherited EventTarget/Event members of a subclass instance: the
|
|
3223
|
+
// runtime's capsule view answers the accessors and method values.
|
|
3224
|
+
if (eventTargetInheritedMember(info, name)) {
|
|
3225
|
+
const key = { kind: "strLit", value: name, type: STRING, loc };
|
|
3226
|
+
if (!write)
|
|
3227
|
+
return [
|
|
3228
|
+
{
|
|
3229
|
+
kind: "return",
|
|
3230
|
+
value: {
|
|
3231
|
+
kind: "dynKeyGet",
|
|
3232
|
+
value: lowerer.coerceToExpected(receiver, DYN),
|
|
3233
|
+
key,
|
|
3234
|
+
type: DYN,
|
|
3235
|
+
loc,
|
|
3236
|
+
},
|
|
3237
|
+
loc,
|
|
3238
|
+
},
|
|
3239
|
+
];
|
|
3240
|
+
if (name !== "returnValue" && name !== "cancelBubble")
|
|
3241
|
+
return [
|
|
3242
|
+
{
|
|
3243
|
+
kind: "runtimeFence",
|
|
3244
|
+
code: "SC2020",
|
|
3245
|
+
message: `writing the inherited member '${name}' through an untyped value is not supported`,
|
|
3246
|
+
loc,
|
|
3247
|
+
},
|
|
3248
|
+
];
|
|
3249
|
+
return [
|
|
3250
|
+
{
|
|
3251
|
+
kind: "exprStmt",
|
|
3252
|
+
expr: {
|
|
3253
|
+
kind: "libCall",
|
|
3254
|
+
fn: "event.set",
|
|
3255
|
+
args: [receiver, key, varRef("p.1", DYN, loc)],
|
|
3256
|
+
type: VOID,
|
|
3257
|
+
loc,
|
|
3258
|
+
},
|
|
3259
|
+
loc,
|
|
3260
|
+
},
|
|
3261
|
+
{ kind: "return", value: null, loc },
|
|
3262
|
+
];
|
|
3263
|
+
}
|
|
3137
3264
|
if (info.builtinStream !== undefined && streamProperty(name)) {
|
|
3138
3265
|
if (write)
|
|
3139
3266
|
return [
|