@scriptc/compiler 0.1.7 → 0.2.0
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 +73 -24
- package/ambient/scriptc-overrides.d.ts +10 -6
- package/ambient/scriptc.d.ts +15 -0
- package/dist/backend/build-cache.d.ts +1 -3
- package/dist/backend/build-cache.js +3 -22
- package/dist/backend/build-cache.js.map +1 -1
- package/dist/backend/cache-root.d.ts +3 -0
- package/dist/backend/cache-root.js +23 -0
- package/dist/backend/cache-root.js.map +1 -0
- package/dist/backend/cycle-analysis.d.ts +15 -0
- package/dist/backend/cycle-analysis.js +107 -0
- package/dist/backend/cycle-analysis.js.map +1 -0
- package/dist/backend/cycle-analysis.test.js +124 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -0
- package/dist/backend/executable-features.d.ts +4 -0
- package/dist/backend/executable-features.js +42 -0
- package/dist/backend/executable-features.js.map +1 -0
- package/dist/backend/external-c.d.ts +5 -27
- package/dist/backend/external-c.js +5 -40
- package/dist/backend/external-c.js.map +1 -1
- package/dist/backend/ffi-callbacks.d.ts +2 -3
- package/dist/backend/ffi-callbacks.js +2 -3
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/library-identity-markers.d.ts +4 -9
- package/dist/backend/library-identity-markers.js +11 -49
- package/dist/backend/library-identity-markers.js.map +1 -1
- package/dist/backend/library-pack.d.ts +5 -0
- package/dist/backend/library-pack.js +123 -0
- package/dist/backend/library-pack.js.map +1 -0
- package/dist/backend/link-plan-core.d.ts +20 -0
- package/dist/backend/link-plan-core.js +18 -0
- package/dist/backend/link-plan-core.js.map +1 -0
- package/dist/backend/link-plan.d.ts +1 -1
- package/dist/backend/link-plan.js +16 -17
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/link-trace.d.ts +2 -0
- package/dist/backend/link-trace.js +24 -0
- package/dist/backend/link-trace.js.map +1 -0
- package/dist/backend/linker.js +1 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/literals.d.ts +9 -0
- package/dist/backend/literals.js +35 -0
- package/dist/backend/literals.js.map +1 -0
- package/dist/backend/literals.test.d.ts +1 -0
- package/dist/backend/literals.test.js +53 -0
- package/dist/backend/literals.test.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +2 -0
- package/dist/backend/llvm/blocks.js +9 -4
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.d.ts +1 -0
- package/dist/backend/llvm/blocks.test.js +91 -0
- package/dist/backend/llvm/blocks.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +14 -8
- package/dist/backend/llvm/classes.js +70 -28
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -1
- package/dist/backend/llvm/common.js +45 -4
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/debug-info.js +2 -7
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/debug-info.test.d.ts +1 -0
- package/dist/backend/llvm/debug-info.test.js +110 -0
- package/dist/backend/llvm/debug-info.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +16 -2
- package/dist/backend/llvm/dyn.js +494 -165
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +596 -1
- package/dist/backend/llvm/emitter.js +695 -410
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.d.ts +1 -0
- package/dist/backend/llvm/emitter.test.js +179 -0
- package/dist/backend/llvm/emitter.test.js.map +1 -0
- package/dist/backend/llvm/expr-async.js +23 -14
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +32 -14
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-callbacks.js +25 -22
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +136 -35
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +1 -1
- package/dist/backend/llvm/expr-containers.js +43 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +5 -260
- package/dist/backend/llvm/expr-control.js +9 -5
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.d.ts +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +62 -74
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.d.ts +1 -1
- package/dist/backend/llvm/expr-island.js +11 -7
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +51 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +1 -1
- package/dist/backend/llvm/expr-records.d.ts +5 -1
- package/dist/backend/llvm/expr-records.js +43 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +4 -4
- package/dist/backend/llvm/expr-stream-bridges.js +102 -121
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.d.ts +1 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js +55 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -0
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +12 -12
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +19 -0
- package/dist/backend/llvm/layouts.js +12 -0
- package/dist/backend/llvm/layouts.js.map +1 -0
- package/dist/backend/llvm/lib-abi.d.ts +19 -0
- package/dist/backend/llvm/lib-abi.js +82 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -0
- package/dist/backend/llvm/lib-connect.d.ts +2 -0
- package/dist/backend/llvm/lib-connect.js +51 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.d.ts +2 -0
- package/dist/backend/llvm/lib-datagram.js +135 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -0
- package/dist/backend/llvm/lib-dispatch.js +50 -6
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +30 -18
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +2 -0
- package/dist/backend/llvm/lib-http2.js +215 -0
- package/dist/backend/llvm/lib-http2.js.map +1 -0
- package/dist/backend/llvm/lib-lookup.d.ts +2 -0
- package/dist/backend/llvm/lib-lookup.js +39 -0
- package/dist/backend/llvm/lib-lookup.js.map +1 -0
- package/dist/backend/llvm/lib-network.js +25 -2
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +21 -16
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +117 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +3 -2
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.d.ts +2 -0
- package/dist/backend/llvm/lib-test.js +34 -0
- package/dist/backend/llvm/lib-test.js.map +1 -0
- package/dist/backend/llvm/lib-tls.d.ts +2 -0
- package/dist/backend/llvm/lib-tls.js +82 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +10 -9
- package/dist/backend/llvm/shapes.js +35 -130
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/unsupported.d.ts +1 -0
- package/dist/backend/llvm/unsupported.js +1 -2
- package/dist/backend/llvm/unsupported.js.map +1 -1
- package/dist/backend/llvm/walkers.js +1 -7
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/mangle.d.ts +2 -2
- package/dist/backend/mangle.js +16 -5
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/{c/may-throw.d.ts → may-throw.d.ts} +1 -1
- package/dist/backend/{c/may-throw.js → may-throw.js} +51 -46
- package/dist/backend/may-throw.js.map +1 -0
- package/dist/backend/may-throw.test.d.ts +1 -0
- package/dist/backend/may-throw.test.js +58 -0
- package/dist/backend/may-throw.test.js.map +1 -0
- package/dist/backend/native-codegen-core.d.ts +22 -0
- package/dist/backend/native-codegen-core.js +44 -0
- package/dist/backend/native-codegen-core.js.map +1 -0
- package/dist/backend/native-codegen.d.ts +3 -19
- package/dist/backend/native-codegen.js +5 -44
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +2 -2
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +94 -0
- package/dist/backend/native-link-info-core.js +62 -0
- package/dist/backend/native-link-info-core.js.map +1 -0
- package/dist/backend/native-link-info.d.ts +3 -88
- package/dist/backend/native-link-info.js +12 -243
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +41 -146
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +10 -25
- package/dist/backend/native-toolchain.js +31 -211
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +5 -5
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +24 -0
- package/dist/backend/native-tools.js +33 -0
- package/dist/backend/native-tools.js.map +1 -0
- package/dist/backend/object-localize.js +19 -8
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +22 -0
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +101 -0
- package/dist/backend/runtime-pack-core.js +172 -0
- package/dist/backend/runtime-pack-core.js.map +1 -0
- package/dist/backend/runtime-pack-native.d.ts +21 -0
- package/dist/backend/runtime-pack-native.js +70 -0
- package/dist/backend/runtime-pack-native.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.d.ts +3 -83
- package/dist/backend/runtime-pack.js +8 -151
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +24 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.d.ts +22 -0
- package/dist/backend/target-diagnostics.js +108 -0
- package/dist/backend/target-diagnostics.js.map +1 -0
- package/dist/backend/target-platform.d.ts +15 -0
- package/dist/backend/target-platform.js +72 -0
- package/dist/backend/target-platform.js.map +1 -0
- package/dist/backend/targets.d.ts +13 -4
- package/dist/backend/targets.js +95 -30
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +65 -4
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/backend/toolchain-environment.d.ts +6 -0
- package/dist/backend/toolchain-environment.js +99 -0
- package/dist/backend/toolchain-environment.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +1 -9
- package/dist/backend/vendor-archives.js +2 -9
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +9 -0
- package/dist/backend/vendor-inputs.js +10 -0
- package/dist/backend/vendor-inputs.js.map +1 -0
- package/dist/backend/warm-cache.d.ts +3 -0
- package/dist/backend/warm-cache.js +41 -0
- package/dist/backend/warm-cache.js.map +1 -0
- package/dist/cli/command.d.ts +3 -0
- package/dist/cli/command.js +328 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/host.d.ts +24 -0
- package/dist/cli/host.js +2 -0
- package/dist/cli/host.js.map +1 -0
- package/dist/cli/output-options.d.ts +26 -0
- package/dist/cli/output-options.js +60 -0
- package/dist/cli/output-options.js.map +1 -0
- package/dist/cli/paths.d.ts +12 -0
- package/dist/cli/paths.js +42 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/usage.d.ts +74 -0
- package/dist/cli/usage.js +86 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/cli/wasi-paths.d.ts +8 -0
- package/dist/cli/wasi-paths.js +41 -0
- package/dist/cli/wasi-paths.js.map +1 -0
- package/dist/cli/wasi-runner.d.ts +2 -0
- package/dist/cli/wasi-runner.js +28 -0
- package/dist/cli/wasi-runner.js.map +1 -0
- package/dist/compat/fetch-profile.js +3 -3
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +162 -0
- package/dist/compile-types.js +2 -0
- package/dist/compile-types.js.map +1 -0
- package/dist/coverage/report.js +11 -5
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +5 -2
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +3 -3
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -4
- package/dist/executable/executable-cache.js +5 -6
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +16 -17
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +14 -0
- package/dist/executable/prepare.js +66 -0
- package/dist/executable/prepare.js.map +1 -0
- package/dist/ffi/ffi-manifest.d.ts +11 -4
- package/dist/ffi/ffi-manifest.js +170 -58
- package/dist/ffi/ffi-manifest.js.map +1 -1
- package/dist/ffi/ffi-manifest.test.d.ts +1 -0
- package/dist/ffi/ffi-manifest.test.js +111 -0
- package/dist/ffi/ffi-manifest.test.js.map +1 -0
- package/dist/format-integer.d.ts +3 -0
- package/dist/format-integer.js +14 -0
- package/dist/format-integer.js.map +1 -0
- package/dist/frontend/analysis.d.ts +5 -0
- package/dist/frontend/analysis.js +88 -0
- package/dist/frontend/analysis.js.map +1 -0
- package/dist/frontend/arguments-usage.d.ts +1 -3
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -1
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-lexer.d.ts +4 -25
- package/dist/frontend/cjs-lexer.js +6 -806
- package/dist/frontend/cjs-lexer.js.map +1 -1
- package/dist/frontend/cjs-resolve.d.ts +5 -0
- package/dist/frontend/cjs-resolve.js +429 -0
- package/dist/frontend/cjs-resolve.js.map +1 -0
- package/dist/frontend/cjs-syntax.d.ts +26 -0
- package/dist/frontend/cjs-syntax.js +806 -0
- package/dist/frontend/cjs-syntax.js.map +1 -0
- package/dist/frontend/comptime-node.d.ts +4 -0
- package/dist/frontend/comptime-node.js +16 -0
- package/dist/frontend/comptime-node.js.map +1 -0
- package/dist/frontend/comptime-node.test.d.ts +1 -0
- package/dist/frontend/comptime-node.test.js +37 -0
- package/dist/frontend/comptime-node.test.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +3 -4
- package/dist/frontend/dts-paths.js +15 -8
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/fork-target.js +2 -2
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/helper-tokens.d.ts +1 -0
- package/dist/frontend/helper-tokens.js +147 -0
- package/dist/frontend/helper-tokens.js.map +1 -0
- package/dist/frontend/helper-tokens.test.d.ts +1 -0
- package/dist/frontend/helper-tokens.test.js +35 -0
- package/dist/frontend/helper-tokens.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.d.ts +5 -0
- package/dist/frontend/inferred-js-diagnostics.js +69 -0
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.d.ts +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +58 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +5 -2
- package/dist/frontend/input-tracker.js +24 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +23 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lib-contract.js +32 -24
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/literal-values.d.ts +4 -0
- package/dist/frontend/literal-values.js +21 -0
- package/dist/frontend/literal-values.js.map +1 -0
- package/dist/frontend/literal-values.test.d.ts +1 -0
- package/dist/frontend/literal-values.test.js +91 -0
- package/dist/frontend/literal-values.test.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.d.ts +1 -1
- package/dist/frontend/lowering/abstract-equality.js +3 -0
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +11 -6
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +4 -1
- package/dist/frontend/lowering/array-values.js +43 -1
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/callback-arg.js +1 -0
- package/dist/frontend/lowering/callback-arg.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +12 -0
- package/dist/frontend/lowering/class-callbacks.js +63 -0
- package/dist/frontend/lowering/class-callbacks.js.map +1 -0
- package/dist/frontend/lowering/class-descriptors.d.ts +9 -0
- package/dist/frontend/lowering/class-descriptors.js +73 -0
- package/dist/frontend/lowering/class-descriptors.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +41 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +803 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.d.ts +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +92 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -0
- package/dist/frontend/lowering/class-instance-constructor.d.ts +7 -0
- package/dist/frontend/lowering/class-instance-constructor.js +64 -0
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
- package/dist/frontend/lowering/class-method-values.d.ts +10 -0
- package/dist/frontend/lowering/class-method-values.js +170 -0
- package/dist/frontend/lowering/class-method-values.js.map +1 -0
- package/dist/frontend/lowering/class-prototypes.d.ts +16 -0
- package/dist/frontend/lowering/class-prototypes.js +134 -0
- package/dist/frontend/lowering/class-prototypes.js.map +1 -0
- package/dist/frontend/lowering/class-static-data.d.ts +6 -0
- package/dist/frontend/lowering/class-static-data.js +56 -0
- package/dist/frontend/lowering/class-static-data.js.map +1 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.d.ts +4 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js +26 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.d.ts +11 -7
- package/dist/frontend/lowering/containers/bytes.js +164 -155
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +2 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +39 -16
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.d.ts +7 -0
- package/dist/frontend/lowering/containers/string-replacement.js +217 -0
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -0
- package/dist/frontend/lowering/error-methods.d.ts +11 -0
- package/dist/frontend/lowering/error-methods.js +78 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -0
- package/dist/frontend/lowering/expressions/global-symbols.d.ts +6 -0
- package/dist/frontend/lowering/expressions/global-symbols.js +11 -0
- package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.d.ts +7 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +49 -0
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.d.ts +6 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js +124 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -0
- package/dist/frontend/lowering/expressions/object-literals.d.ts +8 -8
- package/dist/frontend/lowering/expressions/object-literals.js +473 -178
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +20 -8
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/try-lower-expression.js +1 -0
- package/dist/frontend/lowering/expressions/try-lower-expression.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-field-write.d.ts +8 -0
- package/dist/frontend/lowering/expressions/union-field-write.js +71 -0
- package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +93 -0
- package/dist/frontend/lowering/function-context.js +103 -0
- package/dist/frontend/lowering/function-context.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +7 -0
- package/dist/frontend/lowering/generator-delegation.js +85 -0
- package/dist/frontend/lowering/generator-delegation.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +10 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +105 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +2 -1
- package/dist/frontend/lowering/lib-boundary.js +59 -20
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.test.d.ts +1 -0
- package/dist/frontend/lowering/lib-boundary.test.js +45 -0
- package/dist/frontend/lowering/lib-boundary.test.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +12 -0
- package/dist/frontend/lowering/lower-builtin-values.js +139 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.d.ts +27 -41
- package/dist/frontend/lowering/lower-builtins.js +539 -343
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +20 -17
- package/dist/frontend/lowering/lower-calls.js +1236 -353
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +83 -45
- package/dist/frontend/lowering/lower-classes.js +952 -339
- 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 +23 -32
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +27 -32
- package/dist/frontend/lowering/lower-containers.js +796 -151
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +1 -1
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.d.ts +1 -1
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +30 -1
- package/dist/frontend/lowering/lower-event-emitter.js +58 -26
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.d.ts +7 -1
- package/dist/frontend/lowering/lower-expando.js +14 -6
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +35 -11
- package/dist/frontend/lowering/lower-exprs.js +1674 -779
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +2 -5
- package/dist/frontend/lowering/lower-generators.js +77 -46
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +7 -0
- package/dist/frontend/lowering/lower-global-value.js +17 -0
- package/dist/frontend/lowering/lower-global-value.js.map +1 -0
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +17 -8
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +5 -8
- package/dist/frontend/lowering/lower-island.js +34 -23
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.d.ts +2 -2
- package/dist/frontend/lowering/lower-mixins.js +5 -3
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +233 -30
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +1 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +1 -1
- package/dist/frontend/lowering/lower-node-module.js +13 -10
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +1 -1
- package/dist/frontend/lowering/lower-server.js +6 -10
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +10 -14
- package/dist/frontend/lowering/lower-stmts.js +728 -496
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +1 -1
- package/dist/frontend/lowering/lower-stream.js +19 -10
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +1 -1
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-url.d.ts +6 -0
- package/dist/frontend/lowering/lower-url.js +77 -0
- package/dist/frontend/lowering/lower-url.js.map +1 -0
- package/dist/frontend/lowering/lowerer.d.ts +113 -189
- package/dist/frontend/lowering/lowerer.js +1031 -672
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.d.ts +1 -0
- package/dist/frontend/lowering/lowerer.test.js +26 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -0
- package/dist/frontend/lowering/native-ffi.d.ts +5 -0
- package/dist/frontend/lowering/native-ffi.js +40 -0
- package/dist/frontend/lowering/native-ffi.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.d.ts +7 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +33 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +8 -0
- package/dist/frontend/lowering/object-factory-new.js +68 -0
- package/dist/frontend/lowering/object-factory-new.js.map +1 -0
- package/dist/frontend/lowering/optional-arguments.js +6 -1
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-locals.d.ts +14 -0
- package/dist/frontend/lowering/runtime-optional-locals.js +41 -0
- package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js +85 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.d.ts +8 -0
- package/dist/frontend/lowering/sanitize-class-types.js +79 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js +60 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/static-this.d.ts +5 -1
- package/dist/frontend/lowering/static-this.js +28 -2
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +7 -0
- package/dist/frontend/lowering/string-index.js +39 -0
- package/dist/frontend/lowering/string-index.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +8 -3
- package/dist/frontend/lowering/surfaces.js +61 -29
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +22 -0
- package/dist/frontend/lowering/symbol-fields.js +183 -0
- package/dist/frontend/lowering/symbol-fields.js.map +1 -0
- package/dist/frontend/lowering/symbol-methods.d.ts +7 -0
- package/dist/frontend/lowering/symbol-methods.js +30 -0
- package/dist/frontend/lowering/symbol-methods.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.d.ts +10 -0
- package/dist/frontend/lowering/text-decoder-encoding.js +77 -0
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.d.ts +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js +38 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.d.ts +9 -0
- package/dist/frontend/lowering/union-narrow.js +59 -0
- package/dist/frontend/lowering/union-narrow.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.test.d.ts +1 -0
- package/dist/frontend/lowering/union-narrow.test.js +72 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +43 -0
- package/dist/frontend/lowering/union-retag.js +259 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -0
- package/dist/frontend/lowering/union-retag.test.d.ts +1 -0
- package/dist/frontend/lowering/union-retag.test.js +405 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.d.ts +14 -0
- package/dist/frontend/lowering/unregistered-class-types.js +94 -0
- package/dist/frontend/lowering/unregistered-class-types.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js +65 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +40 -0
- package/dist/frontend/lowering/width-lift.js +2 -0
- package/dist/frontend/lowering/width-lift.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +58 -0
- package/dist/frontend/module-syntax.js +123 -0
- package/dist/frontend/module-syntax.js.map +1 -0
- package/dist/frontend/module-syntax.test.d.ts +1 -0
- package/dist/frontend/module-syntax.test.js +78 -0
- package/dist/frontend/module-syntax.test.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.d.ts +17 -0
- package/dist/frontend/npm-fetch-analysis.js +100 -0
- package/dist/frontend/npm-fetch-analysis.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.test.d.ts +1 -0
- package/dist/frontend/npm-fetch-analysis.test.js +107 -0
- package/dist/frontend/npm-fetch-analysis.test.js.map +1 -0
- package/dist/frontend/npm-fetch-node.d.ts +2 -0
- package/dist/frontend/npm-fetch-node.js +12 -0
- package/dist/frontend/npm-fetch-node.js.map +1 -0
- package/dist/frontend/npm-fetch-syntax.d.ts +6 -0
- package/dist/frontend/npm-fetch-syntax.js +207 -0
- package/dist/frontend/npm-fetch-syntax.js.map +1 -0
- package/dist/frontend/npm-node.d.ts +10 -0
- package/dist/frontend/npm-node.js +14 -0
- package/dist/frontend/npm-node.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.d.ts +8 -0
- package/dist/frontend/npm-static-bundled-cjs.js +236 -0
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js +69 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.d.ts +57 -0
- package/dist/frontend/npm-static-declaration-syntax.js +944 -0
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -0
- package/dist/frontend/npm-static-declarations.d.ts +11 -39
- package/dist/frontend/npm-static-declarations.js +22 -561
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +245 -6
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/npm-static-prune.d.ts +1 -1
- package/dist/frontend/npm-static-prune.js +5 -4
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +1 -1
- package/dist/frontend/npm-static-prune.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -0
- package/dist/frontend/npm-static-rewrite-host.js +179 -0
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -0
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +16 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +905 -0
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -0
- package/dist/frontend/npm-static-rewrite.d.ts +0 -5
- package/dist/frontend/npm-static-rewrite.js +2 -1079
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.d.ts +5 -0
- package/dist/frontend/npm-static-subtyping.js +55 -0
- package/dist/frontend/npm-static-subtyping.js.map +1 -0
- package/dist/frontend/npm-static-subtyping.test.d.ts +1 -0
- package/dist/frontend/npm-static-subtyping.test.js +58 -0
- package/dist/frontend/npm-static-subtyping.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +7 -15
- package/dist/frontend/npm-static.js +19 -28
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +8 -69
- package/dist/frontend/npm.js +21 -361
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +2 -2
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +6 -0
- package/dist/frontend/pipeline-native.js +32 -0
- package/dist/frontend/pipeline-native.js.map +1 -0
- package/dist/frontend/pipeline.d.ts +54 -0
- package/dist/frontend/pipeline.js +382 -0
- package/dist/frontend/pipeline.js.map +1 -0
- package/dist/frontend/pipeline.test.d.ts +1 -0
- package/dist/frontend/pipeline.test.js +77 -0
- package/dist/frontend/pipeline.test.js.map +1 -0
- package/dist/frontend/program-analysis.d.ts +10 -0
- package/dist/frontend/program-analysis.js +14 -0
- package/dist/frontend/program-analysis.js.map +1 -0
- package/dist/frontend/program-node.d.ts +9 -0
- package/dist/frontend/program-node.js +48 -0
- package/dist/frontend/program-node.js.map +1 -0
- package/dist/frontend/program.d.ts +38 -19
- package/dist/frontend/program.js +344 -169
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +87 -2
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/provenance-core.d.ts +9 -0
- package/dist/frontend/provenance-core.js +435 -0
- package/dist/frontend/provenance-core.js.map +1 -0
- package/dist/frontend/provenance.d.ts +0 -4
- package/dist/frontend/provenance.js +4 -459
- package/dist/frontend/provenance.js.map +1 -1
- package/dist/frontend/resolve.d.ts +3 -1
- package/dist/frontend/resolve.js +6 -3
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.d.ts +4 -3
- package/dist/frontend/runtime-resolve.js +22 -18
- package/dist/frontend/runtime-resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.test.js +53 -0
- package/dist/frontend/runtime-resolve.test.js.map +1 -1
- package/dist/frontend/services-node.d.ts +5 -0
- package/dist/frontend/services-node.js +19 -0
- package/dist/frontend/services-node.js.map +1 -0
- package/dist/frontend/services-node.test.d.ts +1 -0
- package/dist/frontend/services-node.test.js +70 -0
- package/dist/frontend/services-node.test.js.map +1 -0
- package/dist/frontend/services.d.ts +44 -0
- package/dist/frontend/services.js +90 -0
- package/dist/frontend/services.js.map +1 -0
- package/dist/frontend/services.test.d.ts +1 -0
- package/dist/frontend/services.test.js +174 -0
- package/dist/frontend/services.test.js.map +1 -0
- package/dist/frontend/ts7/adapter.d.ts +3 -3
- package/dist/frontend/ts7/adapter.js +14 -31
- package/dist/frontend/ts7/adapter.js.map +1 -1
- package/dist/frontend/ts7/api.d.ts +16 -0
- package/dist/frontend/ts7/api.js +24 -0
- package/dist/frontend/ts7/api.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.d.ts +31 -0
- package/dist/frontend/ts7/ast-bytes.js +137 -0
- package/dist/frontend/ts7/ast-bytes.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-bytes.test.js +73 -0
- package/dist/frontend/ts7/ast-bytes.test.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.d.ts +353 -0
- package/dist/frontend/ts7/ast-guards.generated.js +1951 -0
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-guards.test.js +43 -0
- package/dist/frontend/ts7/ast-guards.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +194 -0
- package/dist/frontend/ts7/ast-node.js +448 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -0
- package/dist/frontend/ts7/ast-node.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-node.test.js +266 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -0
- package/dist/frontend/ts7/ast-schema.generated.d.ts +503 -0
- package/dist/frontend/ts7/ast-schema.generated.js +1446 -0
- package/dist/frontend/ts7/ast-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-text.d.ts +6 -0
- package/dist/frontend/ts7/ast-text.js +124 -0
- package/dist/frontend/ts7/ast-text.js.map +1 -0
- package/dist/frontend/ts7/ast-text.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-text.test.js +38 -0
- package/dist/frontend/ts7/ast-text.test.js.map +1 -0
- package/dist/frontend/ts7/ast-tokens.generated.d.ts +2 -0
- package/dist/frontend/ts7/ast-tokens.generated.js +155 -0
- package/dist/frontend/ts7/ast-tokens.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.d.ts +42 -0
- package/dist/frontend/ts7/ast-types.generated.d.ts +1615 -0
- package/dist/frontend/ts7/ast-types.generated.js +5 -0
- package/dist/frontend/ts7/ast-types.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.js +3 -0
- package/dist/frontend/ts7/ast-types.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.d.ts +58 -0
- package/dist/frontend/ts7/ast-wire.js +267 -0
- package/dist/frontend/ts7/ast-wire.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-wire.test.js +151 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -0
- package/dist/frontend/ts7/ast.d.ts +14 -14
- package/dist/frontend/ts7/ast.js +21 -15
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/census-check.js +1 -0
- package/dist/frontend/ts7/census-check.js.map +1 -1
- package/dist/frontend/ts7/checker-cache.d.ts +48 -0
- package/dist/frontend/ts7/checker-cache.js +92 -0
- package/dist/frontend/ts7/checker-cache.js.map +1 -0
- package/dist/frontend/ts7/checker.d.ts +19 -46
- package/dist/frontend/ts7/checker.js +231 -161
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.d.ts +1 -0
- package/dist/frontend/ts7/checker.test.js +335 -0
- package/dist/frontend/ts7/checker.test.js.map +1 -0
- package/dist/frontend/ts7/enums.d.ts +4 -27
- package/dist/frontend/ts7/enums.generated.d.ts +878 -0
- package/dist/frontend/ts7/enums.generated.js +1313 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -0
- package/dist/frontend/ts7/enums.js +4 -45
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/enums.test.d.ts +1 -0
- package/dist/frontend/ts7/enums.test.js +48 -0
- package/dist/frontend/ts7/enums.test.js.map +1 -0
- package/dist/frontend/ts7/native-api.d.ts +10 -0
- package/dist/frontend/ts7/native-api.js +10 -0
- package/dist/frontend/ts7/native-api.js.map +1 -0
- package/dist/frontend/ts7/native-host.d.ts +2 -0
- package/dist/frontend/ts7/native-host.js +11 -0
- package/dist/frontend/ts7/native-host.js.map +1 -0
- package/dist/frontend/ts7/native-process.d.ts +14 -0
- package/dist/frontend/ts7/native-process.js +62 -0
- package/dist/frontend/ts7/native-process.js.map +1 -0
- package/dist/frontend/ts7/program-adapter.d.ts +10 -98
- package/dist/frontend/ts7/program-adapter.js +16 -310
- package/dist/frontend/ts7/program-adapter.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +115 -0
- package/dist/frontend/ts7/program-host.js +347 -0
- package/dist/frontend/ts7/program-host.js.map +1 -0
- package/dist/frontend/ts7/program-host.test.d.ts +1 -0
- package/dist/frontend/ts7/program-host.test.js +207 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-api.d.ts +12 -0
- package/dist/frontend/ts7/rpc-api.js +23 -0
- package/dist/frontend/ts7/rpc-api.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.d.ts +27 -0
- package/dist/frontend/ts7/rpc-client.js +102 -0
- package/dist/frontend/ts7/rpc-client.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-client.test.js +133 -0
- package/dist/frontend/ts7/rpc-client.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.d.ts +16 -0
- package/dist/frontend/ts7/rpc-filesystem.js +42 -0
- package/dist/frontend/ts7/rpc-filesystem.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js +89 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.d.ts +2 -0
- package/dist/frontend/ts7/rpc-process.js +148 -0
- package/dist/frontend/ts7/rpc-process.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-process.test.js +29 -0
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.d.ts +46 -0
- package/dist/frontend/ts7/rpc-wire.js +195 -0
- package/dist/frontend/ts7/rpc-wire.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-wire.test.js +168 -0
- package/dist/frontend/ts7/rpc-wire.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.d.ts +137 -0
- package/dist/frontend/ts7/semantic-checker.js +221 -0
- package/dist/frontend/ts7/semantic-checker.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-checker.test.js +119 -0
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.d.ts +5 -0
- package/dist/frontend/ts7/semantic-json.js +52 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-json.test.js +42 -0
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.d.ts +222 -0
- package/dist/frontend/ts7/semantic-model.js +423 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-model.test.js +322 -0
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-schema.generated.d.ts +283 -0
- package/dist/frontend/ts7/semantic-schema.generated.js +222 -0
- package/dist/frontend/ts7/semantic-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/semantic-types.d.ts +5 -0
- package/dist/frontend/ts7/semantic-types.js +2 -0
- package/dist/frontend/ts7/semantic-types.js.map +1 -0
- package/dist/frontend/ts7/session-cache.d.ts +17 -0
- package/dist/frontend/ts7/session-cache.js +97 -0
- package/dist/frontend/ts7/session-cache.js.map +1 -0
- package/dist/frontend/ts7/session-cache.test.d.ts +1 -0
- package/dist/frontend/ts7/session-cache.test.js +87 -0
- package/dist/frontend/ts7/session-cache.test.js.map +1 -0
- package/dist/frontend/ts7/session-path.d.ts +18 -0
- package/dist/frontend/ts7/session-path.js +203 -0
- package/dist/frontend/ts7/session-path.js.map +1 -0
- package/dist/frontend/ts7/session-path.test.d.ts +1 -0
- package/dist/frontend/ts7/session-path.test.js +34 -0
- package/dist/frontend/ts7/session-path.test.js.map +1 -0
- package/dist/frontend/ts7/session-schema.generated.d.ts +167 -0
- package/dist/frontend/ts7/session-schema.generated.js +5 -0
- package/dist/frontend/ts7/session-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/session-timing.d.ts +50 -0
- package/dist/frontend/ts7/session-timing.js +61 -0
- package/dist/frontend/ts7/session-timing.js.map +1 -0
- package/dist/frontend/ts7/session-timing.test.d.ts +1 -0
- package/dist/frontend/ts7/session-timing.test.js +52 -0
- package/dist/frontend/ts7/session-timing.test.js.map +1 -0
- package/dist/frontend/ts7/session.d.ts +105 -0
- package/dist/frontend/ts7/session.js +233 -0
- package/dist/frontend/ts7/session.js.map +1 -0
- package/dist/frontend/ts7/session.test.d.ts +1 -0
- package/dist/frontend/ts7/session.test.js +215 -0
- package/dist/frontend/ts7/session.test.js.map +1 -0
- package/dist/frontend/ts7/source-parser-node.d.ts +6 -0
- package/dist/frontend/ts7/source-parser-node.js +15 -0
- package/dist/frontend/ts7/source-parser-node.js.map +1 -0
- package/dist/frontend/ts7/source-parser.d.ts +25 -0
- package/dist/frontend/ts7/source-parser.js +96 -0
- package/dist/frontend/ts7/source-parser.js.map +1 -0
- package/dist/frontend/ts7/source-parser.test.d.ts +1 -0
- package/dist/frontend/ts7/source-parser.test.js +151 -0
- package/dist/frontend/ts7/source-parser.test.js.map +1 -0
- package/dist/frontend/ts7/syntax.d.ts +3 -0
- package/dist/frontend/ts7/syntax.js +4 -0
- package/dist/frontend/ts7/syntax.js.map +1 -0
- package/dist/frontend/tsc-codes.js +3 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +25 -17
- package/dist/frontend/type-mapper.js +465 -121
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +123 -2
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend/union-discriminants.d.ts +16 -0
- package/dist/frontend/union-discriminants.js +98 -0
- package/dist/frontend/union-discriminants.js.map +1 -0
- package/dist/frontend/union-discriminants.test.d.ts +1 -0
- package/dist/frontend/union-discriminants.test.js +182 -0
- package/dist/frontend/union-discriminants.test.js.map +1 -0
- package/dist/index.d.ts +7 -198
- package/dist/index.js +369 -1572
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +16 -4
- package/dist/ir/analysis.js +21 -4
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -2
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/constant-tables.js +67 -49
- package/dist/ir/constant-tables.js.map +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/control-flow.d.ts +6 -0
- package/dist/ir/control-flow.js +142 -0
- package/dist/ir/control-flow.js.map +1 -0
- package/dist/ir/control-flow.test.d.ts +1 -0
- package/dist/ir/control-flow.test.js +113 -0
- package/dist/ir/control-flow.test.js.map +1 -0
- package/dist/ir/integer-loops.js +7 -18
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-ranges.js +53 -27
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +291 -152
- package/dist/ir/ir.js +588 -881
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +127 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/scalar-records.js +165 -134
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +4 -2
- package/dist/ir/serialize.js +19 -12
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.d.ts +1 -0
- package/dist/ir/serialize.test.js +53 -0
- package/dist/ir/serialize.test.js.map +1 -0
- package/dist/ir/traverse.d.ts +41 -0
- package/dist/ir/traverse.js +660 -0
- package/dist/ir/traverse.js.map +1 -0
- package/dist/ir/traverse.test.d.ts +1 -0
- package/dist/ir/traverse.test.js +242 -0
- package/dist/ir/traverse.test.js.map +1 -0
- package/dist/ir/validate.js +1942 -1491
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +476 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/cache-primitives.d.ts +2 -3
- package/dist/library/cache-primitives.js +4 -6
- package/dist/library/cache-primitives.js.map +1 -1
- package/dist/library/fence-eval.js +2 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.js +7 -6
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.d.ts +3 -2
- package/dist/library/library-cache.js +5 -17
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +54 -41
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/library-profile.d.ts +3 -1
- package/dist/library/library-profile.js +15 -6
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.d.ts +15 -0
- package/dist/library/prepare.js +584 -0
- package/dist/library/prepare.js.map +1 -0
- package/dist/library/semantic-source.d.ts +1 -1
- package/dist/library/semantic-source.js +8 -6
- package/dist/library/semantic-source.js.map +1 -1
- package/dist/library/sidecar-validate.js +4 -4
- package/dist/library/sidecar-validate.js.map +1 -1
- package/dist/library/sidecar.d.ts +2 -0
- package/dist/library/sidecar.js +10 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/cache.d.ts +11 -0
- package/dist/native/cache.js +113 -0
- package/dist/native/cache.js.map +1 -0
- package/dist/native/cache.test.d.ts +1 -0
- package/dist/native/cache.test.js +66 -0
- package/dist/native/cache.test.js.map +1 -0
- package/dist/native/cli.d.ts +1 -0
- package/dist/native/cli.js +112 -0
- package/dist/native/cli.js.map +1 -0
- package/dist/native/compiler.d.ts +15 -0
- package/dist/native/compiler.js +336 -0
- package/dist/native/compiler.js.map +1 -0
- package/dist/native/compiler.test.d.ts +1 -0
- package/dist/native/compiler.test.js +174 -0
- package/dist/native/compiler.test.js.map +1 -0
- package/dist/native/comptime.d.ts +5 -0
- package/dist/native/comptime.js +73 -0
- package/dist/native/comptime.js.map +1 -0
- package/dist/native/comptime.test.d.ts +1 -0
- package/dist/native/comptime.test.js +65 -0
- package/dist/native/comptime.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +26 -0
- package/dist/native/executable-cache.js +228 -0
- package/dist/native/executable-cache.js.map +1 -0
- package/dist/native/executable-cache.test.d.ts +1 -0
- package/dist/native/executable-cache.test.js +151 -0
- package/dist/native/executable-cache.test.js.map +1 -0
- package/dist/native/file-identity.d.ts +4 -0
- package/dist/native/file-identity.js +14 -0
- package/dist/native/file-identity.js.map +1 -0
- package/dist/native/file-identity.test.d.ts +1 -0
- package/dist/native/file-identity.test.js +43 -0
- package/dist/native/file-identity.test.js.map +1 -0
- package/dist/native/library.d.ts +22 -0
- package/dist/native/library.js +83 -0
- package/dist/native/library.js.map +1 -0
- package/dist/native/prepare.d.ts +21 -0
- package/dist/native/prepare.js +174 -0
- package/dist/native/prepare.js.map +1 -0
- package/dist/native/prepare.test.d.ts +1 -0
- package/dist/native/prepare.test.js +70 -0
- package/dist/native/prepare.test.js.map +1 -0
- package/dist/native/sanitizer.d.ts +11 -0
- package/dist/native/sanitizer.js +135 -0
- package/dist/native/sanitizer.js.map +1 -0
- package/dist/native/sanitizer.test.d.ts +1 -0
- package/dist/native/sanitizer.test.js +58 -0
- package/dist/native/sanitizer.test.js.map +1 -0
- package/dist/native/task.d.ts +4 -0
- package/dist/native/task.js +16 -0
- package/dist/native/task.js.map +1 -0
- package/dist/native/task.test.d.ts +1 -0
- package/dist/native/task.test.js +17 -0
- package/dist/native/task.test.js.map +1 -0
- package/dist/native/toolchain.d.ts +45 -0
- package/dist/native/toolchain.js +74 -0
- package/dist/native/toolchain.js.map +1 -0
- package/dist/native/toolchain.test.d.ts +1 -0
- package/dist/native/toolchain.test.js +33 -0
- package/dist/native/toolchain.test.js.map +1 -0
- package/dist/startup-cache.d.ts +1 -1
- package/dist/startup-cache.js +2 -5
- package/dist/startup-cache.js.map +1 -1
- package/dist/timing.d.ts +4 -0
- package/dist/timing.js +19 -0
- package/dist/timing.js.map +1 -0
- package/dist/wasi-paths.js +10 -7
- package/dist/wasi-paths.js.map +1 -1
- package/package.json +28 -19
- package/surface-manifest.json +52 -18
- package/dist/backend/c/async.d.ts +0 -171
- package/dist/backend/c/async.js +0 -1317
- package/dist/backend/c/async.js.map +0 -1
- package/dist/backend/c/c-emitter.d.ts +0 -536
- package/dist/backend/c/c-emitter.js +0 -1932
- package/dist/backend/c/c-emitter.js.map +0 -1
- package/dist/backend/c/exprs.d.ts +0 -15
- package/dist/backend/c/exprs.js +0 -8847
- package/dist/backend/c/exprs.js.map +0 -1
- package/dist/backend/c/island.d.ts +0 -45
- package/dist/backend/c/island.js +0 -281
- package/dist/backend/c/island.js.map +0 -1
- package/dist/backend/c/may-throw.js.map +0 -1
- package/dist/backend/c/shapes.d.ts +0 -142
- package/dist/backend/c/shapes.js +0 -603
- package/dist/backend/c/shapes.js.map +0 -1
- package/dist/backend/c/stmts.d.ts +0 -76
- package/dist/backend/c/stmts.js +0 -1108
- package/dist/backend/c/stmts.js.map +0 -1
- package/dist/backend/c/types.d.ts +0 -71
- package/dist/backend/c/types.js +0 -459
- package/dist/backend/c/types.js.map +0 -1
- package/dist/backend/c/types.test.js +0 -32
- package/dist/backend/c/types.test.js.map +0 -1
- package/dist/backend/c/walkers.d.ts +0 -134
- package/dist/backend/c/walkers.js +0 -1772
- package/dist/backend/c/walkers.js.map +0 -1
- /package/dist/backend/{c/types.test.d.ts → cycle-analysis.test.d.ts} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { BUF_NUM_METHODS } from "./buffer-numeric-methods.js";
|
|
1
2
|
import * as ts from "../../ts7/adapter.js";
|
|
2
|
-
import { BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals } from "../../../ir/ir.js";
|
|
3
|
+
import { BYTES_ELEMENT_SIZE, BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals } from "../../../ir/ir.js";
|
|
3
4
|
import { locOf } from "../../program.js";
|
|
4
5
|
import { dynUndefinedExpr, own } from "../lowerer.js";
|
|
5
6
|
import { buildBytesSortFn } from "../lower-array-sort.js";
|
|
@@ -17,7 +18,7 @@ function lowerBytesToSortedCall(lowerer, call, access, bytesT) {
|
|
|
17
18
|
if (call.arguments.length > 1 || call.arguments.some(ts.isSpreadElement)) {
|
|
18
19
|
lowerer.noLowering(`.toSorted with ${call.arguments.length} arguments on Uint8Array`, call);
|
|
19
20
|
}
|
|
20
|
-
const receiver = lowerer.
|
|
21
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, bytesT);
|
|
21
22
|
const undefinedArg = call.arguments[0]
|
|
22
23
|
? lowerStaticallyUndefinedArgument(lowerer, call.arguments[0])
|
|
23
24
|
: null;
|
|
@@ -85,27 +86,40 @@ function lowerBytesToSortedCall(lowerer, call, access, bytesT) {
|
|
|
85
86
|
}
|
|
86
87
|
/* ── typed arrays / Buffer ─────────────────────────────────────────────── */
|
|
87
88
|
/** The typed-array constructors with a runtime representation, by lib
|
|
88
|
-
* interface name. Other flavors (
|
|
89
|
+
* interface name. Other flavors (Float16Array, BigInt64Array, ...) fall through
|
|
89
90
|
* to the generic stdlib-constructor fence. DataView is handled separately. */
|
|
90
91
|
const BYTES_CTORS = {
|
|
91
92
|
Uint8Array: "u8",
|
|
93
|
+
Uint8ClampedArray: "u8c",
|
|
94
|
+
Int8Array: "i8",
|
|
95
|
+
Uint16Array: "u16",
|
|
96
|
+
Int16Array: "i16",
|
|
92
97
|
Uint32Array: "u32",
|
|
93
98
|
Int32Array: "i32",
|
|
94
99
|
Float32Array: "f32",
|
|
95
100
|
Float64Array: "f64",
|
|
96
101
|
};
|
|
97
|
-
/**
|
|
102
|
+
/** Numeric typed-array constructors
|
|
98
103
|
* (stdlib provenance — a user's own class with the name resolves through
|
|
99
104
|
* classBySymbol). Lowered argument shapes: none (empty), a length
|
|
100
105
|
* (zero-filled; ToIndex at runtime — invalid lengths throw Node's
|
|
101
|
-
* RangeError), a
|
|
106
|
+
* RangeError), a numeric typed array or Buffer (an independent COPY —
|
|
102
107
|
* the readFile chain's `new Uint8Array(await readFile(p))`), a number[]
|
|
103
108
|
* literal (element-coerced; its contextual type is the lib's
|
|
104
109
|
* ArrayLike/Iterable union, which cannot map — the Set-seed pattern), or
|
|
105
|
-
* a number[]-typed value
|
|
106
|
-
*
|
|
110
|
+
* a number[]-typed value, or checked native input with runtime length /
|
|
111
|
+
* array-like dispatch. ArrayBuffer inputs create shared views.
|
|
112
|
+
* Null when this isn't a stdlib
|
|
107
113
|
* typed-array construction. */
|
|
108
114
|
export function lowerBytesNew(lowerer, expr, symbol) {
|
|
115
|
+
if (symbol?.name === "ArrayBuffer" && lowerer.isStdlibSymbol(symbol)) {
|
|
116
|
+
const args = expr.arguments ?? [];
|
|
117
|
+
if (args.length > 1 || args.some(ts.isSpreadElement)) {
|
|
118
|
+
lowerer.noLowering("resizable ArrayBuffer construction", expr, "fixed-length ArrayBuffers accept a byte length; resizable storage is not supported yet");
|
|
119
|
+
}
|
|
120
|
+
const length = args[0] ? lowerer.coerceInto(args[0], lowerer.lowerExpr(args[0]), DYN) : dynUndefinedExpr(locOf(expr));
|
|
121
|
+
return { kind: "libCall", fn: "arrayBuffer.new", args: [length], type: DYN, loc: locOf(expr) };
|
|
122
|
+
}
|
|
109
123
|
if (symbol && symbol.name === "DataView" && lowerer.isStdlibSymbol(symbol)) {
|
|
110
124
|
return lowerDataViewNew(lowerer, expr);
|
|
111
125
|
}
|
|
@@ -118,6 +132,9 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
118
132
|
const args = expr.arguments ?? [];
|
|
119
133
|
if (args.length === 0)
|
|
120
134
|
return { kind: "bytesNew", source: null, type, loc };
|
|
135
|
+
if (args.length >= 2 && args.length <= 3 && !args.some(ts.isSpreadElement)) {
|
|
136
|
+
return lowerArrayBufferView(lowerer, args, elem, loc);
|
|
137
|
+
}
|
|
121
138
|
if (args.length === 1 && !ts.isSpreadElement(args[0])) {
|
|
122
139
|
const argNode = args[0];
|
|
123
140
|
if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
|
|
@@ -125,8 +142,7 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
125
142
|
const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
|
|
126
143
|
return { kind: "bytesNew", source: seed, type, loc };
|
|
127
144
|
}
|
|
128
|
-
// The SYNTACTIC `new T(new
|
|
129
|
-
// SharedArrayBuffer(n))` forms — fresh-buffer construction (the
|
|
145
|
+
// The SYNTACTIC `new T(new SharedArrayBuffer(n))` form — fresh-buffer construction (the
|
|
130
146
|
// shared spelling is the Atomics.wait sleep idiom's). The buffer
|
|
131
147
|
// never exists as a value: n must be a byte-length LITERAL divisible
|
|
132
148
|
// by the element size (tsc would admit any number; a bad one is
|
|
@@ -136,19 +152,17 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
136
152
|
// else can ever reference it, so neither sharing (scriptc has no
|
|
137
153
|
// threads) nor aliasing is observable — SEMANTICS.md documents the
|
|
138
154
|
// stance. The RESIZABLE form (a maxByteLength options bag) fences by
|
|
139
|
-
// name:
|
|
155
|
+
// name: this erasure has no shared or growable buffer representation.
|
|
140
156
|
if (ts.isNewExpression(argNode) &&
|
|
141
157
|
ts.isIdentifier(argNode.expression) &&
|
|
142
|
-
|
|
143
|
-
argNode.expression.text === "SharedArrayBuffer") &&
|
|
158
|
+
argNode.expression.text === "SharedArrayBuffer" &&
|
|
144
159
|
lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(argNode.expression) ?? undefined)) {
|
|
145
160
|
const bufCtor = argNode.expression.text;
|
|
146
161
|
if ((argNode.arguments?.length ?? 0) > 1) {
|
|
147
|
-
lowerer.noLowering(`new ${name} over a resizable ${bufCtor}`, argNode, "a maxByteLength options bag
|
|
148
|
-
"
|
|
149
|
-
"erases into the view): drop the options bag");
|
|
162
|
+
lowerer.noLowering(`new ${name} over a resizable ${bufCtor}`, argNode, "a maxByteLength options bag needs growable shared storage; the fixed-length " +
|
|
163
|
+
"SharedArrayBuffer here erases into the view: drop the options bag");
|
|
150
164
|
}
|
|
151
|
-
const elemSize = elem
|
|
165
|
+
const elemSize = BYTES_ELEMENT_SIZE[elem];
|
|
152
166
|
const lenArg = argNode.arguments?.length === 1 ? argNode.arguments[0] : undefined;
|
|
153
167
|
const lenT = lenArg ? lowerer.typeOf(lenArg) : null;
|
|
154
168
|
const byteLen = lenT?.isNumberLiteralType() ? lenT.value : null;
|
|
@@ -159,97 +173,70 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
159
173
|
return { kind: "bytesNew", source: count, type, loc };
|
|
160
174
|
}
|
|
161
175
|
const src = lowerer.lowerExpr(argNode);
|
|
162
|
-
if (src.type.kind === "union"
|
|
163
|
-
const
|
|
164
|
-
if (
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
kind: "ternary",
|
|
171
|
-
cond: { kind: "unionIsTag", unionId: src.type.unionId, tag: undefTag, negated: false, value: src, type: BOOL, loc },
|
|
172
|
-
then: empty,
|
|
173
|
-
else_: { kind: "unionNarrow", unionId: src.type.unionId, tag: presentTag, value: src, type: present, loc },
|
|
174
|
-
type: present,
|
|
175
|
-
loc,
|
|
176
|
-
};
|
|
177
|
-
return { kind: "bytesNew", source, type, loc };
|
|
178
|
-
}
|
|
176
|
+
if (src.type.kind === "union") {
|
|
177
|
+
const arms = lowerer.unions.get(src.type.unionId)?.arms;
|
|
178
|
+
if (arms?.every((arm) => arm.kind === "f64" || arm.kind === "bytes" ||
|
|
179
|
+
typeEquals(arm, UNDEFINED_T) || (arm.kind === "array" && arm.elem.kind === "f64"))) {
|
|
180
|
+
// The checked constructor dispatch preserves each arm's copy or
|
|
181
|
+
// length semantics, including undefined -> empty, and evaluates
|
|
182
|
+
// an effectful source expression exactly once.
|
|
183
|
+
return { kind: "bytesNew", source: lowerer.coerceInto(argNode, src, DYN), type, loc };
|
|
179
184
|
}
|
|
180
185
|
}
|
|
181
186
|
if (src.type.kind === "f64" ||
|
|
182
|
-
|
|
187
|
+
src.type.kind === "bytes" || src.type.kind === "dyn" ||
|
|
183
188
|
(src.type.kind === "array" && src.type.elem.kind === "f64")) {
|
|
184
189
|
return { kind: "bytesNew", source: src, type, loc };
|
|
185
190
|
}
|
|
186
|
-
if (src.type.kind === "bytes") {
|
|
187
|
-
lowerer.noLowering(`new ${name} over a '${lowerer.fmt(src.type)}'`, argNode, "cross-kind typed-array conversion has no lowering — copy element by element");
|
|
188
|
-
}
|
|
189
191
|
lowerer.noLowering(`new ${name} over '${lowerer.fmt(src.type)}' values`, argNode, `supported: new ${name}(), (length), (typedArray) — always a copy — or (number[]); ` +
|
|
190
|
-
"
|
|
192
|
+
"or (ArrayBuffer, byteOffset?, length?) for shared storage (narrow unions first)");
|
|
191
193
|
}
|
|
192
194
|
lowerer.noLowering(`new ${name} with ${args.length} arguments`, expr, `supported: new ${name}(), (length), (typedArray), or (number[])`);
|
|
193
195
|
}
|
|
194
|
-
/**
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const args = expr.arguments ?? [];
|
|
205
|
-
const bufNode = args[0];
|
|
206
|
-
if (!bufNode || args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
207
|
-
lowerer.noLowering(`new DataView with ${args.length} arguments`, expr, "supported: new DataView(x.buffer), (x.buffer, byteOffset), or (x.buffer, byteOffset, byteLength)");
|
|
208
|
-
}
|
|
209
|
-
// The FRESH-BUFFER form: `new DataView(new ArrayBuffer(n), ...)` — the
|
|
210
|
-
// buffer erases into the view (nothing else can ever reference it, so
|
|
211
|
-
// the aliasing a shared buffer would exhibit is unobservable): the
|
|
212
|
-
// view's storage is a fresh zero-filled n-byte allocation. n must be a
|
|
213
|
-
// non-negative integer LITERAL (tsc admits any number; a fractional
|
|
214
|
-
// one is ToIndex truncation nothing here implements). byteOffset and
|
|
215
|
-
// byteLength keep their runtime Node-RangeError story. The RESIZABLE
|
|
216
|
-
// form (a maxByteLength options bag) fences by name.
|
|
217
|
-
if (ts.isNewExpression(bufNode) &&
|
|
218
|
-
ts.isIdentifier(bufNode.expression) &&
|
|
219
|
-
bufNode.expression.text === "ArrayBuffer" &&
|
|
220
|
-
lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(bufNode.expression) ?? undefined)) {
|
|
221
|
-
if ((bufNode.arguments?.length ?? 0) > 1) {
|
|
222
|
-
lowerer.noLowering("new DataView over a resizable ArrayBuffer", bufNode, "a maxByteLength options bag makes the buffer resizable, and resizing needs the buffer " +
|
|
223
|
-
"to exist as a runtime value — no free-standing ArrayBuffer value exists (the buffer here " +
|
|
224
|
-
"erases into the view): drop the options bag");
|
|
225
|
-
}
|
|
226
|
-
const lenArg = bufNode.arguments?.length === 1 ? bufNode.arguments[0] : undefined;
|
|
227
|
-
const lenT = lenArg ? lowerer.typeOf(lenArg) : null;
|
|
228
|
-
const byteLen = lenT?.isNumberLiteralType() ? lenT.value : null;
|
|
229
|
-
if (byteLen === null || !Number.isInteger(byteLen) || byteLen < 0) {
|
|
230
|
-
lowerer.noLowering("new DataView over this ArrayBuffer", bufNode, "the byte length must be a non-negative integer literal — new DataView(new ArrayBuffer(8))");
|
|
231
|
-
}
|
|
232
|
-
const count = { kind: "numLit", value: byteLen, type: F64, loc };
|
|
233
|
-
const receiver = { kind: "bytesNew", source: count, type: BYTES_U8, loc };
|
|
234
|
-
const idxArgs = args.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
235
|
-
return { kind: "bytesIntrinsic", method: "dataViewNew", receiver, args: idxArgs, type: BYTES_U8, loc };
|
|
196
|
+
/** TypedArray.from without a mapping callback. Preserve its iterable /
|
|
197
|
+
* array-like semantics separately from constructor length coercion. */
|
|
198
|
+
export function lowerBytesStaticCall(lowerer, call, access) {
|
|
199
|
+
if (lowerer.chainBlocked(call, access))
|
|
200
|
+
return null;
|
|
201
|
+
if (lowerer.isStdlibGlobal(access.expression, "ArrayBuffer") && access.name.text === "isView") {
|
|
202
|
+
if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement))
|
|
203
|
+
lowerer.noLowering("ArrayBuffer.isView argument count", call);
|
|
204
|
+
const arg = call.arguments[0];
|
|
205
|
+
return { kind: "libCall", fn: "arrayBuffer.isView", args: [lowerer.coerceInto(arg, lowerer.lowerExpr(arg), DYN)], type: BOOL, loc: locOf(call) };
|
|
236
206
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
207
|
+
if (access.name.text !== "from" || !ts.isIdentifier(access.expression))
|
|
208
|
+
return null;
|
|
209
|
+
const symbol = lowerer.resolveValueSymbol(access.expression);
|
|
210
|
+
const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
|
|
211
|
+
if (!elem || !lowerer.isStdlibSymbol(symbol ?? undefined))
|
|
212
|
+
return null;
|
|
213
|
+
if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement)) {
|
|
214
|
+
lowerer.noLowering("TypedArray.from with a mapping callback or this argument count", call);
|
|
242
215
|
}
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
216
|
+
const node = call.arguments[0];
|
|
217
|
+
const source = lowerer.lowerExpr(node);
|
|
218
|
+
if (source.type.kind === "bytes" || (source.type.kind === "array" && source.type.elem.kind === "f64")) {
|
|
219
|
+
return { kind: "bytesNew", source, type: bytesOf(elem), loc: locOf(call) };
|
|
246
220
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
221
|
+
return { kind: "bytesNew", source: lowerer.coerceInto(node, source, DYN), from: true, type: bytesOf(elem), loc: locOf(call) };
|
|
222
|
+
}
|
|
223
|
+
/** Construct a view over the complete branded backing allocation. */
|
|
224
|
+
function lowerArrayBufferView(lowerer, args, elem, loc) {
|
|
225
|
+
const values = [0, 1, 2].map((index) => {
|
|
226
|
+
const node = args[index];
|
|
227
|
+
return node ? lowerer.coerceInto(node, lowerer.lowerExpr(node), DYN) : dynUndefinedExpr(loc);
|
|
228
|
+
});
|
|
229
|
+
const fn = { u8c: "arrayBuffer.viewU8C", i8: "arrayBuffer.viewI8", u16: "arrayBuffer.viewU16", i16: "arrayBuffer.viewI16", u8: "arrayBuffer.viewU8", u32: "arrayBuffer.viewU32", i32: "arrayBuffer.viewI32", f32: "arrayBuffer.viewF32", f64: "arrayBuffer.viewF64", dv: "arrayBuffer.viewDV" };
|
|
230
|
+
return { kind: "libCall", fn: fn[elem], args: values, type: elem === "dv" ? BYTES_U8 : bytesOf(elem), loc };
|
|
250
231
|
}
|
|
251
|
-
|
|
252
|
-
|
|
232
|
+
function lowerDataViewNew(lowerer, expr) {
|
|
233
|
+
const args = expr.arguments ?? [];
|
|
234
|
+
if (!args.length || args.length > 3 || args.some(ts.isSpreadElement))
|
|
235
|
+
lowerer.noLowering("DataView constructor argument count", expr);
|
|
236
|
+
return lowerArrayBufferView(lowerer, args, "dv", locOf(expr));
|
|
237
|
+
}
|
|
238
|
+
/** Method calls on typed-array/Buffer receivers: slice (copy), subarray
|
|
239
|
+
* (shared view), copyWithin, set(src,
|
|
253
240
|
* offset?), and the u8-only Buffer surface: toString(enc?) plus the
|
|
254
241
|
* whole numeric read/write family (fixed widths BE/LE and the
|
|
255
242
|
* variable-width read/writeUIntLE quartet — BUF_NUM_METHODS). Everything
|
|
@@ -276,7 +263,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
276
263
|
return {
|
|
277
264
|
kind: "bytesIntrinsic",
|
|
278
265
|
method: "toReversed",
|
|
279
|
-
receiver: lowerer.
|
|
266
|
+
receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
|
|
280
267
|
args: [],
|
|
281
268
|
type: receiverIr,
|
|
282
269
|
loc,
|
|
@@ -289,7 +276,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
289
276
|
return {
|
|
290
277
|
kind: "bytesIntrinsic",
|
|
291
278
|
method: "with",
|
|
292
|
-
receiver: lowerer.
|
|
279
|
+
receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
|
|
293
280
|
args: [
|
|
294
281
|
lowerer.lowerExprExpecting(call.arguments[0], F64),
|
|
295
282
|
lowerer.lowerExprExpecting(call.arguments[1], F64),
|
|
@@ -298,9 +285,9 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
298
285
|
loc,
|
|
299
286
|
};
|
|
300
287
|
}
|
|
301
|
-
if (
|
|
288
|
+
if (name === "join") {
|
|
302
289
|
if (nArgs > 1 || call.arguments.some(ts.isSpreadElement)) {
|
|
303
|
-
lowerer.noLowering(`.join with ${nArgs} arguments on
|
|
290
|
+
lowerer.noLowering(`.join with ${nArgs} arguments on typed arrays`, call);
|
|
304
291
|
}
|
|
305
292
|
const separatorDefault = {
|
|
306
293
|
kind: "strLit",
|
|
@@ -314,7 +301,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
314
301
|
return {
|
|
315
302
|
kind: "bytesIntrinsic",
|
|
316
303
|
method: "join",
|
|
317
|
-
receiver: lowerer.
|
|
304
|
+
receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
|
|
318
305
|
args: [separator],
|
|
319
306
|
type: STRING,
|
|
320
307
|
loc,
|
|
@@ -324,7 +311,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
324
311
|
if (nArgs > 2) {
|
|
325
312
|
lowerer.noLowering(`.${name} with ${nArgs} arguments on typed arrays`, call);
|
|
326
313
|
}
|
|
327
|
-
const receiver = lowerer.
|
|
314
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
328
315
|
const args = call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
329
316
|
// subarray is a VIEW (TypedArray.prototype.subarray aliases), and
|
|
330
317
|
// Buffer's slice() is subarray's deprecated Node alias — resolved by
|
|
@@ -338,6 +325,18 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
338
325
|
const method = name === "subarray" || declaredOnBuffer ? "subarray" : "slice";
|
|
339
326
|
return { kind: "bytesIntrinsic", method, receiver, args, type: receiverIr, loc };
|
|
340
327
|
}
|
|
328
|
+
if (name === "copyWithin") {
|
|
329
|
+
if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
|
|
330
|
+
lowerer.noLowering(`.copyWithin with ${nArgs} arguments on typed arrays`, call);
|
|
331
|
+
}
|
|
332
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
333
|
+
const args = [0, 0, Infinity].map((value, i) => {
|
|
334
|
+
const fallback = { kind: "numLit", value, type: F64, loc };
|
|
335
|
+
const node = call.arguments[i];
|
|
336
|
+
return node ? lowerOptionalArgument(lowerer, node, F64, fallback) : fallback;
|
|
337
|
+
});
|
|
338
|
+
return { kind: "bytesIntrinsic", method: "copyWithin", receiver, args, type: receiverIr, loc };
|
|
339
|
+
}
|
|
341
340
|
if (name === "fill" && receiverIr.elem !== "u8") {
|
|
342
341
|
// TypedArray.prototype.fill on the non-u8 kinds: per-element value
|
|
343
342
|
// coercion, slice-clamped relative indices, never throws. u8
|
|
@@ -346,7 +345,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
346
345
|
if (nArgs < 1 || nArgs > 3) {
|
|
347
346
|
lowerer.noLowering(`.fill with ${nArgs} arguments on typed arrays`, call);
|
|
348
347
|
}
|
|
349
|
-
const receiver = lowerer.
|
|
348
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
350
349
|
const v = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
351
350
|
const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
352
351
|
return { kind: "bytesIntrinsic", method: "fillElem", receiver, args: [v, ...idx], type: receiverIr, loc };
|
|
@@ -355,15 +354,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
355
354
|
if (nArgs < 1 || nArgs > 2) {
|
|
356
355
|
lowerer.noLowering(`.set with ${nArgs} arguments on typed arrays`, call);
|
|
357
356
|
}
|
|
358
|
-
const receiver = lowerer.
|
|
357
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
359
358
|
const src = lowerer.lowerExpr(call.arguments[0]);
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
}
|
|
363
|
-
const args = [src];
|
|
359
|
+
const method = src.type.kind === "bytes" ? "setFrom" : "setFromDyn";
|
|
360
|
+
const args = [src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN)];
|
|
364
361
|
if (nArgs === 2)
|
|
365
|
-
args.push(lowerer
|
|
366
|
-
return { kind: "bytesIntrinsic", method
|
|
362
|
+
args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, { kind: "numLit", value: 0, type: F64, loc }));
|
|
363
|
+
return { kind: "bytesIntrinsic", method, receiver, args, type: VOID, loc };
|
|
367
364
|
}
|
|
368
365
|
if (name === "toString") {
|
|
369
366
|
// Buffer's toString(encoding?) — utf8 by default. A 0-arg toString
|
|
@@ -378,7 +375,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
378
375
|
}
|
|
379
376
|
if (nArgs > 3)
|
|
380
377
|
lowerer.noLowering(`.toString with ${nArgs} arguments on Buffers`, call);
|
|
381
|
-
const receiver = lowerer.
|
|
378
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
382
379
|
const encNode = call.arguments[0];
|
|
383
380
|
let method = "toString";
|
|
384
381
|
let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
|
|
@@ -447,7 +444,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
447
444
|
if (nArgs < required || nArgs > required + 1) {
|
|
448
445
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
449
446
|
}
|
|
450
|
-
const receiver = lowerer.
|
|
447
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
451
448
|
const offsetNode = call.arguments[required];
|
|
452
449
|
const offset = offsetNode
|
|
453
450
|
? lowerer.lowerExprExpecting(offsetNode, F64)
|
|
@@ -474,7 +471,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
474
471
|
if (nArgs < required || nArgs > required + 1) {
|
|
475
472
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
476
473
|
}
|
|
477
|
-
const receiver = lowerer.
|
|
474
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
478
475
|
const kind = { kind: "strLit", value: numKind, type: STRING, loc };
|
|
479
476
|
const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
|
|
480
477
|
if (nArgs === required) {
|
|
@@ -492,7 +489,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
492
489
|
if (nArgs !== required) {
|
|
493
490
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
494
491
|
}
|
|
495
|
-
const receiver = lowerer.
|
|
492
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
496
493
|
const kind = { kind: "strLit", value: varKind, type: STRING, loc };
|
|
497
494
|
const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
|
|
498
495
|
return { kind: "bytesIntrinsic", method: write ? "writeNumVar" : "readNumVar", receiver, args, type: F64, loc };
|
|
@@ -506,7 +503,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
506
503
|
if (dvBigGetter !== undefined && receiverIr.elem === "u8") {
|
|
507
504
|
if (nArgs < 1 || nArgs > 2)
|
|
508
505
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
509
|
-
const receiver = lowerer.
|
|
506
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
510
507
|
const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
511
508
|
const sign = { kind: "boolLit", value: dvBigGetter.sign, type: BOOL, loc };
|
|
512
509
|
const le = call.arguments[1]
|
|
@@ -520,7 +517,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
520
517
|
if (nArgs < 1 || nArgs > maxArgs) {
|
|
521
518
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
522
519
|
}
|
|
523
|
-
const receiver = lowerer.
|
|
520
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
524
521
|
const args = [lowerer.lowerExprExpecting(call.arguments[0], F64)];
|
|
525
522
|
if (nArgs === 2)
|
|
526
523
|
args.push(lowerer.lowerExprExpecting(call.arguments[1], BOOL));
|
|
@@ -536,7 +533,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
536
533
|
if ((name === "setBigUint64" || name === "setBigInt64") && receiverIr.elem === "u8") {
|
|
537
534
|
if (nArgs < 2 || nArgs > 3)
|
|
538
535
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
539
|
-
const receiver = lowerer.
|
|
536
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
540
537
|
const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
541
538
|
const value = lowerer.lowerExprExpecting(call.arguments[1], BIGINT_T);
|
|
542
539
|
const le = call.arguments[2]
|
|
@@ -549,7 +546,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
549
546
|
if (nArgs < 2 || nArgs > maxArgs) {
|
|
550
547
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
551
548
|
}
|
|
552
|
-
const receiver = lowerer.
|
|
549
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
553
550
|
const args = [
|
|
554
551
|
lowerer.lowerExprExpecting(call.arguments[0], F64),
|
|
555
552
|
lowerer.lowerExprExpecting(call.arguments[1], F64),
|
|
@@ -593,31 +590,6 @@ export function bufEncoding(lowerer, what, encNode) {
|
|
|
593
590
|
}
|
|
594
591
|
return v;
|
|
595
592
|
}
|
|
596
|
-
/** The fixed-width Buffer numeric methods by source name → the readNum/
|
|
597
|
-
* writeNum kind token. Node declares BOTH capitalizations ("UInt" is the
|
|
598
|
-
* original, "Uint" the aliased spelling) — the tables carry both. */
|
|
599
|
-
const BUF_NUM_METHODS = (() => {
|
|
600
|
-
const out = {};
|
|
601
|
-
for (const rw of ["read", "write"]) {
|
|
602
|
-
for (const u of ["UInt", "Uint"]) {
|
|
603
|
-
out[`${rw}${u}8`] = "u8";
|
|
604
|
-
out[`${rw}${u}16BE`] = "u16be";
|
|
605
|
-
out[`${rw}${u}16LE`] = "u16le";
|
|
606
|
-
out[`${rw}${u}32BE`] = "u32be";
|
|
607
|
-
out[`${rw}${u}32LE`] = "u32le";
|
|
608
|
-
}
|
|
609
|
-
out[`${rw}Int8`] = "i8";
|
|
610
|
-
out[`${rw}Int16BE`] = "i16be";
|
|
611
|
-
out[`${rw}Int16LE`] = "i16le";
|
|
612
|
-
out[`${rw}Int32BE`] = "i32be";
|
|
613
|
-
out[`${rw}Int32LE`] = "i32le";
|
|
614
|
-
out[`${rw}FloatBE`] = "f32be";
|
|
615
|
-
out[`${rw}FloatLE`] = "f32le";
|
|
616
|
-
out[`${rw}DoubleBE`] = "f64be";
|
|
617
|
-
out[`${rw}DoubleLE`] = "f64le";
|
|
618
|
-
}
|
|
619
|
-
return out;
|
|
620
|
-
})();
|
|
621
593
|
const BUF_BIGINT_METHODS = {
|
|
622
594
|
readBigInt64BE: { sign: true, le: false },
|
|
623
595
|
readBigInt64LE: { sign: true, le: true },
|
|
@@ -691,12 +663,12 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
691
663
|
lowerer.noLowering(`.equals with ${nArgs} arguments`, call);
|
|
692
664
|
if (argIrKind(0)?.kind === "bytes") {
|
|
693
665
|
const other = u8Arg(0);
|
|
694
|
-
const receiver = lowerer.
|
|
666
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
695
667
|
return { kind: "bytesIntrinsic", method: "equals", receiver, args: [other], type: BOOL, loc };
|
|
696
668
|
}
|
|
697
669
|
// Not statically bytes (the invalid-input probes, untyped JS
|
|
698
670
|
// helpers): Node's "otherBuffer" argument ladder runs at runtime.
|
|
699
|
-
const receiver = lowerer.
|
|
671
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
700
672
|
return { kind: "libCall", fn: "bytes.equalsChk", args: [receiver, chkArg(0)], type: BOOL, loc };
|
|
701
673
|
}
|
|
702
674
|
if (name === "compare") {
|
|
@@ -708,14 +680,14 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
708
680
|
if (fast) {
|
|
709
681
|
const target = u8Arg(0);
|
|
710
682
|
const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
711
|
-
const receiver = lowerer.
|
|
683
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
712
684
|
return { kind: "bytesIntrinsic", method: "compareBuf", receiver, args: [target, ...idx], type: F64, loc };
|
|
713
685
|
}
|
|
714
686
|
// An absent/ill-typed target or offset (`a.compare()`, string
|
|
715
687
|
// offsets, explicit undefined): Node's target/targetStart/targetEnd/
|
|
716
688
|
// sourceStart/sourceEnd ladder runs at runtime; absent slots pass
|
|
717
689
|
// the undefined dyn (Node defaults apply there).
|
|
718
|
-
const receiver = lowerer.
|
|
690
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
719
691
|
const slots = [];
|
|
720
692
|
for (let i = 0; i < 5; i++)
|
|
721
693
|
slots.push(i < nArgs ? chkArg(i) : dynUndefinedExpr(loc));
|
|
@@ -740,7 +712,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
740
712
|
}
|
|
741
713
|
const resultT = name === "includes" ? BOOL : F64;
|
|
742
714
|
const vT = lowerer.mapTypeOf(lowerer.typeOf(args[0]));
|
|
743
|
-
const receiver = lowerer.
|
|
715
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
744
716
|
if (vT?.kind === "f64") {
|
|
745
717
|
// A number needle wraps & 0xFF at runtime (Buffer semantics; the
|
|
746
718
|
// encoding is irrelevant, like Node).
|
|
@@ -785,7 +757,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
785
757
|
if (receiverT?.kind !== "bytes")
|
|
786
758
|
lowerer.badType(access.expression, lowerer.typeOf(access.expression));
|
|
787
759
|
const vT = lowerer.mapTypeOf(lowerer.typeOf(args[0]));
|
|
788
|
-
const receiver = lowerer.
|
|
760
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
789
761
|
if (vT?.kind === "string") {
|
|
790
762
|
const encName = encNode ? bufEncoding(lowerer, ".fill", encNode) : "utf8";
|
|
791
763
|
const s = lowerer.lowerExprExpecting(args[0], STRING);
|
|
@@ -806,13 +778,13 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
806
778
|
lowerer.noLowering(`.copy with ${nArgs} arguments`, call);
|
|
807
779
|
const target = u8Arg(0);
|
|
808
780
|
const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
809
|
-
const receiver = lowerer.
|
|
781
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
810
782
|
return { kind: "bytesIntrinsic", method: "copy", receiver, args: [target, ...idx], type: F64, loc };
|
|
811
783
|
}
|
|
812
784
|
if (name === "swap16" || name === "swap32" || name === "swap64") {
|
|
813
785
|
if (nArgs !== 0)
|
|
814
786
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
815
|
-
const receiver = lowerer.
|
|
787
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
816
788
|
return { kind: "bytesIntrinsic", method: name, receiver, args: [], type: BYTES_U8, loc };
|
|
817
789
|
}
|
|
818
790
|
if (name === "write") {
|
|
@@ -835,7 +807,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
835
807
|
? lowerer.lowerExprExpecting(idxNodes[0], F64)
|
|
836
808
|
: { kind: "numLit", value: 0, type: F64, loc };
|
|
837
809
|
const writeArgs = [s, enc, offset, ...(idxNodes[1] ? [lowerer.lowerExprExpecting(idxNodes[1], F64)] : [])];
|
|
838
|
-
const receiver = lowerer.
|
|
810
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
839
811
|
return { kind: "bytesIntrinsic", method: "writeStr", receiver, args: writeArgs, type: F64, loc };
|
|
840
812
|
}
|
|
841
813
|
return null;
|
|
@@ -902,6 +874,14 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
|
|
|
902
874
|
return type?.kind === "cryptoHash" || type?.kind === "cryptoHmac";
|
|
903
875
|
}
|
|
904
876
|
export function lowerBufferStaticCall(lowerer, call, access) {
|
|
877
|
+
const value = lowerBufferStaticValue(lowerer, call, access);
|
|
878
|
+
// Every byte-valued Buffer factory creates a distinct view. Preserve its
|
|
879
|
+
// brand even when stored as Uint8Array or passed through checked values.
|
|
880
|
+
return value?.type.kind === "bytes"
|
|
881
|
+
? { kind: "libCall", fn: "buffer.brand", args: [value], type: value.type, loc: value.loc }
|
|
882
|
+
: value;
|
|
883
|
+
}
|
|
884
|
+
function lowerBufferStaticValue(lowerer, call, access) {
|
|
905
885
|
if (call.questionDotToken || access.questionDotToken)
|
|
906
886
|
return null;
|
|
907
887
|
if (!lowerer.isStdlibGlobal(access.expression, "Buffer"))
|
|
@@ -910,6 +890,10 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
910
890
|
const loc = locOf(call);
|
|
911
891
|
const args = call.arguments;
|
|
912
892
|
if (member === "from") {
|
|
893
|
+
if (args.length >= 1 && args.length <= 3 && !args.some(ts.isSpreadElement) &&
|
|
894
|
+
lowerer.typeOf(args[0]).getSymbol()?.name === "ArrayBuffer") {
|
|
895
|
+
return lowerArrayBufferView(lowerer, args, "u8", loc);
|
|
896
|
+
}
|
|
913
897
|
// Buffer.from(x.buffer[, byteOffset[, length]]): a u8 VIEW sharing
|
|
914
898
|
// x's storage (Node shares the ArrayBuffer; length is in BYTES).
|
|
915
899
|
// The first argument must be the SYNTACTIC `.buffer` of a typed
|
|
@@ -926,7 +910,7 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
926
910
|
return { kind: "bytesIntrinsic", method: "dataViewNew", receiver, args: idxArgs, type: BYTES_U8, loc };
|
|
927
911
|
}
|
|
928
912
|
}
|
|
929
|
-
if (args.length >= 1 && args.length <= 2 && !ts.isSpreadElement
|
|
913
|
+
if (args.length >= 1 && args.length <= 2 && !args.some(ts.isSpreadElement)) {
|
|
930
914
|
const argNode = args[0];
|
|
931
915
|
if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
|
|
932
916
|
// A number[] literal (contextually typed by the lib's readonly
|
|
@@ -939,24 +923,32 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
939
923
|
}
|
|
940
924
|
else {
|
|
941
925
|
const srcIr = lowerer.mapTypeOf(lowerer.typeOf(argNode));
|
|
926
|
+
const value = lowerer.lowerExpr(argNode);
|
|
927
|
+
// JS callback storage can be native DYN even when the checker
|
|
928
|
+
// reports any (or a narrowed Buffer). Dispatch on its actual ABI.
|
|
929
|
+
if (value.type.kind === "dyn") {
|
|
930
|
+
const encName = args[1] ? bufEncoding(lowerer, "Buffer.from", args[1]) : "utf8";
|
|
931
|
+
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
932
|
+
return { kind: "libCall", fn: "buffer.fromDyn", args: [value, enc], type: BYTES_U8, loc };
|
|
933
|
+
}
|
|
942
934
|
if (srcIr?.kind === "string") {
|
|
943
935
|
const encNode = args[1];
|
|
944
936
|
const encName = encNode ? bufEncoding(lowerer, "Buffer.from", encNode) : "utf8";
|
|
945
|
-
const s = lowerer.
|
|
937
|
+
const s = lowerer.coerceInto(argNode, value, STRING);
|
|
946
938
|
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
947
939
|
return { kind: "libCall", fn: "buffer.fromStr", args: [s, enc], type: BYTES_U8, loc };
|
|
948
940
|
}
|
|
949
941
|
if (args.length === 1 && srcIr?.kind === "bytes" && srcIr.elem === "u8") {
|
|
950
|
-
return { kind: "bytesNew", source:
|
|
942
|
+
return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
|
|
951
943
|
}
|
|
952
944
|
if (args.length === 1 && srcIr?.kind === "array" && srcIr.elem.kind === "f64") {
|
|
953
|
-
return { kind: "bytesNew", source:
|
|
945
|
+
return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
|
|
954
946
|
}
|
|
955
947
|
}
|
|
956
948
|
}
|
|
957
949
|
lowerer.noLowering("Buffer.from with this argument shape", call, "supported: Buffer.from(string, encoding?) with a literal encoding, Buffer.from(u8Array) — a copy — " +
|
|
958
|
-
"Buffer.from(number[]), or Buffer.from(
|
|
959
|
-
"
|
|
950
|
+
"Buffer.from(number[]), or Buffer.from(arrayBuffer, byteOffset?, length?) — a view sharing " +
|
|
951
|
+
"the buffer's storage; narrow unions first");
|
|
960
952
|
}
|
|
961
953
|
if (member === "alloc" || member === "allocUnsafe") {
|
|
962
954
|
const maxArgs = member === "alloc" ? 3 : 1;
|
|
@@ -1062,6 +1054,23 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
1062
1054
|
loc,
|
|
1063
1055
|
};
|
|
1064
1056
|
}
|
|
1057
|
+
// Untyped stream chunks retain the native checked value's Buffer
|
|
1058
|
+
// flavor. Plain bytes are Uint8Arrays at this boundary; inspecting
|
|
1059
|
+
// only the bytes tag would incorrectly identify them as Buffers.
|
|
1060
|
+
if (v.type.kind === "dyn") {
|
|
1061
|
+
return { kind: "dynTest", test: "buffer", value: v, type: BOOL, loc };
|
|
1062
|
+
}
|
|
1063
|
+
// Primitive storage cannot carry a Buffer. Keep argument effects
|
|
1064
|
+
// even when its representation makes the answer constant.
|
|
1065
|
+
if (v.type.kind === "string" || v.type.kind === "f64" || v.type.kind === "bool" ||
|
|
1066
|
+
v.type.kind === "symbol" || v.type.kind === "bigint" || v.type.kind === "nullT" || v.type.kind === "undefinedT") {
|
|
1067
|
+
if (isSafeToDiscard(v))
|
|
1068
|
+
return { kind: "boolLit", value: false, type: BOOL, loc };
|
|
1069
|
+
return {
|
|
1070
|
+
kind: "seqExpr", stmts: [{ kind: "exprStmt", expr: v, loc: v.loc }],
|
|
1071
|
+
result: { kind: "boolLit", value: false, type: BOOL, loc }, type: BOOL, loc,
|
|
1072
|
+
};
|
|
1073
|
+
}
|
|
1065
1074
|
if (v.type.kind === "union") {
|
|
1066
1075
|
const def = lowerer.unions.get(v.type.unionId);
|
|
1067
1076
|
const tag = def ? def.arms.findIndex((a) => a.kind === "bytes" && a.elem === "u8") : -1;
|