@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,4 +1,5 @@
|
|
|
1
1
|
import { dynUndefinedExpr, numLit, varRef } from "../../ir/build.js";
|
|
2
|
+
import { lowerEventObjectPropertyWrite } from "./lower-event-target.js";
|
|
2
3
|
import { lowerDynObjectLiteral } from "./expressions/object-literals.js";
|
|
3
4
|
import { importMetaBindingSource } from "./import-meta.js";
|
|
4
5
|
import { iteratorCanStep, iteratorValue } from "./iterator-consumption.js";
|
|
@@ -40,6 +41,7 @@ import { genericIfaceBindingKeepsClass } from "./lower-classes.js";
|
|
|
40
41
|
import { lowerStreamUnderscoreAssign, streamClassAliasDecl } from "./lower-stream.js";
|
|
41
42
|
import { lowerHttpResPropertyAssignment, lowerHttpServerTimeoutAssignment, lowerServerCloseOverrideAssignment, } from "./lower-server.js";
|
|
42
43
|
import { lowerUrlAssignment } from "./builtins/url.js";
|
|
44
|
+
import { isFspGlobCall, lowerFspGlobForAwait } from "./builtins/fs-glob.js";
|
|
43
45
|
import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireCalleeFileOf, createRequireNamespaceDecl, createRequireProgramModuleDecl, createRequireProgramModuleOf, } from "./builtins/module-bindings.js";
|
|
44
46
|
import { lowerNodeModuleCall } from "./builtins/module-resolution.js";
|
|
45
47
|
import { registerBuiltinCallableAlias } from "./builtins/callable-aliases.js";
|
|
@@ -59,6 +61,7 @@ import { probeNodeRequireRefusal } from "../npm.js";
|
|
|
59
61
|
import { constituentTypes } from "../ts7/checker.js";
|
|
60
62
|
import { npmStaticPackageOfPath } from "../npm-static.js";
|
|
61
63
|
import { fenceNodeModuleMutation } from "./lower-node-module.js";
|
|
64
|
+
import { fencePerfEntryKeyWalk } from "./builtins/performance.js";
|
|
62
65
|
/** An opted package's directly-returned empty array may take the function's
|
|
63
66
|
* explicit static return element type. This is the common JS accumulator
|
|
64
67
|
* shape (`const result = []; result.push(value); return result`) and is
|
|
@@ -524,7 +527,7 @@ export function lowerStmts(lowerer, stmts) {
|
|
|
524
527
|
// only — a capture wrapper in force means collection owns the
|
|
525
528
|
// report). The statement's diagnostics move OFF the build and
|
|
526
529
|
// onto the fence: executing the statement throws the first
|
|
527
|
-
// one's message, so
|
|
530
|
+
// one's message, so no diagnostic is dropped — either
|
|
528
531
|
// the statement never runs (Node parity: the construct never
|
|
529
532
|
// executed) or it reports exactly what the compile fence would
|
|
530
533
|
// have said.
|
|
@@ -805,7 +808,7 @@ function varBindingType(lowerer, nameNode) {
|
|
|
805
808
|
* the whole enclosing function body regardless of block position, and
|
|
806
809
|
* every same-name `var` in that function is the SAME binding (tsc merges
|
|
807
810
|
* the declarations into one symbol, so symbol-keyed resolution gets the
|
|
808
|
-
* merge
|
|
811
|
+
* merge automatically). This mints the one function-scoped slot on first
|
|
809
812
|
* encounter: an IrLocal registered in the function's ROOT scope frame
|
|
810
813
|
* (never popped by block exits) whose `varDecl` is PUSHED into the
|
|
811
814
|
* function-root statement list at the current position — everything
|
|
@@ -871,8 +874,8 @@ function hoistVarBinding(lowerer, symbol, nameNode) {
|
|
|
871
874
|
* bindings (the dyn undefined). Everything else returns false
|
|
872
875
|
* and the reference lands on the named fence in rejectUnresolvedSymbol:
|
|
873
876
|
* a slot of a narrower type has no bit pattern for the `undefined` Node
|
|
874
|
-
* would yield if the capture ran early, and guessing "it won't"
|
|
875
|
-
*
|
|
877
|
+
* would yield if the capture ran early, and guessing "it won't" would
|
|
878
|
+
* produce wrong output without an error. */
|
|
876
879
|
export function predeclareForwardVar(lowerer, symbol) {
|
|
877
880
|
// Module-scope vars already have their global storage.
|
|
878
881
|
if (lowerer.globalsBySymbol.has(symbol))
|
|
@@ -2119,7 +2122,7 @@ export function lowerBindingPattern(lowerer, pattern, srcRef, srcType, isLet, ou
|
|
|
2119
2122
|
// reads (base-chain accessors and setter-only rejections resolve
|
|
2120
2123
|
// identically). Rest elements, methods, and names no class on the
|
|
2121
2124
|
// chain declares keep named fences (a detached method would lose its
|
|
2122
|
-
// receiver
|
|
2125
|
+
// receiver without an error; JS binds the prototype function).
|
|
2123
2126
|
if (srcType.kind === "object") {
|
|
2124
2127
|
const info = lowerer.classes.get(srcType.className);
|
|
2125
2128
|
if (!info)
|
|
@@ -3036,12 +3039,12 @@ function objectRestValue(lowerer, el, srcRef, srcType, shape) {
|
|
|
3036
3039
|
* members (methods and accessors stay behind; the checker's rest type
|
|
3037
3040
|
* excludes them too, so the two sides agree). The packed record must
|
|
3038
3041
|
* agree with the checker's rest type field-for-field — a non-public
|
|
3039
|
-
* field IS copied by JS but the rest type cannot name it (
|
|
3042
|
+
* field IS copied by JS but the rest type cannot name it (undiagnosed
|
|
3040
3043
|
* divergence; fence) — and key-for-key in ORDER: the packed shape's
|
|
3041
3044
|
* JSON/Object.keys order is first-seen global metadata, and a checker
|
|
3042
3045
|
* rest type that reorders (own-before-inherited) would make the
|
|
3043
3046
|
* enumeration surfaces diverge from Node, so it fences instead of
|
|
3044
|
-
*
|
|
3047
|
+
* reordering. Runtime-provided chains (Error/EventEmitter/
|
|
3045
3048
|
* stream roots) carry runtime-internal state no record copy can
|
|
3046
3049
|
* reproduce — fenced. ES-#private fields are own but non-enumerable:
|
|
3047
3050
|
* JS skips them and so does the packing. */
|
|
@@ -3051,7 +3054,7 @@ function classInstanceRestValue(lowerer, blame, srcRef, srcType, info, consumed,
|
|
|
3051
3054
|
lowerer.unsupported("SC1031", blame, "rest bindings over class instances with symbol-keyed fields (the copied symbols have no record form)");
|
|
3052
3055
|
}
|
|
3053
3056
|
for (let c = info; c; c = c.base) {
|
|
3054
|
-
if (c.builtinError || c.builtinEmitter || c.builtinStream) {
|
|
3057
|
+
if (c.builtinError || c.builtinEmitter || c.builtinStream || c.builtinEventTarget) {
|
|
3055
3058
|
lowerer.unsupported("SC1031", blame, "rest bindings over runtime-provided class instances (Error/EventEmitter/stream internals have no record form)");
|
|
3056
3059
|
}
|
|
3057
3060
|
}
|
|
@@ -4080,6 +4083,9 @@ function annotatedInitializerTarget(lowerer, name) {
|
|
|
4080
4083
|
function inferredOptionalRecordType(lowerer, decl, declared, actual) {
|
|
4081
4084
|
if (decl.type || hasJsTypeAnnotation(decl))
|
|
4082
4085
|
return declared;
|
|
4086
|
+
const symbol = ts.isIdentifier(decl.name) ? lowerer.resolveValueSymbol(decl.name) : undefined;
|
|
4087
|
+
if (symbol && lowerer.runtimeOptionalRecordsKeptDeclared.has(symbol))
|
|
4088
|
+
return declared;
|
|
4083
4089
|
if (lowerer.isRuntimeOptionalRecordVariant(actual, declared))
|
|
4084
4090
|
return actual;
|
|
4085
4091
|
if (declared.kind !== "record" || actual.kind !== "record")
|
|
@@ -4873,7 +4879,7 @@ function lowerCjsExportStatement(lowerer, cjs) {
|
|
|
4873
4879
|
// through to the declaration) — EXACT for const/function bindings, a
|
|
4874
4880
|
// live-binding lie for `let`: Node copies the VALUE into the table at
|
|
4875
4881
|
// this statement, so later reassignments are invisible to importers.
|
|
4876
|
-
// Mutable bindings fence instead of diverging
|
|
4882
|
+
// Mutable bindings fence instead of diverging from Node.
|
|
4877
4883
|
const fenceMutable = (nameNode) => {
|
|
4878
4884
|
const sym = lowerer.resolveValueSymbol(nameNode);
|
|
4879
4885
|
const g = sym ? lowerer.globalsBySymbol.get(sym) : undefined;
|
|
@@ -5214,6 +5220,12 @@ export function lowerExprStatement(lowerer, expr) {
|
|
|
5214
5220
|
return lowerer.lowerElementWrite(expr);
|
|
5215
5221
|
if (ts.isPropertyAccessExpression(expr.left)) {
|
|
5216
5222
|
fenceNodeModuleMutation(lowerer, expr.left, "assignment");
|
|
5223
|
+
// The writable Event accessors on Event subclass instances.
|
|
5224
|
+
{
|
|
5225
|
+
const eventWrite = lowerEventObjectPropertyWrite(lowerer, expr.left, expr.right);
|
|
5226
|
+
if (eventWrite)
|
|
5227
|
+
return { kind: "exprStmt", expr: eventWrite, loc: locOf(expr) };
|
|
5228
|
+
}
|
|
5217
5229
|
// Native arrays have a writable length property. The runtime grows
|
|
5218
5230
|
// by creating holes and truncates with RC-aware removal; keep this
|
|
5219
5231
|
// as a statement operation so invalid lengths can use the normal
|
|
@@ -5232,7 +5244,7 @@ export function lowerExprStatement(lowerer, expr) {
|
|
|
5232
5244
|
// `process.env.NAME = v` — setenv(3): later env reads and spawned
|
|
5233
5245
|
// children observe the write, exactly Node. Values are strings
|
|
5234
5246
|
// (Node stringifies everything; a non-string RHS fences instead
|
|
5235
|
-
// of
|
|
5247
|
+
// of diverging from Node). The computed-key form lands in
|
|
5236
5248
|
// lowerElementWrite.
|
|
5237
5249
|
if (lowerer.isProcessEnv(expr.left.expression) && !expr.left.questionDotToken) {
|
|
5238
5250
|
const loc = locOf(expr);
|
|
@@ -5293,7 +5305,7 @@ export function lowerExprStatement(lowerer, expr) {
|
|
|
5293
5305
|
// own name: the field's module global assigns. Writes through a
|
|
5294
5306
|
// SUBCLASS name (`D.x = v` creates an OWN property on D in JS —
|
|
5295
5307
|
// different storage) and through class VALUES (the same dynamic
|
|
5296
|
-
// story) are named fences
|
|
5308
|
+
// story) are named fences instead of an incorrect global write.
|
|
5297
5309
|
if (!expr.left.questionDotToken &&
|
|
5298
5310
|
(ts.isIdentifier(expr.left.expression) ||
|
|
5299
5311
|
expr.left.expression.kind === ts.SyntaxKind.ThisKeyword)) {
|
|
@@ -5447,6 +5459,20 @@ export function lowerExprStatement(lowerer, expr) {
|
|
|
5447
5459
|
loc,
|
|
5448
5460
|
};
|
|
5449
5461
|
}
|
|
5462
|
+
// process.title = name: libuv's uv_set_process_title (the
|
|
5463
|
+
// runtime truncates to the original argument area on POSIX).
|
|
5464
|
+
if (flag === "title") {
|
|
5465
|
+
const loc = locOf(expr);
|
|
5466
|
+
const value = lowerer.lowerExpr(expr.right);
|
|
5467
|
+
if (value.type.kind !== "string") {
|
|
5468
|
+
lowerer.noLowering(`process.title writes of '${lowerer.fmt(value.type)}' values`, expr.right, "assign a string");
|
|
5469
|
+
}
|
|
5470
|
+
return {
|
|
5471
|
+
kind: "exprStmt",
|
|
5472
|
+
expr: { kind: "libCall", fn: "process.setTitle", args: [value], type: VOID, loc },
|
|
5473
|
+
loc,
|
|
5474
|
+
};
|
|
5475
|
+
}
|
|
5450
5476
|
}
|
|
5451
5477
|
// `r._read = fn` / `w._write = fn` (and the other underscore
|
|
5452
5478
|
// methods) on a runtime-stream-rooted receiver: Node's
|
|
@@ -6677,6 +6703,13 @@ export function lowerForOf(lowerer, stmt) {
|
|
|
6677
6703
|
// A synchronous array iterator is also valid in `for await`. Its values
|
|
6678
6704
|
// take the async-from-sync path below; other async sources retain their
|
|
6679
6705
|
// dedicated request protocols.
|
|
6706
|
+
if (stmt.awaitModifier) {
|
|
6707
|
+
let head = stmt.expression;
|
|
6708
|
+
while (ts.isParenthesizedExpression(head))
|
|
6709
|
+
head = head.expression;
|
|
6710
|
+
if (isFspGlobCall(lowerer, head))
|
|
6711
|
+
return lowerFspGlobForAwait(lowerer, stmt, head);
|
|
6712
|
+
}
|
|
6680
6713
|
const awaitArray = !!stmt.awaitModifier && lowerer.mapTypeOf(lowerer.typeOf(stmt.expression))?.kind === "array";
|
|
6681
6714
|
if (stmt.awaitModifier && !awaitArray) {
|
|
6682
6715
|
{
|
|
@@ -8341,7 +8374,8 @@ function lowerForIn(lowerer, stmt) {
|
|
|
8341
8374
|
// Accessor-carrying shapes: Node's for-in visits the accessor
|
|
8342
8375
|
// NAMES (own enumerable properties) — the static key walk omits
|
|
8343
8376
|
// them (accessor slots live outside declaredOrder), so the loop
|
|
8344
|
-
// fences rather than
|
|
8377
|
+
// fences rather than skip keys.
|
|
8378
|
+
fencePerfEntryKeyWalk(lowerer, receiver.type, stmt.expression, "for-in");
|
|
8345
8379
|
if (shapeHasAccessorSlots(rShape)) {
|
|
8346
8380
|
lowerer.unsupported("SC1090", stmt.expression, "for-in over a shape carrying get/set accessor properties (Node visits the accessor names — the static key walk cannot; read the properties explicitly)");
|
|
8347
8381
|
}
|