@scriptc/compiler 0.3.2 → 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 +490 -39
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/llvm/alloc.js +24 -10
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +47 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +8 -0
- package/dist/backend/llvm/array-search.js +52 -0
- package/dist/backend/llvm/array-search.js.map +1 -0
- package/dist/backend/llvm/array-search.test.d.ts +1 -0
- package/dist/backend/llvm/array-search.test.js +72 -0
- package/dist/backend/llvm/array-search.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +8 -1
- package/dist/backend/llvm/call-lifetimes.js +33 -11
- 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 +87 -36
- package/dist/backend/llvm/classes.js.map +1 -1
- 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 +1 -1
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +73 -9
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +65 -14
- package/dist/backend/llvm/emitter.js +297 -81
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +26 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +52 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +11 -0
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +16 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +8 -1
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +42 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +19 -8
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +28 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +8 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +35 -32
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/inline-unions.d.ts +48 -0
- package/dist/backend/llvm/inline-unions.js +134 -0
- package/dist/backend/llvm/inline-unions.js.map +1 -0
- package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
- package/dist/backend/llvm/inline-unions.test.js +124 -0
- package/dist/backend/llvm/inline-unions.test.js.map +1 -0
- package/dist/backend/llvm/integer-remainder.d.ts +28 -5
- package/dist/backend/llvm/integer-remainder.js +80 -9
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +163 -28
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +125 -7
- 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 +132 -0
- 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 +7 -3
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +6 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +2 -0
- package/dist/backend/llvm/local-union-storage.js +5 -0
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
- package/dist/backend/llvm/loop-array-borrows.js +93 -13
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +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 +8 -5
- package/dist/backend/llvm/record-results.js +20 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +13 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +14 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -0
- package/dist/backend/llvm/regions.js +12 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +56 -10
- package/dist/backend/llvm/shapes.js +178 -39
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +61 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.js +16 -4
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +11 -0
- package/dist/backend/llvm/walkers.js +106 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +9 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +2 -2
- package/dist/backend/native/executable.js +14 -3
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.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-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.js +4 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +4 -1
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/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/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/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +8 -4
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
- package/dist/frontend/lowering/builtins/blob.js +167 -0
- package/dist/frontend/lowering/builtins/blob.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.js +3 -2
- package/dist/frontend/lowering/builtins/compression.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/filesystem-calls.d.ts +10 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
- package/dist/frontend/lowering/builtins/filesystem.js +97 -15
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
- package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
- package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
- package/dist/frontend/lowering/builtins/key-object.js +56 -0
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +44 -11
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
- package/dist/frontend/lowering/builtins/performance.js +340 -5
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +107 -14
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
- package/dist/frontend/lowering/builtins/properties.js +39 -11
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
- package/dist/frontend/lowering/builtins/readline.js +266 -90
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/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/class-dynamic-dispatch.d.ts +2 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +105 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +3 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.js +6 -5
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
- package/dist/frontend/lowering/containers/array-methods.js +43 -2
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +38 -26
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
- package/dist/frontend/lowering/containers/for-of.js +5 -1
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +77 -12
- package/dist/frontend/lowering/crypto-tables.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +16 -12
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +2 -2
- package/dist/frontend/lowering/generic-functions.js +2 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
- package/dist/frontend/lowering/lower-array-sort.js +561 -191
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +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 +101 -9
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +8 -2
- package/dist/frontend/lowering/lower-classes.js +40 -9
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +4 -4
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-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 +112 -22
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +129 -11
- 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 +7 -3
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
- package/dist/frontend/lowering/lower-namespaces.js +2 -2
- package/dist/frontend/lowering/lower-server.js +39 -14
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
- package/dist/frontend/lowering/lower-stdlib.js +10 -3
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
- package/dist/frontend/lowering/lower-stmts.js +46 -12
- 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 +23 -5
- package/dist/frontend/lowering/lowerer.js +245 -41
- 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/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 +273 -22
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- 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 +1 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -3
- package/dist/frontend/program.js +19 -17
- package/dist/frontend/program.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 +16 -1
- package/dist/frontend/type-mapper.js +143 -18
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +5 -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 +79 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +291 -38
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +1 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +64 -16
- package/dist/ir/ir.js +37 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.js +83 -6
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +1 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +100 -9
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +60 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.d.ts +1 -1
- package/dist/library/fence-eval.js +5 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +10 -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/package.json +20 -20
- package/surface-manifest.json +379 -142
|
@@ -112,6 +112,12 @@ 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";
|
|
115
121
|
/** The synthetic LifetimeRegion class (@scriptc/experimental,
|
|
116
122
|
* lifetime-regions.ts): its constructor is synthesized with the class,
|
|
117
123
|
* and its methods lower at their call sites. */
|
|
@@ -663,8 +669,8 @@ export declare function classMemberNameOf(lowerer: Lowerer, name: ts.PropertyNam
|
|
|
663
669
|
* `undefined` is falsy forever (Node loops forever too; corpus
|
|
664
670
|
* iterators of that shape are deliberately infinite). Iterator classes
|
|
665
671
|
* declaring `return`/`throw` members stay out — the desugars below
|
|
666
|
-
* never call IteratorClose, and
|
|
667
|
-
* 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
|
|
668
674
|
* keep their fences. */
|
|
669
675
|
export interface ClassIteratorInfo {
|
|
670
676
|
/** The `[Symbol.iterator]()` call's receiver class + its declarer. */
|
|
@@ -28,6 +28,7 @@ import { lowerTextCodecNew } from "./builtins/text-codecs.js";
|
|
|
28
28
|
import { lowerWorkerNew } from "./builtins/workers.js";
|
|
29
29
|
import { unsupportedPackageValueDiag, unsupportedDiag, } from "../../diagnostics/diagnostic.js";
|
|
30
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";
|
|
31
32
|
import { emitOverrideShapeReason, emitSpecSuperForward, emitterRooted, lowerEmitterSuperCall, } from "./lower-event-emitter.js";
|
|
32
33
|
import { declSymbolOf } from "./lower-modules.js";
|
|
33
34
|
import { classSymbolKeyOf, classSymbolKeyOfSymbol, symbolFieldDisplayName, } from "./symbol-fields.js";
|
|
@@ -990,8 +991,8 @@ function collectClassShapeDeferring(lowerer, decl) {
|
|
|
990
991
|
// A poisoned class containing a static BLOCK or a DECORATOR must report
|
|
991
992
|
// EAGERLY: deferral's premise ("an unreached broken declaration costs
|
|
992
993
|
// nothing") fails here — Node runs the block (and calls the decorator)
|
|
993
|
-
// when the class statement evaluates, referenced or not, so
|
|
994
|
-
//
|
|
994
|
+
// when the class statement evaluates, referenced or not, so dropping the
|
|
995
|
+
// declaration without a diagnostic would drop observable side effects (the
|
|
995
996
|
// classStaticBlock13/28 miscompiles).
|
|
996
997
|
const hasDeclTimeCode = (n) => ts.isClassStaticBlockDeclaration(n) ||
|
|
997
998
|
(n.modifiers ?? []).some((m) => m.kind === ts.SyntaxKind.Decorator);
|
|
@@ -1444,6 +1445,7 @@ mixin) {
|
|
|
1444
1445
|
lowerer.builtinErrorInfoOf(symbol) ??
|
|
1445
1446
|
lowerer.builtinEmitterInfoOf(symbol) ??
|
|
1446
1447
|
builtinStreamInfoOf(lowerer, symbol) ??
|
|
1448
|
+
builtinEventTargetBaseOf(lowerer, t.expression) ??
|
|
1447
1449
|
// A const BINDING holding exactly one class (`const B = Animal`,
|
|
1448
1450
|
// `const B = class {…}`): the base is that class — extends
|
|
1449
1451
|
// through the alias is the declaration story (a general class
|
|
@@ -1494,7 +1496,9 @@ mixin) {
|
|
|
1494
1496
|
}
|
|
1495
1497
|
if (lowerer.collectingExprClasses.has(decl)) {
|
|
1496
1498
|
for (let parent = base; parent; parent = parent.base) {
|
|
1497
|
-
if (parent.builtinEmitter ||
|
|
1499
|
+
if (parent.builtinEmitter ||
|
|
1500
|
+
parent.builtinStream !== undefined ||
|
|
1501
|
+
parent.builtinEventTarget !== undefined) {
|
|
1498
1502
|
lowerer.unsupported("SC1090", decl, "classes extending builtin bases as values (the inherited runtime constructor has no class-value adapter)");
|
|
1499
1503
|
}
|
|
1500
1504
|
}
|
|
@@ -1792,7 +1796,7 @@ mixin) {
|
|
|
1792
1796
|
// The EventEmitter API surface is runtime-provided: a subclass
|
|
1793
1797
|
// member with one of its names would shadow behavior the runtime
|
|
1794
1798
|
// dispatches internally (meta events, once removal), so the
|
|
1795
|
-
// override is fenced
|
|
1799
|
+
// override is fenced instead of compiling to split behavior — with ONE
|
|
1796
1800
|
// exception: `emit` in the forwarding shape on a plain (non-
|
|
1797
1801
|
// stream) emitter-rooted class monomorphizes per event name
|
|
1798
1802
|
// (lower-event-emitter.ts's emit-overrides block). Stream-rooted classes
|
|
@@ -1833,6 +1837,15 @@ mixin) {
|
|
|
1833
1837
|
}
|
|
1834
1838
|
lowerer.unsupported("SC1090", memberName, `overriding the EventEmitter member '${memberName.text}' (the runtime owns the emitter surface)`);
|
|
1835
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
|
+
}
|
|
1836
1849
|
// The stream surface is likewise runtime-provided on stream-rooted
|
|
1837
1850
|
// subclasses: API members (push/read/write/...) and the property
|
|
1838
1851
|
// family (readableEnded/destroyed/...) dispatch into the runtime
|
|
@@ -2775,7 +2788,7 @@ mixin) {
|
|
|
2775
2788
|
// (conditional branches, methods) would be readable before any
|
|
2776
2789
|
// assignment ran — the zeroed-memory trap a TS declaration order
|
|
2777
2790
|
// forbids via strictPropertyInitialization — so they keep a named
|
|
2778
|
-
// fence instead of a
|
|
2791
|
+
// fence instead of reading undefined without a diagnostic.
|
|
2779
2792
|
if (isJsSourceFile(decl.getSourceFile())) {
|
|
2780
2793
|
const hasAccessor = (name) => methods.has(`get:${name}`) ||
|
|
2781
2794
|
methods.has(`set:${name}`) ||
|
|
@@ -2857,8 +2870,8 @@ mixin) {
|
|
|
2857
2870
|
// representation follows the body — the field widens to the
|
|
2858
2871
|
// undefined-armed union, so the declaring assignment and
|
|
2859
2872
|
// every pre-init read carry Node's actual undefined.
|
|
2860
|
-
// Trust-but-verify: the claim
|
|
2861
|
-
//
|
|
2873
|
+
// Trust-but-verify: the claim does not narrow the runtime
|
|
2874
|
+
// value.
|
|
2862
2875
|
{
|
|
2863
2876
|
const rhsT = lowerer.typeOf(rhs);
|
|
2864
2877
|
const assignsUndef = (rhsT.flags & ts.TypeFlags.Undefined) !== 0;
|
|
@@ -2992,7 +3005,7 @@ mixin) {
|
|
|
2992
3005
|
// poisoning the class (commander's `this.required` switch
|
|
2993
3006
|
// assignment, `this.runningCommand` method assignment).
|
|
2994
3007
|
// Unmappable inferences and arm-less kinds keep the fence.
|
|
2995
|
-
// TypeScript classes keep the
|
|
3008
|
+
// TypeScript classes keep the compile-time fence too: an annotated
|
|
2996
3009
|
// program can spell `T | undefined` itself.
|
|
2997
3010
|
if (isJsSourceFile(decl.getSourceFile())) {
|
|
2998
3011
|
const original = undefArmedFieldType(lowerer, p);
|
|
@@ -3892,6 +3905,7 @@ export function classValueRef(lowerer, info, blame) {
|
|
|
3892
3905
|
}
|
|
3893
3906
|
if (lowerer.inheritsBuiltinEmitterCtor(info) ||
|
|
3894
3907
|
inheritsBuiltinStreamCtor(lowerer, info) ||
|
|
3908
|
+
eventTargetRootOf(info) !== null ||
|
|
3895
3909
|
(() => {
|
|
3896
3910
|
for (let c = info.base; c; c = c.base)
|
|
3897
3911
|
if (c.builtinEmitter || c.builtinStream !== undefined)
|
|
@@ -3988,7 +4002,7 @@ export function lowerStaticFieldRead(lowerer, expr) {
|
|
|
3988
4002
|
// A #private static resolves only through the DECLARING class's own
|
|
3989
4003
|
// name: in JS the brand lives on that one constructor object, so
|
|
3990
4004
|
// `D.#s` (a subclass receiver) throws Node's TypeError instead of
|
|
3991
|
-
// reaching up the chain —
|
|
4005
|
+
// reaching up the chain — reported as SC1090 instead of resolved.
|
|
3992
4006
|
if (found && expr.name.text.startsWith("#") && found.declarer !== info) {
|
|
3993
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)`);
|
|
3994
4008
|
}
|
|
@@ -6421,6 +6435,8 @@ export function superCallStmt(lowerer, info, thisLocal, args, loc) {
|
|
|
6421
6435
|
loc,
|
|
6422
6436
|
};
|
|
6423
6437
|
}
|
|
6438
|
+
if (base.builtinEventTarget)
|
|
6439
|
+
return eventTargetSuperCall(lowerer, base, thisRef, args, loc);
|
|
6424
6440
|
if (base.builtinStream) {
|
|
6425
6441
|
// The SYNTHESIZED constructor of a ctor-less stream subclass:
|
|
6426
6442
|
// super() with default options (underscore methods still bind; a
|
|
@@ -6490,6 +6506,21 @@ export function lowerSuperMethodCall(lowerer, call, access) {
|
|
|
6490
6506
|
if (viaEmitter)
|
|
6491
6507
|
return viaEmitter;
|
|
6492
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
|
+
}
|
|
6493
6524
|
lowerer.unsupported("SC1090", access, `'super.${access.name.text}' (no base class declares it)`);
|
|
6494
6525
|
}
|
|
6495
6526
|
// tsc rejects super-access of abstract members (TS2513); defensive —
|