@scriptc/compiler 0.2.3 → 0.2.5
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 +915 -215
- package/ambient/scriptc-overrides.d.ts +5 -1
- package/ambient/scriptc.d.ts +22 -2
- package/dist/backend/build-cache.d.ts +4 -0
- package/dist/backend/build-cache.js +16 -2
- package/dist/backend/build-cache.js.map +1 -1
- package/dist/backend/cycle-analysis.js +17 -5
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +50 -11
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/debug-symbols.js.map +1 -1
- package/dist/backend/executable-features.js +2 -1
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/external-c.d.ts +13 -6
- package/dist/backend/external-c.js +15 -3
- package/dist/backend/external-c.js.map +1 -1
- package/dist/backend/ffi-callbacks.js +6 -9
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/library-identity-markers.js.map +1 -1
- package/dist/backend/library-pack.d.ts +1 -1
- package/dist/backend/library-pack.js +81 -24
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.js +9 -2
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -1
- package/dist/backend/link-plan.js +4 -5
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/linker.d.ts +1 -1
- package/dist/backend/linker.js +42 -23
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/literals.js +5 -4
- package/dist/backend/literals.js.map +1 -1
- package/dist/backend/literals.test.js +30 -5
- package/dist/backend/literals.test.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +5 -2
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/borrowed-inputs.d.ts +15 -0
- package/dist/backend/llvm/borrowed-inputs.js +28 -0
- package/dist/backend/llvm/borrowed-inputs.js.map +1 -0
- package/dist/backend/llvm/borrowed-receivers.js +43 -19
- package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.d.ts +10 -0
- package/dist/backend/llvm/byte-numbers.js +240 -0
- package/dist/backend/llvm/byte-numbers.js.map +1 -0
- package/dist/backend/llvm/bytes-bounds.d.ts +9 -0
- package/dist/backend/llvm/bytes-bounds.js +240 -0
- package/dist/backend/llvm/bytes-bounds.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +10 -0
- package/dist/backend/llvm/call-lifetimes.js +83 -20
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +203 -18
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.d.ts +13 -0
- package/dist/backend/llvm/checked-value-lifetimes.js +45 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -0
- package/dist/backend/llvm/classes.js +16 -12
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.js +4 -1
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +6 -0
- package/dist/backend/llvm/counted-loops.js +35 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -0
- package/dist/backend/llvm/debug-info.js +33 -13
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/debug-info.test.js +28 -6
- package/dist/backend/llvm/debug-info.test.js.map +1 -1
- package/dist/backend/llvm/dyn.js +68 -22
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +34 -12
- package/dist/backend/llvm/emitter.js +357 -124
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +237 -46
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +28 -8
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +4 -4
- package/dist/backend/llvm/expr-bytes.js +78 -36
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +10 -4
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +40 -21
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +4 -1
- package/dist/backend/llvm/expr-containers.js +157 -76
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +11 -0
- package/dist/backend/llvm/expr-control.js +27 -8
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +3 -1
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +50 -33
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.js +26 -6
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +139 -37
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +43 -1
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +16 -9
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +44 -26
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +51 -14
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +34 -14
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +10 -0
- package/dist/backend/llvm/integer-values.js +52 -0
- package/dist/backend/llvm/integer-values.js.map +1 -0
- package/dist/backend/llvm/integer-views.d.ts +7 -0
- package/dist/backend/llvm/integer-views.js +83 -0
- package/dist/backend/llvm/integer-views.js.map +1 -0
- package/dist/backend/llvm/integer-views.test.d.ts +1 -0
- package/dist/backend/llvm/integer-views.test.js +69 -0
- package/dist/backend/llvm/integer-views.test.js.map +1 -0
- package/dist/backend/llvm/lib-abi.js +13 -4
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +7 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +35 -10
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +36 -15
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +38 -23
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +60 -15
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +12 -5
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +97 -31
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +57 -14
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +107 -31
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +33 -14
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +21 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +69 -20
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.d.ts +3 -4
- package/dist/backend/llvm/local-array-reads.js +100 -121
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +379 -71
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +25 -0
- package/dist/backend/llvm/local-union-storage.js +109 -0
- package/dist/backend/llvm/local-union-storage.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.test.d.ts +1 -0
- package/dist/backend/llvm/local-union-storage.test.js +210 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -2
- package/dist/backend/llvm/map-read-lifetimes.js +46 -16
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +93 -17
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/reference-effects.d.ts +23 -0
- package/dist/backend/llvm/reference-effects.js +179 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -0
- package/dist/backend/llvm/reference-effects.test.d.ts +1 -0
- package/dist/backend/llvm/reference-effects.test.js +157 -0
- package/dist/backend/llvm/reference-effects.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +7 -4
- package/dist/backend/llvm/shapes.js +82 -22
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +3 -1
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/split.js +4 -4
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +14 -6
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.js +14 -5
- package/dist/backend/llvm/stack-unions.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +172 -32
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-construction.d.ts +10 -0
- package/dist/backend/llvm/string-construction.js +38 -0
- package/dist/backend/llvm/string-construction.js.map +1 -0
- package/dist/backend/llvm/string-construction.test.d.ts +1 -0
- package/dist/backend/llvm/string-construction.test.js +90 -0
- package/dist/backend/llvm/string-construction.test.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.d.ts +2 -2
- package/dist/backend/llvm/string-lifetimes.js +19 -11
- package/dist/backend/llvm/string-lifetimes.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +127 -32
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.d.ts +9 -0
- package/dist/backend/llvm/switch-dispatch.js +114 -0
- package/dist/backend/llvm/switch-dispatch.js.map +1 -0
- package/dist/backend/llvm/switch-dispatch.test.d.ts +1 -0
- package/dist/backend/llvm/switch-dispatch.test.js +83 -0
- package/dist/backend/llvm/switch-dispatch.test.js.map +1 -0
- package/dist/backend/llvm/unsupported.js.map +1 -1
- package/dist/backend/llvm/walkers.js +6 -3
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/mangle.js +9 -3
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.js +18 -8
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +118 -22
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/artifact-stamps.d.ts +39 -0
- package/dist/backend/native/artifact-stamps.js +371 -0
- package/dist/backend/native/artifact-stamps.js.map +1 -0
- package/dist/backend/native/cache-warm.d.ts +24 -0
- package/dist/backend/native/cache-warm.js +80 -0
- package/dist/backend/native/cache-warm.js.map +1 -0
- package/dist/backend/native/compiler-fingerprint.d.ts +19 -0
- package/dist/backend/native/compiler-fingerprint.js +357 -0
- package/dist/backend/native/compiler-fingerprint.js.map +1 -0
- package/dist/backend/native/contracts.d.ts +314 -0
- package/dist/backend/native/contracts.js +2 -0
- package/dist/backend/native/contracts.js.map +1 -0
- package/dist/backend/native/dependency-files.d.ts +5 -0
- package/dist/backend/native/dependency-files.js +83 -0
- package/dist/backend/native/dependency-files.js.map +1 -0
- package/dist/backend/native/driver.d.ts +50 -0
- package/dist/backend/native/driver.js +294 -0
- package/dist/backend/native/driver.js.map +1 -0
- package/dist/backend/native/executable.d.ts +18 -0
- package/dist/backend/native/executable.js +1267 -0
- package/dist/backend/native/executable.js.map +1 -0
- package/dist/backend/native/library.d.ts +2 -0
- package/dist/backend/native/library.js +614 -0
- package/dist/backend/native/library.js.map +1 -0
- package/dist/backend/native/linker-fingerprint.d.ts +8 -0
- package/dist/backend/native/linker-fingerprint.js +174 -0
- package/dist/backend/native/linker-fingerprint.js.map +1 -0
- package/dist/backend/native/object-merge.d.ts +2 -0
- package/dist/backend/native/object-merge.js +154 -0
- package/dist/backend/native/object-merge.js.map +1 -0
- package/dist/backend/native/process.d.ts +17 -0
- package/dist/backend/native/process.js +42 -0
- package/dist/backend/native/process.js.map +1 -0
- package/dist/backend/native/program-shards.d.ts +21 -0
- package/dist/backend/native/program-shards.js +99 -0
- package/dist/backend/native/program-shards.js.map +1 -0
- package/dist/backend/native/runtime-inputs.d.ts +12 -0
- package/dist/backend/native/runtime-inputs.js +163 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -0
- package/dist/backend/native/runtime-inputs.test.d.ts +1 -0
- package/dist/backend/native/runtime-inputs.test.js +64 -0
- package/dist/backend/native/runtime-inputs.test.js.map +1 -0
- package/dist/backend/native/runtime-objects.d.ts +16 -0
- package/dist/backend/native/runtime-objects.js +122 -0
- package/dist/backend/native/runtime-objects.js.map +1 -0
- package/dist/backend/native/session.d.ts +12 -0
- package/dist/backend/native/session.js +31 -0
- package/dist/backend/native/session.js.map +1 -0
- package/dist/backend/native/tool-identity.d.ts +37 -0
- package/dist/backend/native/tool-identity.js +310 -0
- package/dist/backend/native/tool-identity.js.map +1 -0
- package/dist/backend/native/trace-paths.d.ts +12 -0
- package/dist/backend/native/trace-paths.js +73 -0
- package/dist/backend/native/trace-paths.js.map +1 -0
- package/dist/backend/native/vendor.d.ts +1 -0
- package/dist/backend/native/vendor.js +12 -0
- package/dist/backend/native/vendor.js.map +1 -0
- package/dist/backend/native-codegen-core.js +2 -1
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +1 -1
- package/dist/backend/native-codegen.js +24 -13
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +12 -9
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.js +9 -5
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-link-info.js +14 -5
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +58 -13
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +17 -450
- package/dist/backend/native-toolchain.js +17 -3971
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +103 -72
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/native-tools.js +27 -8
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/object-localize.js +17 -14
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +59 -12
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/runtime-pack-core.js +96 -49
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +5 -3
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +87 -15
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +1 -1
- package/dist/backend/runtime-pack.js +11 -12
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +40 -24
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/source-locations.js.map +1 -1
- package/dist/backend/source-locations.test.js +7 -2
- package/dist/backend/source-locations.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +44 -14
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +93 -20
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/backend/targets.js +230 -86
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +32 -18
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/backend/toolchain-environment.js +5 -1
- package/dist/backend/toolchain-environment.js.map +1 -1
- package/dist/backend/vendor-archives.d.ts +2 -2
- package/dist/backend/vendor-archives.js +84 -35
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.js +13 -1
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/warm-cache.d.ts +1 -1
- package/dist/backend/warm-cache.js +33 -9
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +39 -9
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/output-options.js +14 -4
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/paths.js.map +1 -1
- package/dist/cli/wasi-runner.js.map +1 -1
- package/dist/compat/fetch-profile.js +36 -35
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/coverage/report.js +16 -17
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +112 -26
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +55 -16
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -1
- package/dist/executable/executable-cache.js +78 -48
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +75 -26
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -2
- package/dist/executable/prepare.js.map +1 -1
- package/dist/ffi/ffi-manifest.js +78 -20
- package/dist/ffi/ffi-manifest.js.map +1 -1
- package/dist/ffi/ffi-manifest.test.js +96 -16
- package/dist/ffi/ffi-manifest.test.js.map +1 -1
- package/dist/format-integer.js.map +1 -1
- package/dist/frontend/analysis.js +12 -2
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/binding-source.js +9 -3
- package/dist/frontend/binding-source.js.map +1 -1
- package/dist/frontend/builtin-modules.js +46 -2
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-resolve.js +40 -17
- package/dist/frontend/cjs-resolve.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +31 -10
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/comptime-node.test.js +10 -11
- package/dist/frontend/comptime-node.test.js.map +1 -1
- package/dist/frontend/dts-paths.js +7 -3
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/fork-target.js +17 -12
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/function-completion.js +11 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +53 -6
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +18 -2
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +32 -12
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.test.js +11 -15
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/input-tracker.js +11 -11
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +4 -1
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lib-contract.js +38 -9
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/literal-values.js.map +1 -1
- package/dist/frontend/literal-values.test.js +28 -8
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/abstract-equality.js +53 -10
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.d.ts +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +108 -106
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +37 -14
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +50 -0
- package/dist/frontend/lowering/binding-analysis.js +376 -0
- package/dist/frontend/lowering/binding-analysis.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.d.ts +9 -0
- package/dist/frontend/lowering/builtin-calls.js +60 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.d.ts +43 -0
- package/dist/frontend/lowering/builtins/arguments.js +247 -0
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -0
- package/dist/frontend/lowering/builtins/async-context.d.ts +52 -0
- package/dist/frontend/lowering/builtins/async-context.js +436 -0
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -0
- package/dist/frontend/lowering/builtins/atomics.d.ts +15 -0
- package/dist/frontend/lowering/builtins/atomics.js +46 -0
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.d.ts +13 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +87 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +18 -0
- package/dist/frontend/lowering/builtins/child-process-async.js +245 -0
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +21 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js +362 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-sync.d.ts +4 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js +639 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process.d.ts +55 -0
- package/dist/frontend/lowering/builtins/child-process.js +669 -0
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +7 -0
- package/dist/frontend/lowering/builtins/compression.js +115 -0
- package/dist/frontend/lowering/builtins/compression.js.map +1 -0
- package/dist/frontend/lowering/builtins/console.d.ts +10 -0
- package/dist/frontend/lowering/builtins/console.js +38 -0
- package/dist/frontend/lowering/builtins/console.js.map +1 -0
- package/dist/frontend/lowering/builtins/constants.d.ts +24 -0
- package/dist/frontend/lowering/builtins/constants.js +141 -0
- package/dist/frontend/lowering/builtins/constants.js.map +1 -0
- package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
- package/dist/frontend/lowering/builtins/crypto.js +517 -0
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -0
- package/dist/frontend/lowering/builtins/dates.js +101 -0
- package/dist/frontend/lowering/builtins/dates.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.d.ts +34 -0
- package/dist/frontend/lowering/builtins/environment.js +95 -0
- package/dist/frontend/lowering/builtins/environment.js.map +1 -0
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -0
- package/dist/frontend/lowering/builtins/errors.js +83 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +32 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +678 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -0
- package/dist/frontend/lowering/builtins/filesystem.d.ts +108 -0
- package/dist/frontend/lowering/builtins/filesystem.js +1061 -0
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -0
- package/dist/frontend/lowering/builtins/ipc.d.ts +8 -0
- package/dist/frontend/lowering/builtins/ipc.js +76 -0
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -0
- package/dist/frontend/lowering/builtins/json.d.ts +12 -0
- package/dist/frontend/lowering/builtins/json.js +387 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +85 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +346 -0
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-calls.js +303 -0
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +38 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +344 -0
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.d.ts +15 -0
- package/dist/frontend/lowering/builtins/numbers.js +124 -0
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -0
- package/dist/frontend/lowering/builtins/operating-system.d.ts +13 -0
- package/dist/frontend/lowering/builtins/operating-system.js +148 -0
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -0
- package/dist/frontend/lowering/builtins/performance.d.ts +13 -0
- package/dist/frontend/lowering/builtins/performance.js +100 -0
- package/dist/frontend/lowering/builtins/performance.js.map +1 -0
- package/dist/frontend/lowering/builtins/process.d.ts +50 -0
- package/dist/frontend/lowering/builtins/process.js +1138 -0
- package/dist/frontend/lowering/builtins/process.js.map +1 -0
- package/dist/frontend/lowering/builtins/promises.d.ts +14 -0
- package/dist/frontend/lowering/builtins/promises.js +356 -0
- package/dist/frontend/lowering/builtins/promises.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.d.ts +11 -0
- package/dist/frontend/lowering/builtins/properties.js +186 -0
- package/dist/frontend/lowering/builtins/properties.js.map +1 -0
- package/dist/frontend/lowering/builtins/querystring.d.ts +19 -0
- package/dist/frontend/lowering/builtins/querystring.js +150 -0
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -0
- package/dist/frontend/lowering/builtins/readline.d.ts +13 -0
- package/dist/frontend/lowering/builtins/readline.js +138 -0
- package/dist/frontend/lowering/builtins/readline.js.map +1 -0
- package/dist/frontend/lowering/builtins/receiver-types.d.ts +5 -0
- package/dist/frontend/lowering/builtins/receiver-types.js +15 -0
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -0
- package/dist/frontend/lowering/builtins/reflection.d.ts +13 -0
- package/dist/frontend/lowering/builtins/reflection.js +95 -0
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.d.ts +14 -0
- package/dist/frontend/lowering/builtins/strings.js +121 -0
- package/dist/frontend/lowering/builtins/strings.js.map +1 -0
- package/dist/frontend/lowering/builtins/text-codecs.d.ts +29 -0
- package/dist/frontend/lowering/builtins/text-codecs.js +590 -0
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -0
- package/dist/frontend/lowering/builtins/timers.d.ts +22 -0
- package/dist/frontend/lowering/builtins/timers.js +180 -0
- package/dist/frontend/lowering/builtins/timers.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.d.ts +37 -0
- package/dist/frontend/lowering/builtins/url.js +596 -0
- package/dist/frontend/lowering/builtins/url.js.map +1 -0
- package/dist/frontend/lowering/builtins/util-types.d.ts +7 -0
- package/dist/frontend/lowering/builtins/util-types.js +31 -0
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -0
- package/dist/frontend/lowering/call-arguments.d.ts +72 -0
- package/dist/frontend/lowering/call-arguments.js +618 -0
- package/dist/frontend/lowering/call-arguments.js.map +1 -0
- package/dist/frontend/lowering/call-signatures.d.ts +115 -0
- package/dist/frontend/lowering/call-signatures.js +719 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -0
- package/dist/frontend/lowering/callback-arg.js.map +1 -1
- package/dist/frontend/lowering/checked-iterable-spread.js +53 -10
- package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.js +41 -9
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
- package/dist/frontend/lowering/class-callbacks.js +130 -27
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +1 -1
- package/dist/frontend/lowering/class-construction.js +247 -50
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +109 -29
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +2471 -465
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +284 -44
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +17 -5
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +199 -51
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +345 -86
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +80 -17
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +76 -16
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/coercions/builders.d.ts +13 -0
- package/dist/frontend/lowering/coercions/builders.js +77 -0
- package/dist/frontend/lowering/coercions/builders.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +58 -0
- package/dist/frontend/lowering/coercions/function-adapters.js +430 -0
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -0
- package/dist/frontend/lowering/coercions/island.d.ts +37 -0
- package/dist/frontend/lowering/coercions/island.js +350 -0
- package/dist/frontend/lowering/coercions/island.js.map +1 -0
- package/dist/frontend/lowering/coercions/state.d.ts +14 -0
- package/dist/frontend/lowering/coercions/state.js +16 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural-plans.d.ts +40 -0
- package/dist/frontend/lowering/coercions/structural-plans.js +447 -0
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural.d.ts +63 -0
- package/dist/frontend/lowering/coercions/structural.js +616 -0
- package/dist/frontend/lowering/coercions/structural.js.map +1 -0
- package/dist/frontend/lowering/coercions/unions.d.ts +65 -0
- package/dist/frontend/lowering/coercions/unions.js +318 -0
- package/dist/frontend/lowering/coercions/unions.js.map +1 -0
- package/dist/frontend/lowering/collection-ingestion.js +359 -67
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +92 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +1646 -0
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -0
- package/dist/frontend/lowering/containers/array-construction.d.ts +42 -0
- package/dist/frontend/lowering/containers/array-construction.js +1044 -0
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -0
- package/dist/frontend/lowering/containers/array-iteration.d.ts +16 -0
- package/dist/frontend/lowering/containers/array-iteration.js +95 -0
- package/dist/frontend/lowering/containers/array-iteration.js.map +1 -0
- package/dist/frontend/lowering/containers/array-methods.d.ts +27 -0
- package/dist/frontend/lowering/containers/array-methods.js +1854 -0
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.d.ts +17 -17
- package/dist/frontend/lowering/containers/bytes.js +419 -105
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +26 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +179 -0
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -0
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +19 -0
- package/dist/frontend/lowering/containers/collection-grouping.js +297 -0
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -0
- package/dist/frontend/lowering/containers/collection-methods.d.ts +57 -0
- package/dist/frontend/lowering/containers/collection-methods.js +1314 -0
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -0
- package/dist/frontend/lowering/containers/dynamic-receivers.d.ts +18 -0
- package/dist/frontend/lowering/containers/dynamic-receivers.js +114 -0
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -0
- package/dist/frontend/lowering/containers/for-of.d.ts +60 -0
- package/dist/frontend/lowering/containers/for-of.js +643 -0
- package/dist/frontend/lowering/containers/for-of.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +132 -0
- package/dist/frontend/lowering/containers/indexed-objects.js +1743 -0
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -0
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +20 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js +809 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +585 -157
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +213 -63
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.js +263 -64
- package/dist/frontend/lowering/crypto-tables.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +172 -68
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +41 -8
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/error-methods.js +339 -65
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/evaluation-safety.js +3 -2
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/global-symbols.js +2 -1
- package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -1
- package/dist/frontend/lowering/expressions/native-proxy.js +11 -5
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +67 -13
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +589 -162
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +68 -17
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-field-write.js +45 -18
- package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
- package/dist/frontend/lowering/function-context.js +5 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.d.ts +67 -0
- package/dist/frontend/lowering/function-returns.js +392 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +1 -1
- package/dist/frontend/lowering/generator-delegation.js +171 -39
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +176 -36
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +274 -0
- package/dist/frontend/lowering/generic-functions.js +1727 -0
- package/dist/frontend/lowering/generic-functions.js.map +1 -0
- package/dist/frontend/lowering/import-meta.d.ts +1 -1
- package/dist/frontend/lowering/import-meta.js +37 -14
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/indexed-comparison.js +6 -2
- package/dist/frontend/lowering/indexed-comparison.js.map +1 -1
- package/dist/frontend/lowering/iterator-consumption.d.ts +9 -0
- package/dist/frontend/lowering/iterator-consumption.js +91 -0
- package/dist/frontend/lowering/iterator-consumption.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.js +40 -17
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.test.js +49 -11
- package/dist/frontend/lowering/lib-boundary.test.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +0 -19
- package/dist/frontend/lowering/lower-array-sort.js +331 -566
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +248 -43
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +71 -16
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +420 -71
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +39 -558
- package/dist/frontend/lowering/lower-calls.js +2593 -5667
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +243 -242
- package/dist/frontend/lowering/lower-classes.js +1704 -727
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +35 -35
- package/dist/frontend/lowering/lower-comptime.js +39 -37
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +59 -31
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +5 -2
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.js +322 -85
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +19 -7
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +194 -194
- package/dist/frontend/lowering/lower-exprs.js +3455 -1153
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +23 -0
- package/dist/frontend/lowering/lower-functions.js +449 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -0
- package/dist/frontend/lowering/lower-generators.js +121 -32
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +15 -4
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +479 -89
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +79 -79
- package/dist/frontend/lowering/lower-island.js +365 -273
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-island.test.js +7 -2
- package/dist/frontend/lowering/lower-island.test.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +17 -8
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +94 -94
- package/dist/frontend/lowering/lower-modules.js +612 -321
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +91 -20
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +25 -8
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.js +115 -34
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +1210 -290
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +148 -148
- package/dist/frontend/lowering/lower-stmts.js +2312 -984
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +13 -5
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +362 -90
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-system-errors.js +30 -8
- package/dist/frontend/lowering/lower-system-errors.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +40 -13
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.d.ts +31 -0
- package/dist/frontend/lowering/lower-timers.js +336 -0
- package/dist/frontend/lowering/lower-timers.js.map +1 -0
- package/dist/frontend/lowering/lower-url.d.ts +1 -1
- package/dist/frontend/lowering/lower-url.js +46 -13
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +21 -351
- package/dist/frontend/lowering/lowerer.js +1031 -2704
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +85 -17
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js +43 -8
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.d.ts +21 -1
- package/dist/frontend/lowering/native-ffi.js +487 -18
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js +55 -10
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.d.ts +1 -1
- package/dist/frontend/lowering/object-factory-new.js +36 -11
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/optional-arguments.js +49 -20
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +66 -14
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-locals.js +3 -1
- package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.js +4 -1
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +86 -18
- package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -1
- package/dist/frontend/lowering/static-this.js +13 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/string-index.js +32 -10
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +42 -42
- package/dist/frontend/lowering/surfaces.js +1094 -249
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.js +40 -15
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.js +236 -24
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.test.js +84 -12
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.js +59 -16
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.test.js +24 -7
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
- package/dist/frontend/lowering/union-retag.js +155 -40
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +131 -33
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unregistered-class-types.js.map +1 -1
- package/dist/frontend/lowering/unregistered-class-types.test.js +34 -8
- package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +21 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/module-syntax.test.js +37 -13
- package/dist/frontend/module-syntax.test.js.map +1 -1
- package/dist/frontend/npm-fetch-analysis.js +13 -4
- package/dist/frontend/npm-fetch-analysis.js.map +1 -1
- package/dist/frontend/npm-fetch-analysis.test.js +33 -10
- package/dist/frontend/npm-fetch-analysis.test.js.map +1 -1
- package/dist/frontend/npm-fetch-node.js.map +1 -1
- package/dist/frontend/npm-fetch-syntax.js +4 -9
- package/dist/frontend/npm-fetch-syntax.js.map +1 -1
- package/dist/frontend/npm-node.js +3 -1
- package/dist/frontend/npm-node.js.map +1 -1
- package/dist/frontend/npm-static-bundled-cjs.js +88 -29
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-cjs.test.js +29 -10
- package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -1
- package/dist/frontend/npm-static-declaration-syntax.js +148 -56
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-declarations.d.ts +1 -1
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +33 -7
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +26 -12
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +17 -3
- package/dist/frontend/npm-static-prune.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.js +2 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +64 -21
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +9 -4
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.test.js +30 -6
- package/dist/frontend/npm-static-subtyping.test.js.map +1 -1
- package/dist/frontend/npm-static.js +15 -4
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.js +122 -36
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +30 -10
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.js +25 -8
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +21 -7
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-node.js +5 -3
- package/dist/frontend/program-node.js.map +1 -1
- package/dist/frontend/program.d.ts +2 -2
- package/dist/frontend/program.js +234 -101
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +27 -27
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/provenance-core.js +8 -4
- package/dist/frontend/provenance-core.js.map +1 -1
- package/dist/frontend/provenance-registry.js +1 -4
- package/dist/frontend/provenance-registry.js.map +1 -1
- package/dist/frontend/resolve.js +32 -20
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +1 -1
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/runtime-resolve.js +13 -4
- package/dist/frontend/runtime-resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.test.js +25 -9
- package/dist/frontend/runtime-resolve.test.js.map +1 -1
- package/dist/frontend/services-node.js +6 -2
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services-node.test.js +18 -6
- package/dist/frontend/services-node.test.js.map +1 -1
- package/dist/frontend/services.js +8 -4
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +6 -2
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/ts7/api.js +12 -4
- package/dist/frontend/ts7/api.js.map +1 -1
- package/dist/frontend/ts7/ast-bytes.js +10 -3
- package/dist/frontend/ts7/ast-bytes.js.map +1 -1
- package/dist/frontend/ts7/ast-bytes.test.js +23 -4
- package/dist/frontend/ts7/ast-bytes.test.js.map +1 -1
- package/dist/frontend/ts7/ast-guards.test.js +14 -5
- package/dist/frontend/ts7/ast-guards.test.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +6 -1
- package/dist/frontend/ts7/ast-node.js +484 -164
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +109 -36
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-text.js +13 -3
- package/dist/frontend/ts7/ast-text.js.map +1 -1
- package/dist/frontend/ts7/ast-text.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +1 -1
- package/dist/frontend/ts7/ast-wire.js +55 -20
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.test.js +53 -8
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
- package/dist/frontend/ts7/ast.js +47 -28
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/census-check.js +1 -1
- package/dist/frontend/ts7/census-check.js.map +1 -1
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.js +5 -3
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +54 -17
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.test.js +9 -4
- package/dist/frontend/ts7/enums.test.js.map +1 -1
- package/dist/frontend/ts7/native-api.js.map +1 -1
- package/dist/frontend/ts7/native-host.js.map +1 -1
- package/dist/frontend/ts7/native-process.js +9 -3
- package/dist/frontend/ts7/native-process.js.map +1 -1
- package/dist/frontend/ts7/program-adapter.js +1 -1
- package/dist/frontend/ts7/program-adapter.js.map +1 -1
- package/dist/frontend/ts7/program-host.js +7 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +43 -11
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.js +3 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/rpc-client.js +15 -5
- package/dist/frontend/ts7/rpc-client.js.map +1 -1
- package/dist/frontend/ts7/rpc-client.test.js +26 -8
- package/dist/frontend/ts7/rpc-client.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
- package/dist/frontend/ts7/rpc-filesystem.test.js +43 -10
- package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.js +16 -6
- package/dist/frontend/ts7/rpc-process.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-wire.d.ts +1 -0
- package/dist/frontend/ts7/rpc-wire.js +41 -14
- package/dist/frontend/ts7/rpc-wire.js.map +1 -1
- package/dist/frontend/ts7/rpc-wire.test.js +36 -6
- package/dist/frontend/ts7/rpc-wire.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.js +209 -68
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +29 -14
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.js +7 -1
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +17 -3
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.js +147 -51
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +72 -19
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +2 -2
- package/dist/frontend/ts7/session-cache.js +10 -3
- package/dist/frontend/ts7/session-cache.js.map +1 -1
- package/dist/frontend/ts7/session-cache.test.js +13 -4
- package/dist/frontend/ts7/session-cache.test.js.map +1 -1
- package/dist/frontend/ts7/session-path.js +25 -10
- package/dist/frontend/ts7/session-path.js.map +1 -1
- package/dist/frontend/ts7/session-path.test.js +47 -4
- package/dist/frontend/ts7/session-path.test.js.map +1 -1
- package/dist/frontend/ts7/session-timing.js +22 -3
- package/dist/frontend/ts7/session-timing.js.map +1 -1
- package/dist/frontend/ts7/session-timing.test.js +12 -3
- package/dist/frontend/ts7/session-timing.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +1 -0
- package/dist/frontend/ts7/session.js +109 -35
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +69 -15
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.js +17 -6
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +32 -9
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/tsc-codes.js +56 -11
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/tsc-codes.test.d.ts +1 -0
- package/dist/frontend/tsc-codes.test.js +16 -0
- package/dist/frontend/tsc-codes.test.js.map +1 -0
- package/dist/frontend/type-mapper.js +547 -206
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +108 -33
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend/union-discriminants.js +8 -2
- package/dist/frontend/union-discriminants.js.map +1 -1
- package/dist/frontend/union-discriminants.test.js +77 -20
- package/dist/frontend/union-discriminants.test.js.map +1 -1
- package/dist/index.d.ts +9 -8
- package/dist/index.js +150 -81
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +97 -38
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +91 -15
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/api.d.ts +4 -0
- package/dist/ir/api.js +6 -0
- package/dist/ir/api.js.map +1 -0
- package/dist/ir/build.d.ts +7 -0
- package/dist/ir/build.js +27 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.d.ts +9 -0
- package/dist/ir/builtin-effects.js +631 -0
- package/dist/ir/builtin-effects.js.map +1 -0
- package/dist/ir/builtin-signatures.d.ts +15 -0
- package/dist/ir/builtin-signatures.js +3396 -0
- package/dist/ir/builtin-signatures.js.map +1 -0
- package/dist/ir/byte-numbers.d.ts +20 -0
- package/dist/ir/byte-numbers.js +116 -0
- package/dist/ir/byte-numbers.js.map +1 -0
- package/dist/ir/byte-numbers.test.d.ts +1 -0
- package/dist/ir/byte-numbers.test.js +55 -0
- package/dist/ir/byte-numbers.test.js.map +1 -0
- package/dist/ir/constant-tables.js +13 -5
- package/dist/ir/constant-tables.js.map +1 -1
- package/dist/ir/constant-tables.test.js +47 -7
- package/dist/ir/constant-tables.test.js.map +1 -1
- package/dist/ir/control-flow.js +2 -1
- package/dist/ir/control-flow.js.map +1 -1
- package/dist/ir/control-flow.test.js +35 -11
- package/dist/ir/control-flow.test.js.map +1 -1
- package/dist/ir/initializer-bindings.d.ts +9 -0
- package/dist/ir/initializer-bindings.js +115 -0
- package/dist/ir/initializer-bindings.js.map +1 -0
- package/dist/ir/initializer-bindings.test.d.ts +1 -0
- package/dist/ir/initializer-bindings.test.js +118 -0
- package/dist/ir/initializer-bindings.test.js.map +1 -0
- package/dist/ir/integer-loop-facts.d.ts +12 -0
- package/dist/ir/integer-loop-facts.js +137 -0
- package/dist/ir/integer-loop-facts.js.map +1 -0
- package/dist/ir/integer-loops.d.ts +19 -0
- package/dist/ir/integer-loops.js +172 -11
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +122 -9
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +8 -6
- package/dist/ir/integer-ranges.js +416 -90
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +239 -10
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.d.ts +20 -0
- package/dist/ir/intrinsic-signatures.js +57 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -0
- package/dist/ir/ir.d.ts +14 -2155
- package/dist/ir/ir.js +169 -1394
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +98 -77
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +221 -0
- package/dist/ir/runtime-features.js +551 -0
- package/dist/ir/runtime-features.js.map +1 -0
- package/dist/ir/runtime-features.test.d.ts +1 -0
- package/dist/ir/runtime-features.test.js +98 -0
- package/dist/ir/runtime-features.test.js.map +1 -0
- package/dist/ir/scalar-records.js +130 -40
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +146 -27
- package/dist/ir/scalar-records.test.js.map +1 -1
- package/dist/ir/serialize.js +4 -2
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +44 -9
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/traverse.js +156 -43
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +99 -24
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/validate.d.ts +1 -31
- package/dist/ir/validate.js +826 -1915
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +627 -111
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/cache-primitives.js +9 -10
- package/dist/library/cache-primitives.js.map +1 -1
- package/dist/library/cache-reset.test.js +2 -1
- package/dist/library/cache-reset.test.js.map +1 -1
- package/dist/library/compiler-self-identity.js +11 -5
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.js +10 -3
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/fence-eval.js +24 -7
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/fence-eval.test.js +31 -7
- package/dist/library/fence-eval.test.js.map +1 -1
- package/dist/library/int-infer.js +199 -59
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +133 -57
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/ir-policy.d.ts +27 -0
- package/dist/library/ir-policy.js +232 -0
- package/dist/library/ir-policy.js.map +1 -0
- package/dist/library/library-cache.js +40 -17
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +24 -13
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/library-profile.js +68 -13
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +48 -20
- package/dist/library/prepare.js.map +1 -1
- package/dist/library/semantic-source.js +16 -14
- package/dist/library/semantic-source.js.map +1 -1
- package/dist/library/semantic-source.test.js +9 -14
- package/dist/library/semantic-source.test.js.map +1 -1
- package/dist/library/sidecar-validate.js +53 -12
- package/dist/library/sidecar-validate.js.map +1 -1
- package/dist/library/sidecar.js +85 -24
- package/dist/library/sidecar.js.map +1 -1
- package/dist/library/trap-teaching.js +11 -2
- package/dist/library/trap-teaching.js.map +1 -1
- package/dist/native/cache.js +10 -4
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +34 -9
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +167 -43
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +129 -32
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/comptime.js +23 -7
- package/dist/native/comptime.js.map +1 -1
- package/dist/native/comptime.test.js +26 -6
- package/dist/native/comptime.test.js.map +1 -1
- package/dist/native/executable-cache.js +77 -27
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/executable-cache.test.js +41 -6
- package/dist/native/executable-cache.test.js.map +1 -1
- package/dist/native/file-identity.js +9 -2
- package/dist/native/file-identity.js.map +1 -1
- package/dist/native/file-identity.test.js.map +1 -1
- package/dist/native/library.js +50 -12
- package/dist/native/library.js.map +1 -1
- package/dist/native/prepare.js +119 -34
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +22 -6
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/runtime-typescript.js +24 -11
- package/dist/native/runtime-typescript.js.map +1 -1
- package/dist/native/runtime-typescript.test.js.map +1 -1
- package/dist/native/sanitizer.js +71 -18
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +77 -20
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/task.js.map +1 -1
- package/dist/native/task.test.js +7 -2
- package/dist/native/task.test.js.map +1 -1
- package/dist/native/toolchain.js +74 -29
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +95 -18
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -1
- package/dist/startup-cache.js +1 -1
- package/dist/startup-cache.js.map +1 -1
- package/dist/timing.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +0 -601
- package/dist/frontend/lowering/lower-builtins.js +0 -8984
- package/dist/frontend/lowering/lower-builtins.js.map +0 -1
- package/dist/frontend/lowering/lower-containers.d.ts +0 -382
- package/dist/frontend/lowering/lower-containers.js +0 -7366
- package/dist/frontend/lowering/lower-containers.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
|
+
import { dynUndefinedExpr, varRef } from "../../../ir/build.js";
|
|
1
2
|
import { BUF_NUM_METHODS } from "./buffer-numeric-methods.js";
|
|
2
3
|
import * as ts from "../../ts7/adapter.js";
|
|
3
|
-
import { BYTES_ELEMENT_SIZE, BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals } from "../../../ir/ir.js";
|
|
4
|
+
import { BYTES_ELEMENT_SIZE, BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals, } from "../../../ir/ir.js";
|
|
4
5
|
import { isJsSourceFile, locOf } from "../../program.js";
|
|
5
|
-
import {
|
|
6
|
+
import { newFnCtx, own } from "../lowerer.js";
|
|
6
7
|
import { buildBytesSortFn } from "../lower-array-sort.js";
|
|
7
8
|
import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
|
|
8
9
|
import { lowerDynObjectLiteral } from "../expressions/object-literals.js";
|
|
9
|
-
import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument } from "../optional-arguments.js";
|
|
10
|
-
import { lowerCheckedArrayFrom } from "
|
|
11
|
-
import { varRef } from "../../../ir/build.js";
|
|
10
|
+
import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument, } from "../optional-arguments.js";
|
|
11
|
+
import { lowerCheckedArrayFrom } from "./array-construction.js";
|
|
12
12
|
/** Uint8Array.prototype.toSorted. The receiver/comparator expressions are
|
|
13
13
|
* evaluated before entering the helper; the helper snapshots with
|
|
14
14
|
* TypedArray.prototype.slice before its first comparison, then performs
|
|
@@ -102,24 +102,26 @@ const BYTES_CTORS = {
|
|
|
102
102
|
Float64Array: "f64",
|
|
103
103
|
};
|
|
104
104
|
/** Numeric typed-array constructors
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
105
|
+
* (stdlib provenance — a user's own class with the name resolves through
|
|
106
|
+
* classBySymbol). Lowered argument shapes: none (empty), a length
|
|
107
|
+
* (zero-filled; ToIndex at runtime — invalid lengths throw Node's
|
|
108
|
+
* RangeError), a numeric typed array or Buffer (an independent COPY —
|
|
109
|
+
* the readFile chain's `new Uint8Array(await readFile(p))`), a number[]
|
|
110
|
+
* literal (element-coerced; its contextual type is the lib's
|
|
111
|
+
* ArrayLike/Iterable union, which cannot map — the Set-seed pattern), or
|
|
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
|
|
115
|
+
* typed-array construction. */
|
|
116
116
|
export function lowerBytesNew(lowerer, expr, symbol) {
|
|
117
117
|
if (symbol != null && symbol.name === "ArrayBuffer" && lowerer.isStdlibSymbol(symbol)) {
|
|
118
118
|
const args = expr.arguments ?? [];
|
|
119
119
|
if (args.length > 1 || args.some(ts.isSpreadElement)) {
|
|
120
120
|
lowerer.noLowering("resizable ArrayBuffer construction", expr, "fixed-length ArrayBuffers accept a byte length; resizable storage is not supported yet");
|
|
121
121
|
}
|
|
122
|
-
const length = args[0]
|
|
122
|
+
const length = args[0]
|
|
123
|
+
? lowerer.coerceInto(args[0], lowerer.lowerExpr(args[0]), DYN)
|
|
124
|
+
: dynUndefinedExpr(locOf(expr));
|
|
123
125
|
return { kind: "libCall", fn: "arrayBuffer.new", args: [length], type: DYN, loc: locOf(expr) };
|
|
124
126
|
}
|
|
125
127
|
if (symbol && symbol.name === "DataView" && lowerer.isStdlibSymbol(symbol)) {
|
|
@@ -177,8 +179,10 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
177
179
|
const src = lowerer.lowerExpr(argNode);
|
|
178
180
|
if (src.type.kind === "union") {
|
|
179
181
|
const arms = lowerer.unions.get(src.type.unionId)?.arms;
|
|
180
|
-
if (arms?.every((arm) => arm.kind === "f64" ||
|
|
181
|
-
|
|
182
|
+
if (arms?.every((arm) => arm.kind === "f64" ||
|
|
183
|
+
arm.kind === "bytes" ||
|
|
184
|
+
typeEquals(arm, UNDEFINED_T) ||
|
|
185
|
+
(arm.kind === "array" && arm.elem.kind === "f64"))) {
|
|
182
186
|
// The checked constructor dispatch preserves each arm's copy or
|
|
183
187
|
// length semantics, including undefined -> empty, and evaluates
|
|
184
188
|
// an effectful source expression exactly once.
|
|
@@ -186,7 +190,8 @@ export function lowerBytesNew(lowerer, expr, symbol) {
|
|
|
186
190
|
}
|
|
187
191
|
}
|
|
188
192
|
if (src.type.kind === "f64" ||
|
|
189
|
-
src.type.kind === "bytes" ||
|
|
193
|
+
src.type.kind === "bytes" ||
|
|
194
|
+
src.type.kind === "dyn" ||
|
|
190
195
|
(src.type.kind === "array" && src.type.elem.kind === "f64")) {
|
|
191
196
|
return { kind: "bytesNew", source: src, type, loc };
|
|
192
197
|
}
|
|
@@ -204,7 +209,13 @@ export function lowerBytesStaticCall(lowerer, call, access) {
|
|
|
204
209
|
if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement))
|
|
205
210
|
lowerer.noLowering("ArrayBuffer.isView argument count", call);
|
|
206
211
|
const arg = call.arguments[0];
|
|
207
|
-
return {
|
|
212
|
+
return {
|
|
213
|
+
kind: "libCall",
|
|
214
|
+
fn: "arrayBuffer.isView",
|
|
215
|
+
args: [lowerer.coerceInto(arg, lowerer.lowerExpr(arg), DYN)],
|
|
216
|
+
type: BOOL,
|
|
217
|
+
loc: locOf(call),
|
|
218
|
+
};
|
|
208
219
|
}
|
|
209
220
|
if (access.name.text !== "from" || !ts.isIdentifier(access.expression))
|
|
210
221
|
return null;
|
|
@@ -212,7 +223,9 @@ export function lowerBytesStaticCall(lowerer, call, access) {
|
|
|
212
223
|
const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
|
|
213
224
|
if (!elem || !lowerer.isStdlibSymbol(symbol ?? undefined))
|
|
214
225
|
return null;
|
|
215
|
-
if (call.arguments.length < 1 ||
|
|
226
|
+
if (call.arguments.length < 1 ||
|
|
227
|
+
call.arguments.length > 3 ||
|
|
228
|
+
call.arguments.some(ts.isSpreadElement)) {
|
|
216
229
|
lowerer.noLowering("TypedArray.from with this argument count", call);
|
|
217
230
|
}
|
|
218
231
|
const node = call.arguments[0];
|
|
@@ -231,24 +244,59 @@ export function lowerBytesStaticCall(lowerer, call, access) {
|
|
|
231
244
|
const collected = lowerCheckedArrayFrom(lowerer, input, loc);
|
|
232
245
|
const mapped = lowerCheckedArrayFrom(lowerer, collected.result, loc, mapper, receiver, true);
|
|
233
246
|
// Consume the iterable before mapping, but validate the mapper first.
|
|
234
|
-
lowerer.liftedFns.push({
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
247
|
+
lowerer.liftedFns.push({
|
|
248
|
+
name: key,
|
|
249
|
+
params: locals.map((local) => ({ localId: local.id, name: local.name, type: DYN })),
|
|
250
|
+
returnType: bytesOf(elem),
|
|
251
|
+
locals: context.locals,
|
|
252
|
+
loc,
|
|
253
|
+
body: [
|
|
254
|
+
mapped.stmts[0],
|
|
255
|
+
...collected.stmts,
|
|
256
|
+
...mapped.stmts.slice(1),
|
|
257
|
+
{
|
|
258
|
+
kind: "return",
|
|
259
|
+
value: {
|
|
260
|
+
kind: "bytesNew",
|
|
261
|
+
source: mapped.result,
|
|
262
|
+
from: true,
|
|
263
|
+
type: bytesOf(elem),
|
|
264
|
+
loc,
|
|
265
|
+
},
|
|
266
|
+
loc,
|
|
267
|
+
},
|
|
268
|
+
],
|
|
269
|
+
});
|
|
239
270
|
}
|
|
240
271
|
finally {
|
|
241
272
|
lowerer.fnStack.pop();
|
|
242
273
|
}
|
|
243
274
|
}
|
|
244
|
-
return {
|
|
275
|
+
return {
|
|
276
|
+
kind: "call",
|
|
277
|
+
callee: key,
|
|
278
|
+
args: [
|
|
279
|
+
lowerer.coerceInto(node, source, DYN),
|
|
245
280
|
lowerer.lowerExprExpecting(call.arguments[1], DYN),
|
|
246
|
-
call.arguments[2]
|
|
281
|
+
call.arguments[2]
|
|
282
|
+
? lowerer.lowerExprExpecting(call.arguments[2], DYN)
|
|
283
|
+
: dynUndefinedExpr(loc),
|
|
284
|
+
],
|
|
285
|
+
type: bytesOf(elem),
|
|
286
|
+
loc,
|
|
287
|
+
};
|
|
247
288
|
}
|
|
248
|
-
if (source.type.kind === "bytes" ||
|
|
289
|
+
if (source.type.kind === "bytes" ||
|
|
290
|
+
(source.type.kind === "array" && source.type.elem.kind === "f64")) {
|
|
249
291
|
return { kind: "bytesNew", source, type: bytesOf(elem), loc: locOf(call) };
|
|
250
292
|
}
|
|
251
|
-
return {
|
|
293
|
+
return {
|
|
294
|
+
kind: "bytesNew",
|
|
295
|
+
source: lowerer.coerceInto(node, source, DYN),
|
|
296
|
+
from: true,
|
|
297
|
+
type: bytesOf(elem),
|
|
298
|
+
loc: locOf(call),
|
|
299
|
+
};
|
|
252
300
|
}
|
|
253
301
|
/** Construct a view over the complete branded backing allocation. */
|
|
254
302
|
function lowerArrayBufferView(lowerer, args, elem, loc) {
|
|
@@ -256,8 +304,25 @@ function lowerArrayBufferView(lowerer, args, elem, loc) {
|
|
|
256
304
|
const node = args[index];
|
|
257
305
|
return node ? lowerer.coerceInto(node, lowerer.lowerExpr(node), DYN) : dynUndefinedExpr(loc);
|
|
258
306
|
});
|
|
259
|
-
const fn = {
|
|
260
|
-
|
|
307
|
+
const fn = {
|
|
308
|
+
u8c: "arrayBuffer.viewU8C",
|
|
309
|
+
i8: "arrayBuffer.viewI8",
|
|
310
|
+
u16: "arrayBuffer.viewU16",
|
|
311
|
+
i16: "arrayBuffer.viewI16",
|
|
312
|
+
u8: "arrayBuffer.viewU8",
|
|
313
|
+
u32: "arrayBuffer.viewU32",
|
|
314
|
+
i32: "arrayBuffer.viewI32",
|
|
315
|
+
f32: "arrayBuffer.viewF32",
|
|
316
|
+
f64: "arrayBuffer.viewF64",
|
|
317
|
+
dv: "arrayBuffer.viewDV",
|
|
318
|
+
};
|
|
319
|
+
return {
|
|
320
|
+
kind: "libCall",
|
|
321
|
+
fn: fn[elem],
|
|
322
|
+
args: values,
|
|
323
|
+
type: elem === "dv" ? BYTES_U8 : bytesOf(elem),
|
|
324
|
+
loc,
|
|
325
|
+
};
|
|
261
326
|
}
|
|
262
327
|
function lowerDataViewNew(lowerer, expr) {
|
|
263
328
|
const args = expr.arguments ?? [];
|
|
@@ -266,12 +331,12 @@ function lowerDataViewNew(lowerer, expr) {
|
|
|
266
331
|
return lowerArrayBufferView(lowerer, args, "dv", locOf(expr));
|
|
267
332
|
}
|
|
268
333
|
/** Method calls on typed-array/Buffer receivers: slice (copy), subarray
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
334
|
+
* (shared view), toReversed, copyWithin, set(src,
|
|
335
|
+
* offset?), and the u8-only Buffer surface: toString(enc?) plus the
|
|
336
|
+
* whole numeric read/write family (fixed widths BE/LE and the
|
|
337
|
+
* variable-width read/writeUIntLE quartet — BUF_NUM_METHODS). Everything
|
|
338
|
+
* else the lib declares (fill, indexOf, reverse, ...) falls through to
|
|
339
|
+
* the SC2020 member fence. Null when this isn't a bytes method call. */
|
|
275
340
|
export function lowerBytesMethodCall(lowerer, call, access) {
|
|
276
341
|
if (lowerer.chainBlocked(access, call))
|
|
277
342
|
return null;
|
|
@@ -289,16 +354,26 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
289
354
|
const lowered = lowerer.lowerExpr(access.expression);
|
|
290
355
|
const receiver = lowered.kind === "dynCheck" && lowered.value.type.kind === "dyn" ? lowered.value : lowered;
|
|
291
356
|
if (receiver.type.kind === "dyn")
|
|
292
|
-
return {
|
|
293
|
-
|
|
294
|
-
|
|
357
|
+
return {
|
|
358
|
+
kind: "libCall",
|
|
359
|
+
fn: "dyn.toString",
|
|
360
|
+
args: [
|
|
361
|
+
receiver,
|
|
362
|
+
call.arguments[0]
|
|
363
|
+
? lowerer.lowerExprExpecting(call.arguments[0], DYN)
|
|
364
|
+
: dynUndefinedExpr(loc),
|
|
365
|
+
{ kind: "strLit", value: access.getText(), type: STRING, loc },
|
|
366
|
+
],
|
|
367
|
+
type: STRING,
|
|
368
|
+
loc,
|
|
369
|
+
};
|
|
295
370
|
}
|
|
296
371
|
if (receiverIr.elem === "u8" && name === "toSorted") {
|
|
297
372
|
return lowerBytesToSortedCall(lowerer, call, access, receiverIr);
|
|
298
373
|
}
|
|
299
|
-
if (
|
|
374
|
+
if (name === "toReversed") {
|
|
300
375
|
if (nArgs !== 0) {
|
|
301
|
-
lowerer.noLowering(`.toReversed with ${nArgs} arguments on
|
|
376
|
+
lowerer.noLowering(`.toReversed with ${nArgs} arguments on typed arrays`, call);
|
|
302
377
|
}
|
|
303
378
|
return {
|
|
304
379
|
kind: "bytesIntrinsic",
|
|
@@ -360,7 +435,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
360
435
|
const declaredOnBuffer = name === "slice" &&
|
|
361
436
|
(() => {
|
|
362
437
|
const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
|
|
363
|
-
return nameSym !== undefined &&
|
|
438
|
+
return (nameSym !== undefined &&
|
|
439
|
+
lowerer.checker
|
|
440
|
+
.declarationsOf(nameSym)
|
|
441
|
+
.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
|
|
364
442
|
})();
|
|
365
443
|
const method = name === "subarray" || declaredOnBuffer ? "subarray" : "slice";
|
|
366
444
|
return { kind: "bytesIntrinsic", method, receiver, args, type: receiverIr, loc };
|
|
@@ -377,10 +455,15 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
377
455
|
});
|
|
378
456
|
return { kind: "bytesIntrinsic", method: "copyWithin", receiver, args, type: receiverIr, loc };
|
|
379
457
|
}
|
|
380
|
-
if (name === "fill" &&
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
458
|
+
if (name === "fill" &&
|
|
459
|
+
!(() => {
|
|
460
|
+
const symbol = lowerer.checker.getSymbolAtLocation(access.name);
|
|
461
|
+
return (symbol !== undefined &&
|
|
462
|
+
lowerer.checker
|
|
463
|
+
.declarationsOf(symbol)
|
|
464
|
+
.some((declaration) => ts.isInterfaceDeclaration(declaration.parent) &&
|
|
465
|
+
declaration.parent.name.text === "Buffer"));
|
|
466
|
+
})()) {
|
|
384
467
|
// Typed arrays use element coercion and relative, clamped indices.
|
|
385
468
|
// Buffer's same-named method keeps its pattern and offset validation.
|
|
386
469
|
if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
|
|
@@ -388,9 +471,23 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
388
471
|
}
|
|
389
472
|
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
390
473
|
const zero = { kind: "numLit", value: 0, type: F64, loc };
|
|
391
|
-
const v = call.arguments[0]
|
|
392
|
-
|
|
393
|
-
|
|
474
|
+
const v = call.arguments[0]
|
|
475
|
+
? lowerOptionalArgument(lowerer, call.arguments[0], F64, zero)
|
|
476
|
+
: zero;
|
|
477
|
+
const idx = call.arguments.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
|
|
478
|
+
kind: "numLit",
|
|
479
|
+
value: i === 0 ? 0 : Infinity,
|
|
480
|
+
type: F64,
|
|
481
|
+
loc,
|
|
482
|
+
}));
|
|
483
|
+
return {
|
|
484
|
+
kind: "bytesIntrinsic",
|
|
485
|
+
method: "fillElem",
|
|
486
|
+
receiver,
|
|
487
|
+
args: [v, ...idx],
|
|
488
|
+
type: receiverIr,
|
|
489
|
+
loc,
|
|
490
|
+
};
|
|
394
491
|
}
|
|
395
492
|
if (name === "set") {
|
|
396
493
|
if (nArgs < 1 || nArgs > 2) {
|
|
@@ -399,9 +496,16 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
399
496
|
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
400
497
|
const src = lowerer.lowerExpr(call.arguments[0]);
|
|
401
498
|
const method = src.type.kind === "bytes" ? "setFrom" : "setFromDyn";
|
|
402
|
-
const args = [
|
|
499
|
+
const args = [
|
|
500
|
+
src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN),
|
|
501
|
+
];
|
|
403
502
|
if (nArgs === 2)
|
|
404
|
-
args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, {
|
|
503
|
+
args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, {
|
|
504
|
+
kind: "numLit",
|
|
505
|
+
value: 0,
|
|
506
|
+
type: F64,
|
|
507
|
+
loc,
|
|
508
|
+
}));
|
|
405
509
|
return { kind: "bytesIntrinsic", method, receiver, args, type: VOID, loc };
|
|
406
510
|
}
|
|
407
511
|
if (name === "toString") {
|
|
@@ -410,7 +514,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
410
514
|
// Array-toString (comma join), a different operation: fenced.
|
|
411
515
|
const declaredOnBuffer = (() => {
|
|
412
516
|
const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
|
|
413
|
-
return nameSym !== undefined &&
|
|
517
|
+
return (nameSym !== undefined &&
|
|
518
|
+
lowerer.checker
|
|
519
|
+
.declarationsOf(nameSym)
|
|
520
|
+
.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
|
|
414
521
|
})();
|
|
415
522
|
if (receiverIr.elem !== "u8" || !declaredOnBuffer) {
|
|
416
523
|
lowerer.noLowering("typed-array toString", call, 'Buffer.from(x).toString("utf8" | "hex" | "base64") is the lowered string conversion');
|
|
@@ -423,12 +530,15 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
423
530
|
let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
|
|
424
531
|
if (encNode) {
|
|
425
532
|
const encType = lowerer.typeOf(encNode);
|
|
426
|
-
const encName = encType.isStringLiteralType()
|
|
427
|
-
? knownBufEncoding(encType.value)
|
|
428
|
-
: undefined;
|
|
533
|
+
const encName = encType.isStringLiteralType() ? knownBufEncoding(encType.value) : undefined;
|
|
429
534
|
if (encName !== undefined) {
|
|
430
535
|
// Keep literals on the canonical, non-throwing fast path.
|
|
431
|
-
enc =
|
|
536
|
+
enc = defaultAfterUndefined(lowerer.lowerExpr(encNode), {
|
|
537
|
+
kind: "strLit",
|
|
538
|
+
value: encName,
|
|
539
|
+
type: STRING,
|
|
540
|
+
loc,
|
|
541
|
+
});
|
|
432
542
|
}
|
|
433
543
|
else {
|
|
434
544
|
const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, encNode);
|
|
@@ -458,7 +568,14 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
458
568
|
const start = lowerer.lowerExprExpecting(call.arguments[1], F64);
|
|
459
569
|
if (nArgs === 3) {
|
|
460
570
|
const end = lowerer.lowerExprExpecting(call.arguments[2], F64);
|
|
461
|
-
return {
|
|
571
|
+
return {
|
|
572
|
+
kind: "bytesIntrinsic",
|
|
573
|
+
method,
|
|
574
|
+
receiver,
|
|
575
|
+
args: [enc, start, end],
|
|
576
|
+
type: STRING,
|
|
577
|
+
loc,
|
|
578
|
+
};
|
|
462
579
|
}
|
|
463
580
|
return { kind: "bytesIntrinsic", method, receiver, args: [enc, start], type: STRING, loc };
|
|
464
581
|
}
|
|
@@ -472,7 +589,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
472
589
|
// rest).
|
|
473
590
|
const declOnBuffer = (() => {
|
|
474
591
|
const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
|
|
475
|
-
return nameSym !== undefined &&
|
|
592
|
+
return (nameSym !== undefined &&
|
|
593
|
+
lowerer.checker
|
|
594
|
+
.declarationsOf(nameSym)
|
|
595
|
+
.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
|
|
476
596
|
})();
|
|
477
597
|
if (declOnBuffer && receiverIr.elem === "u8") {
|
|
478
598
|
const bufMethod = lowerBufferInstanceMethod(lowerer, call, access, name, loc);
|
|
@@ -494,10 +614,22 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
494
614
|
const sign = { kind: "boolLit", value: bigKind.sign, type: BOOL, loc };
|
|
495
615
|
const le = { kind: "boolLit", value: bigKind.le, type: BOOL, loc };
|
|
496
616
|
if (!write) {
|
|
497
|
-
return {
|
|
617
|
+
return {
|
|
618
|
+
kind: "libCall",
|
|
619
|
+
fn: "bigint.bufferRead",
|
|
620
|
+
args: [receiver, offset, sign, le],
|
|
621
|
+
type: BIGINT_T,
|
|
622
|
+
loc,
|
|
623
|
+
};
|
|
498
624
|
}
|
|
499
625
|
const value = lowerer.lowerExprExpecting(call.arguments[0], BIGINT_T);
|
|
500
|
-
return {
|
|
626
|
+
return {
|
|
627
|
+
kind: "libCall",
|
|
628
|
+
fn: "bigint.bufferWrite",
|
|
629
|
+
args: [receiver, value, offset, sign, le],
|
|
630
|
+
type: F64,
|
|
631
|
+
loc,
|
|
632
|
+
};
|
|
501
633
|
}
|
|
502
634
|
// The Buffer numeric read/write families — every fixed-width kind in
|
|
503
635
|
// both endiannesses ("Uint" and "UInt" alike: Node aliases both), plus
|
|
@@ -519,7 +651,14 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
519
651
|
if (nArgs === required) {
|
|
520
652
|
args.push({ kind: "numLit", value: 0, type: F64, loc }); // Node's offset default
|
|
521
653
|
}
|
|
522
|
-
return {
|
|
654
|
+
return {
|
|
655
|
+
kind: "bytesIntrinsic",
|
|
656
|
+
method: write ? "writeNum" : "readNum",
|
|
657
|
+
receiver,
|
|
658
|
+
args,
|
|
659
|
+
type: F64,
|
|
660
|
+
loc,
|
|
661
|
+
};
|
|
523
662
|
}
|
|
524
663
|
const varKind = own(BUF_NUM_VAR_METHODS, name);
|
|
525
664
|
if (varKind !== undefined) {
|
|
@@ -534,7 +673,14 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
534
673
|
const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
|
|
535
674
|
const kind = { kind: "strLit", value: varKind, type: STRING, loc };
|
|
536
675
|
const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
|
|
537
|
-
return {
|
|
676
|
+
return {
|
|
677
|
+
kind: "bytesIntrinsic",
|
|
678
|
+
method: write ? "writeNumVar" : "readNumVar",
|
|
679
|
+
receiver,
|
|
680
|
+
args,
|
|
681
|
+
type: F64,
|
|
682
|
+
loc,
|
|
683
|
+
};
|
|
538
684
|
}
|
|
539
685
|
// DataView getters (DataView maps to bytes<u8>, so the receiver kind
|
|
540
686
|
// and stdlib provenance land here; the checker keeps these names off
|
|
@@ -551,7 +697,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
551
697
|
const le = call.arguments[1]
|
|
552
698
|
? lowerer.lowerExprExpecting(call.arguments[1], BOOL)
|
|
553
699
|
: { kind: "boolLit", value: false, type: BOOL, loc };
|
|
554
|
-
return {
|
|
700
|
+
return {
|
|
701
|
+
kind: "libCall",
|
|
702
|
+
fn: "bigint.dataViewGet",
|
|
703
|
+
args: [receiver, offset, sign, le],
|
|
704
|
+
type: BIGINT_T,
|
|
705
|
+
loc,
|
|
706
|
+
};
|
|
555
707
|
}
|
|
556
708
|
const dvGetter = own(DV_GETTERS, name);
|
|
557
709
|
if (dvGetter !== undefined && receiverIr.elem === "u8") {
|
|
@@ -581,7 +733,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
|
|
|
581
733
|
const le = call.arguments[2]
|
|
582
734
|
? lowerer.lowerExprExpecting(call.arguments[2], BOOL)
|
|
583
735
|
: { kind: "boolLit", value: false, type: BOOL, loc };
|
|
584
|
-
return {
|
|
736
|
+
return {
|
|
737
|
+
kind: "libCall",
|
|
738
|
+
fn: "bigint.dataViewSet",
|
|
739
|
+
args: [receiver, offset, value, le],
|
|
740
|
+
type: VOID,
|
|
741
|
+
loc,
|
|
742
|
+
};
|
|
585
743
|
}
|
|
586
744
|
if (dvSetter !== undefined && receiverIr.elem === "u8") {
|
|
587
745
|
const maxArgs = dvSetter.le ? 3 : 2;
|
|
@@ -723,7 +881,14 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
723
881
|
const target = u8Arg(0);
|
|
724
882
|
const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
725
883
|
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
726
|
-
return {
|
|
884
|
+
return {
|
|
885
|
+
kind: "bytesIntrinsic",
|
|
886
|
+
method: "compareBuf",
|
|
887
|
+
receiver,
|
|
888
|
+
args: [target, ...idx],
|
|
889
|
+
type: F64,
|
|
890
|
+
loc,
|
|
891
|
+
};
|
|
727
892
|
}
|
|
728
893
|
// An absent/ill-typed target or offset (`a.compare()`, string
|
|
729
894
|
// offsets, explicit undefined): Node's target/targetStart/targetEnd/
|
|
@@ -760,7 +925,11 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
760
925
|
// encoding is irrelevant, like Node).
|
|
761
926
|
const v = lowerer.lowerExprExpecting(args[0], F64);
|
|
762
927
|
const numArgs = [v, ...(offNode ? [lowerer.lowerExprExpecting(offNode, F64)] : [])];
|
|
763
|
-
const method = name === "indexOf"
|
|
928
|
+
const method = name === "indexOf"
|
|
929
|
+
? "indexOfNum"
|
|
930
|
+
: name === "lastIndexOf"
|
|
931
|
+
? "lastIndexOfNum"
|
|
932
|
+
: "includesNum";
|
|
764
933
|
return { kind: "bytesIntrinsic", method, receiver, args: numArgs, type: resultT, loc };
|
|
765
934
|
}
|
|
766
935
|
let needle;
|
|
@@ -779,7 +948,11 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
779
948
|
lowerer.noLowering(`.${name} of '${lowerer.checker.typeToString(lowerer.typeOf(args[0]))}' values`, args[0], "string, number, and Buffer/Uint8Array needles search (narrow unions first)");
|
|
780
949
|
}
|
|
781
950
|
const alignLit = { kind: "numLit", value: align, type: F64, loc };
|
|
782
|
-
const searchArgs = [
|
|
951
|
+
const searchArgs = [
|
|
952
|
+
needle,
|
|
953
|
+
alignLit,
|
|
954
|
+
...(offNode ? [lowerer.lowerExprExpecting(offNode, F64)] : []),
|
|
955
|
+
];
|
|
783
956
|
return { kind: "bytesIntrinsic", method: name, receiver, args: searchArgs, type: resultT, loc };
|
|
784
957
|
}
|
|
785
958
|
if (name === "fill") {
|
|
@@ -804,16 +977,37 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
804
977
|
const encName = encNode ? bufEncoding(lowerer, ".fill", encNode) : "utf8";
|
|
805
978
|
const s = lowerer.lowerExprExpecting(args[0], STRING);
|
|
806
979
|
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
807
|
-
return {
|
|
980
|
+
return {
|
|
981
|
+
kind: "bytesIntrinsic",
|
|
982
|
+
method: "fillStr",
|
|
983
|
+
receiver,
|
|
984
|
+
args: [s, enc, ...idx],
|
|
985
|
+
type: BYTES_U8,
|
|
986
|
+
loc,
|
|
987
|
+
};
|
|
808
988
|
}
|
|
809
989
|
if (encNode)
|
|
810
990
|
lowerer.noLowering(".fill with an encoding on a non-string value", encNode);
|
|
811
991
|
if (vT?.kind === "f64") {
|
|
812
992
|
const v = lowerer.lowerExprExpecting(args[0], F64);
|
|
813
|
-
return {
|
|
993
|
+
return {
|
|
994
|
+
kind: "bytesIntrinsic",
|
|
995
|
+
method: "fillNum",
|
|
996
|
+
receiver,
|
|
997
|
+
args: [v, ...idx],
|
|
998
|
+
type: BYTES_U8,
|
|
999
|
+
loc,
|
|
1000
|
+
};
|
|
814
1001
|
}
|
|
815
1002
|
const pattern = u8Arg(0);
|
|
816
|
-
return {
|
|
1003
|
+
return {
|
|
1004
|
+
kind: "bytesIntrinsic",
|
|
1005
|
+
method: "fill",
|
|
1006
|
+
receiver,
|
|
1007
|
+
args: [pattern, ...idx],
|
|
1008
|
+
type: BYTES_U8,
|
|
1009
|
+
loc,
|
|
1010
|
+
};
|
|
817
1011
|
}
|
|
818
1012
|
if (name === "copy") {
|
|
819
1013
|
if (nArgs < 1 || nArgs > 4)
|
|
@@ -821,7 +1015,14 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
821
1015
|
const target = u8Arg(0);
|
|
822
1016
|
const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
823
1017
|
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
824
|
-
return {
|
|
1018
|
+
return {
|
|
1019
|
+
kind: "bytesIntrinsic",
|
|
1020
|
+
method: "copy",
|
|
1021
|
+
receiver,
|
|
1022
|
+
args: [target, ...idx],
|
|
1023
|
+
type: F64,
|
|
1024
|
+
loc,
|
|
1025
|
+
};
|
|
825
1026
|
}
|
|
826
1027
|
if (name === "swap16" || name === "swap32" || name === "swap64") {
|
|
827
1028
|
if (nArgs !== 0)
|
|
@@ -848,9 +1049,21 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
|
|
|
848
1049
|
const offset = idxNodes[0]
|
|
849
1050
|
? lowerer.lowerExprExpecting(idxNodes[0], F64)
|
|
850
1051
|
: { kind: "numLit", value: 0, type: F64, loc };
|
|
851
|
-
const writeArgs = [
|
|
1052
|
+
const writeArgs = [
|
|
1053
|
+
s,
|
|
1054
|
+
enc,
|
|
1055
|
+
offset,
|
|
1056
|
+
...(idxNodes[1] ? [lowerer.lowerExprExpecting(idxNodes[1], F64)] : []),
|
|
1057
|
+
];
|
|
852
1058
|
const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
|
|
853
|
-
return {
|
|
1059
|
+
return {
|
|
1060
|
+
kind: "bytesIntrinsic",
|
|
1061
|
+
method: "writeStr",
|
|
1062
|
+
receiver,
|
|
1063
|
+
args: writeArgs,
|
|
1064
|
+
type: F64,
|
|
1065
|
+
loc,
|
|
1066
|
+
};
|
|
854
1067
|
}
|
|
855
1068
|
return null;
|
|
856
1069
|
}
|
|
@@ -882,9 +1095,9 @@ const DV_SETTERS = {
|
|
|
882
1095
|
setFloat64: { method: "dvSetFloat64", le: true },
|
|
883
1096
|
};
|
|
884
1097
|
/** The Buffer statics — `Buffer.from(...)`, `Buffer.alloc(n)`,
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
1098
|
+
* `Buffer.concat(list)`, `Buffer.isBuffer(x)` — on THE stdlib Buffer
|
|
1099
|
+
* global (name + provenance; fallback and @types/node alike). Null when
|
|
1100
|
+
* the callee isn't a Buffer-static access. */
|
|
888
1101
|
function knownBufferProducer(lowerer, source, seen = new Set()) {
|
|
889
1102
|
let node = source;
|
|
890
1103
|
while (ts.isParenthesizedExpression(node) || ts.isAsExpression(node) || ts.isTypeAssertion(node))
|
|
@@ -894,7 +1107,9 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
|
|
|
894
1107
|
if (!symbol || seen.has(symbol))
|
|
895
1108
|
return false;
|
|
896
1109
|
seen.add(symbol);
|
|
897
|
-
return lowerer.checker
|
|
1110
|
+
return lowerer.checker
|
|
1111
|
+
.declarationsOf(symbol)
|
|
1112
|
+
.some((decl) => ts.isVariableDeclaration(decl) &&
|
|
898
1113
|
ts.isVariableDeclarationList(decl.parent) &&
|
|
899
1114
|
(decl.parent.flags & ts.NodeFlags.Const) !== 0 &&
|
|
900
1115
|
decl.initializer !== undefined &&
|
|
@@ -908,13 +1123,16 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
|
|
|
908
1123
|
: ts.isPropertyAccessExpression(callee)
|
|
909
1124
|
? lowerer.builtinMemberOf(callee)
|
|
910
1125
|
: null;
|
|
911
|
-
if (bi?.module === "crypto" &&
|
|
1126
|
+
if (bi?.module === "crypto" &&
|
|
1127
|
+
(bi.member === "randomBytes" || bi.member === "pbkdf2Sync" || bi.member === "scryptSync"))
|
|
912
1128
|
return true;
|
|
913
1129
|
if (bi?.module === "buffer" && bi.member === "transcode")
|
|
914
1130
|
return true;
|
|
915
1131
|
if (bi?.module === "url" && bi.member === "fileURLToPathBuffer")
|
|
916
1132
|
return true;
|
|
917
|
-
if (!ts.isPropertyAccessExpression(callee) ||
|
|
1133
|
+
if (!ts.isPropertyAccessExpression(callee) ||
|
|
1134
|
+
callee.name.text !== "digest" ||
|
|
1135
|
+
node.arguments.length !== 0)
|
|
918
1136
|
return false;
|
|
919
1137
|
const type = lowerer.mapTypeOf(lowerer.typeOf(callee.expression));
|
|
920
1138
|
return type?.kind === "cryptoHash" || type?.kind === "cryptoHmac";
|
|
@@ -936,7 +1154,9 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
936
1154
|
const loc = locOf(call);
|
|
937
1155
|
const args = call.arguments;
|
|
938
1156
|
if (member === "from") {
|
|
939
|
-
if (args.length >= 1 &&
|
|
1157
|
+
if (args.length >= 1 &&
|
|
1158
|
+
args.length <= 3 &&
|
|
1159
|
+
!args.some(ts.isSpreadElement) &&
|
|
940
1160
|
((symbol) => symbol != null && symbol.name === "ArrayBuffer")(lowerer.typeOf(args[0]).getSymbol())) {
|
|
941
1161
|
return lowerArrayBufferView(lowerer, args, "u8", loc);
|
|
942
1162
|
}
|
|
@@ -946,14 +1166,24 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
946
1166
|
// array — the DataView peel — and the construction rides the same
|
|
947
1167
|
// dataViewNew intrinsic (offset/length validation throws Node's
|
|
948
1168
|
// DataView-shaped RangeErrors; valid indices behave exactly).
|
|
949
|
-
if (args.length >= 1 &&
|
|
950
|
-
|
|
1169
|
+
if (args.length >= 1 &&
|
|
1170
|
+
args.length <= 3 &&
|
|
1171
|
+
!args.some(ts.isSpreadElement) &&
|
|
1172
|
+
ts.isPropertyAccessExpression(args[0]) &&
|
|
1173
|
+
args[0].name.text === "buffer") {
|
|
951
1174
|
const srcNode = args[0].expression;
|
|
952
1175
|
const srcIr = lowerer.mapTypeOf(lowerer.typeOf(srcNode));
|
|
953
1176
|
if (srcIr?.kind === "bytes") {
|
|
954
1177
|
const receiver = lowerer.lowerExpr(srcNode);
|
|
955
1178
|
const idxArgs = args.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
|
|
956
|
-
return {
|
|
1179
|
+
return {
|
|
1180
|
+
kind: "bytesIntrinsic",
|
|
1181
|
+
method: "dataViewNew",
|
|
1182
|
+
receiver,
|
|
1183
|
+
args: idxArgs,
|
|
1184
|
+
type: BYTES_U8,
|
|
1185
|
+
loc,
|
|
1186
|
+
};
|
|
957
1187
|
}
|
|
958
1188
|
}
|
|
959
1189
|
if (args.length >= 1 && args.length <= 2 && !args.some(ts.isSpreadElement)) {
|
|
@@ -978,11 +1208,35 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
978
1208
|
return { kind: "libCall", fn: "buffer.fromDyn", args: [value, enc], type: BYTES_U8, loc };
|
|
979
1209
|
}
|
|
980
1210
|
if (srcIr?.kind === "string") {
|
|
981
|
-
const encNode = args[1];
|
|
982
|
-
const encName = encNode ? bufEncoding(lowerer, "Buffer.from", encNode) : "utf8";
|
|
983
1211
|
const s = lowerer.coerceInto(argNode, value, STRING);
|
|
984
|
-
const
|
|
985
|
-
|
|
1212
|
+
const encNode = args[1];
|
|
1213
|
+
let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
|
|
1214
|
+
let fn = "buffer.fromStr";
|
|
1215
|
+
if (encNode) {
|
|
1216
|
+
const encType = lowerer.typeOf(encNode);
|
|
1217
|
+
const encName = encType.isStringLiteralType()
|
|
1218
|
+
? knownBufEncoding(encType.value)
|
|
1219
|
+
: undefined;
|
|
1220
|
+
if (encName !== undefined) {
|
|
1221
|
+
enc = defaultAfterUndefined(lowerer.lowerExpr(encNode), {
|
|
1222
|
+
kind: "strLit",
|
|
1223
|
+
value: encName,
|
|
1224
|
+
type: STRING,
|
|
1225
|
+
loc,
|
|
1226
|
+
});
|
|
1227
|
+
}
|
|
1228
|
+
else {
|
|
1229
|
+
const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, encNode);
|
|
1230
|
+
if (undefinedArg) {
|
|
1231
|
+
enc = defaultAfterUndefined(undefinedArg, enc);
|
|
1232
|
+
}
|
|
1233
|
+
else {
|
|
1234
|
+
enc = lowerOptionalArgument(lowerer, encNode, STRING, enc);
|
|
1235
|
+
fn = "buffer.fromStrChecked";
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
return { kind: "libCall", fn, args: [s, enc], type: BYTES_U8, loc };
|
|
986
1240
|
}
|
|
987
1241
|
if (args.length === 1 && srcIr?.kind === "bytes" && srcIr.elem === "u8") {
|
|
988
1242
|
return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
|
|
@@ -992,7 +1246,7 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
992
1246
|
}
|
|
993
1247
|
}
|
|
994
1248
|
}
|
|
995
|
-
lowerer.noLowering("Buffer.from with this argument shape", call, "supported: Buffer.from(string, encoding?)
|
|
1249
|
+
lowerer.noLowering("Buffer.from with this argument shape", call, "supported: Buffer.from(string, encoding?), Buffer.from(u8Array) — a copy — " +
|
|
996
1250
|
"Buffer.from(number[]), or Buffer.from(arrayBuffer, byteOffset?, length?) — a view sharing " +
|
|
997
1251
|
"the buffer's storage; narrow unions first");
|
|
998
1252
|
}
|
|
@@ -1016,18 +1270,39 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
1016
1270
|
const encName = args[2] ? bufEncoding(lowerer, "Buffer.alloc", args[2]) : "utf8";
|
|
1017
1271
|
const s = lowerer.lowerExprExpecting(args[1], STRING);
|
|
1018
1272
|
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
1019
|
-
return {
|
|
1273
|
+
return {
|
|
1274
|
+
kind: "bytesIntrinsic",
|
|
1275
|
+
method: "fillStr",
|
|
1276
|
+
receiver: fresh,
|
|
1277
|
+
args: [s, enc],
|
|
1278
|
+
type: BYTES_U8,
|
|
1279
|
+
loc,
|
|
1280
|
+
};
|
|
1020
1281
|
}
|
|
1021
1282
|
if (args.length > 2) {
|
|
1022
1283
|
lowerer.noLowering("Buffer.alloc with an encoding on a non-string fill", args[2]);
|
|
1023
1284
|
}
|
|
1024
1285
|
if (fillT?.kind === "f64") {
|
|
1025
1286
|
const v = lowerer.lowerExprExpecting(args[1], F64);
|
|
1026
|
-
return {
|
|
1287
|
+
return {
|
|
1288
|
+
kind: "bytesIntrinsic",
|
|
1289
|
+
method: "fillNum",
|
|
1290
|
+
receiver: fresh,
|
|
1291
|
+
args: [v],
|
|
1292
|
+
type: BYTES_U8,
|
|
1293
|
+
loc,
|
|
1294
|
+
};
|
|
1027
1295
|
}
|
|
1028
1296
|
if (fillT?.kind === "bytes" && fillT.elem === "u8") {
|
|
1029
1297
|
const pattern = lowerer.lowerExpr(args[1]);
|
|
1030
|
-
return {
|
|
1298
|
+
return {
|
|
1299
|
+
kind: "bytesIntrinsic",
|
|
1300
|
+
method: "fill",
|
|
1301
|
+
receiver: fresh,
|
|
1302
|
+
args: [pattern],
|
|
1303
|
+
type: BYTES_U8,
|
|
1304
|
+
loc,
|
|
1305
|
+
};
|
|
1031
1306
|
}
|
|
1032
1307
|
lowerer.noLowering(`Buffer.alloc with a '${lowerer.checker.typeToString(lowerer.typeOf(args[1]))}' fill`, args[1], "number, string, and Buffer/Uint8Array fills are the lowered shapes");
|
|
1033
1308
|
}
|
|
@@ -1062,7 +1337,14 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
1062
1337
|
}
|
|
1063
1338
|
const sides = args.map((a) => lowerer.lowerExpr(a));
|
|
1064
1339
|
if (sides.every((v) => v.type.kind === "bytes" && v.type.elem === "u8")) {
|
|
1065
|
-
return {
|
|
1340
|
+
return {
|
|
1341
|
+
kind: "bytesIntrinsic",
|
|
1342
|
+
method: "compareBuf",
|
|
1343
|
+
receiver: sides[0],
|
|
1344
|
+
args: [sides[1]],
|
|
1345
|
+
type: F64,
|
|
1346
|
+
loc,
|
|
1347
|
+
};
|
|
1066
1348
|
}
|
|
1067
1349
|
// A side that is not statically bytes (the invalid-input probes,
|
|
1068
1350
|
// untyped JS helpers): Node's "buf1"/"buf2" argument ladder runs
|
|
@@ -1103,26 +1385,44 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
1103
1385
|
// Untyped stream chunks retain the native checked value's Buffer
|
|
1104
1386
|
// flavor. Plain bytes are Uint8Arrays at this boundary; inspecting
|
|
1105
1387
|
// only the bytes tag would incorrectly identify them as Buffers.
|
|
1106
|
-
const checked = isJsSourceFile(call.getSourceFile()) && v.kind === "dynCheck" && v.value.type.kind === "dyn"
|
|
1388
|
+
const checked = isJsSourceFile(call.getSourceFile()) && v.kind === "dynCheck" && v.value.type.kind === "dyn"
|
|
1389
|
+
? v.value
|
|
1390
|
+
: v;
|
|
1107
1391
|
if (checked.type.kind === "dyn") {
|
|
1108
1392
|
return { kind: "dynTest", test: "buffer", value: checked, type: BOOL, loc };
|
|
1109
1393
|
}
|
|
1110
1394
|
// Primitive storage cannot carry a Buffer. Keep argument effects
|
|
1111
1395
|
// even when its representation makes the answer constant.
|
|
1112
|
-
if (v.type.kind === "string" ||
|
|
1113
|
-
v.type.kind === "
|
|
1396
|
+
if (v.type.kind === "string" ||
|
|
1397
|
+
v.type.kind === "f64" ||
|
|
1398
|
+
v.type.kind === "bool" ||
|
|
1399
|
+
v.type.kind === "symbol" ||
|
|
1400
|
+
v.type.kind === "bigint" ||
|
|
1401
|
+
v.type.kind === "nullT" ||
|
|
1402
|
+
v.type.kind === "undefinedT") {
|
|
1114
1403
|
if (isSafeToDiscard(v))
|
|
1115
1404
|
return { kind: "boolLit", value: false, type: BOOL, loc };
|
|
1116
1405
|
return {
|
|
1117
|
-
kind: "seqExpr",
|
|
1118
|
-
|
|
1406
|
+
kind: "seqExpr",
|
|
1407
|
+
stmts: [{ kind: "exprStmt", expr: v, loc: v.loc }],
|
|
1408
|
+
result: { kind: "boolLit", value: false, type: BOOL, loc },
|
|
1409
|
+
type: BOOL,
|
|
1410
|
+
loc,
|
|
1119
1411
|
};
|
|
1120
1412
|
}
|
|
1121
1413
|
if (v.type.kind === "union") {
|
|
1122
1414
|
const def = lowerer.unions.get(v.type.unionId);
|
|
1123
1415
|
const tag = def ? def.arms.findIndex((a) => a.kind === "bytes" && a.elem === "u8") : -1;
|
|
1124
1416
|
if (tag >= 0) {
|
|
1125
|
-
return {
|
|
1417
|
+
return {
|
|
1418
|
+
kind: "unionIsTag",
|
|
1419
|
+
unionId: v.type.unionId,
|
|
1420
|
+
tag,
|
|
1421
|
+
negated: false,
|
|
1422
|
+
value: v,
|
|
1423
|
+
type: BOOL,
|
|
1424
|
+
loc,
|
|
1425
|
+
};
|
|
1126
1426
|
}
|
|
1127
1427
|
}
|
|
1128
1428
|
lowerer.noLowering(`Buffer.isBuffer of '${lowerer.fmt(v.type)}' values`, args[0], "the check lowers as a runtime tag test on unions with a Buffer arm — here the answer is static");
|
|
@@ -1141,9 +1441,21 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
1141
1441
|
const enc = { kind: "strLit", value: encName, type: STRING, loc };
|
|
1142
1442
|
return { kind: "libCall", fn: "buffer.byteLenStr", args: [s, enc], type: F64, loc };
|
|
1143
1443
|
}
|
|
1144
|
-
if ((srcIr === null || srcIr.kind === "dyn") &&
|
|
1145
|
-
|
|
1146
|
-
|
|
1444
|
+
if ((srcIr === null || srcIr.kind === "dyn") &&
|
|
1445
|
+
(!args[1] || ts.isStringLiteralLike(args[1]))) {
|
|
1446
|
+
const encoding = {
|
|
1447
|
+
kind: "strLit",
|
|
1448
|
+
value: args[1] ? bufEncoding(lowerer, "Buffer.byteLength", args[1]) : "utf8",
|
|
1449
|
+
type: STRING,
|
|
1450
|
+
loc,
|
|
1451
|
+
};
|
|
1452
|
+
return {
|
|
1453
|
+
kind: "libCall",
|
|
1454
|
+
fn: "buffer.byteLenDyn",
|
|
1455
|
+
args: [lowerer.lowerExprExpecting(args[0], DYN), encoding],
|
|
1456
|
+
type: F64,
|
|
1457
|
+
loc,
|
|
1458
|
+
};
|
|
1147
1459
|
}
|
|
1148
1460
|
if (srcIr?.kind === "bytes" && args.length === 1) {
|
|
1149
1461
|
const receiver = lowerer.lowerExpr(args[0]);
|
|
@@ -1155,7 +1467,9 @@ function lowerBufferStaticValue(lowerer, call, access) {
|
|
|
1155
1467
|
if (member === "isEncoding") {
|
|
1156
1468
|
// The runtime alias-set test — a plain bool over any string value
|
|
1157
1469
|
// (Node's case-insensitive normalizeEncoding check).
|
|
1158
|
-
if (args.length === 1 &&
|
|
1470
|
+
if (args.length === 1 &&
|
|
1471
|
+
!ts.isSpreadElement(args[0]) &&
|
|
1472
|
+
lowerer.mapTypeOf(lowerer.typeOf(args[0]))?.kind === "string") {
|
|
1159
1473
|
const s = lowerer.lowerExprExpecting(args[0], STRING);
|
|
1160
1474
|
return { kind: "libCall", fn: "buffer.isEncoding", args: [s], type: BOOL, loc };
|
|
1161
1475
|
}
|