@scriptc/compiler 0.3.2 → 0.3.4
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 +1202 -64
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.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 +12 -1
- package/dist/backend/llvm/call-lifetimes.js +41 -11
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +85 -1
- 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 +6 -1
- package/dist/backend/llvm/common.js +8 -1
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +3 -3
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +44 -1
- package/dist/backend/llvm/dyn.js +251 -36
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +77 -14
- package/dist/backend/llvm/emitter.js +461 -108
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +26 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +52 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +169 -63
- 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.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +57 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +57 -19
- 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/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +10 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +255 -29
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +176 -7
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +25 -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.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +212 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +184 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.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 +24 -0
- package/dist/backend/llvm/map-number-lookup.js +88 -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 +158 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
- package/dist/backend/llvm/map-read-lifetimes.js +90 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +9 -0
- package/dist/backend/llvm/publish.js +25 -4
- 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 +19 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +5 -1
- package/dist/backend/llvm/regions.js +24 -10
- 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/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.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 +13 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -2
- package/dist/backend/native/executable.js +27 -8
- 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 +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +1 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/publication.js +3 -1
- package/dist/backend/publication.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 +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +11 -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/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.js +4 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +2 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +1 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +6 -5
- package/dist/diagnostics/diagnostic.js +7 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/comptime-node.js +2 -2
- package/dist/frontend/comptime-node.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +1 -1
- package/dist/frontend/lowering/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.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +178 -4
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +526 -121
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
- package/dist/frontend/lowering/builtins/filesystem.js +97 -15
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
- package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
- package/dist/frontend/lowering/builtins/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/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.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 +26 -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 +171 -13
- 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/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- 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 +702 -63
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +259 -4
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +118 -12
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +11 -2
- package/dist/frontend/lowering/lower-classes.js +76 -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-dgram.js +77 -52
- package/dist/frontend/lowering/lower-dgram.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 +124 -22
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +240 -49
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +14 -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.d.ts +3 -0
- package/dist/frontend/lowering/lower-server.js +419 -44
- 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 +69 -14
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +1020 -49
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +45 -5
- package/dist/frontend/lowering/lowerer.js +317 -48
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +2 -2
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.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 +11 -3
- package/dist/frontend/lowering/surfaces.js +334 -37
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +1 -1
- package/dist/frontend/npm-static-prune.js +1 -1
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/pipeline.js +6 -4
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -3
- package/dist/frontend/program.js +25 -18
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +15 -1
- package/dist/frontend/resolve.js.map +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 +3 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +21 -1
- package/dist/frontend/type-mapper.js +245 -27
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +7 -5
- 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 +115 -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 +438 -46
- 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 +84 -17
- package/dist/ir/ir.js +54 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +111 -7
- 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 +295 -14
- 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 +11 -4
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-profile.js +13 -13
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +1 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/library/sidecar.js +3 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +4 -2
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +1279 -221
|
@@ -10,15 +10,18 @@ import { adaptZeroArgTimerCallback, lowerTimersMemberCall, TIMER_MODULE_MEMBERS,
|
|
|
10
10
|
import { objectEnumerationReceiver } from "./object-enumeration-receiver.js";
|
|
11
11
|
import { InternalCompilerError } from "../../errors.js";
|
|
12
12
|
import * as ts from "../ts7/adapter.js";
|
|
13
|
+
import { isZlibStreamMember, lowerZlibStreamMethodCall } from "./builtins/compression.js";
|
|
13
14
|
import { lowerGenMethodCall } from "./lower-generators.js";
|
|
14
15
|
import { lowerClassSymbolMethodCall } from "./symbol-methods.js";
|
|
15
16
|
import { errorToStringCall } from "./error-methods.js";
|
|
16
17
|
import { lowerClassPrototypeAssign, lowerClassPrototypeDescriptors } from "./class-prototypes.js";
|
|
17
18
|
import { BYTES_ELEMENT_NAME, BIGINT_T, BOOL, CAUGHT, DYN, F64, NULL_T, STRING, SYMBOL_T, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, canDynCheckTo, funcOf, isDynTypedRefType, isUnitType, shapeHasAccessorSlots, typeEquals, } from "../../ir/ir.js";
|
|
19
|
+
import { lowerProtocolMethodCall } from "./class-protocol-dispatch.js";
|
|
18
20
|
import { isJsSourceFile, locOf, requireSpecOf } from "../program.js";
|
|
21
|
+
import { lowerAssertInstanceCall } from "./assert-instances.js";
|
|
19
22
|
import { isGenericCallableMemberType, typeKey } from "../type-mapper.js";
|
|
20
23
|
import { dynFallbackType, jsFuncNameOf, newFnCtx, staticImportNamespaceType } from "./lowerer.js";
|
|
21
|
-
import { NARROW_FIRST, STRING_INDEX_METHODS, STR_METHODS, stdlibGlobalNameOf } from "./surfaces.js";
|
|
24
|
+
import { NARROW_FIRST, STRING_INDEX_METHODS, STR_METHODS, UTIL_TYPES_KEYS, stdlibGlobalNameOf, } from "./surfaces.js";
|
|
22
25
|
import { dynStringReceiver } from "./containers/dynamic-receivers.js";
|
|
23
26
|
import { lowerArrayConstructor, lowerArrayFromCall, lowerArrayOfCall, } from "./containers/array-construction.js";
|
|
24
27
|
import { lowerDynArrayFilterCall, lowerDynArrayFlatMapCall } from "./containers/array-callbacks.js";
|
|
@@ -32,9 +35,9 @@ import { lowerRegexMethodCall, lowerStringIndexCall, lowerStringMethodCall, lowe
|
|
|
32
35
|
import { createRequireSpecOf } from "./builtins/module-bindings.js";
|
|
33
36
|
import { lowerChildStreamMethodCall, lowerChildWriterMethodCall, } from "./builtins/child-process-methods.js";
|
|
34
37
|
import { lowerCreateRequireCall, lowerImportMetaResolveCall, lowerRequireResolveCall, } from "./builtins/module-resolution.js";
|
|
35
|
-
import { lowerCryptoHashMethodCall } from "./builtins/crypto.js";
|
|
36
|
-
import { lowerDirentMethodCall, lowerFileHandleMethodCall, lowerWatcherMethodCall, } from "./builtins/filesystem.js";
|
|
37
|
-
import { lowerPerfHooksCall } from "./builtins/performance.js";
|
|
38
|
+
import { lowerCipherMethodCall, lowerCryptoHashMethodCall } from "./builtins/crypto.js";
|
|
39
|
+
import { lowerDirentMethodCall, lowerFileHandleMethodCall, lowerDirMethodCall, lowerWatcherMethodCall, } from "./builtins/filesystem.js";
|
|
40
|
+
import { fencePerfEntryKeyWalk, isPerfEntryType, lowerPerfHooksCall, perfEntryTag, } from "./builtins/performance.js";
|
|
38
41
|
import { lowerProcStreamMethodCall } from "./builtins/process.js";
|
|
39
42
|
import { lowerReflectCall } from "./builtins/reflection.js";
|
|
40
43
|
import { lowerAbsenceProbe, lowerOptionalNumber, lowerPromiseAllTupleCall, lowerPromiseRejectCall, lowerToNumberArgument, stringWrapperToString, symbolFieldInfo, templateRawTextOf, } from "./lower-exprs.js";
|
|
@@ -45,8 +48,9 @@ import { httpClientFnBindingOf, lowerCompatReqStreamOptionalCall, lowerHttpClien
|
|
|
45
48
|
import { EMITTER_API_MEMBERS, exactClassOfReceiver, exactInstanceClassOf, findGenericMethodOn, lowerClassGenericMethodCall, lowerStaticMethodCall, lowerStaticFieldRead, returnsOnlyThis, storedClassValueType, } from "./lower-classes.js";
|
|
46
49
|
import { classCallbackCall, isClassCallback } from "./class-callbacks.js";
|
|
47
50
|
import { emitterRooted, lowerEmitterMethodCall } from "./lower-event-emitter.js";
|
|
51
|
+
import { eventTargetApiMethod, lowerEventTargetMethodCall } from "./lower-event-target.js";
|
|
48
52
|
import { lowerConsoleInstanceCall, lowerConsoleMethodCall, lowerConsoleOutput, } from "./lower-console.js";
|
|
49
|
-
import { STREAM_API_MEMBERS, lowerStreamMethodCall, lowerStreamStaticCall, streamSidesOf, } from "./lower-stream.js";
|
|
53
|
+
import { STREAM_API_MEMBERS, STREAM_OPERATORS, lowerStreamMethodCall, lowerStreamStaticCall, streamSidesOf, } from "./lower-stream.js";
|
|
50
54
|
import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, ambientUndefinedFnSymbolOf, contextualUndefReadType, fenceEarlyAliasUse, fenceEarlyNsMemberRef, nsMemberIdentOf, nsUndefRead, } from "./lower-namespaces.js";
|
|
51
55
|
import { expandoMemberRead } from "./lower-expando.js";
|
|
52
56
|
import { fenceNodeModuleMutationCall, lowerRequireCacheKeys } from "./lower-node-module.js";
|
|
@@ -60,6 +64,7 @@ import { spreadNeedsRuntimeArity, completeFuncValueArgs, lowerSpreadArgsCall, co
|
|
|
60
64
|
import { isThisParameter } from "./call-signatures.js";
|
|
61
65
|
import { checkedArmExtraction } from "./coercions/unions.js";
|
|
62
66
|
import { requireObjLitGenericReceiver, objLitGenericFnNodeOf, objLitGenericFnInfoOf, genericCallInstance, } from "./generic-functions.js";
|
|
67
|
+
const ZLIB_STREAM_METHODS = new Set(["flush", "params", "close", "reset"]);
|
|
63
68
|
export function lowerCall(lowerer, expr) {
|
|
64
69
|
const loc = locOf(expr);
|
|
65
70
|
// Object's checker return type is `any`. Claim known object inputs
|
|
@@ -961,6 +966,8 @@ export function lowerCall(lowerer, expr) {
|
|
|
961
966
|
// as named builtin imports — before anything below tries to lower
|
|
962
967
|
// the namespace object itself as a receiver.
|
|
963
968
|
lowerer.lowerNamespaceBuiltinCall(expr, expr.expression) ??
|
|
969
|
+
// Method calls on a static node:assert Assert instance.
|
|
970
|
+
lowerAssertInstanceCall(lowerer, expr, expr.expression, locOf(expr)) ??
|
|
964
971
|
// The node:perf_hooks spoke: performance.now() and its
|
|
965
972
|
// .bind(performance) function value over the runtime's
|
|
966
973
|
// process-start-anchored monotonic clock.
|
|
@@ -992,7 +999,9 @@ export function lowerCall(lowerer, expr) {
|
|
|
992
999
|
lowerer.lowerSearchParamsMethodCall(expr, expr.expression) ??
|
|
993
1000
|
lowerer.lowerStatsMethodCall(expr, expr.expression) ??
|
|
994
1001
|
lowerCryptoHashMethodCall(lowerer, expr, expr.expression) ??
|
|
1002
|
+
lowerCipherMethodCall(lowerer, expr, expr.expression) ??
|
|
995
1003
|
lowerFileHandleMethodCall(lowerer, expr, expr.expression) ??
|
|
1004
|
+
lowerDirMethodCall(lowerer, expr, expr.expression) ??
|
|
996
1005
|
lowerer.lowerChildMethodCall(expr, expr.expression) ??
|
|
997
1006
|
// Piped child-output stream receivers — on/once("data" | "end").
|
|
998
1007
|
lowerChildStreamMethodCall(lowerer, expr, expr.expression) ??
|
|
@@ -2048,6 +2057,7 @@ function lowerObjectOwnCall(lowerer, call, receiverNode, keyNode, extraNodes, me
|
|
|
2048
2057
|
}
|
|
2049
2058
|
else if (type.kind === "record") {
|
|
2050
2059
|
const shape = lowerer.shapes.get(type.shapeId);
|
|
2060
|
+
fencePerfEntryKeyWalk(lowerer, type, receiverNode ?? call, `Object.prototype.${method}`);
|
|
2051
2061
|
if (!shape || shape.tuple || shapeHasAccessorSlots(shape)) {
|
|
2052
2062
|
lowerer.noLowering("Object.prototype." + method + " over this record shape", receiverNode ?? call);
|
|
2053
2063
|
}
|
|
@@ -2763,7 +2773,7 @@ function lowerDynReceiverMethodCall(lowerer, call, access) {
|
|
|
2763
2773
|
// representable prototype declares (test/common's mustCall internals:
|
|
2764
2774
|
// mustCallChecks.push(context), failed.forEach(fn), fn.apply(this,
|
|
2765
2775
|
// args)). Implemented (kind, name) pairs run JS-exact; real-but-
|
|
2766
|
-
// unimplemented methods throw
|
|
2776
|
+
// unimplemented methods throw the 'not supported yet' Error; names the
|
|
2767
2777
|
// kind's prototype lacks throw Node's "x.y is not a function"; OBJ
|
|
2768
2778
|
// receivers call the own member.
|
|
2769
2779
|
// A stored callback must be read before argument effects, and called
|
|
@@ -2782,6 +2792,13 @@ function lowerDynReceiverMethodCall(lowerer, call, access) {
|
|
|
2782
2792
|
.declarationsOf(prop)
|
|
2783
2793
|
.some((decl) => ts.isPropertyDeclaration(decl) || ts.isPropertySignature(decl)));
|
|
2784
2794
|
})();
|
|
2795
|
+
// Protocol methods keep their static signature: instances of the
|
|
2796
|
+
// implementing classes call the native method.
|
|
2797
|
+
const protocolCall = !callbackProperty && lowerer.classImplementedProtocol(recvTs)
|
|
2798
|
+
? lowerProtocolMethodCall(lowerer, call, access, recv)
|
|
2799
|
+
: null;
|
|
2800
|
+
if (protocolCall)
|
|
2801
|
+
return protocolCall;
|
|
2785
2802
|
const dispatched = callbackProperty
|
|
2786
2803
|
? null
|
|
2787
2804
|
: lowerDynDispatchMethodCall(lowerer, call, access, recv, arrayReceiver);
|
|
@@ -2851,7 +2868,7 @@ function lowerDynReceiverMethodCall(lowerer, call, access) {
|
|
|
2851
2868
|
/** Prototype method names of the checked-dynamic tree-representable kinds (String, Array,
|
|
2852
2869
|
* Object, Function, Number prototypes): a dyn receiver call on one of
|
|
2853
2870
|
* these could be a REAL method on a real value, which a stored-member
|
|
2854
|
-
* read would
|
|
2871
|
+
* read would answer incorrectly — they keep the fence. Everything else
|
|
2855
2872
|
* is own-property-or-throw for every dyn value (the honest dynCall). */
|
|
2856
2873
|
const DYN_PROTO_METHOD_NAMES = new Set([
|
|
2857
2874
|
// Object.prototype
|
|
@@ -2934,7 +2951,7 @@ const DYN_PROTO_METHOD_NAMES = new Set([
|
|
|
2934
2951
|
* subset of DYN_PROTO_METHOD_NAMES with a receiver-kind dispatch): the
|
|
2935
2952
|
* runtime runs the real method for the receiver's kind, throws Node's
|
|
2936
2953
|
* is-not-a-function where the kind's prototype lacks the name, and
|
|
2937
|
-
*
|
|
2954
|
+
* throws the 'not supported yet' Error on real-but-unimplemented pairs. */
|
|
2938
2955
|
const DYN_DISPATCH_METHODS = new Set([
|
|
2939
2956
|
"toFixed",
|
|
2940
2957
|
"toExponential",
|
|
@@ -2970,7 +2987,7 @@ const DYN_DISPATCH_METHODS = new Set([
|
|
|
2970
2987
|
// boxed through the checked-dynamic boundary): these names dispatch on
|
|
2971
2988
|
// the runtime kind so a boxed IncomingMessage/ServerResponse/Socket
|
|
2972
2989
|
// routes onto the same entry points the static lowerings use (modeled
|
|
2973
|
-
// members) or the
|
|
2990
|
+
// members) or the 'not supported yet' error path (real-but-unmodeled ones).
|
|
2974
2991
|
// On every other dyn kind they answer exactly what the stored-member
|
|
2975
2992
|
// path answered (OBJ own members call; the rest throw Node's
|
|
2976
2993
|
// is-not-a-function).
|
|
@@ -3414,7 +3431,7 @@ function lowerNumberToStringCall(lowerer, call, access) {
|
|
|
3414
3431
|
* helper dispatches on the tag, so `chunk.toString()` over the ngrok
|
|
3415
3432
|
* `Buffer | string` listener param needs no narrowing. Unit-armed
|
|
3416
3433
|
* unions stay out — `(undefined).toString()` THROWS in JS, and
|
|
3417
|
-
* claiming it here would
|
|
3434
|
+
* claiming it here would print "undefined" instead. Null for
|
|
3418
3435
|
* other receivers/arms (the narrow-first fences stay). */
|
|
3419
3436
|
function lowerUnionToStringCall(lowerer, call, access) {
|
|
3420
3437
|
if (call.questionDotToken || access.questionDotToken)
|
|
@@ -3474,6 +3491,9 @@ function lowerDefaultToStringCall(lowerer, call, access) {
|
|
|
3474
3491
|
return null;
|
|
3475
3492
|
}
|
|
3476
3493
|
const loc = locOf(call);
|
|
3494
|
+
if (recvT.kind === "record" && isPerfEntryType(lowerer, recvT)) {
|
|
3495
|
+
return perfEntryTag(lowerer, lowerer.lowerExpr(access.expression), recvT, loc);
|
|
3496
|
+
}
|
|
3477
3497
|
const constant = { kind: "strLit", value: "[object Object]", type: STRING, loc };
|
|
3478
3498
|
// `(<A>{}).toString()` — assertion-wrapped literals and plain reads
|
|
3479
3499
|
// have nothing to evaluate; pureObjectToStringReceiver widens
|
|
@@ -6425,6 +6445,31 @@ function lowerObjectStaticCall(lowerer, call, access) {
|
|
|
6425
6445
|
if (call.arguments.length !== 1 || ts.isSpreadElement(call.arguments[0]))
|
|
6426
6446
|
return null;
|
|
6427
6447
|
const argNode = call.arguments[0];
|
|
6448
|
+
// util.types and node:util/types list Node's pinned key census
|
|
6449
|
+
// (UTIL_TYPES_KEYS): the object's own keys in Node's order, or the module
|
|
6450
|
+
// namespace's export names sorted with "default". values/entries would
|
|
6451
|
+
// include members that do not compile yet.
|
|
6452
|
+
const probedModule = tryLowerExpression(lowerer, argNode);
|
|
6453
|
+
if (lowerer.builtinNamespaceModuleOf(argNode) === "util/types" ||
|
|
6454
|
+
(probedModule?.type.kind === "moduleNs" && probedModule.type.moduleId === "builtin:util/types")) {
|
|
6455
|
+
if (member !== "keys") {
|
|
6456
|
+
lowerer.noLowering(`Object.${member} over util.types`, call, "call the util.types predicates by name");
|
|
6457
|
+
}
|
|
6458
|
+
const symbol = ts.isIdentifier(argNode)
|
|
6459
|
+
? lowerer.checker.getSymbolAtLocation(argNode)
|
|
6460
|
+
: undefined;
|
|
6461
|
+
const namespace = symbol
|
|
6462
|
+
? lowerer.checker.declarationsOf(symbol).some((decl) => ts.isNamespaceImport(decl))
|
|
6463
|
+
: false;
|
|
6464
|
+
const names = namespace ? [...UTIL_TYPES_KEYS, "default"].sort() : UTIL_TYPES_KEYS;
|
|
6465
|
+
const loc = locOf(call);
|
|
6466
|
+
return {
|
|
6467
|
+
kind: "arrayLit",
|
|
6468
|
+
elems: names.map((name) => ({ kind: "strLit", value: name, type: STRING, loc })),
|
|
6469
|
+
type: arrayOf(STRING),
|
|
6470
|
+
loc,
|
|
6471
|
+
};
|
|
6472
|
+
}
|
|
6428
6473
|
// A compiled PROGRAM module namespace is a nominal token whose members
|
|
6429
6474
|
// remain live bindings, but its enumerable key set is static and Node
|
|
6430
6475
|
// sorts it in code-unit order. Materialize exactly those value-export
|
|
@@ -6527,6 +6572,18 @@ function lowerObjectStaticCall(lowerer, call, access) {
|
|
|
6527
6572
|
type: resultT,
|
|
6528
6573
|
loc: locOf(call),
|
|
6529
6574
|
};
|
|
6575
|
+
// Values are `any[]`, which is the checked-dynamic array. When the
|
|
6576
|
+
// program only iterates or indexes the result, or passes it to a
|
|
6577
|
+
// read-only array method, a native vector of the checked values skips
|
|
6578
|
+
// building that array and, for for-of, the iterator protocol.
|
|
6579
|
+
if (member === "values" && !isJsSourceFile(call.getSourceFile()) && consumesValueList(call))
|
|
6580
|
+
return {
|
|
6581
|
+
kind: "libCall",
|
|
6582
|
+
fn: "dyn.objValueList",
|
|
6583
|
+
args: [v],
|
|
6584
|
+
type: arrayOf(DYN),
|
|
6585
|
+
loc: locOf(call),
|
|
6586
|
+
};
|
|
6530
6587
|
return { kind: "libCall", fn, args: [v], type: DYN, loc: locOf(call) };
|
|
6531
6588
|
}
|
|
6532
6589
|
}
|
|
@@ -6545,6 +6602,7 @@ function lowerObjectStaticCall(lowerer, call, access) {
|
|
|
6545
6602
|
// (own enumerable properties) and — for values/entries — the getter
|
|
6546
6603
|
// RESULTS, invoked in key order. The static field walk models neither
|
|
6547
6604
|
// (accessor slots live outside declaredOrder), so the surface fences.
|
|
6605
|
+
fencePerfEntryKeyWalk(lowerer, argIr, call, `Object.${member}`);
|
|
6548
6606
|
if (shapeHasAccessorSlots(shape)) {
|
|
6549
6607
|
lowerer.unsupported("SC1090", call, `Object.${member} over a shape carrying get/set accessor properties (Node lists the accessor names${member === "keys" ? "" : " and invokes the getters"} — the static key walk cannot; read the properties explicitly)`);
|
|
6550
6608
|
}
|
|
@@ -6816,6 +6874,41 @@ function consumesEntryPairs(call) {
|
|
|
6816
6874
|
ts.isCallExpression(parent.parent) &&
|
|
6817
6875
|
parent.parent.expression === parent);
|
|
6818
6876
|
}
|
|
6877
|
+
/** Whether an Object.values result is only iterated, indexed or passed to
|
|
6878
|
+
* a read-only array method, so no code observes or changes its array
|
|
6879
|
+
* representation. A bare `.length` read keeps the checked-dynamic array,
|
|
6880
|
+
* which measures as fast. */
|
|
6881
|
+
function consumesValueList(call) {
|
|
6882
|
+
let node = call;
|
|
6883
|
+
while (ts.isParenthesizedExpression(node.parent))
|
|
6884
|
+
node = node.parent;
|
|
6885
|
+
const parent = node.parent;
|
|
6886
|
+
if (ts.isForOfStatement(parent))
|
|
6887
|
+
return parent.expression === node && !parent.awaitModifier;
|
|
6888
|
+
if (ts.isElementAccessExpression(parent))
|
|
6889
|
+
return parent.expression === node && !isWriteTarget(parent);
|
|
6890
|
+
if (!ts.isPropertyAccessExpression(parent) || parent.expression !== node)
|
|
6891
|
+
return false;
|
|
6892
|
+
return (VALUE_LIST_METHODS.has(parent.name.text) &&
|
|
6893
|
+
ts.isCallExpression(parent.parent) &&
|
|
6894
|
+
parent.parent.expression === parent);
|
|
6895
|
+
}
|
|
6896
|
+
/** Whether an access is assigned, updated or deleted. */
|
|
6897
|
+
function isWriteTarget(access) {
|
|
6898
|
+
let node = access;
|
|
6899
|
+
while (ts.isParenthesizedExpression(node.parent))
|
|
6900
|
+
node = node.parent;
|
|
6901
|
+
const parent = node.parent;
|
|
6902
|
+
if (ts.isBinaryExpression(parent))
|
|
6903
|
+
return (parent.left === node &&
|
|
6904
|
+
parent.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
|
|
6905
|
+
parent.operatorToken.kind <= ts.SyntaxKind.LastAssignment);
|
|
6906
|
+
if (ts.isPrefixUnaryExpression(parent) || ts.isPostfixUnaryExpression(parent))
|
|
6907
|
+
return (parent.operator === ts.SyntaxKind.PlusPlusToken ||
|
|
6908
|
+
parent.operator === ts.SyntaxKind.MinusMinusToken);
|
|
6909
|
+
return ts.isDeleteExpression(parent);
|
|
6910
|
+
}
|
|
6911
|
+
const VALUE_LIST_METHODS = new Set(["every", "findIndex", "forEach", "join", "reduce", "some"]);
|
|
6819
6912
|
const ENTRY_PAIR_CALLBACK_METHODS = new Set([
|
|
6820
6913
|
"every",
|
|
6821
6914
|
"filter",
|
|
@@ -7015,7 +7108,7 @@ export function lowerRecordFieldCall(lowerer, call, access) {
|
|
|
7015
7108
|
* URL.revokeObjectURL() with NO argument: Node's ERR_MISSING_ARGS
|
|
7016
7109
|
* throws before the registry lookup, so the zero-argument contract is
|
|
7017
7110
|
* exact without any blob machinery. The one-argument form (Node's
|
|
7018
|
-
*
|
|
7111
|
+
* no-op for unregistered ids) and createObjectURL keep their
|
|
7019
7112
|
* fences — a compiled program has no blob registry to consult. */
|
|
7020
7113
|
function lowerUrlStaticCall(lowerer, call, callee) {
|
|
7021
7114
|
if (!ts.isPropertyAccessExpression(callee) || callee.questionDotToken !== undefined)
|
|
@@ -7444,13 +7537,21 @@ export function lowerObjectMethodCall(lowerer, call, access) {
|
|
|
7444
7537
|
if (!info)
|
|
7445
7538
|
lowerer.flushDeferredClass(receiverIr.className);
|
|
7446
7539
|
const found = info ? lowerer.findMethodOn(info, access.name.text) : null;
|
|
7540
|
+
// The zlib stream members (flush/params/close/reset) are declared on
|
|
7541
|
+
// the zlib classes; their receivers are runtime Transform streams.
|
|
7542
|
+
if (info &&
|
|
7543
|
+
!found &&
|
|
7544
|
+
ZLIB_STREAM_METHODS.has(access.name.text) &&
|
|
7545
|
+
isZlibStreamMember(lowerer, access)) {
|
|
7546
|
+
return lowerZlibStreamMethodCall(lowerer, call, access);
|
|
7547
|
+
}
|
|
7447
7548
|
// The stream surface: API-named calls on stream-rooted receivers
|
|
7448
7549
|
// lower through the stream spoke (checked before the emitter surface
|
|
7449
7550
|
// — the two member sets are disjoint, but streams root at the emitter
|
|
7450
7551
|
// so both guards would pass an emitter-named call).
|
|
7451
7552
|
if (info &&
|
|
7452
7553
|
!found &&
|
|
7453
|
-
STREAM_API_MEMBERS.has(access.name.text) &&
|
|
7554
|
+
(STREAM_API_MEMBERS.has(access.name.text) || STREAM_OPERATORS.has(access.name.text)) &&
|
|
7454
7555
|
streamSidesOf(lowerer, info) !== null) {
|
|
7455
7556
|
const stream = lowerStreamMethodCall(lowerer, call, access, info);
|
|
7456
7557
|
if (stream)
|
|
@@ -7462,6 +7563,11 @@ export function lowerObjectMethodCall(lowerer, call, access) {
|
|
|
7462
7563
|
if (info && !found && EMITTER_API_MEMBERS.has(access.name.text) && emitterRooted(lowerer, info)) {
|
|
7463
7564
|
return lowerEmitterMethodCall(lowerer, call, access, info);
|
|
7464
7565
|
}
|
|
7566
|
+
// The inherited EventTarget/Event methods of a class rooted at those
|
|
7567
|
+
// runtime bases (subclass members with these names are fenced).
|
|
7568
|
+
if (info && !found && eventTargetApiMethod(info, access.name.text)) {
|
|
7569
|
+
return lowerEventTargetMethodCall(lowerer, call, access, info, lowerReceiver());
|
|
7570
|
+
}
|
|
7465
7571
|
// GENERIC methods (own type parameters) never enter the methods table:
|
|
7466
7572
|
// they monomorphize per call site and dispatch statically
|
|
7467
7573
|
// (lowerClassGenericMethodCall has the exactness rules).
|