@scriptc/compiler 0.1.7 → 0.2.1
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 +98 -39
- 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 +108 -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 +88 -30
- 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 +21 -2
- package/dist/backend/llvm/dyn.js +647 -251
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +596 -1
- package/dist/backend/llvm/emitter.js +769 -425
- 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 +2 -2
- package/dist/backend/llvm/expr-bytes.js +60 -31
- 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 +10 -6
- 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 +78 -81
- 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 +62 -31
- 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 +54 -7
- 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 +220 -131
- 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 +44 -19
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +162 -3
- 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 +42 -131
- 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 +12 -30
- package/dist/backend/native-toolchain.js +83 -233
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +77 -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 +73 -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 +103 -34
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +72 -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 +37 -7
- 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 +5 -10
- 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 +74 -0
- package/dist/frontend/lowering/class-callbacks.js.map +1 -0
- package/dist/frontend/lowering/class-construction.d.ts +12 -0
- package/dist/frontend/lowering/class-construction.js +156 -0
- package/dist/frontend/lowering/class-construction.js.map +1 -0
- package/dist/frontend/lowering/class-descriptors.d.ts +10 -0
- package/dist/frontend/lowering/class-descriptors.js +114 -0
- package/dist/frontend/lowering/class-descriptors.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +51 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1158 -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 +93 -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 +67 -0
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
- package/dist/frontend/lowering/class-method-values.d.ts +13 -0
- package/dist/frontend/lowering/class-method-values.js +235 -0
- package/dist/frontend/lowering/class-method-values.js.map +1 -0
- package/dist/frontend/lowering/class-prototypes.d.ts +19 -0
- package/dist/frontend/lowering/class-prototypes.js +242 -0
- package/dist/frontend/lowering/class-prototypes.js.map +1 -0
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +66 -0
- package/dist/frontend/lowering/class-runtime-statics.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 +208 -163
- 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 +58 -63
- 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 +14 -0
- package/dist/frontend/lowering/error-methods.js +177 -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 +51 -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 +132 -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 +509 -183
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -4
- package/dist/frontend/lowering/expressions/optional-chains.js +88 -24
- 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 +101 -0
- package/dist/frontend/lowering/function-context.js +109 -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 +11 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +143 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +4 -1
- package/dist/frontend/lowering/lib-boundary.js +112 -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 +18 -0
- package/dist/frontend/lowering/lower-builtin-values.js +249 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.d.ts +33 -46
- package/dist/frontend/lowering/lower-builtins.js +676 -365
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +28 -22
- package/dist/frontend/lowering/lower-calls.js +1660 -412
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +95 -57
- package/dist/frontend/lowering/lower-classes.js +1491 -404
- 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 +36 -32
- package/dist/frontend/lowering/lower-containers.js +925 -181
- 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 +3 -2
- 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 +37 -13
- package/dist/frontend/lowering/lower-exprs.js +2163 -863
- 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 +88 -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 +7 -8
- package/dist/frontend/lowering/lower-island.js +66 -33
- 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 +445 -39
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-modules.test.js +39 -0
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -0
- 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 +17 -17
- package/dist/frontend/lowering/lower-stmts.js +855 -514
- 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 +20 -11
- 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 +140 -190
- package/dist/frontend/lowering/lowerer.js +1193 -712
- 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 +172 -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 +10 -3
- package/dist/frontend/lowering/surfaces.js +86 -37
- 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 +12 -0
- package/dist/frontend/lowering/text-decoder-encoding.js +82 -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 +121 -38
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +9 -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 +39 -20
- package/dist/frontend/program.js +393 -189
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +105 -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 +25 -18
- 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 +47 -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 +34 -18
- package/dist/frontend/type-mapper.js +552 -131
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +146 -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 +23 -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 +334 -176
- package/dist/ir/ir.js +710 -903
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +162 -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 +33 -14
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.d.ts +1 -0
- package/dist/ir/serialize.test.js +57 -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 +2018 -1498
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +536 -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 +137 -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 +94 -0
- package/dist/native/toolchain.js.map +1 -0
- package/dist/native/toolchain.test.d.ts +1 -0
- package/dist/native/toolchain.test.js +85 -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 +107 -98
- 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,11 +1,14 @@
|
|
|
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
|
-
import { dynUndefinedExpr, own } from "../lowerer.js";
|
|
5
|
+
import { dynUndefinedExpr, newFnCtx, own } from "../lowerer.js";
|
|
5
6
|
import { buildBytesSortFn } from "../lower-array-sort.js";
|
|
6
7
|
import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
|
|
7
8
|
import { lowerDynObjectLiteral } from "../expressions/object-literals.js";
|
|
8
9
|
import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument } from "../optional-arguments.js";
|
|
10
|
+
import { lowerCheckedArrayFrom } from "../lower-containers.js";
|
|
11
|
+
import { varRef } from "../../../ir/build.js";
|
|
9
12
|
/** Uint8Array.prototype.toSorted. The receiver/comparator expressions are
|
|
10
13
|
* evaluated before entering the helper; the helper snapshots with
|
|
11
14
|
* TypedArray.prototype.slice before its first comparison, then performs
|
|
@@ -17,7 +20,7 @@ function lowerBytesToSortedCall(lowerer, call, access, bytesT) {
|
|
|
17
20
|
if (call.arguments.length > 1 || call.arguments.some(ts.isSpreadElement)) {
|
|
18
21
|
lowerer.noLowering(`.toSorted with ${call.arguments.length} arguments on Uint8Array`, call);
|
|
19
22
|
}
|
|
20
|
-
const receiver = lowerer.
|
|
23
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, bytesT);
|
|
21
24
|
const undefinedArg = call.arguments[0]
|
|
22
25
|
? lowerStaticallyUndefinedArgument(lowerer, call.arguments[0])
|
|
23
26
|
: null;
|
|
@@ -85,27 +88,40 @@ function lowerBytesToSortedCall(lowerer, call, access, bytesT) {
|
|
|
85
88
|
}
|
|
86
89
|
/* ── typed arrays / Buffer ─────────────────────────────────────────────── */
|
|
87
90
|
/** The typed-array constructors with a runtime representation, by lib
|
|
88
|
-
* interface name. Other flavors (
|
|
91
|
+
* interface name. Other flavors (Float16Array, BigInt64Array, ...) fall through
|
|
89
92
|
* to the generic stdlib-constructor fence. DataView is handled separately. */
|
|
90
93
|
const BYTES_CTORS = {
|
|
91
94
|
Uint8Array: "u8",
|
|
95
|
+
Uint8ClampedArray: "u8c",
|
|
96
|
+
Int8Array: "i8",
|
|
97
|
+
Uint16Array: "u16",
|
|
98
|
+
Int16Array: "i16",
|
|
92
99
|
Uint32Array: "u32",
|
|
93
100
|
Int32Array: "i32",
|
|
94
101
|
Float32Array: "f32",
|
|
95
102
|
Float64Array: "f64",
|
|
96
103
|
};
|
|
97
|
-
/**
|
|
104
|
+
/** Numeric typed-array constructors
|
|
98
105
|
* (stdlib provenance — a user's own class with the name resolves through
|
|
99
106
|
* classBySymbol). Lowered argument shapes: none (empty), a length
|
|
100
107
|
* (zero-filled; ToIndex at runtime — invalid lengths throw Node's
|
|
101
|
-
* RangeError), a
|
|
108
|
+
* RangeError), a numeric typed array or Buffer (an independent COPY —
|
|
102
109
|
* the readFile chain's `new Uint8Array(await readFile(p))`), a number[]
|
|
103
110
|
* literal (element-coerced; its contextual type is the lib's
|
|
104
111
|
* ArrayLike/Iterable union, which cannot map — the Set-seed pattern), or
|
|
105
|
-
* a number[]-typed value
|
|
106
|
-
*
|
|
112
|
+
* a number[]-typed value, or checked native input with runtime length /
|
|
113
|
+
* array-like dispatch. ArrayBuffer inputs create shared views.
|
|
114
|
+
* Null when this isn't a stdlib
|
|
107
115
|
* typed-array construction. */
|
|
108
116
|
export function lowerBytesNew(lowerer, expr, symbol) {
|
|
117
|
+
if (symbol != null && symbol.name === "ArrayBuffer" && lowerer.isStdlibSymbol(symbol)) {
|
|
118
|
+
const args = expr.arguments ?? [];
|
|
119
|
+
if (args.length > 1 || args.some(ts.isSpreadElement)) {
|
|
120
|
+
lowerer.noLowering("resizable ArrayBuffer construction", expr, "fixed-length ArrayBuffers accept a byte length; resizable storage is not supported yet");
|
|
121
|
+
}
|
|
122
|
+
const length = args[0] ? lowerer.coerceInto(args[0], lowerer.lowerExpr(args[0]), DYN) : dynUndefinedExpr(locOf(expr));
|
|
123
|
+
return { kind: "libCall", fn: "arrayBuffer.new", args: [length], type: DYN, loc: locOf(expr) };
|
|
124
|
+
}
|
|
109
125
|
if (symbol && symbol.name === "DataView" && lowerer.isStdlibSymbol(symbol)) {
|
|
110
126
|
return lowerDataViewNew(lowerer, expr);
|
|
111
127
|
}
|
|
@@ -118,6 +134,9 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
118
134
|
const args = expr.arguments ?? [];
|
|
119
135
|
if (args.length === 0)
|
|
120
136
|
return { kind: "bytesNew", source: null, type, loc };
|
|
137
|
+
if (args.length >= 2 && args.length <= 3 && !args.some(ts.isSpreadElement)) {
|
|
138
|
+
return lowerArrayBufferView(lowerer, args, elem, loc);
|
|
139
|
+
}
|
|
121
140
|
if (args.length === 1 && !ts.isSpreadElement(args[0])) {
|
|
122
141
|
const argNode = args[0];
|
|
123
142
|
if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
|
|
@@ -125,8 +144,7 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
125
144
|
const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
|
|
126
145
|
return { kind: "bytesNew", source: seed, type, loc };
|
|
127
146
|
}
|
|
128
|
-
// The SYNTACTIC `new T(new
|
|
129
|
-
// SharedArrayBuffer(n))` forms — fresh-buffer construction (the
|
|
147
|
+
// The SYNTACTIC `new T(new SharedArrayBuffer(n))` form — fresh-buffer construction (the
|
|
130
148
|
// shared spelling is the Atomics.wait sleep idiom's). The buffer
|
|
131
149
|
// never exists as a value: n must be a byte-length LITERAL divisible
|
|
132
150
|
// by the element size (tsc would admit any number; a bad one is
|
|
@@ -136,19 +154,17 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
136
154
|
// else can ever reference it, so neither sharing (scriptc has no
|
|
137
155
|
// threads) nor aliasing is observable — SEMANTICS.md documents the
|
|
138
156
|
// stance. The RESIZABLE form (a maxByteLength options bag) fences by
|
|
139
|
-
// name:
|
|
157
|
+
// name: this erasure has no shared or growable buffer representation.
|
|
140
158
|
if (ts.isNewExpression(argNode) &&
|
|
141
159
|
ts.isIdentifier(argNode.expression) &&
|
|
142
|
-
|
|
143
|
-
argNode.expression.text === "SharedArrayBuffer") &&
|
|
160
|
+
argNode.expression.text === "SharedArrayBuffer" &&
|
|
144
161
|
lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(argNode.expression) ?? undefined)) {
|
|
145
162
|
const bufCtor = argNode.expression.text;
|
|
146
163
|
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");
|
|
164
|
+
lowerer.noLowering(`new ${name} over a resizable ${bufCtor}`, argNode, "a maxByteLength options bag needs growable shared storage; the fixed-length " +
|
|
165
|
+
"SharedArrayBuffer here erases into the view: drop the options bag");
|
|
150
166
|
}
|
|
151
|
-
const elemSize = elem
|
|
167
|
+
const elemSize = BYTES_ELEMENT_SIZE[elem];
|
|
152
168
|
const lenArg = argNode.arguments?.length === 1 ? argNode.arguments[0] : undefined;
|
|
153
169
|
const lenT = lenArg ? lowerer.typeOf(lenArg) : null;
|
|
154
170
|
const byteLen = lenT?.isNumberLiteralType() ? lenT.value : null;
|
|
@@ -159,97 +175,98 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
159
175
|
return { kind: "bytesNew", source: count, type, loc };
|
|
160
176
|
}
|
|
161
177
|
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
|
-
}
|
|
178
|
+
if (src.type.kind === "union") {
|
|
179
|
+
const arms = lowerer.unions.get(src.type.unionId)?.arms;
|
|
180
|
+
if (arms?.every((arm) => arm.kind === "f64" || arm.kind === "bytes" ||
|
|
181
|
+
typeEquals(arm, UNDEFINED_T) || (arm.kind === "array" && arm.elem.kind === "f64"))) {
|
|
182
|
+
// The checked constructor dispatch preserves each arm's copy or
|
|
183
|
+
// length semantics, including undefined -> empty, and evaluates
|
|
184
|
+
// an effectful source expression exactly once.
|
|
185
|
+
return { kind: "bytesNew", source: lowerer.coerceInto(argNode, src, DYN), type, loc };
|
|
179
186
|
}
|
|
180
187
|
}
|
|
181
188
|
if (src.type.kind === "f64" ||
|
|
182
|
-
|
|
189
|
+
src.type.kind === "bytes" || src.type.kind === "dyn" ||
|
|
183
190
|
(src.type.kind === "array" && src.type.elem.kind === "f64")) {
|
|
184
191
|
return { kind: "bytesNew", source: src, type, loc };
|
|
185
192
|
}
|
|
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
193
|
lowerer.noLowering(`new ${name} over '${lowerer.fmt(src.type)}' values`, argNode, `supported: new ${name}(), (length), (typedArray) — always a copy — or (number[]); ` +
|
|
190
|
-
"
|
|
194
|
+
"or (ArrayBuffer, byteOffset?, length?) for shared storage (narrow unions first)");
|
|
191
195
|
}
|
|
192
196
|
lowerer.noLowering(`new ${name} with ${args.length} arguments`, expr, `supported: new ${name}(), (length), (typedArray), or (number[])`);
|
|
193
197
|
}
|
|
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)");
|
|
198
|
+
/** TypedArray.from without a mapping callback. Preserve its iterable /
|
|
199
|
+
* array-like semantics separately from constructor length coercion. */
|
|
200
|
+
export function lowerBytesStaticCall(lowerer, call, access) {
|
|
201
|
+
if (lowerer.chainBlocked(call, access))
|
|
202
|
+
return null;
|
|
203
|
+
if (lowerer.isStdlibGlobal(access.expression, "ArrayBuffer") && access.name.text === "isView") {
|
|
204
|
+
if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement))
|
|
205
|
+
lowerer.noLowering("ArrayBuffer.isView argument count", call);
|
|
206
|
+
const arg = call.arguments[0];
|
|
207
|
+
return { kind: "libCall", fn: "arrayBuffer.isView", args: [lowerer.coerceInto(arg, lowerer.lowerExpr(arg), DYN)], type: BOOL, loc: locOf(call) };
|
|
208
208
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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 };
|
|
209
|
+
if (access.name.text !== "from" || !ts.isIdentifier(access.expression))
|
|
210
|
+
return null;
|
|
211
|
+
const symbol = lowerer.resolveValueSymbol(access.expression);
|
|
212
|
+
const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
|
|
213
|
+
if (!elem || !lowerer.isStdlibSymbol(symbol ?? undefined))
|
|
214
|
+
return null;
|
|
215
|
+
if (call.arguments.length < 1 || call.arguments.length > 3 || call.arguments.some(ts.isSpreadElement)) {
|
|
216
|
+
lowerer.noLowering("TypedArray.from with this argument count", call);
|
|
236
217
|
}
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
218
|
+
const node = call.arguments[0];
|
|
219
|
+
const source = lowerer.lowerExpr(node);
|
|
220
|
+
if (call.arguments.length > 1) {
|
|
221
|
+
if (!["string", "array", "bytes"].includes(source.type.kind))
|
|
222
|
+
lowerer.noLowering("TypedArray.from mapper over this source representation", call);
|
|
223
|
+
const loc = locOf(call);
|
|
224
|
+
const key = `%builtin.${elem}.fromMapped`;
|
|
225
|
+
if (!lowerer.liftedFns.some((fn) => fn.name === key)) {
|
|
226
|
+
const context = newFnCtx(false, null, null, bytesOf(elem));
|
|
227
|
+
lowerer.fnStack.push(context);
|
|
228
|
+
try {
|
|
229
|
+
const locals = ["source", "mapper", "receiver"].map((name) => lowerer.declareHiddenLocal(name, DYN));
|
|
230
|
+
const [input, mapper, receiver] = locals.map((local) => varRef(local.id, DYN, loc));
|
|
231
|
+
const collected = lowerCheckedArrayFrom(lowerer, input, loc);
|
|
232
|
+
const mapped = lowerCheckedArrayFrom(lowerer, collected.result, loc, mapper, receiver, true);
|
|
233
|
+
// Consume the iterable before mapping, but validate the mapper first.
|
|
234
|
+
lowerer.liftedFns.push({ name: key, params: locals.map((local) => ({ localId: local.id, name: local.name, type: DYN })),
|
|
235
|
+
returnType: bytesOf(elem), locals: context.locals, loc, body: [
|
|
236
|
+
mapped.stmts[0], ...collected.stmts, ...mapped.stmts.slice(1),
|
|
237
|
+
{ kind: "return", value: { kind: "bytesNew", source: mapped.result, from: true, type: bytesOf(elem), loc }, loc },
|
|
238
|
+
] });
|
|
239
|
+
}
|
|
240
|
+
finally {
|
|
241
|
+
lowerer.fnStack.pop();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return { kind: "call", callee: key, args: [lowerer.coerceInto(node, source, DYN),
|
|
245
|
+
lowerer.lowerExprExpecting(call.arguments[1], DYN),
|
|
246
|
+
call.arguments[2] ? lowerer.lowerExprExpecting(call.arguments[2], DYN) : dynUndefinedExpr(loc)], type: bytesOf(elem), loc };
|
|
242
247
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
lowerer.noLowering(`new DataView over '.buffer' of a '${lowerer.checker.typeToString(lowerer.typeOf(bufNode.expression))}'`, bufNode, hint);
|
|
248
|
+
if (source.type.kind === "bytes" || (source.type.kind === "array" && source.type.elem.kind === "f64")) {
|
|
249
|
+
return { kind: "bytesNew", source, type: bytesOf(elem), loc: locOf(call) };
|
|
246
250
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
251
|
+
return { kind: "bytesNew", source: lowerer.coerceInto(node, source, DYN), from: true, type: bytesOf(elem), loc: locOf(call) };
|
|
252
|
+
}
|
|
253
|
+
/** Construct a view over the complete branded backing allocation. */
|
|
254
|
+
function lowerArrayBufferView(lowerer, args, elem, loc) {
|
|
255
|
+
const values = [0, 1, 2].map((index) => {
|
|
256
|
+
const node = args[index];
|
|
257
|
+
return node ? lowerer.coerceInto(node, lowerer.lowerExpr(node), DYN) : dynUndefinedExpr(loc);
|
|
258
|
+
});
|
|
259
|
+
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" };
|
|
260
|
+
return { kind: "libCall", fn: fn[elem], args: values, type: elem === "dv" ? BYTES_U8 : bytesOf(elem), loc };
|
|
250
261
|
}
|
|
251
|
-
|
|
252
|
-
|
|
262
|
+
function lowerDataViewNew(lowerer, expr) {
|
|
263
|
+
const args = expr.arguments ?? [];
|
|
264
|
+
if (!args.length || args.length > 3 || args.some(ts.isSpreadElement))
|
|
265
|
+
lowerer.noLowering("DataView constructor argument count", expr);
|
|
266
|
+
return lowerArrayBufferView(lowerer, args, "dv", locOf(expr));
|
|
267
|
+
}
|
|
268
|
+
/** Method calls on typed-array/Buffer receivers: slice (copy), subarray
|
|
269
|
+
* (shared view), copyWithin, set(src,
|
|
253
270
|
* offset?), and the u8-only Buffer surface: toString(enc?) plus the
|
|
254
271
|
* whole numeric read/write family (fixed widths BE/LE and the
|
|
255
272
|
* variable-width read/writeUIntLE quartet — BUF_NUM_METHODS). Everything
|
|
@@ -276,7 +293,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
276
293
|
return {
|
|
277
294
|
kind: "bytesIntrinsic",
|
|
278
295
|
method: "toReversed",
|
|
279
|
-
receiver: lowerer.
|
|
296
|
+
receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
|
|
280
297
|
args: [],
|
|
281
298
|
type: receiverIr,
|
|
282
299
|
loc,
|
|
@@ -289,7 +306,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
289
306
|
return {
|
|
290
307
|
kind: "bytesIntrinsic",
|
|
291
308
|
method: "with",
|
|
292
|
-
receiver: lowerer.
|
|
309
|
+
receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
|
|
293
310
|
args: [
|
|
294
311
|
lowerer.lowerExprExpecting(call.arguments[0], F64),
|
|
295
312
|
lowerer.lowerExprExpecting(call.arguments[1], F64),
|
|
@@ -298,9 +315,9 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
298
315
|
loc,
|
|
299
316
|
};
|
|
300
317
|
}
|
|
301
|
-
if (
|
|
318
|
+
if (name === "join") {
|
|
302
319
|
if (nArgs > 1 || call.arguments.some(ts.isSpreadElement)) {
|
|
303
|
-
lowerer.noLowering(`.join with ${nArgs} arguments on
|
|
320
|
+
lowerer.noLowering(`.join with ${nArgs} arguments on typed arrays`, call);
|
|
304
321
|
}
|
|
305
322
|
const separatorDefault = {
|
|
306
323
|
kind: "strLit",
|
|
@@ -314,7 +331,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
314
331
|
return {
|
|
315
332
|
kind: "bytesIntrinsic",
|
|
316
333
|
method: "join",
|
|
317
|
-
receiver: lowerer.
|
|
334
|
+
receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
|
|
318
335
|
args: [separator],
|
|
319
336
|
type: STRING,
|
|
320
337
|
loc,
|
|
@@ -324,7 +341,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
324
341
|
if (nArgs > 2) {
|
|
325
342
|
lowerer.noLowering(`.${name} with ${nArgs} arguments on typed arrays`, call);
|
|
326
343
|
}
|
|
327
|
-
const receiver = lowerer.
|
|
344
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
328
345
|
const args = call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
329
346
|
// subarray is a VIEW (TypedArray.prototype.subarray aliases), and
|
|
330
347
|
// Buffer's slice() is subarray's deprecated Node alias — resolved by
|
|
@@ -338,32 +355,44 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
338
355
|
const method = name === "subarray" || declaredOnBuffer ? "subarray" : "slice";
|
|
339
356
|
return { kind: "bytesIntrinsic", method, receiver, args, type: receiverIr, loc };
|
|
340
357
|
}
|
|
341
|
-
if (name === "
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
358
|
+
if (name === "copyWithin") {
|
|
359
|
+
if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
|
|
360
|
+
lowerer.noLowering(`.copyWithin with ${nArgs} arguments on typed arrays`, call);
|
|
361
|
+
}
|
|
362
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
363
|
+
const args = [0, 0, Infinity].map((value, i) => {
|
|
364
|
+
const fallback = { kind: "numLit", value, type: F64, loc };
|
|
365
|
+
const node = call.arguments[i];
|
|
366
|
+
return node ? lowerOptionalArgument(lowerer, node, F64, fallback) : fallback;
|
|
367
|
+
});
|
|
368
|
+
return { kind: "bytesIntrinsic", method: "copyWithin", receiver, args, type: receiverIr, loc };
|
|
369
|
+
}
|
|
370
|
+
if (name === "fill" && !(() => {
|
|
371
|
+
const symbol = lowerer.checker.getSymbolAtLocation(access.name);
|
|
372
|
+
return symbol !== undefined && lowerer.checker.declarationsOf(symbol).some((declaration) => ts.isInterfaceDeclaration(declaration.parent) && declaration.parent.name.text === "Buffer");
|
|
373
|
+
})()) {
|
|
374
|
+
// Typed arrays use element coercion and relative, clamped indices.
|
|
375
|
+
// Buffer's same-named method keeps its pattern and offset validation.
|
|
376
|
+
if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
|
|
347
377
|
lowerer.noLowering(`.fill with ${nArgs} arguments on typed arrays`, call);
|
|
348
378
|
}
|
|
349
|
-
const receiver = lowerer.
|
|
350
|
-
const
|
|
351
|
-
const
|
|
379
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
380
|
+
const zero = { kind: "numLit", value: 0, type: F64, loc };
|
|
381
|
+
const v = call.arguments[0] ? lowerOptionalArgument(lowerer, call.arguments[0], F64, zero) : zero;
|
|
382
|
+
const idx = call.arguments.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, { kind: "numLit", value: i === 0 ? 0 : Infinity, type: F64, loc }));
|
|
352
383
|
return { kind: "bytesIntrinsic", method: "fillElem", receiver, args: [v, ...idx], type: receiverIr, loc };
|
|
353
384
|
}
|
|
354
385
|
if (name === "set") {
|
|
355
386
|
if (nArgs < 1 || nArgs > 2) {
|
|
356
387
|
lowerer.noLowering(`.set with ${nArgs} arguments on typed arrays`, call);
|
|
357
388
|
}
|
|
358
|
-
const receiver = lowerer.
|
|
389
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
359
390
|
const src = lowerer.lowerExpr(call.arguments[0]);
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
}
|
|
363
|
-
const args = [src];
|
|
391
|
+
const method = src.type.kind === "bytes" ? "setFrom" : "setFromDyn";
|
|
392
|
+
const args = [src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN)];
|
|
364
393
|
if (nArgs === 2)
|
|
365
|
-
args.push(lowerer
|
|
366
|
-
return { kind: "bytesIntrinsic", method
|
|
394
|
+
args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, { kind: "numLit", value: 0, type: F64, loc }));
|
|
395
|
+
return { kind: "bytesIntrinsic", method, receiver, args, type: VOID, loc };
|
|
367
396
|
}
|
|
368
397
|
if (name === "toString") {
|
|
369
398
|
// Buffer's toString(encoding?) — utf8 by default. A 0-arg toString
|
|
@@ -378,7 +407,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
378
407
|
}
|
|
379
408
|
if (nArgs > 3)
|
|
380
409
|
lowerer.noLowering(`.toString with ${nArgs} arguments on Buffers`, call);
|
|
381
|
-
const receiver = lowerer.
|
|
410
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
382
411
|
const encNode = call.arguments[0];
|
|
383
412
|
let method = "toString";
|
|
384
413
|
let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
|
|
@@ -447,7 +476,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
447
476
|
if (nArgs < required || nArgs > required + 1) {
|
|
448
477
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
449
478
|
}
|
|
450
|
-
const receiver = lowerer.
|
|
479
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
451
480
|
const offsetNode = call.arguments[required];
|
|
452
481
|
const offset = offsetNode
|
|
453
482
|
? lowerer.lowerExprExpecting(offsetNode, F64)
|
|
@@ -474,7 +503,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
474
503
|
if (nArgs < required || nArgs > required + 1) {
|
|
475
504
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
476
505
|
}
|
|
477
|
-
const receiver = lowerer.
|
|
506
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
478
507
|
const kind = { kind: "strLit", value: numKind, type: STRING, loc };
|
|
479
508
|
const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
|
|
480
509
|
if (nArgs === required) {
|
|
@@ -492,7 +521,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
492
521
|
if (nArgs !== required) {
|
|
493
522
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
494
523
|
}
|
|
495
|
-
const receiver = lowerer.
|
|
524
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
496
525
|
const kind = { kind: "strLit", value: varKind, type: STRING, loc };
|
|
497
526
|
const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
|
|
498
527
|
return { kind: "bytesIntrinsic", method: write ? "writeNumVar" : "readNumVar", receiver, args, type: F64, loc };
|
|
@@ -506,7 +535,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
506
535
|
if (dvBigGetter !== undefined && receiverIr.elem === "u8") {
|
|
507
536
|
if (nArgs < 1 || nArgs > 2)
|
|
508
537
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
509
|
-
const receiver = lowerer.
|
|
538
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
510
539
|
const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
511
540
|
const sign = { kind: "boolLit", value: dvBigGetter.sign, type: BOOL, loc };
|
|
512
541
|
const le = call.arguments[1]
|
|
@@ -520,7 +549,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
520
549
|
if (nArgs < 1 || nArgs > maxArgs) {
|
|
521
550
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
522
551
|
}
|
|
523
|
-
const receiver = lowerer.
|
|
552
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
524
553
|
const args = [lowerer.lowerExprExpecting(call.arguments[0], F64)];
|
|
525
554
|
if (nArgs === 2)
|
|
526
555
|
args.push(lowerer.lowerExprExpecting(call.arguments[1], BOOL));
|
|
@@ -536,7 +565,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
536
565
|
if ((name === "setBigUint64" || name === "setBigInt64") && receiverIr.elem === "u8") {
|
|
537
566
|
if (nArgs < 2 || nArgs > 3)
|
|
538
567
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
539
|
-
const receiver = lowerer.
|
|
568
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
540
569
|
const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
|
|
541
570
|
const value = lowerer.lowerExprExpecting(call.arguments[1], BIGINT_T);
|
|
542
571
|
const le = call.arguments[2]
|
|
@@ -549,7 +578,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
549
578
|
if (nArgs < 2 || nArgs > maxArgs) {
|
|
550
579
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
551
580
|
}
|
|
552
|
-
const receiver = lowerer.
|
|
581
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
553
582
|
const args = [
|
|
554
583
|
lowerer.lowerExprExpecting(call.arguments[0], F64),
|
|
555
584
|
lowerer.lowerExprExpecting(call.arguments[1], F64),
|
|
@@ -593,31 +622,6 @@ export function bufEncoding(lowerer, what, encNode) {
|
|
|
593
622
|
}
|
|
594
623
|
return v;
|
|
595
624
|
}
|
|
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
625
|
const BUF_BIGINT_METHODS = {
|
|
622
626
|
readBigInt64BE: { sign: true, le: false },
|
|
623
627
|
readBigInt64LE: { sign: true, le: true },
|
|
@@ -691,12 +695,12 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
691
695
|
lowerer.noLowering(`.equals with ${nArgs} arguments`, call);
|
|
692
696
|
if (argIrKind(0)?.kind === "bytes") {
|
|
693
697
|
const other = u8Arg(0);
|
|
694
|
-
const receiver = lowerer.
|
|
698
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
695
699
|
return { kind: "bytesIntrinsic", method: "equals", receiver, args: [other], type: BOOL, loc };
|
|
696
700
|
}
|
|
697
701
|
// Not statically bytes (the invalid-input probes, untyped JS
|
|
698
702
|
// helpers): Node's "otherBuffer" argument ladder runs at runtime.
|
|
699
|
-
const receiver = lowerer.
|
|
703
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
700
704
|
return { kind: "libCall", fn: "bytes.equalsChk", args: [receiver, chkArg(0)], type: BOOL, loc };
|
|
701
705
|
}
|
|
702
706
|
if (name === "compare") {
|
|
@@ -708,14 +712,14 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
708
712
|
if (fast) {
|
|
709
713
|
const target = u8Arg(0);
|
|
710
714
|
const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
711
|
-
const receiver = lowerer.
|
|
715
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
712
716
|
return { kind: "bytesIntrinsic", method: "compareBuf", receiver, args: [target, ...idx], type: F64, loc };
|
|
713
717
|
}
|
|
714
718
|
// An absent/ill-typed target or offset (`a.compare()`, string
|
|
715
719
|
// offsets, explicit undefined): Node's target/targetStart/targetEnd/
|
|
716
720
|
// sourceStart/sourceEnd ladder runs at runtime; absent slots pass
|
|
717
721
|
// the undefined dyn (Node defaults apply there).
|
|
718
|
-
const receiver = lowerer.
|
|
722
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
719
723
|
const slots = [];
|
|
720
724
|
for (let i = 0; i < 5; i++)
|
|
721
725
|
slots.push(i < nArgs ? chkArg(i) : dynUndefinedExpr(loc));
|
|
@@ -740,7 +744,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
740
744
|
}
|
|
741
745
|
const resultT = name === "includes" ? BOOL : F64;
|
|
742
746
|
const vT = lowerer.mapTypeOf(lowerer.typeOf(args[0]));
|
|
743
|
-
const receiver = lowerer.
|
|
747
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
744
748
|
if (vT?.kind === "f64") {
|
|
745
749
|
// A number needle wraps & 0xFF at runtime (Buffer semantics; the
|
|
746
750
|
// encoding is irrelevant, like Node).
|
|
@@ -785,7 +789,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
785
789
|
if (receiverT?.kind !== "bytes")
|
|
786
790
|
lowerer.badType(access.expression, lowerer.typeOf(access.expression));
|
|
787
791
|
const vT = lowerer.mapTypeOf(lowerer.typeOf(args[0]));
|
|
788
|
-
const receiver = lowerer.
|
|
792
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
789
793
|
if (vT?.kind === "string") {
|
|
790
794
|
const encName = encNode ? bufEncoding(lowerer, ".fill", encNode) : "utf8";
|
|
791
795
|
const s = lowerer.lowerExprExpecting(args[0], STRING);
|
|
@@ -806,13 +810,13 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
806
810
|
lowerer.noLowering(`.copy with ${nArgs} arguments`, call);
|
|
807
811
|
const target = u8Arg(0);
|
|
808
812
|
const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
809
|
-
const receiver = lowerer.
|
|
813
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
810
814
|
return { kind: "bytesIntrinsic", method: "copy", receiver, args: [target, ...idx], type: F64, loc };
|
|
811
815
|
}
|
|
812
816
|
if (name === "swap16" || name === "swap32" || name === "swap64") {
|
|
813
817
|
if (nArgs !== 0)
|
|
814
818
|
lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
|
|
815
|
-
const receiver = lowerer.
|
|
819
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
816
820
|
return { kind: "bytesIntrinsic", method: name, receiver, args: [], type: BYTES_U8, loc };
|
|
817
821
|
}
|
|
818
822
|
if (name === "write") {
|
|
@@ -835,7 +839,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
835
839
|
? lowerer.lowerExprExpecting(idxNodes[0], F64)
|
|
836
840
|
: { kind: "numLit", value: 0, type: F64, loc };
|
|
837
841
|
const writeArgs = [s, enc, offset, ...(idxNodes[1] ? [lowerer.lowerExprExpecting(idxNodes[1], F64)] : [])];
|
|
838
|
-
const receiver = lowerer.
|
|
842
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
839
843
|
return { kind: "bytesIntrinsic", method: "writeStr", receiver, args: writeArgs, type: F64, loc };
|
|
840
844
|
}
|
|
841
845
|
return null;
|
|
@@ -902,6 +906,14 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
|
|
|
902
906
|
return type?.kind === "cryptoHash" || type?.kind === "cryptoHmac";
|
|
903
907
|
}
|
|
904
908
|
export function lowerBufferStaticCall(lowerer, call, access) {
|
|
909
|
+
const value = lowerBufferStaticValue(lowerer, call, access);
|
|
910
|
+
// Every byte-valued Buffer factory creates a distinct view. Preserve its
|
|
911
|
+
// brand even when stored as Uint8Array or passed through checked values.
|
|
912
|
+
return value?.type.kind === "bytes"
|
|
913
|
+
? { kind: "libCall", fn: "buffer.brand", args: [value], type: value.type, loc: value.loc }
|
|
914
|
+
: value;
|
|
915
|
+
}
|
|
916
|
+
function lowerBufferStaticValue(lowerer, call, access) {
|
|
905
917
|
if (call.questionDotToken || access.questionDotToken)
|
|
906
918
|
return null;
|
|
907
919
|
if (!lowerer.isStdlibGlobal(access.expression, "Buffer"))
|
|
@@ -910,6 +922,10 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
910
922
|
const loc = locOf(call);
|
|
911
923
|
const args = call.arguments;
|
|
912
924
|
if (member === "from") {
|
|
925
|
+
if (args.length >= 1 && args.length <= 3 && !args.some(ts.isSpreadElement) &&
|
|
926
|
+
((symbol) => symbol != null && symbol.name === "ArrayBuffer")(lowerer.typeOf(args[0]).getSymbol())) {
|
|
927
|
+
return lowerArrayBufferView(lowerer, args, "u8", loc);
|
|
928
|
+
}
|
|
913
929
|
// Buffer.from(x.buffer[, byteOffset[, length]]): a u8 VIEW sharing
|
|
914
930
|
// x's storage (Node shares the ArrayBuffer; length is in BYTES).
|
|
915
931
|
// The first argument must be the SYNTACTIC `.buffer` of a typed
|
|
@@ -926,7 +942,7 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
926
942
|
return { kind: "bytesIntrinsic", method: "dataViewNew", receiver, args: idxArgs, type: BYTES_U8, loc };
|
|
927
943
|
}
|
|
928
944
|
}
|
|
929
|
-
if (args.length >= 1 && args.length <= 2 && !ts.isSpreadElement
|
|
945
|
+
if (args.length >= 1 && args.length <= 2 && !args.some(ts.isSpreadElement)) {
|
|
930
946
|
const argNode = args[0];
|
|
931
947
|
if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
|
|
932
948
|
// A number[] literal (contextually typed by the lib's readonly
|
|
@@ -939,24 +955,32 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
939
955
|
}
|
|
940
956
|
else {
|
|
941
957
|
const srcIr = lowerer.mapTypeOf(lowerer.typeOf(argNode));
|
|
958
|
+
const value = lowerer.lowerExpr(argNode);
|
|
959
|
+
// JS callback storage can be native DYN even when the checker
|
|
960
|
+
// reports any (or a narrowed Buffer). Dispatch on its actual ABI.
|
|
961
|
+
if (value.type.kind === "dyn") {
|
|
962
|
+
const encName = args[1] ? bufEncoding(lowerer, "Buffer.from", args[1]) : "utf8";
|
|
963
|
+
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
964
|
+
return { kind: "libCall", fn: "buffer.fromDyn", args: [value, enc], type: BYTES_U8, loc };
|
|
965
|
+
}
|
|
942
966
|
if (srcIr?.kind === "string") {
|
|
943
967
|
const encNode = args[1];
|
|
944
968
|
const encName = encNode ? bufEncoding(lowerer, "Buffer.from", encNode) : "utf8";
|
|
945
|
-
const s = lowerer.
|
|
969
|
+
const s = lowerer.coerceInto(argNode, value, STRING);
|
|
946
970
|
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
947
971
|
return { kind: "libCall", fn: "buffer.fromStr", args: [s, enc], type: BYTES_U8, loc };
|
|
948
972
|
}
|
|
949
973
|
if (args.length === 1 && srcIr?.kind === "bytes" && srcIr.elem === "u8") {
|
|
950
|
-
return { kind: "bytesNew", source:
|
|
974
|
+
return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
|
|
951
975
|
}
|
|
952
976
|
if (args.length === 1 && srcIr?.kind === "array" && srcIr.elem.kind === "f64") {
|
|
953
|
-
return { kind: "bytesNew", source:
|
|
977
|
+
return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
|
|
954
978
|
}
|
|
955
979
|
}
|
|
956
980
|
}
|
|
957
981
|
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
|
-
"
|
|
982
|
+
"Buffer.from(number[]), or Buffer.from(arrayBuffer, byteOffset?, length?) — a view sharing " +
|
|
983
|
+
"the buffer's storage; narrow unions first");
|
|
960
984
|
}
|
|
961
985
|
if (member === "alloc" || member === "allocUnsafe") {
|
|
962
986
|
const maxArgs = member === "alloc" ? 3 : 1;
|
|
@@ -1062,6 +1086,23 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
1062
1086
|
loc,
|
|
1063
1087
|
};
|
|
1064
1088
|
}
|
|
1089
|
+
// Untyped stream chunks retain the native checked value's Buffer
|
|
1090
|
+
// flavor. Plain bytes are Uint8Arrays at this boundary; inspecting
|
|
1091
|
+
// only the bytes tag would incorrectly identify them as Buffers.
|
|
1092
|
+
if (v.type.kind === "dyn") {
|
|
1093
|
+
return { kind: "dynTest", test: "buffer", value: v, type: BOOL, loc };
|
|
1094
|
+
}
|
|
1095
|
+
// Primitive storage cannot carry a Buffer. Keep argument effects
|
|
1096
|
+
// even when its representation makes the answer constant.
|
|
1097
|
+
if (v.type.kind === "string" || v.type.kind === "f64" || v.type.kind === "bool" ||
|
|
1098
|
+
v.type.kind === "symbol" || v.type.kind === "bigint" || v.type.kind === "nullT" || v.type.kind === "undefinedT") {
|
|
1099
|
+
if (isSafeToDiscard(v))
|
|
1100
|
+
return { kind: "boolLit", value: false, type: BOOL, loc };
|
|
1101
|
+
return {
|
|
1102
|
+
kind: "seqExpr", stmts: [{ kind: "exprStmt", expr: v, loc: v.loc }],
|
|
1103
|
+
result: { kind: "boolLit", value: false, type: BOOL, loc }, type: BOOL, loc,
|
|
1104
|
+
};
|
|
1105
|
+
}
|
|
1065
1106
|
if (v.type.kind === "union") {
|
|
1066
1107
|
const def = lowerer.unions.get(v.type.unionId);
|
|
1067
1108
|
const tag = def ? def.arms.findIndex((a) => a.kind === "bytes" && a.elem === "u8") : -1;
|
|
@@ -1085,6 +1126,10 @@ export function lowerBufferStaticCall(lowerer, call, access) {
|
|
|
1085
1126
|
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
1086
1127
|
return { kind: "libCall", fn: "buffer.byteLenStr", args: [s, enc], type: F64, loc };
|
|
1087
1128
|
}
|
|
1129
|
+
if ((srcIr === null || srcIr.kind === "dyn") && (!args[1] || ts.isStringLiteralLike(args[1]))) {
|
|
1130
|
+
const encoding = { kind: "strLit", value: args[1] ? bufEncoding(lowerer, "Buffer.byteLength", args[1]) : "utf8", type: STRING, loc };
|
|
1131
|
+
return { kind: "libCall", fn: "buffer.byteLenDyn", args: [lowerer.lowerExprExpecting(args[0], DYN), encoding], type: F64, loc };
|
|
1132
|
+
}
|
|
1088
1133
|
if (srcIr?.kind === "bytes" && args.length === 1) {
|
|
1089
1134
|
const receiver = lowerer.lowerExpr(args[0]);
|
|
1090
1135
|
return { kind: "bytesIntrinsic", method: "byteLength", receiver, args: [], type: F64, loc };
|