@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
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/* Compiled subclasses of EventTarget and Event (`class Bus extends
|
|
2
|
+
* EventTarget`, `class Ping extends Event`).
|
|
3
|
+
*
|
|
4
|
+
* Plain `new EventTarget()` / `new Event()` values are checked-dynamic
|
|
5
|
+
* handles over the runtime engine (scr_event_target.c). A program class
|
|
6
|
+
* extending either one roots at a runtime base class (%EventTarget /
|
|
7
|
+
* %Event) whose instance prefix points at the same engine state: super()
|
|
8
|
+
* creates it, and the backend embeds the prefix like the emitter's. The
|
|
9
|
+
* inherited members lower here for typed receivers. Checked-dynamic
|
|
10
|
+
* capsules of the instances are recognized by the runtime, so the
|
|
11
|
+
* engine's own values are the instances themselves: a target's capsule is
|
|
12
|
+
* its listeners' `this` and its events' target, and an Event subclass
|
|
13
|
+
* instance is what its listeners receive. Property reads, writes and
|
|
14
|
+
* method calls on those capsules reach the inherited members through the
|
|
15
|
+
* class property dispatch (class-dynamic-dispatch.ts) and the runtime's
|
|
16
|
+
* capsule hooks.
|
|
17
|
+
*
|
|
18
|
+
* Subclass members spelling an inherited member are fenced: the engine
|
|
19
|
+
* reads its own state (the event's type, the target's listener lists)
|
|
20
|
+
* and never calls an override.
|
|
21
|
+
*/
|
|
22
|
+
import * as ts from "../ts7/adapter.js";
|
|
23
|
+
import { locOf } from "../program.js";
|
|
24
|
+
import { strLit } from "../../ir/build.js";
|
|
25
|
+
import { BOOL, DYN, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, VOID, } from "../../ir/ir.js";
|
|
26
|
+
const HANDLE_EVENT_READER = "%event.handleEventOf";
|
|
27
|
+
/** A program that can register EventTarget listeners and declares a class
|
|
28
|
+
* with a handleEvent method lifts `%event.handleEventOf(listener) =
|
|
29
|
+
* listener.handleEvent`, a checked-dynamic read the class property
|
|
30
|
+
* dispatch resolves through each class's compiled members (overrides and
|
|
31
|
+
* own properties included). %main installs it for the engine, which reads
|
|
32
|
+
* a capsule listener's handleEvent through it at every dispatch, as Node
|
|
33
|
+
* does; class views alone carry fields, not methods. Called by the
|
|
34
|
+
* EventTarget lowerings. */
|
|
35
|
+
export function noteEventListeners(lowerer, loc) {
|
|
36
|
+
if (lowerer.handleEventReader)
|
|
37
|
+
return;
|
|
38
|
+
const declares = [...lowerer.classes.values()].some((info) => !info.def.runtime && lowerer.findMethodOn(info, "handleEvent") !== null);
|
|
39
|
+
if (!declares)
|
|
40
|
+
return;
|
|
41
|
+
lowerer.handleEventReader = true;
|
|
42
|
+
lowerer.liftedFns.push({
|
|
43
|
+
name: HANDLE_EVENT_READER,
|
|
44
|
+
params: [{ localId: "listener", name: "listener", type: DYN }],
|
|
45
|
+
returnType: DYN,
|
|
46
|
+
locals: [{ id: "listener", name: "listener", type: DYN, mutable: false }],
|
|
47
|
+
body: [
|
|
48
|
+
{
|
|
49
|
+
kind: "return",
|
|
50
|
+
value: {
|
|
51
|
+
kind: "dynKeyGet",
|
|
52
|
+
value: { kind: "varRef", localId: "listener", type: DYN, loc },
|
|
53
|
+
key: strLit("handleEvent", loc),
|
|
54
|
+
type: DYN,
|
|
55
|
+
loc,
|
|
56
|
+
},
|
|
57
|
+
loc,
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
loc,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** %main's installation of the handleEvent reader, when one was lifted. */
|
|
64
|
+
export function handleEventReaderPrelude(lowerer, loc) {
|
|
65
|
+
if (!lowerer.handleEventReader)
|
|
66
|
+
return [];
|
|
67
|
+
const reader = {
|
|
68
|
+
kind: "dynFrom",
|
|
69
|
+
value: {
|
|
70
|
+
kind: "closure",
|
|
71
|
+
fnName: HANDLE_EVENT_READER,
|
|
72
|
+
captures: [],
|
|
73
|
+
type: { kind: "func", params: [DYN], ret: DYN },
|
|
74
|
+
loc,
|
|
75
|
+
},
|
|
76
|
+
type: DYN,
|
|
77
|
+
loc,
|
|
78
|
+
};
|
|
79
|
+
return [
|
|
80
|
+
{
|
|
81
|
+
kind: "exprStmt",
|
|
82
|
+
expr: { kind: "libCall", fn: "event.handleEventReader", args: [reader], type: VOID, loc },
|
|
83
|
+
loc,
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
/** The EventTarget methods compiled subclasses inherit. */
|
|
88
|
+
export const EVENT_TARGET_API_MEMBERS = new Set([
|
|
89
|
+
"addEventListener",
|
|
90
|
+
"removeEventListener",
|
|
91
|
+
"dispatchEvent",
|
|
92
|
+
]);
|
|
93
|
+
/** The Event methods compiled subclasses inherit. */
|
|
94
|
+
const EVENT_API_METHODS = new Set([
|
|
95
|
+
"preventDefault",
|
|
96
|
+
"stopPropagation",
|
|
97
|
+
"stopImmediatePropagation",
|
|
98
|
+
"composedPath",
|
|
99
|
+
"initEvent",
|
|
100
|
+
]);
|
|
101
|
+
/** The Event accessors compiled subclasses inherit (Event.prototype's). */
|
|
102
|
+
const EVENT_API_PROPERTIES = new Set([
|
|
103
|
+
"type",
|
|
104
|
+
"target",
|
|
105
|
+
"srcElement",
|
|
106
|
+
"currentTarget",
|
|
107
|
+
"eventPhase",
|
|
108
|
+
"bubbles",
|
|
109
|
+
"cancelable",
|
|
110
|
+
"composed",
|
|
111
|
+
"defaultPrevented",
|
|
112
|
+
"returnValue",
|
|
113
|
+
"cancelBubble",
|
|
114
|
+
"timeStamp",
|
|
115
|
+
"isTrusted",
|
|
116
|
+
]);
|
|
117
|
+
/** Whether `name` is an inherited member (accessor or method) of
|
|
118
|
+
* `info`'s instances. */
|
|
119
|
+
export function eventTargetInheritedMember(info, name) {
|
|
120
|
+
return eventTargetApiMembers(info)?.has(name) ?? false;
|
|
121
|
+
}
|
|
122
|
+
/** Every inherited Event member name (the subclass-member fence). */
|
|
123
|
+
export const EVENT_API_MEMBERS = new Set([
|
|
124
|
+
...EVENT_API_METHODS,
|
|
125
|
+
...EVENT_API_PROPERTIES,
|
|
126
|
+
]);
|
|
127
|
+
/** Registers the runtime bases as ClassInfos (the emitter story): no
|
|
128
|
+
* decl and no lowerable bodies; super() reaches them through event.*
|
|
129
|
+
* libCalls. `new EventTarget()` takes no arguments; `new Event(type,
|
|
130
|
+
* options)` takes the argument vector as one dyn array, which the runtime
|
|
131
|
+
* validates like Node's constructor. */
|
|
132
|
+
export function registerBuiltinEventTargetClasses(lowerer) {
|
|
133
|
+
const loc = { file: "<builtin>", start: 0, end: 0 };
|
|
134
|
+
const classes = [
|
|
135
|
+
[RUNTIME_EVENT_TARGET_CLASS, "target"],
|
|
136
|
+
[RUNTIME_EVENT_CLASS, "event"],
|
|
137
|
+
];
|
|
138
|
+
for (const [name, kind] of classes) {
|
|
139
|
+
lowerer.classes.set(name, {
|
|
140
|
+
def: { name, runtime: true, fields: [], loc },
|
|
141
|
+
fields: new Map(),
|
|
142
|
+
fieldOrder: [],
|
|
143
|
+
methods: new Map(),
|
|
144
|
+
decl: null,
|
|
145
|
+
builtinEventTarget: kind,
|
|
146
|
+
ctor: null,
|
|
147
|
+
ctorParams: kind === "event" ? [{ type: DYN, mode: "dynRest" }] : [],
|
|
148
|
+
base: null,
|
|
149
|
+
subclasses: [],
|
|
150
|
+
throwingSetters: [],
|
|
151
|
+
staticFields: [],
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** The runtime base an `extends` expression names (the global EventTarget
|
|
156
|
+
* or Event), or null. */
|
|
157
|
+
export function builtinEventTargetBaseOf(lowerer, expr) {
|
|
158
|
+
if (lowerer.isStdlibGlobal(expr, "EventTarget"))
|
|
159
|
+
return lowerer.classes.get(RUNTIME_EVENT_TARGET_CLASS) ?? null;
|
|
160
|
+
if (lowerer.isStdlibGlobal(expr, "Event"))
|
|
161
|
+
return lowerer.classes.get(RUNTIME_EVENT_CLASS) ?? null;
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
/** Which runtime base a class roots at, or null. */
|
|
165
|
+
export function eventTargetRootOf(info) {
|
|
166
|
+
for (let c = info ?? null; c; c = c.base)
|
|
167
|
+
if (c.builtinEventTarget)
|
|
168
|
+
return c.builtinEventTarget;
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
/** The inherited member names of a class rooted at a runtime base. */
|
|
172
|
+
export function eventTargetApiMembers(info) {
|
|
173
|
+
const root = eventTargetRootOf(info);
|
|
174
|
+
return root === "target" ? EVENT_TARGET_API_MEMBERS : root === "event" ? EVENT_API_MEMBERS : null;
|
|
175
|
+
}
|
|
176
|
+
/** Whether `name` is an inherited method of a class rooted at a runtime
|
|
177
|
+
* base. */
|
|
178
|
+
export function eventTargetApiMethod(info, name) {
|
|
179
|
+
const root = eventTargetRootOf(info);
|
|
180
|
+
return root === "target"
|
|
181
|
+
? EVENT_TARGET_API_MEMBERS.has(name)
|
|
182
|
+
: root === "event" && EVENT_API_METHODS.has(name);
|
|
183
|
+
}
|
|
184
|
+
/** super() / super(type, options) into a runtime base. `args` is the
|
|
185
|
+
* completed argument list: nothing for EventTarget, the dyn argument
|
|
186
|
+
* vector for Event. */
|
|
187
|
+
export function eventTargetSuperCall(lowerer, base, thisRef, args, loc) {
|
|
188
|
+
noteEventListeners(lowerer, loc);
|
|
189
|
+
const receiver = lowerer.upcastTo(thisRef, base.def.name);
|
|
190
|
+
const vector = args[0] ?? { kind: "dynArrLit", elems: [], type: DYN, loc };
|
|
191
|
+
// super(type) with a string needs no argument vector.
|
|
192
|
+
const only = vector.kind === "dynArrLit" && vector.elems.length === 1 ? vector.elems[0] : null;
|
|
193
|
+
const expr = base.builtinEventTarget === "target"
|
|
194
|
+
? { kind: "libCall", fn: "event.targetInit", args: [receiver], type: VOID, loc }
|
|
195
|
+
: only?.kind === "dynFrom" && only.value.type.kind === "string"
|
|
196
|
+
? { kind: "libCall", fn: "event.initType", args: [receiver, only.value], type: VOID, loc }
|
|
197
|
+
: { kind: "libCall", fn: "event.init", args: [receiver, vector], type: VOID, loc };
|
|
198
|
+
return { kind: "exprStmt", expr, loc };
|
|
199
|
+
}
|
|
200
|
+
/** The receiver lowered once: a local or `this` is used as is; anything
|
|
201
|
+
* else evaluates into a hidden local first. */
|
|
202
|
+
function singleReceiver(lowerer, receiver, loc) {
|
|
203
|
+
if (receiver.kind === "varRef")
|
|
204
|
+
return { stmts: [], ref: receiver };
|
|
205
|
+
const local = lowerer.declareHiddenLocal("%eventReceiver", receiver.type);
|
|
206
|
+
return {
|
|
207
|
+
stmts: [{ kind: "varDecl", localId: local.id, init: receiver, loc }],
|
|
208
|
+
ref: { kind: "varRef", localId: local.id, type: receiver.type, loc },
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function withReceiver(stmts, result, loc) {
|
|
212
|
+
if (stmts.length === 0)
|
|
213
|
+
return result;
|
|
214
|
+
return { kind: "seqExpr", stmts, result, type: result.type, loc };
|
|
215
|
+
}
|
|
216
|
+
/** The dyn result of an inherited member, converted to the type the
|
|
217
|
+
* checker gives the expression (void and checked-dynamic stay as is). */
|
|
218
|
+
function typedResult(lowerer, node, value) {
|
|
219
|
+
const expected = lowerer.mapTypeOf(lowerer.typeOf(node));
|
|
220
|
+
if (!expected || expected.kind === "void" || expected.kind === "dyn")
|
|
221
|
+
return value;
|
|
222
|
+
return lowerer.coerceToExpected(value, expected);
|
|
223
|
+
}
|
|
224
|
+
/** A call of an inherited EventTarget or Event method on a typed receiver
|
|
225
|
+
* of a class rooted at a runtime base. Listener arguments cross as live
|
|
226
|
+
* values (typed `handleEvent` records keep their identity), the rest as
|
|
227
|
+
* checked-dynamic values. */
|
|
228
|
+
export function lowerEventTargetMethodCall(lowerer, call, access, info, receiverExpr) {
|
|
229
|
+
const member = access.name.text;
|
|
230
|
+
const loc = locOf(call);
|
|
231
|
+
if (call.arguments.some(ts.isSpreadElement)) {
|
|
232
|
+
lowerer.noLowering(`${member} with spread arguments`, call);
|
|
233
|
+
}
|
|
234
|
+
const target = eventTargetRootOf(info) === "target";
|
|
235
|
+
if (target)
|
|
236
|
+
noteEventListeners(lowerer, loc);
|
|
237
|
+
const { stmts, ref } = singleReceiver(lowerer, receiverExpr, loc);
|
|
238
|
+
const args = call.arguments.map((arg, index) => target && index === 1 && member !== "dispatchEvent"
|
|
239
|
+
? lowerer.lowerLiveWebValue(arg)
|
|
240
|
+
: lowerer.lowerExprExpecting(arg, DYN));
|
|
241
|
+
const self = () => lowerer.coerceToExpected(ref, DYN);
|
|
242
|
+
if (target && member === "dispatchEvent" && args.length === 1) {
|
|
243
|
+
const dispatched = {
|
|
244
|
+
kind: "libCall",
|
|
245
|
+
fn: "event.targetDispatch",
|
|
246
|
+
args: [ref, self(), args[0]],
|
|
247
|
+
type: BOOL,
|
|
248
|
+
loc,
|
|
249
|
+
};
|
|
250
|
+
return withReceiver(stmts, dispatched, loc);
|
|
251
|
+
}
|
|
252
|
+
const vector = { kind: "dynArrLit", elems: args, type: DYN, loc };
|
|
253
|
+
const value = target
|
|
254
|
+
? {
|
|
255
|
+
kind: "libCall",
|
|
256
|
+
fn: "event.targetCall",
|
|
257
|
+
args: [ref, self(), strLit(member, loc), vector],
|
|
258
|
+
type: DYN,
|
|
259
|
+
loc,
|
|
260
|
+
}
|
|
261
|
+
: {
|
|
262
|
+
kind: "libCall",
|
|
263
|
+
fn: "event.call",
|
|
264
|
+
args: [ref, strLit(member, loc), vector],
|
|
265
|
+
type: DYN,
|
|
266
|
+
loc,
|
|
267
|
+
};
|
|
268
|
+
return typedResult(lowerer, call, withReceiver(stmts, value, loc));
|
|
269
|
+
}
|
|
270
|
+
/** A read of an inherited member on a typed receiver (an Event accessor,
|
|
271
|
+
* or a method read as a value), or null when the access is not one. */
|
|
272
|
+
export function lowerEventObjectProperty(lowerer, expr) {
|
|
273
|
+
if (expr.questionDotToken && !lowerer.chainHandled.has(expr))
|
|
274
|
+
return null;
|
|
275
|
+
const name = expr.name.text;
|
|
276
|
+
const recvT = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
|
|
277
|
+
if (recvT?.kind !== "object")
|
|
278
|
+
return null;
|
|
279
|
+
const info = lowerer.classes.get(recvT.className);
|
|
280
|
+
if (!eventTargetApiMembers(info)?.has(name))
|
|
281
|
+
return null;
|
|
282
|
+
const loc = locOf(expr);
|
|
283
|
+
const receiver = lowerer.lowerExpr(expr.expression);
|
|
284
|
+
if (receiver.type.kind !== "object")
|
|
285
|
+
return null;
|
|
286
|
+
// Accessors read the event directly; method values come from the
|
|
287
|
+
// capsule view (the prototype's function, run on its `this`).
|
|
288
|
+
const value = EVENT_API_PROPERTIES.has(name)
|
|
289
|
+
? { kind: "libCall", fn: "event.get", args: [receiver, strLit(name, loc)], type: DYN, loc }
|
|
290
|
+
: {
|
|
291
|
+
kind: "dynKeyGet",
|
|
292
|
+
value: lowerer.coerceToExpected(receiver, DYN),
|
|
293
|
+
key: strLit(name, loc),
|
|
294
|
+
type: DYN,
|
|
295
|
+
loc,
|
|
296
|
+
};
|
|
297
|
+
return typedResult(lowerer, expr, value);
|
|
298
|
+
}
|
|
299
|
+
/** Whether `target` is `returnValue` or `cancelBubble` (the two writable
|
|
300
|
+
* accessors) on a typed receiver of an Event subclass. */
|
|
301
|
+
export function isEventWritableAccessor(lowerer, target) {
|
|
302
|
+
const name = target.name.text;
|
|
303
|
+
if (name !== "returnValue" && name !== "cancelBubble")
|
|
304
|
+
return false;
|
|
305
|
+
if (target.questionDotToken)
|
|
306
|
+
return false;
|
|
307
|
+
const recvT = lowerer.mapTypeOf(lowerer.typeOf(target.expression));
|
|
308
|
+
if (recvT?.kind !== "object")
|
|
309
|
+
return false;
|
|
310
|
+
return eventTargetRootOf(lowerer.classes.get(recvT.className)) === "event";
|
|
311
|
+
}
|
|
312
|
+
/** The event.set write of an Event subclass's writable accessor. */
|
|
313
|
+
export function eventAccessorWrite(receiver, name, value, lowerer, loc) {
|
|
314
|
+
return {
|
|
315
|
+
kind: "exprStmt",
|
|
316
|
+
expr: {
|
|
317
|
+
kind: "libCall",
|
|
318
|
+
fn: "event.set",
|
|
319
|
+
args: [receiver, strLit(name, loc), lowerer.coerceToExpected(value, DYN)],
|
|
320
|
+
type: VOID,
|
|
321
|
+
loc,
|
|
322
|
+
},
|
|
323
|
+
loc,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/** The event.get read of an Event subclass's writable accessor, typed as
|
|
327
|
+
* the accessor's boolean. */
|
|
328
|
+
export function eventAccessorRead(receiver, name, lowerer, loc) {
|
|
329
|
+
return lowerer.coerceToExpected({ kind: "libCall", fn: "event.get", args: [receiver, strLit(name, loc)], type: DYN, loc }, BOOL);
|
|
330
|
+
}
|
|
331
|
+
/** `event.returnValue = v` / `event.cancelBubble = v` on a typed receiver
|
|
332
|
+
* of an Event subclass, in statement or value position, or null when the
|
|
333
|
+
* target is not one. The receiver evaluates before the value, and the
|
|
334
|
+
* expression's value is the assigned one, whatever the setter does. */
|
|
335
|
+
export function lowerEventObjectPropertyWrite(lowerer, target, value) {
|
|
336
|
+
if (!isEventWritableAccessor(lowerer, target))
|
|
337
|
+
return null;
|
|
338
|
+
const loc = locOf(target);
|
|
339
|
+
const receiver = lowerer.lowerExpr(target.expression);
|
|
340
|
+
const receiverLocal = lowerer.declareHiddenLocal("%eventReceiver", receiver.type);
|
|
341
|
+
const receiverRef = {
|
|
342
|
+
kind: "varRef",
|
|
343
|
+
localId: receiverLocal.id,
|
|
344
|
+
type: receiver.type,
|
|
345
|
+
loc,
|
|
346
|
+
};
|
|
347
|
+
const assigned = lowerer.lowerExpr(value);
|
|
348
|
+
const local = lowerer.declareHiddenLocal("%eventAssigned", assigned.type);
|
|
349
|
+
const ref = { kind: "varRef", localId: local.id, type: assigned.type, loc };
|
|
350
|
+
return {
|
|
351
|
+
kind: "seqExpr",
|
|
352
|
+
stmts: [
|
|
353
|
+
{ kind: "varDecl", localId: receiverLocal.id, init: receiver, loc },
|
|
354
|
+
{ kind: "varDecl", localId: local.id, init: assigned, loc },
|
|
355
|
+
eventAccessorWrite(receiverRef, target.name.text, ref, lowerer, loc),
|
|
356
|
+
],
|
|
357
|
+
result: ref,
|
|
358
|
+
type: assigned.type,
|
|
359
|
+
loc,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=lower-event-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower-event-target.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-event-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* a later write's value);
|
|
22
22
|
* - writes to the READ-ONLY function members (`length`, `name`,
|
|
23
23
|
* `caller`, `arguments`) fence: strict-mode JS (every module) throws
|
|
24
|
-
* TypeError there, and a global slot would
|
|
24
|
+
* TypeError there, and a global slot write would succeed. WRITABLE
|
|
25
25
|
* Function.prototype members (`apply`, `call`, `bind`, `toString`)
|
|
26
26
|
* shadow through an own property in JS and lower like any other member
|
|
27
27
|
* — reads route to the registry, so the shadowed value is what reads
|
|
@@ -39,7 +39,7 @@ function memberOf(members, key) {
|
|
|
39
39
|
}
|
|
40
40
|
/** Function members JS refuses to assign in strict mode (every module is
|
|
41
41
|
* strict): non-writable own properties of functions plus the poisoned
|
|
42
|
-
* caller/arguments pair. A global slot would
|
|
42
|
+
* caller/arguments pair. A global slot write would succeed where Node
|
|
43
43
|
* throws TypeError, so writes fence by name. */
|
|
44
44
|
const READONLY_FN_MEMBERS = new Set(["length", "name", "caller", "arguments", "prototype"]);
|
|
45
45
|
/** The member key of an assignment target / read site: a spelled or
|