@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
|
@@ -33,6 +33,12 @@ export interface ComputedEventPattern {
|
|
|
33
33
|
suffix: string;
|
|
34
34
|
listener: boolean;
|
|
35
35
|
}
|
|
36
|
+
/** The compile-time key of `events.errorMonitor`. Node keys it by a
|
|
37
|
+
* symbol, so no string event name may share it: literal names are keyed
|
|
38
|
+
* through literalEventKey, which never yields this key, and the runtime
|
|
39
|
+
* receives the emitter.errorMonitor key object (matched by identity)
|
|
40
|
+
* instead of any string. */
|
|
41
|
+
export declare const ERROR_MONITOR_EVENT = "\0events.errorMonitor";
|
|
36
42
|
/** `recv.<member>(...)` over an emitter-rooted receiver — the whole
|
|
37
43
|
* EventEmitter method surface. Returns null only for members this spoke
|
|
38
44
|
* does not own (the caller falls through to its own fences).
|
|
@@ -49,6 +49,7 @@ import { arrayOf, BOOL, canBoxFuncIntoDyn, canConvertToDyn, DYN, F64, isUnitType
|
|
|
49
49
|
import { STREAM_FORCED_EVENT_NAMES, streamForcedTuple, streamSidesOf } from "./lower-stream.js";
|
|
50
50
|
import { boolLit, strLit, varRef } from "../../ir/build.js";
|
|
51
51
|
import { tryLowerExpression } from "./expressions/try-lower-expression.js";
|
|
52
|
+
import { lowerAddAbortListener } from "./builtin-calls.js";
|
|
52
53
|
/** True when the class descends from (or is) the runtime emitter. */
|
|
53
54
|
export function emitterRooted(lowerer, info) {
|
|
54
55
|
for (let c = info ?? null; c; c = c.base) {
|
|
@@ -122,14 +123,17 @@ function emitterEvents(lowerer) {
|
|
|
122
123
|
}));
|
|
123
124
|
return sig;
|
|
124
125
|
};
|
|
125
|
-
// The
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
126
|
+
// The forced tuples (see the header comment); errorMonitor listeners
|
|
127
|
+
// receive the 'error' payload.
|
|
128
|
+
for (const name of ["error", ERROR_MONITOR_EVENT]) {
|
|
129
|
+
table.set(name, {
|
|
130
|
+
tuple: [{ kind: "object", className: "%Error" }],
|
|
131
|
+
fromEmit: true,
|
|
132
|
+
conflict: null,
|
|
133
|
+
dynListener: false,
|
|
134
|
+
hasListener: false,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
133
137
|
table.set("newListener", {
|
|
134
138
|
tuple: [STRING],
|
|
135
139
|
fromEmit: true,
|
|
@@ -241,7 +245,12 @@ function emitterEvents(lowerer) {
|
|
|
241
245
|
const info = scannedEmitterInfo(lowerer, recvT);
|
|
242
246
|
if (!info)
|
|
243
247
|
return;
|
|
244
|
-
|
|
248
|
+
const literal = isErrorMonitorRef(lowerer, arg0)
|
|
249
|
+
? ERROR_MONITOR_EVENT
|
|
250
|
+
: nameT.isStringLiteralType()
|
|
251
|
+
? literalEventKey(nameT.value)
|
|
252
|
+
: null;
|
|
253
|
+
if (literal === null) {
|
|
245
254
|
const pattern = computedEventPatternOf(lowerer, arg0);
|
|
246
255
|
if (pattern &&
|
|
247
256
|
streamSidesOf(lowerer, info) === null &&
|
|
@@ -250,8 +259,8 @@ function emitterEvents(lowerer) {
|
|
|
250
259
|
}
|
|
251
260
|
return;
|
|
252
261
|
}
|
|
253
|
-
const name =
|
|
254
|
-
if (META_EVENTS.has(name) || name === "error")
|
|
262
|
+
const name = literal;
|
|
263
|
+
if (META_EVENTS.has(name) || name === "error" || name === ERROR_MONITOR_EVENT)
|
|
255
264
|
return; // forced tuples
|
|
256
265
|
// Stream receivers' runtime-emitted events carry PER-BASE forced
|
|
257
266
|
// tuples (lower-stream.ts) — their sites never join the program-
|
|
@@ -304,13 +313,78 @@ function computedPatternsOverlap(left, right) {
|
|
|
304
313
|
return ((left.prefix.startsWith(right.prefix) || right.prefix.startsWith(left.prefix)) &&
|
|
305
314
|
(left.suffix.endsWith(right.suffix) || right.suffix.endsWith(left.suffix)));
|
|
306
315
|
}
|
|
307
|
-
/** The compile-time
|
|
308
|
-
*
|
|
309
|
-
*
|
|
310
|
-
|
|
316
|
+
/** The compile-time key of `events.errorMonitor`. Node keys it by a
|
|
317
|
+
* symbol, so no string event name may share it: literal names are keyed
|
|
318
|
+
* through literalEventKey, which never yields this key, and the runtime
|
|
319
|
+
* receives the emitter.errorMonitor key object (matched by identity)
|
|
320
|
+
* instead of any string. */
|
|
321
|
+
export const ERROR_MONITOR_EVENT = "\u0000events.errorMonitor";
|
|
322
|
+
/** A string event name's compile-time key: the name itself, with one more
|
|
323
|
+
* leading NUL when it already starts with one, so a key of one NUL and
|
|
324
|
+
* then a non-NUL (ERROR_MONITOR_EVENT) belongs to no string. */
|
|
325
|
+
function literalEventKey(name) {
|
|
326
|
+
return name.startsWith("\u0000") ? `\u0000${name}` : name;
|
|
327
|
+
}
|
|
328
|
+
/** The string name of a key that is not ERROR_MONITOR_EVENT. */
|
|
329
|
+
function eventKeyName(key) {
|
|
330
|
+
return key.startsWith("\u0000") ? key.slice(1) : key;
|
|
331
|
+
}
|
|
332
|
+
/** The runtime event-name argument for a compile-time key. */
|
|
333
|
+
function eventNameExpr(key, loc) {
|
|
334
|
+
if (key === ERROR_MONITOR_EVENT) {
|
|
335
|
+
return { kind: "libCall", fn: "emitter.errorMonitor", args: [], type: STRING, loc };
|
|
336
|
+
}
|
|
337
|
+
return strLit(eventKeyName(key), loc);
|
|
338
|
+
}
|
|
339
|
+
/** `errorMonitor` / `EventEmitter.errorMonitor` / `events.errorMonitor`:
|
|
340
|
+
* the events module's unique symbol, by declaration provenance. */
|
|
341
|
+
function isErrorMonitorRef(lowerer, arg) {
|
|
342
|
+
const isMonitorType = (t) => {
|
|
343
|
+
if (!(t.flags & ts.TypeFlags.UniqueESSymbol))
|
|
344
|
+
return false;
|
|
345
|
+
const symbol = t.getSymbol();
|
|
346
|
+
return symbol?.name === "errorMonitor" && lowerer.isStdlibSymbol(symbol);
|
|
347
|
+
};
|
|
348
|
+
// The unique symbol TYPE names its declaration through any alias.
|
|
349
|
+
if (isMonitorType(lowerer.typeOf(arg)))
|
|
350
|
+
return true;
|
|
351
|
+
// A const destructuring (`const { errorMonitor } = events`) widens the
|
|
352
|
+
// binding's type in JavaScript; its source property still names it.
|
|
353
|
+
if (!ts.isIdentifier(arg))
|
|
354
|
+
return false;
|
|
355
|
+
const symbol = lowerer.resolveValueSymbol(arg);
|
|
356
|
+
const declaration = symbol ? lowerer.checker.valueDeclarationOf(symbol) : undefined;
|
|
357
|
+
if (!declaration || !ts.isBindingElement(declaration))
|
|
358
|
+
return false;
|
|
359
|
+
const pattern = declaration.parent;
|
|
360
|
+
const variable = pattern?.parent;
|
|
361
|
+
if (!pattern ||
|
|
362
|
+
!variable ||
|
|
363
|
+
!ts.isObjectBindingPattern(pattern) ||
|
|
364
|
+
!ts.isVariableDeclaration(variable) ||
|
|
365
|
+
!variable.initializer ||
|
|
366
|
+
!(ts.getCombinedNodeFlags(variable) & ts.NodeFlags.Const))
|
|
367
|
+
return false;
|
|
368
|
+
const key = declaration.propertyName ?? declaration.name;
|
|
369
|
+
if (!ts.isIdentifier(key))
|
|
370
|
+
return false;
|
|
371
|
+
const property = lowerer.checker.getPropertyOfType(lowerer.typeOf(variable.initializer), key.text);
|
|
372
|
+
return property !== undefined && isMonitorType(lowerer.checker.getTypeOfSymbol(property));
|
|
373
|
+
}
|
|
374
|
+
/** A compile-time event key (literalEventKey): a string-literal TYPE
|
|
375
|
+
* (const bindings and literal unions of one member count — the
|
|
376
|
+
* staticHeaderKeyOf stance) or the errorMonitor symbol. */
|
|
377
|
+
function literalEventName(lowerer, arg) {
|
|
378
|
+
if (isErrorMonitorRef(lowerer, arg))
|
|
379
|
+
return ERROR_MONITOR_EVENT;
|
|
311
380
|
const t = lowerer.typeOf(arg);
|
|
312
|
-
|
|
313
|
-
|
|
381
|
+
return t.isStringLiteralType() ? literalEventKey(t.value) : null;
|
|
382
|
+
}
|
|
383
|
+
/** The compile-time key for a literal-only operation, or a pointed fence. */
|
|
384
|
+
function eventNameOf(lowerer, member, arg) {
|
|
385
|
+
const name = literalEventName(lowerer, arg);
|
|
386
|
+
if (name !== null)
|
|
387
|
+
return name;
|
|
314
388
|
lowerer.noLowering(`${member} with a non-literal event name`, arg, "this operation needs a compile-time string literal (symbol names have no lowering)");
|
|
315
389
|
}
|
|
316
390
|
function staticStringPrefixOf(lowerer, node, seen = new Set()) {
|
|
@@ -373,7 +447,12 @@ function computedEventPatternOf(lowerer, node) {
|
|
|
373
447
|
const suffix = staticStringSuffixOf(lowerer, node) ?? "";
|
|
374
448
|
return prefix || suffix ? { prefix, suffix, listener: false } : null;
|
|
375
449
|
}
|
|
376
|
-
|
|
450
|
+
/** Whether a computed name could equal the event keyed `key` (never the
|
|
451
|
+
* errorMonitor key: computed names are strings). */
|
|
452
|
+
function patternMatchesName(pattern, key) {
|
|
453
|
+
if (key === ERROR_MONITOR_EVENT)
|
|
454
|
+
return false;
|
|
455
|
+
const name = eventKeyName(key);
|
|
377
456
|
return name.startsWith(pattern.prefix) && name.endsWith(pattern.suffix);
|
|
378
457
|
}
|
|
379
458
|
/** A computed event can use the variable-arity dyn path only when its
|
|
@@ -689,8 +768,8 @@ streamData) {
|
|
|
689
768
|
kind: "call",
|
|
690
769
|
callee: helper,
|
|
691
770
|
args: registering
|
|
692
|
-
? [receiver,
|
|
693
|
-
: [receiver,
|
|
771
|
+
? [receiver, eventNameExpr(name, loc), cbDyn, boolLit(once, loc), boolLit(prepend, loc)]
|
|
772
|
+
: [receiver, eventNameExpr(name, loc), cbDyn],
|
|
694
773
|
type: recvT,
|
|
695
774
|
loc,
|
|
696
775
|
};
|
|
@@ -801,6 +880,8 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
801
880
|
// everything else fences by its static name.
|
|
802
881
|
if (superRecv === undefined &&
|
|
803
882
|
lowerer.checker.getConstructSignatures(lowerer.typeOf(access.expression)).length > 0) {
|
|
883
|
+
if (member === "addAbortListener")
|
|
884
|
+
return lowerAddAbortListener(lowerer, call, loc);
|
|
804
885
|
if (member === "setMaxListeners" && args.length === 1) {
|
|
805
886
|
if (lowerer.mapTypeOf(lowerer.typeOf(args[0]))?.kind !== "f64") {
|
|
806
887
|
// Node's runtime ladder over the dyn value ("setMaxListeners" is
|
|
@@ -873,7 +954,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
873
954
|
lowerer.noLowering(`${member} with ${args.length} arguments`, call, "the supported form is (eventName, listener)");
|
|
874
955
|
}
|
|
875
956
|
const registering = REGISTER_MEMBERS.has(member);
|
|
876
|
-
if (
|
|
957
|
+
if (literalEventName(lowerer, args[0]) === null) {
|
|
877
958
|
computedEventPattern(lowerer, info, member, args[0]);
|
|
878
959
|
const receiver = lowerReceiver();
|
|
879
960
|
const name = lowerer.lowerExprExpecting(args[0], STRING);
|
|
@@ -885,7 +966,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
885
966
|
streamForcedTuple(lowerer, info, name) === null &&
|
|
886
967
|
(flexibleJsEvent(name, table.get(name)) ||
|
|
887
968
|
computedPatterns(lowerer).some((pattern) => patternMatchesName(pattern, name)))) {
|
|
888
|
-
return lowerFlexListenerCall(lowerer, member,
|
|
969
|
+
return lowerFlexListenerCall(lowerer, member, eventNameExpr(name, loc), lowerReceiver(), args[1], registering, member === "once" || member === "prependOnceListener", member === "prependListener" || member === "prependOnceListener", loc);
|
|
889
970
|
}
|
|
890
971
|
// The runtime fires the meta events INTERNALLY (scr_ee_emit_meta —
|
|
891
972
|
// Node calls this.emit, which would dispatch through an emit
|
|
@@ -927,7 +1008,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
927
1008
|
return {
|
|
928
1009
|
kind: "libCall",
|
|
929
1010
|
fn: "emitter.off",
|
|
930
|
-
args: [receiver,
|
|
1011
|
+
args: [receiver, eventNameExpr(name, loc), cb],
|
|
931
1012
|
type: receiver.type,
|
|
932
1013
|
loc,
|
|
933
1014
|
};
|
|
@@ -935,7 +1016,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
935
1016
|
return {
|
|
936
1017
|
kind: "libCall",
|
|
937
1018
|
fn: "emitter.onData",
|
|
938
|
-
args: [receiver,
|
|
1019
|
+
args: [receiver, eventNameExpr(name, loc), cb, boolLit(once, loc), boolLit(prepend, loc)],
|
|
939
1020
|
type: receiver.type,
|
|
940
1021
|
loc,
|
|
941
1022
|
};
|
|
@@ -953,8 +1034,8 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
953
1034
|
kind: "libCall",
|
|
954
1035
|
fn: registering ? "emitter.on" : "emitter.off",
|
|
955
1036
|
args: registering
|
|
956
|
-
? [receiver,
|
|
957
|
-
: [receiver,
|
|
1037
|
+
? [receiver, eventNameExpr(name, loc), cb, boolLit(once, loc), boolLit(prepend, loc)]
|
|
1038
|
+
: [receiver, eventNameExpr(name, loc), cb],
|
|
958
1039
|
type: receiver.type,
|
|
959
1040
|
loc,
|
|
960
1041
|
};
|
|
@@ -963,8 +1044,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
963
1044
|
if (args.length === 0) {
|
|
964
1045
|
lowerer.noLowering("emit without an event name", call);
|
|
965
1046
|
}
|
|
966
|
-
|
|
967
|
-
if (!nameType.isStringLiteralType()) {
|
|
1047
|
+
if (literalEventName(lowerer, args[0]) === null) {
|
|
968
1048
|
const pattern = computedEventPatternOf(lowerer, args[0]);
|
|
969
1049
|
const mayBeObserved = pattern === null ||
|
|
970
1050
|
computedPatternOverlapsReserved(pattern) ||
|
|
@@ -996,7 +1076,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
996
1076
|
streamForcedTuple(lowerer, info, name) === null &&
|
|
997
1077
|
(flexibleJsEvent(name, table.get(name)) ||
|
|
998
1078
|
computedPatterns(lowerer).some((pattern) => patternMatchesName(pattern, name))))
|
|
999
|
-
return lowerFlexEmit(
|
|
1079
|
+
return lowerFlexEmit(eventNameExpr(name, loc), flexibleJsEvent(name, table.get(name)) ? "variable-arity" : "computed-name");
|
|
1000
1080
|
const receiver = lowerReceiver();
|
|
1001
1081
|
if (name === "error") {
|
|
1002
1082
|
// The special event: exactly one %Error-rooted payload; no listener
|
|
@@ -1034,7 +1114,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
1034
1114
|
return {
|
|
1035
1115
|
kind: "libCall",
|
|
1036
1116
|
fn: "emitter.emitData",
|
|
1037
|
-
args: [receiver,
|
|
1117
|
+
args: [receiver, eventNameExpr(name, loc), chunk],
|
|
1038
1118
|
type: BOOL,
|
|
1039
1119
|
loc,
|
|
1040
1120
|
};
|
|
@@ -1055,7 +1135,11 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
1055
1135
|
}
|
|
1056
1136
|
const all = args.length === 0;
|
|
1057
1137
|
const receiver = lowerReceiver();
|
|
1058
|
-
const name = all
|
|
1138
|
+
const name = all
|
|
1139
|
+
? strLit("", loc)
|
|
1140
|
+
: isErrorMonitorRef(lowerer, args[0])
|
|
1141
|
+
? eventNameExpr(ERROR_MONITOR_EVENT, loc)
|
|
1142
|
+
: lowerer.lowerExprExpecting(args[0], STRING);
|
|
1059
1143
|
if (name.type.kind !== "string") {
|
|
1060
1144
|
lowerer.noLowering(`removeAllListeners with a '${lowerer.fmt(name.type)}' event name`, args[0] ?? call);
|
|
1061
1145
|
}
|
|
@@ -1072,7 +1156,9 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
1072
1156
|
lowerer.noLowering(`listenerCount with ${args.length} arguments`, call);
|
|
1073
1157
|
}
|
|
1074
1158
|
const receiver = lowerReceiver();
|
|
1075
|
-
const name = lowerer
|
|
1159
|
+
const name = isErrorMonitorRef(lowerer, args[0])
|
|
1160
|
+
? eventNameExpr(ERROR_MONITOR_EVENT, loc)
|
|
1161
|
+
: lowerer.lowerExprExpecting(args[0], STRING);
|
|
1076
1162
|
if (name.type.kind !== "string") {
|
|
1077
1163
|
lowerer.noLowering(`listenerCount with a '${lowerer.fmt(name.type)}' event name`, args[0]);
|
|
1078
1164
|
}
|
|
@@ -1123,7 +1209,7 @@ export function lowerEmitterMethodCall(lowerer, call, access, info, superRecv) {
|
|
|
1123
1209
|
return {
|
|
1124
1210
|
kind: "libCall",
|
|
1125
1211
|
fn: "emitter.listeners",
|
|
1126
|
-
args: [receiver,
|
|
1212
|
+
args: [receiver, eventNameExpr(name, loc)],
|
|
1127
1213
|
type: arrayOf({ kind: "func", params: tuple, ret: { kind: "void" } }),
|
|
1128
1214
|
loc,
|
|
1129
1215
|
};
|
|
@@ -1424,7 +1510,7 @@ export function lowerEmitOverrideSpec(lowerer, req) {
|
|
|
1424
1510
|
const eventDecl = ov.decl.parameters[0];
|
|
1425
1511
|
const eventLocal = lowerer.declareLocal(eventDecl.name, ts.isIdentifier(eventDecl.name) ? eventDecl.name.text : "event", STRING, true);
|
|
1426
1512
|
const prologue = [
|
|
1427
|
-
{ kind: "varDecl", localId: eventLocal.id, init:
|
|
1513
|
+
{ kind: "varDecl", localId: eventLocal.id, init: eventNameExpr(event, loc), loc },
|
|
1428
1514
|
];
|
|
1429
1515
|
lowerer.emitSpecCtx = {
|
|
1430
1516
|
info,
|
|
@@ -1497,7 +1583,7 @@ export function emitSpecSuperForward(lowerer, call, access) {
|
|
|
1497
1583
|
return {
|
|
1498
1584
|
kind: "libCall",
|
|
1499
1585
|
fn: "emitter.emitError",
|
|
1500
|
-
args: [thisRef,
|
|
1586
|
+
args: [thisRef, eventNameExpr(ctx.event, loc), payload[0]],
|
|
1501
1587
|
type: BOOL,
|
|
1502
1588
|
loc,
|
|
1503
1589
|
};
|
|
@@ -1505,7 +1591,7 @@ export function emitSpecSuperForward(lowerer, call, access) {
|
|
|
1505
1591
|
return {
|
|
1506
1592
|
kind: "libCall",
|
|
1507
1593
|
fn: "emitter.emit",
|
|
1508
|
-
args: [thisRef,
|
|
1594
|
+
args: [thisRef, eventNameExpr(ctx.event, loc), ...payload],
|
|
1509
1595
|
type: BOOL,
|
|
1510
1596
|
loc,
|
|
1511
1597
|
};
|
|
@@ -1533,14 +1619,14 @@ function emitDispatchExpr(lowerer, info, name, tuple, receiver, payload, superOf
|
|
|
1533
1619
|
? {
|
|
1534
1620
|
kind: "libCall",
|
|
1535
1621
|
fn: "emitter.emitError",
|
|
1536
|
-
args: [recv,
|
|
1622
|
+
args: [recv, eventNameExpr(name, loc), args[0]],
|
|
1537
1623
|
type: BOOL,
|
|
1538
1624
|
loc,
|
|
1539
1625
|
}
|
|
1540
1626
|
: {
|
|
1541
1627
|
kind: "libCall",
|
|
1542
1628
|
fn: "emitter.emit",
|
|
1543
|
-
args: [recv,
|
|
1629
|
+
args: [recv, eventNameExpr(name, loc), ...args],
|
|
1544
1630
|
type: BOOL,
|
|
1545
1631
|
loc,
|
|
1546
1632
|
};
|