@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
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { lowerProtocolPropertyRead } from "./class-protocol-dispatch.js";
|
|
1
2
|
import { generatorDrain } from "./iterator-adapters.js";
|
|
3
|
+
import { lowerEventObjectProperty, lowerEventObjectPropertyWrite } from "./lower-event-target.js";
|
|
2
4
|
import { lowerEventStaticProperty } from "./builtins/numbers.js";
|
|
3
5
|
import { lowerUnionEquality, tagEqualityMayMissAlias } from "./strict-equality.js";
|
|
4
6
|
import { isOptionalProcessStreamProperty } from "./builtins/process.js";
|
|
5
7
|
import { lowerWorkerMetadata } from "./builtins/workers.js";
|
|
8
|
+
import { lowerBlobInstanceof } from "./builtins/blob.js";
|
|
9
|
+
import { lowerKeyObjectInstanceof } from "./builtins/key-object.js";
|
|
10
|
+
import { STATS_TYPE_TESTS } from "./builtins/filesystem.js";
|
|
6
11
|
import { threadsImportOf } from "../threads-import.js";
|
|
7
12
|
import { experimentalImportOf, lifetimeRegionMemberOf } from "../experimental-import.js";
|
|
8
13
|
import { dynUndefinedExpr, nodeThrowExpr, numLit, strLit, varRef } from "../../ir/build.js";
|
|
@@ -24,7 +29,7 @@ import { checkedClassAssertion, checkedClassUnionAssertion } from "./class-asser
|
|
|
24
29
|
import { checkedArmExtraction } from "./coercions/unions.js";
|
|
25
30
|
import { narrowClassUnion, narrowStoredClassValue } from "./class-unions.js";
|
|
26
31
|
import { lowerUnionFieldRead, lowerUnionFieldWrite } from "./expressions/union-fields.js";
|
|
27
|
-
import { captureContextArguments } from "./function-context.js";
|
|
32
|
+
import { captureContextArguments, declareContextLocal } from "./function-context.js";
|
|
28
33
|
import { OBJECT_CALLABLE_VALUES } from "./surfaces.js";
|
|
29
34
|
import { wasiGuestPath } from "../../wasi-paths.js";
|
|
30
35
|
import { BIGINT_T, BYTES_ELEMENT_NAME, BOOL, CAUGHT, DYN, DYN_HANDLE_KINDS, F64, NULL_T, REF_TRUTHY_KINDS, REGEX, RUNTIME_ERROR_CLASSES, SEARCH_PARAMS_T, STRING, UNDEFINED_T, VOID, arrayOf, canAdaptDynFuncTo, canDynCheckTo, canBoxFuncIntoDyn, funcOf, isDynTypedRefType, isSupportedArrayElem, isUnitType, shapeHasAccessorSlots, typeEquals, typeKey, unionContainerArmsOk, } from "../../ir/ir.js";
|
|
@@ -50,7 +55,7 @@ import { funcTypeFromParamShapes } from "./call-signatures.js";
|
|
|
50
55
|
import { implicitMonoFile, objLitGenericFnInfoOf, objLitGenericFnNodeOf, requireObjLitGenericReceiver, } from "./generic-functions.js";
|
|
51
56
|
import { lowerTaggedTemplate } from "./lower-calls.js";
|
|
52
57
|
import { mixinFnOfCallee } from "./lower-mixins.js";
|
|
53
|
-
import { isConstAssertionTypeNode, isGenericCallableMemberType, isOsConstantsType, isParseArgsDynTypeName, underConstAssertion, unitOnlyUnion, withUnitArm, } from "../type-mapper.js";
|
|
58
|
+
import { isConstAssertionTypeNode, isGenericCallableMemberType, isLegacyUrlSymbol, isOsConstantsType, isParseArgsDynTypeName, underConstAssertion, unitOnlyUnion, withUnitArm, } from "../type-mapper.js";
|
|
54
59
|
import { iteratorResultValueRead, lowerYield } from "./lower-generators.js";
|
|
55
60
|
import { errorPropertyRead, errorPropertyWrite, errorToStringCall } from "./error-methods.js";
|
|
56
61
|
import { lowerStreamProperty, lowerStreamStateProperty, streamSidesOf } from "./lower-stream.js";
|
|
@@ -79,6 +84,7 @@ import { lowerUrlAssignment } from "./builtins/url.js";
|
|
|
79
84
|
import { jsBindingHasOpenWrites } from "./lower-stmts.js";
|
|
80
85
|
import { checkedClassInstanceOf } from "./class-construction.js";
|
|
81
86
|
import { lowerModuleNamespaceElement } from "./module-namespace-elements.js";
|
|
87
|
+
import { isPerfEntryType, perfEntryTag } from "./builtins/performance.js";
|
|
82
88
|
/** A template piece's RAW text (String.raw's contract: escapes stay
|
|
83
89
|
* characters). 7's client AST ships no rawText at runtime (the typing
|
|
84
90
|
* declares it; the serialized node data omits it), so the raw span comes
|
|
@@ -1786,7 +1792,7 @@ function lowerExprInner(lowerer, expr) {
|
|
|
1786
1792
|
// attached this name to it (`exports.<name> =` nowhere in the
|
|
1787
1793
|
// file), the honest answer is undefined. tsc types the read off the
|
|
1788
1794
|
// REPLACEMENT (its CJS model is identity-blind), which is exactly
|
|
1789
|
-
// the
|
|
1795
|
+
// the undiagnosed divergence this lowering closes. Reads in modules with
|
|
1790
1796
|
// real `exports.<name> =` attachments keep their fences.
|
|
1791
1797
|
{
|
|
1792
1798
|
const ex = lowerReplacedExportsRead(lowerer, expr);
|
|
@@ -1801,6 +1807,13 @@ function lowerExprInner(lowerer, expr) {
|
|
|
1801
1807
|
if (tm)
|
|
1802
1808
|
return tm;
|
|
1803
1809
|
}
|
|
1810
|
+
// Property signatures of class-backed protocols read implementing
|
|
1811
|
+
// classes' fields directly.
|
|
1812
|
+
if (!hasOptionalChainGuard(expr.expression)) {
|
|
1813
|
+
const typed = lowerProtocolPropertyRead(lowerer, expr);
|
|
1814
|
+
if (typed)
|
|
1815
|
+
return typed;
|
|
1816
|
+
}
|
|
1804
1817
|
const handled = lowerer.lowerProcessEnvGet(expr) ??
|
|
1805
1818
|
lowerer.lowerServerProperty(expr) ??
|
|
1806
1819
|
// diagnostics_channel Channel receivers — name/hasSubscribers
|
|
@@ -1831,6 +1844,7 @@ function lowerExprInner(lowerer, expr) {
|
|
|
1831
1844
|
// the inner access maps no type of its own.
|
|
1832
1845
|
lowerStreamStateProperty(lowerer, expr) ??
|
|
1833
1846
|
lowerStreamObjectProperty(lowerer, expr) ??
|
|
1847
|
+
lowerEventObjectProperty(lowerer, expr) ??
|
|
1834
1848
|
lowerer.lowerUnionProperty(expr) ??
|
|
1835
1849
|
lowerer.lowerFieldRead(expr);
|
|
1836
1850
|
// A union-typed field read narrows like an identifier when the
|
|
@@ -2078,7 +2092,8 @@ function lowerExprInner(lowerer, expr) {
|
|
|
2078
2092
|
if (isParseArgsDynProperty(lowerer, expr) ||
|
|
2079
2093
|
isStatFsDynProperty(lowerer, expr) ||
|
|
2080
2094
|
segmentDataProperty ||
|
|
2081
|
-
osConstants
|
|
2095
|
+
osConstants ||
|
|
2096
|
+
isLegacyUrlSymbol(lowerer.checker.getSymbolAtLocation(expr.name), lowerer)) {
|
|
2082
2097
|
const recv = lowerer.lowerExpr(expr.expression);
|
|
2083
2098
|
if (recv.type.kind === "dyn") {
|
|
2084
2099
|
const key = {
|
|
@@ -4313,10 +4328,10 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
4313
4328
|
const receiver = lowerer.lowerExpr(expr.expression);
|
|
4314
4329
|
return { kind: "libCall", fn: "stats.size", args: [receiver], type: F64, loc: locOf(expr) };
|
|
4315
4330
|
}
|
|
4316
|
-
if (
|
|
4331
|
+
if (Object.hasOwn(STATS_TYPE_TESTS, name)) {
|
|
4317
4332
|
lowerer.unsupported("SC1090", expr, `Stats methods as values (call '${name}' directly)`);
|
|
4318
4333
|
}
|
|
4319
|
-
lowerer.noLowering(`Stats.${name}`, expr, "isFile(), isDirectory(), isSymbolicLink(), dev, ino, size, blocks,
|
|
4334
|
+
lowerer.noLowering(`Stats.${name}`, expr, "isFile(), isDirectory(), isSymbolicLink(), isBlockDevice(), isCharacterDevice(), isFIFO(), isSocket(), dev, mode, nlink, uid, gid, rdev, blksize, ino, size, blocks, atimeMs, mtimeMs, ctimeMs, birthtimeMs, atime, mtime, ctime, and birthtime are the supported Stats members", lowerer.checker.getSymbolAtLocation(expr.name));
|
|
4320
4335
|
}
|
|
4321
4336
|
if (kind === "date") {
|
|
4322
4337
|
const methods = new Set([
|
|
@@ -7149,6 +7164,8 @@ export function ensureString(lowerer, e, node) {
|
|
|
7149
7164
|
// prints its elements like an array (not lowered — fenced) — every
|
|
7150
7165
|
// other record is Object.prototype.toString's constant.
|
|
7151
7166
|
const shape = lowerer.shapes.get(e.type.shapeId);
|
|
7167
|
+
if (isPerfEntryType(lowerer, e.type))
|
|
7168
|
+
return perfEntryTag(lowerer, e, e.type, e.loc);
|
|
7152
7169
|
if (shape && !shape.tuple && !shape.fields.some((f) => f.name === "toString")) {
|
|
7153
7170
|
return { kind: "toString", operand: e, type: STRING, loc: e.loc };
|
|
7154
7171
|
}
|
|
@@ -7299,7 +7316,23 @@ export function lowerAsExpression(lowerer, expr) {
|
|
|
7299
7316
|
lowerer.unsupported("SC1090", expr, "opaque structural views of classes or accessor records (name the property's concrete type to retain native accessor dispatch)");
|
|
7300
7317
|
}
|
|
7301
7318
|
const boxed = lowerer.coerceInto(expr, inner, DYN);
|
|
7302
|
-
|
|
7319
|
+
// Only references box live; a scalar or unit source (`value as
|
|
7320
|
+
// unknown as View`) is an ordinary snapshot.
|
|
7321
|
+
const seen = new Set();
|
|
7322
|
+
const live = (type) => {
|
|
7323
|
+
if (type.kind === "record" ||
|
|
7324
|
+
type.kind === "array" ||
|
|
7325
|
+
type.kind === "bytes" ||
|
|
7326
|
+
isDynTypedRefType(type))
|
|
7327
|
+
return true;
|
|
7328
|
+
if (type.kind !== "union" || seen.has(type.unionId))
|
|
7329
|
+
return false;
|
|
7330
|
+
seen.add(type.unionId);
|
|
7331
|
+
return lowerer.unions.get(type.unionId)?.arms.some(live) ?? false;
|
|
7332
|
+
};
|
|
7333
|
+
return boxed.kind === "dynFrom" && live(boxed.value.type)
|
|
7334
|
+
? { ...boxed, liveRef: true }
|
|
7335
|
+
: boxed;
|
|
7303
7336
|
}
|
|
7304
7337
|
// Collection assertions are interface views only: their backing
|
|
7305
7338
|
// value must already have the same native key/element/value layout.
|
|
@@ -7943,6 +7976,13 @@ export function lowerBinary(lowerer, expr) {
|
|
|
7943
7976
|
if (ts.isPropertyAccessExpression(expr.left) || ts.isElementAccessExpression(expr.left)) {
|
|
7944
7977
|
fenceNodeModuleMutation(lowerer, expr.left, "assignment");
|
|
7945
7978
|
}
|
|
7979
|
+
// The writable Event accessors on Event subclass instances, in value
|
|
7980
|
+
// position (`const r = (event.returnValue = false)`).
|
|
7981
|
+
if (op === ts.SyntaxKind.EqualsToken && ts.isPropertyAccessExpression(expr.left)) {
|
|
7982
|
+
const eventWrite = lowerEventObjectPropertyWrite(lowerer, expr.left, expr.right);
|
|
7983
|
+
if (eventWrite)
|
|
7984
|
+
return eventWrite;
|
|
7985
|
+
}
|
|
7946
7986
|
// `x = e` in EXPRESSION position (`while ((idx = s.indexOf("\n")) !== -1)`,
|
|
7947
7987
|
// `f(x = v)`): evaluate e once, write the binding, yield the assigned
|
|
7948
7988
|
// value — JS evaluation order. Variable targets only (locals and module
|
|
@@ -8279,14 +8319,24 @@ export function lowerBinary(lowerer, expr) {
|
|
|
8279
8319
|
reference.kind === "union" ||
|
|
8280
8320
|
DYN_HANDLE_KINDS.has(reference.kind)) &&
|
|
8281
8321
|
lowerer.dynConvertible(reference)) {
|
|
8322
|
+
// Records, arrays and byte views compare by the capsule identity
|
|
8323
|
+
// their dyn reads produce, including when they arrive through a
|
|
8324
|
+
// union (an optional array field read from a typed record).
|
|
8325
|
+
const liveArm = (type) => {
|
|
8326
|
+
if (type.kind === "array" || type.kind === "bytes")
|
|
8327
|
+
return true;
|
|
8328
|
+
const shape = type.kind === "record" ? lowerer.shapes.get(type.shapeId) : undefined;
|
|
8329
|
+
return !!shape && (shape.fields.length > 0 || shape.indexValue !== undefined);
|
|
8330
|
+
};
|
|
8282
8331
|
const boxed = {
|
|
8283
8332
|
kind: "dynFrom",
|
|
8284
8333
|
value: scalarSide,
|
|
8285
8334
|
type: DYN,
|
|
8286
8335
|
loc: scalarSide.loc,
|
|
8287
8336
|
...(reference.kind === "record" ||
|
|
8288
|
-
reference
|
|
8289
|
-
reference.kind === "
|
|
8337
|
+
liveArm(reference) ||
|
|
8338
|
+
(reference.kind === "union" &&
|
|
8339
|
+
(lowerer.unions.get(reference.unionId)?.arms.some(liveArm) ?? false))
|
|
8290
8340
|
? { liveRef: true }
|
|
8291
8341
|
: {}),
|
|
8292
8342
|
};
|
|
@@ -8550,8 +8600,8 @@ export function lowerBinary(lowerer, expr) {
|
|
|
8550
8600
|
// the checker typed the binding as `string`. An optional string is not
|
|
8551
8601
|
// itself a string operand for `+`: `undefined + 1` and
|
|
8552
8602
|
// `undefined + undefined` are NaN, while a present string concatenates.
|
|
8553
|
-
// Keep this predicate exact so a nullable string does not
|
|
8554
|
-
//
|
|
8603
|
+
// Keep this predicate exact so a nullable string does not take the
|
|
8604
|
+
// string path either.
|
|
8555
8605
|
const optionalStringType = (type) => {
|
|
8556
8606
|
if (type.kind !== "union")
|
|
8557
8607
|
return false;
|
|
@@ -9545,6 +9595,7 @@ function typeofAnswer(arm) {
|
|
|
9545
9595
|
case "searchParams":
|
|
9546
9596
|
case "stats":
|
|
9547
9597
|
case "fileHandle":
|
|
9598
|
+
case "dir":
|
|
9548
9599
|
case "spawnRes":
|
|
9549
9600
|
case "child":
|
|
9550
9601
|
case "netServer":
|
|
@@ -10175,6 +10226,14 @@ export function lowerInstanceOf(lowerer, expr, loc) {
|
|
|
10175
10226
|
return { kind: "libCall", fn: "event.is", args: [value, kind], type: BOOL, loc };
|
|
10176
10227
|
}
|
|
10177
10228
|
}
|
|
10229
|
+
{
|
|
10230
|
+
const blob = lowerBlobInstanceof(lowerer, expr);
|
|
10231
|
+
if (blob)
|
|
10232
|
+
return blob;
|
|
10233
|
+
const keyObject = lowerKeyObjectInstanceof(lowerer, expr);
|
|
10234
|
+
if (keyObject)
|
|
10235
|
+
return keyObject;
|
|
10236
|
+
}
|
|
10178
10237
|
if (lowerer.isStdlibGlobal(expr.right, "SharedArrayBuffer")) {
|
|
10179
10238
|
const value = lowerer.coerceInto(expr.left, lowerer.lowerExpr(expr.left), DYN);
|
|
10180
10239
|
return { kind: "libCall", fn: "sharedArrayBuffer.is", args: [value], type: BOOL, loc };
|
|
@@ -10629,7 +10688,7 @@ function lowerPrivateIn(lowerer, expr, priv, loc) {
|
|
|
10629
10688
|
// A GENERIC family: JS has ONE runtime class and ONE brand for every
|
|
10630
10689
|
// instantiation, while these layouts mint one class per instantiation
|
|
10631
10690
|
// — a cross-instantiation check would answer false where Node says
|
|
10632
|
-
// true, so the family
|
|
10691
|
+
// true, so the family reports SC1090 instead of splitting the brand.
|
|
10633
10692
|
if (info.generic || info.genericInstance) {
|
|
10634
10693
|
lowerer.unsupported("SC1090", expr, `'${pname} in …' inside a generic class (JS shares one brand across every instantiation; these layouts mint one class per instantiation)`);
|
|
10635
10694
|
}
|
|
@@ -13027,8 +13086,8 @@ function lowerFieldCompoundValue(lowerer, access, op, rhsNode, loc) {
|
|
|
13027
13086
|
// accounting; dot spelling only — symbol-keyed element targets are
|
|
13028
13087
|
// static fields): read the member (dynKeyGet), VALIDATE it as a
|
|
13029
13088
|
// number (dynCheck — a non-number member throws the catchable
|
|
13030
|
-
// TypeError where JS would ToNumber-coerce;
|
|
13031
|
-
// NaN — SEMANTICS.md), combine, write back (dyn.keySet). The
|
|
13089
|
+
// TypeError where JS would ToNumber-coerce; it throws instead of
|
|
13090
|
+
// producing NaN — SEMANTICS.md), combine, write back (dyn.keySet). The
|
|
13032
13091
|
// receiver and member read are saved before evaluating the RHS.
|
|
13033
13092
|
if (ts.isPropertyAccessExpression(access)) {
|
|
13034
13093
|
let probed = tryLowerExpression(lowerer, access.expression);
|
|
@@ -13102,22 +13161,33 @@ function lowerFieldCompoundValue(lowerer, access, op, rhsNode, loc) {
|
|
|
13102
13161
|
target.obj = save(target.obj, "%compoundReceiver");
|
|
13103
13162
|
// Accessors observe getter, RHS side effects, then setter, all through
|
|
13104
13163
|
// the saved receiver.
|
|
13105
|
-
const
|
|
13164
|
+
const fieldRead = lowerer.fieldGetExpr(target, locOf(access), access);
|
|
13165
|
+
// `+=` on a stored string field reads it into a mutable local, so the
|
|
13166
|
+
// concat below can append to that local in place.
|
|
13167
|
+
const storedString = op === "+" &&
|
|
13168
|
+
fieldRead.type.kind === "string" &&
|
|
13169
|
+
target.fieldType.kind === "string" &&
|
|
13170
|
+
(target.container === "class" || target.container === "record");
|
|
13171
|
+
let read;
|
|
13172
|
+
if (storedString) {
|
|
13173
|
+
const old = declareContextLocal(lowerer.ctx, "%compoundOld", STRING, true, undefined, undefined);
|
|
13174
|
+
body.push({ kind: "varDecl", localId: old.id, init: fieldRead, loc: fieldRead.loc });
|
|
13175
|
+
read = varRef(old.id, STRING, fieldRead.loc);
|
|
13176
|
+
}
|
|
13177
|
+
else {
|
|
13178
|
+
read = save(fieldRead, "%compoundOld");
|
|
13179
|
+
}
|
|
13106
13180
|
const rhs = save(rhsNode ? lowerer.lowerExpr(rhsNode) : { kind: "numLit", value: 1, type: F64, loc }, "%compoundRhs");
|
|
13107
13181
|
const numericRhs = rhs.type.kind === "dyn" && isJsSourceFile(access.getSourceFile())
|
|
13108
13182
|
? { kind: "dynCheck", value: rhs, type: F64, loc: rhs.loc }
|
|
13109
13183
|
: lowerOptionalNumber(lowerer, rhs, loc);
|
|
13110
13184
|
let value;
|
|
13185
|
+
let appended = null;
|
|
13111
13186
|
const numericRead = lowerOptionalNumber(lowerer, read, loc, access);
|
|
13112
13187
|
const bigintValue = rhsNode ? bigintCompoundValue(op, read, rhs, loc) : null;
|
|
13113
13188
|
if (op === "+" && read.type.kind === "string") {
|
|
13114
|
-
|
|
13115
|
-
|
|
13116
|
-
left: read,
|
|
13117
|
-
right: lowerer.ensureString(rhs, rhsNode ?? access),
|
|
13118
|
-
type: STRING,
|
|
13119
|
-
loc,
|
|
13120
|
-
};
|
|
13189
|
+
appended = lowerer.ensureString(rhs, rhsNode ?? access);
|
|
13190
|
+
value = { kind: "strConcat", left: read, right: appended, type: STRING, loc };
|
|
13121
13191
|
}
|
|
13122
13192
|
else if (numericRead.type.kind === "f64" && numericRhs.type.kind === "f64") {
|
|
13123
13193
|
value = { kind: "bin", op, left: numericRead, right: numericRhs, type: F64, loc };
|
|
@@ -13142,6 +13212,26 @@ function lowerFieldCompoundValue(lowerer, access, op, rhsNode, loc) {
|
|
|
13142
13212
|
else {
|
|
13143
13213
|
lowerer.unsupported("SC1043", access);
|
|
13144
13214
|
}
|
|
13215
|
+
if (storedString && rhs.type.kind === "string" && read.kind === "varRef" && appended !== null) {
|
|
13216
|
+
// The field gives up its value before the concat (no code runs in
|
|
13217
|
+
// between: both operands are already strings), and the concat is the
|
|
13218
|
+
// self-append `old = old + rhs`, which hands the local's reference to
|
|
13219
|
+
// the runtime: the old string is then uniquely owned unless something
|
|
13220
|
+
// else holds it, and is appended to in place. Repeated `this.text += s`
|
|
13221
|
+
// is linear rather than a copy per append.
|
|
13222
|
+
const oldId = read.localId;
|
|
13223
|
+
const oldLoc = read.loc;
|
|
13224
|
+
const oldRef = () => varRef(oldId, STRING, oldLoc);
|
|
13225
|
+
const concat = {
|
|
13226
|
+
kind: "strConcat",
|
|
13227
|
+
left: oldRef(),
|
|
13228
|
+
right: appended,
|
|
13229
|
+
type: STRING,
|
|
13230
|
+
loc,
|
|
13231
|
+
};
|
|
13232
|
+
body.push(lowerer.fieldSetStmt(target, { kind: "strLit", value: "", type: STRING, loc }, loc, access), { kind: "assign", localId: oldId, value: concat, loc }, lowerer.fieldSetStmt(target, oldRef(), loc, access));
|
|
13233
|
+
return { kind: "seqExpr", stmts: body, result: oldRef(), type: STRING, loc };
|
|
13234
|
+
}
|
|
13145
13235
|
const result = save(value, "%compoundResult");
|
|
13146
13236
|
body.push(lowerer.fieldSetStmt(target, lowerer.coerceInto(access, result, target.fieldType), loc, access));
|
|
13147
13237
|
return { kind: "seqExpr", stmts: body, result, type: result.type, loc };
|