@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
|
@@ -112,6 +112,16 @@ export interface ClassInfo {
|
|
|
112
112
|
* the base chain. The value names which SIDES the class carries. User
|
|
113
113
|
* `extends` of these classes is fenced at the declaration (phase 1). */
|
|
114
114
|
builtinStream?: "r" | "w" | "rw";
|
|
115
|
+
/** Runtime-provided EventTarget ("target") or Event ("event") base of
|
|
116
|
+
* compiled subclasses (lower-event-target.ts): no bodies lower, super()
|
|
117
|
+
* becomes an event.* libCall, and the inherited members lower through
|
|
118
|
+
* lower-event-target.ts over any class rooted here. Subclass structs
|
|
119
|
+
* embed the runtime prefix. */
|
|
120
|
+
builtinEventTarget?: "target" | "event";
|
|
121
|
+
/** The synthetic LifetimeRegion class (@scriptc/experimental,
|
|
122
|
+
* lifetime-regions.ts): its constructor is synthesized with the class,
|
|
123
|
+
* and its methods lower at their call sites. */
|
|
124
|
+
lifetimeRegion?: true;
|
|
115
125
|
/** This class's own `emit` override in the FORWARDING SHAPE (the one
|
|
116
126
|
* EventEmitter member a subclass may re-declare): never in `methods` —
|
|
117
127
|
* emit calls keep routing through the emitter spoke, which lowers the
|
|
@@ -659,8 +669,8 @@ export declare function classMemberNameOf(lowerer: Lowerer, name: ts.PropertyNam
|
|
|
659
669
|
* `undefined` is falsy forever (Node loops forever too; corpus
|
|
660
670
|
* iterators of that shape are deliberately infinite). Iterator classes
|
|
661
671
|
* declaring `return`/`throw` members stay out — the desugars below
|
|
662
|
-
* never call IteratorClose, and
|
|
663
|
-
* would drop user cleanup. Null when the shape doesn't hold — callers
|
|
672
|
+
* never call IteratorClose, and skipping a declared return() without a
|
|
673
|
+
* diagnostic would drop user cleanup. Null when the shape doesn't hold — callers
|
|
664
674
|
* keep their fences. */
|
|
665
675
|
export interface ClassIteratorInfo {
|
|
666
676
|
/** The `[Symbol.iterator]()` call's receiver class + its declarer. */
|
|
@@ -752,9 +762,6 @@ export declare function inheritsBuiltinErrorCtor(lowerer: Lowerer, info: ClassIn
|
|
|
752
762
|
/** The EventEmitter twin: a ctor-less chain into the emitter base
|
|
753
763
|
* inherits `new C()` — zero arguments (the options bag fences). */
|
|
754
764
|
export declare function inheritsBuiltinEmitterCtor(lowerer: Lowerer, info: ClassInfo): boolean;
|
|
755
|
-
/** Preserve argument evaluation order and option presence through builtin
|
|
756
|
-
* and inherited Error constructors. Checked-dynamic conversion retains
|
|
757
|
-
* Error identity and distinguishes a missing cause from undefined. */
|
|
758
765
|
export declare function errorConstructorArgs(lowerer: Lowerer, args: readonly ts.Expression[], loc: SrcLoc, blame: ts.Node): IrExpr[];
|
|
759
766
|
export declare function lowerNew(lowerer: Lowerer, expr: ts.NewExpression): IrExpr;
|
|
760
767
|
/** A getter/setter invocation over an accessor target's receiver — the
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { dynUndefinedExpr, nodeThrowExpr } from "../../ir/build.js";
|
|
1
|
+
import { dynUndefinedExpr, nodeThrowExpr, varRef } from "../../ir/build.js";
|
|
2
|
+
import { checkedIterableSpread } from "./checked-iterable-spread.js";
|
|
2
3
|
import { collectClassMethodMutations } from "./class-method-mutations.js";
|
|
3
4
|
import { InternalCompilerError } from "../../errors.js";
|
|
4
5
|
/* Class lowering: shape collection over the single-inheritance graph
|
|
@@ -27,6 +28,7 @@ import { lowerTextCodecNew } from "./builtins/text-codecs.js";
|
|
|
27
28
|
import { lowerWorkerNew } from "./builtins/workers.js";
|
|
28
29
|
import { unsupportedPackageValueDiag, unsupportedDiag, } from "../../diagnostics/diagnostic.js";
|
|
29
30
|
import { STREAM_API_MEMBERS, STREAM_PROP_MEMBERS, UNDERSCORE_METHODS, lowerStreamNew, lowerStreamSuperCall, streamCtorShape, } from "./lower-stream.js";
|
|
31
|
+
import { builtinEventTargetBaseOf, eventTargetApiMembers, eventTargetApiMethod, eventTargetRootOf, eventTargetSuperCall, lowerEventTargetMethodCall, } from "./lower-event-target.js";
|
|
30
32
|
import { emitOverrideShapeReason, emitSpecSuperForward, emitterRooted, lowerEmitterSuperCall, } from "./lower-event-emitter.js";
|
|
31
33
|
import { declSymbolOf } from "./lower-modules.js";
|
|
32
34
|
import { classSymbolKeyOf, classSymbolKeyOfSymbol, symbolFieldDisplayName, } from "./symbol-fields.js";
|
|
@@ -989,8 +991,8 @@ function collectClassShapeDeferring(lowerer, decl) {
|
|
|
989
991
|
// A poisoned class containing a static BLOCK or a DECORATOR must report
|
|
990
992
|
// EAGERLY: deferral's premise ("an unreached broken declaration costs
|
|
991
993
|
// nothing") fails here — Node runs the block (and calls the decorator)
|
|
992
|
-
// when the class statement evaluates, referenced or not, so
|
|
993
|
-
//
|
|
994
|
+
// when the class statement evaluates, referenced or not, so dropping the
|
|
995
|
+
// declaration without a diagnostic would drop observable side effects (the
|
|
994
996
|
// classStaticBlock13/28 miscompiles).
|
|
995
997
|
const hasDeclTimeCode = (n) => ts.isClassStaticBlockDeclaration(n) ||
|
|
996
998
|
(n.modifiers ?? []).some((m) => m.kind === ts.SyntaxKind.Decorator);
|
|
@@ -1303,7 +1305,9 @@ mixin) {
|
|
|
1303
1305
|
lowerer.isStdlibGlobal(t.expression.expression, "globalThis")
|
|
1304
1306
|
? lowerer.builtinErrorInfoOf(resolved)
|
|
1305
1307
|
: null;
|
|
1306
|
-
if (globalError &&
|
|
1308
|
+
if (globalError &&
|
|
1309
|
+
globalError.def.name !== "%DOMException" &&
|
|
1310
|
+
globalError.def.name !== "%AggregateError") {
|
|
1307
1311
|
if (t.typeArguments)
|
|
1308
1312
|
lowerer.unsupported("SC1090", t, "extending generic classes");
|
|
1309
1313
|
base = globalError;
|
|
@@ -1432,10 +1436,16 @@ mixin) {
|
|
|
1432
1436
|
if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%DOMException") {
|
|
1433
1437
|
lowerer.unsupported("SC1090", t, "extending DOMException (its runtime layout carries hidden slots a subclass would overlap — extend Error and set name/code yourself)");
|
|
1434
1438
|
}
|
|
1439
|
+
// `extends AggregateError`: the errors list is the same kind of
|
|
1440
|
+
// hidden runtime slot.
|
|
1441
|
+
if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%AggregateError") {
|
|
1442
|
+
lowerer.unsupported("SC1090", t, "extending AggregateError (its runtime layout carries a hidden errors slot a subclass would overlap — extend Error and keep the list in a field)");
|
|
1443
|
+
}
|
|
1435
1444
|
const named = (symbol && lowerer.classBySymbol.get(symbol)) ??
|
|
1436
1445
|
lowerer.builtinErrorInfoOf(symbol) ??
|
|
1437
1446
|
lowerer.builtinEmitterInfoOf(symbol) ??
|
|
1438
1447
|
builtinStreamInfoOf(lowerer, symbol) ??
|
|
1448
|
+
builtinEventTargetBaseOf(lowerer, t.expression) ??
|
|
1439
1449
|
// A const BINDING holding exactly one class (`const B = Animal`,
|
|
1440
1450
|
// `const B = class {…}`): the base is that class — extends
|
|
1441
1451
|
// through the alias is the declaration story (a general class
|
|
@@ -1486,7 +1496,9 @@ mixin) {
|
|
|
1486
1496
|
}
|
|
1487
1497
|
if (lowerer.collectingExprClasses.has(decl)) {
|
|
1488
1498
|
for (let parent = base; parent; parent = parent.base) {
|
|
1489
|
-
if (parent.builtinEmitter ||
|
|
1499
|
+
if (parent.builtinEmitter ||
|
|
1500
|
+
parent.builtinStream !== undefined ||
|
|
1501
|
+
parent.builtinEventTarget !== undefined) {
|
|
1490
1502
|
lowerer.unsupported("SC1090", decl, "classes extending builtin bases as values (the inherited runtime constructor has no class-value adapter)");
|
|
1491
1503
|
}
|
|
1492
1504
|
}
|
|
@@ -1784,7 +1796,7 @@ mixin) {
|
|
|
1784
1796
|
// The EventEmitter API surface is runtime-provided: a subclass
|
|
1785
1797
|
// member with one of its names would shadow behavior the runtime
|
|
1786
1798
|
// dispatches internally (meta events, once removal), so the
|
|
1787
|
-
// override is fenced
|
|
1799
|
+
// override is fenced instead of compiling to split behavior — with ONE
|
|
1788
1800
|
// exception: `emit` in the forwarding shape on a plain (non-
|
|
1789
1801
|
// stream) emitter-rooted class monomorphizes per event name
|
|
1790
1802
|
// (lower-event-emitter.ts's emit-overrides block). Stream-rooted classes
|
|
@@ -1825,6 +1837,15 @@ mixin) {
|
|
|
1825
1837
|
}
|
|
1826
1838
|
lowerer.unsupported("SC1090", memberName, `overriding the EventEmitter member '${memberName.text}' (the runtime owns the emitter surface)`);
|
|
1827
1839
|
}
|
|
1840
|
+
// The inherited EventTarget/Event members read the engine's own
|
|
1841
|
+
// state: dispatch never calls a subclass override, and the engine
|
|
1842
|
+
// never reads an own field that shadows an accessor (`type`).
|
|
1843
|
+
if (memberName &&
|
|
1844
|
+
ts.isIdentifier(memberName) &&
|
|
1845
|
+
!(ts.getCombinedModifierFlags(member) & ts.ModifierFlags.Static) &&
|
|
1846
|
+
eventTargetApiMembers(base)?.has(memberName.text)) {
|
|
1847
|
+
lowerer.unsupported("SC1090", memberName, `overriding the ${eventTargetRootOf(base) === "target" ? "EventTarget" : "Event"} member '${memberName.text}' (the runtime owns the inherited surface)`);
|
|
1848
|
+
}
|
|
1828
1849
|
// The stream surface is likewise runtime-provided on stream-rooted
|
|
1829
1850
|
// subclasses: API members (push/read/write/...) and the property
|
|
1830
1851
|
// family (readableEnded/destroyed/...) dispatch into the runtime
|
|
@@ -2767,7 +2788,7 @@ mixin) {
|
|
|
2767
2788
|
// (conditional branches, methods) would be readable before any
|
|
2768
2789
|
// assignment ran — the zeroed-memory trap a TS declaration order
|
|
2769
2790
|
// forbids via strictPropertyInitialization — so they keep a named
|
|
2770
|
-
// fence instead of a
|
|
2791
|
+
// fence instead of reading undefined without a diagnostic.
|
|
2771
2792
|
if (isJsSourceFile(decl.getSourceFile())) {
|
|
2772
2793
|
const hasAccessor = (name) => methods.has(`get:${name}`) ||
|
|
2773
2794
|
methods.has(`set:${name}`) ||
|
|
@@ -2849,8 +2870,8 @@ mixin) {
|
|
|
2849
2870
|
// representation follows the body — the field widens to the
|
|
2850
2871
|
// undefined-armed union, so the declaring assignment and
|
|
2851
2872
|
// every pre-init read carry Node's actual undefined.
|
|
2852
|
-
// Trust-but-verify: the claim
|
|
2853
|
-
//
|
|
2873
|
+
// Trust-but-verify: the claim does not narrow the runtime
|
|
2874
|
+
// value.
|
|
2854
2875
|
{
|
|
2855
2876
|
const rhsT = lowerer.typeOf(rhs);
|
|
2856
2877
|
const assignsUndef = (rhsT.flags & ts.TypeFlags.Undefined) !== 0;
|
|
@@ -2984,7 +3005,7 @@ mixin) {
|
|
|
2984
3005
|
// poisoning the class (commander's `this.required` switch
|
|
2985
3006
|
// assignment, `this.runningCommand` method assignment).
|
|
2986
3007
|
// Unmappable inferences and arm-less kinds keep the fence.
|
|
2987
|
-
// TypeScript classes keep the
|
|
3008
|
+
// TypeScript classes keep the compile-time fence too: an annotated
|
|
2988
3009
|
// program can spell `T | undefined` itself.
|
|
2989
3010
|
if (isJsSourceFile(decl.getSourceFile())) {
|
|
2990
3011
|
const original = undefArmedFieldType(lowerer, p);
|
|
@@ -3065,6 +3086,10 @@ mixin) {
|
|
|
3065
3086
|
.map((f) => ({ name: f.name, type: f.type })),
|
|
3066
3087
|
],
|
|
3067
3088
|
...(methods.size > 0 ? { methods: [...methods.keys()] } : {}),
|
|
3089
|
+
...(() => {
|
|
3090
|
+
const names = classPrototypeNames(decl);
|
|
3091
|
+
return names.length > 0 ? { prototypeNames: names } : {};
|
|
3092
|
+
})(),
|
|
3068
3093
|
...(abstractClass ? { abstract: true } : {}),
|
|
3069
3094
|
...(() => {
|
|
3070
3095
|
const am = [...methods.entries()].filter(([, s]) => s.abstract === true).map(([n]) => n);
|
|
@@ -3880,6 +3905,7 @@ export function classValueRef(lowerer, info, blame) {
|
|
|
3880
3905
|
}
|
|
3881
3906
|
if (lowerer.inheritsBuiltinEmitterCtor(info) ||
|
|
3882
3907
|
inheritsBuiltinStreamCtor(lowerer, info) ||
|
|
3908
|
+
eventTargetRootOf(info) !== null ||
|
|
3883
3909
|
(() => {
|
|
3884
3910
|
for (let c = info.base; c; c = c.base)
|
|
3885
3911
|
if (c.builtinEmitter || c.builtinStream !== undefined)
|
|
@@ -3976,7 +4002,7 @@ export function lowerStaticFieldRead(lowerer, expr) {
|
|
|
3976
4002
|
// A #private static resolves only through the DECLARING class's own
|
|
3977
4003
|
// name: in JS the brand lives on that one constructor object, so
|
|
3978
4004
|
// `D.#s` (a subclass receiver) throws Node's TypeError instead of
|
|
3979
|
-
// reaching up the chain —
|
|
4005
|
+
// reaching up the chain — reported as SC1090 instead of resolved.
|
|
3980
4006
|
if (found && expr.name.text.startsWith("#") && found.declarer !== info) {
|
|
3981
4007
|
lowerer.unsupported("SC1090", expr, `reading the private static '${expr.name.text}' through the subclass '${info.def.name.replace(/^%|^%m\d+\./, "")}' (JS brands the declaring class object alone — Node throws a TypeError here; spell the declaring class's name)`);
|
|
3982
4008
|
}
|
|
@@ -5511,6 +5537,33 @@ function lowerClassCtorInner(lowerer, info) {
|
|
|
5511
5537
|
lowerer.currentClass = prevClass;
|
|
5512
5538
|
}
|
|
5513
5539
|
}
|
|
5540
|
+
/** The string keys a class declaration puts on its prototype: concrete
|
|
5541
|
+
* instance methods and accessors with literal names. Symbol-keyed,
|
|
5542
|
+
* private, static and abstract members are not prototype string keys. */
|
|
5543
|
+
function classPrototypeNames(decl) {
|
|
5544
|
+
const names = [];
|
|
5545
|
+
for (const member of decl.members) {
|
|
5546
|
+
if (!ts.isMethodDeclaration(member) &&
|
|
5547
|
+
!ts.isGetAccessorDeclaration(member) &&
|
|
5548
|
+
!ts.isSetAccessorDeclaration(member))
|
|
5549
|
+
continue;
|
|
5550
|
+
if (ts
|
|
5551
|
+
.getModifiers(member)
|
|
5552
|
+
?.some((m) => m.kind === ts.SyntaxKind.StaticKeyword || m.kind === ts.SyntaxKind.AbstractKeyword))
|
|
5553
|
+
continue;
|
|
5554
|
+
const name = member.name;
|
|
5555
|
+
let text = null;
|
|
5556
|
+
if (ts.isIdentifier(name) || ts.isStringLiteralLike(name))
|
|
5557
|
+
text = name.text;
|
|
5558
|
+
else if (ts.isNumericLiteral(name))
|
|
5559
|
+
text = String(Number(name.text));
|
|
5560
|
+
else if (ts.isComputedPropertyName(name) && ts.isStringLiteralLike(name.expression))
|
|
5561
|
+
text = name.expression.text;
|
|
5562
|
+
if (text !== null && !names.includes(text))
|
|
5563
|
+
names.push(text);
|
|
5564
|
+
}
|
|
5565
|
+
return names;
|
|
5566
|
+
}
|
|
5514
5567
|
/** The lowered method-map name of a class member: identifier text, a
|
|
5515
5568
|
* COMPUTED name that folds to one compile-time string
|
|
5516
5569
|
* (foldedStringKeyOf — the object-literal computed-key machinery
|
|
@@ -6382,6 +6435,8 @@ export function superCallStmt(lowerer, info, thisLocal, args, loc) {
|
|
|
6382
6435
|
loc,
|
|
6383
6436
|
};
|
|
6384
6437
|
}
|
|
6438
|
+
if (base.builtinEventTarget)
|
|
6439
|
+
return eventTargetSuperCall(lowerer, base, thisRef, args, loc);
|
|
6385
6440
|
if (base.builtinStream) {
|
|
6386
6441
|
// The SYNTHESIZED constructor of a ctor-less stream subclass:
|
|
6387
6442
|
// super() with default options (underscore methods still bind; a
|
|
@@ -6451,6 +6506,21 @@ export function lowerSuperMethodCall(lowerer, call, access) {
|
|
|
6451
6506
|
if (viaEmitter)
|
|
6452
6507
|
return viaEmitter;
|
|
6453
6508
|
}
|
|
6509
|
+
// `super.dispatchEvent(e)`, `super.preventDefault()`: the inherited
|
|
6510
|
+
// runtime members over this method's own `this` (subclasses cannot
|
|
6511
|
+
// override them, so the static answer is the runtime's).
|
|
6512
|
+
if (eventTargetApiMethod(cls.base, access.name.text)) {
|
|
6513
|
+
const thisL = lowerer.resolveThis();
|
|
6514
|
+
if (!thisL)
|
|
6515
|
+
lowerer.unsupported("SC1080", access);
|
|
6516
|
+
const thisRef = {
|
|
6517
|
+
kind: "varRef",
|
|
6518
|
+
localId: thisL.id,
|
|
6519
|
+
type: thisL.type,
|
|
6520
|
+
loc: locOf(call),
|
|
6521
|
+
};
|
|
6522
|
+
return lowerEventTargetMethodCall(lowerer, call, access, cls.base, thisRef);
|
|
6523
|
+
}
|
|
6454
6524
|
lowerer.unsupported("SC1090", access, `'super.${access.name.text}' (no base class declares it)`);
|
|
6455
6525
|
}
|
|
6456
6526
|
// tsc rejects super-access of abstract members (TS2513); defensive —
|
|
@@ -6615,6 +6685,67 @@ function inheritsBuiltinStreamCtor(lowerer, info) {
|
|
|
6615
6685
|
/** Preserve argument evaluation order and option presence through builtin
|
|
6616
6686
|
* and inherited Error constructors. Checked-dynamic conversion retains
|
|
6617
6687
|
* Error identity and distinguishes a missing cause from undefined. */
|
|
6688
|
+
/** `new AggregateError(errors, message, options)` in the spec's order:
|
|
6689
|
+
* the message and cause install first, then `errors` iterates (a
|
|
6690
|
+
* non-iterable throws out of the constructor). */
|
|
6691
|
+
function aggregateErrorConstructor(lowerer, loc) {
|
|
6692
|
+
const name = "%aggregate.new";
|
|
6693
|
+
if (lowerer.liftedFns.some((fn) => fn.name === name))
|
|
6694
|
+
return name;
|
|
6695
|
+
const type = { kind: "object", className: "%AggregateError" };
|
|
6696
|
+
const context = newFnCtx(false, null, null, type);
|
|
6697
|
+
lowerer.fnStack.push(context);
|
|
6698
|
+
try {
|
|
6699
|
+
const params = ["errors", "message", "options"].map((id) => ({
|
|
6700
|
+
localId: id,
|
|
6701
|
+
name: id,
|
|
6702
|
+
type: DYN,
|
|
6703
|
+
}));
|
|
6704
|
+
const error = varRef("error", type, loc);
|
|
6705
|
+
const list = checkedIterableSpread(lowerer, varRef("errors", DYN, loc), "", loc);
|
|
6706
|
+
lowerer.liftedFns.push({
|
|
6707
|
+
name,
|
|
6708
|
+
params,
|
|
6709
|
+
returnType: type,
|
|
6710
|
+
locals: [
|
|
6711
|
+
...params.map((p) => ({ id: p.localId, name: p.name, type: DYN, mutable: false })),
|
|
6712
|
+
{ id: "error", name: "error", type, mutable: false },
|
|
6713
|
+
...context.locals,
|
|
6714
|
+
],
|
|
6715
|
+
body: [
|
|
6716
|
+
{
|
|
6717
|
+
kind: "varDecl",
|
|
6718
|
+
localId: "error",
|
|
6719
|
+
init: {
|
|
6720
|
+
kind: "libCall",
|
|
6721
|
+
fn: "error.newAggregate",
|
|
6722
|
+
args: [varRef("message", DYN, loc), varRef("options", DYN, loc)],
|
|
6723
|
+
type,
|
|
6724
|
+
loc,
|
|
6725
|
+
},
|
|
6726
|
+
loc,
|
|
6727
|
+
},
|
|
6728
|
+
{
|
|
6729
|
+
kind: "exprStmt",
|
|
6730
|
+
expr: {
|
|
6731
|
+
kind: "libCall",
|
|
6732
|
+
fn: "error.aggregateSetErrors",
|
|
6733
|
+
args: [error, list],
|
|
6734
|
+
type: VOID,
|
|
6735
|
+
loc,
|
|
6736
|
+
},
|
|
6737
|
+
loc,
|
|
6738
|
+
},
|
|
6739
|
+
{ kind: "return", value: error, loc },
|
|
6740
|
+
],
|
|
6741
|
+
loc,
|
|
6742
|
+
});
|
|
6743
|
+
}
|
|
6744
|
+
finally {
|
|
6745
|
+
lowerer.fnStack.pop();
|
|
6746
|
+
}
|
|
6747
|
+
return name;
|
|
6748
|
+
}
|
|
6618
6749
|
export function errorConstructorArgs(lowerer, args, loc, blame) {
|
|
6619
6750
|
if (args.length > 2)
|
|
6620
6751
|
lowerer.unsupported("SC1090", blame, "Error constructors with more than two arguments");
|
|
@@ -6995,6 +7126,20 @@ export function lowerNew(lowerer, expr) {
|
|
|
6995
7126
|
loc,
|
|
6996
7127
|
};
|
|
6997
7128
|
}
|
|
7129
|
+
if (errInfo && errInfo.def.name === "%AggregateError") {
|
|
7130
|
+
const args = expr.arguments ?? [];
|
|
7131
|
+
if (args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
7132
|
+
lowerer.noLowering(`new AggregateError with this argument list`, expr);
|
|
7133
|
+
}
|
|
7134
|
+
const errors = args[0] ? lowerer.lowerExprExpecting(args[0], DYN) : dynUndefinedExpr(loc);
|
|
7135
|
+
return {
|
|
7136
|
+
kind: "call",
|
|
7137
|
+
callee: aggregateErrorConstructor(lowerer, loc),
|
|
7138
|
+
args: [errors, ...lowerer.errorConstructorArgs(args.slice(1), loc, expr)],
|
|
7139
|
+
type: { kind: "object", className: "%AggregateError" },
|
|
7140
|
+
loc,
|
|
7141
|
+
};
|
|
7142
|
+
}
|
|
6998
7143
|
if (errInfo) {
|
|
6999
7144
|
const args = lowerer.errorConstructorArgs(expr.arguments ?? [], loc, expr);
|
|
7000
7145
|
return {
|