@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
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
import { dynUndefinedExpr } from "../../ir/build.js";
|
|
2
|
+
import { InternalCompilerError } from "../../errors.js";
|
|
3
|
+
import * as ts from "../ts7/adapter.js";
|
|
4
|
+
import { AstNode } from "../ts7/ast-node.js";
|
|
5
|
+
import { DYN, F64, JSVAL, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, canDynCheckTo, typeEquals, } from "../../ir/ir.js";
|
|
6
|
+
import { isJsSourceFile, locOf } from "../program.js";
|
|
7
|
+
import { isSafeToDiscard } from "./expressions/evaluation-safety.js";
|
|
8
|
+
import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "./optional-arguments.js";
|
|
9
|
+
import { checkedIterableSpread } from "./checked-iterable-spread.js";
|
|
10
|
+
import {} from "./call-signatures.js";
|
|
11
|
+
function fixedTupleSpreadInfo(lowerer, node) {
|
|
12
|
+
const type = lowerer.mapTypeOf(lowerer.typeOf(node));
|
|
13
|
+
if (type?.kind !== "record")
|
|
14
|
+
return null;
|
|
15
|
+
const shape = lowerer.shapes.get(type.shapeId);
|
|
16
|
+
if (!shape?.tuple || shape.fields.length === 0)
|
|
17
|
+
return null;
|
|
18
|
+
return {
|
|
19
|
+
type,
|
|
20
|
+
fields: [...shape.fields].sort((a, b) => Number(a.name) - Number(b.name)),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** CALL-SITE COMPLETION — the frontend half of the one-signature contract
|
|
24
|
+
* (docs/ir.md): typed calls lower to the callee's full ABI parameter
|
|
25
|
+
* list, so backends and the validator stay count-exact. Dynamic and island
|
|
26
|
+
* calls retain their runtime arity handling. Omitted trailing args for omittable
|
|
27
|
+
* params become the interned undefined arm (which is also what an
|
|
28
|
+
* explicitly-passed `undefined` wraps to — both trigger a default, JS-
|
|
29
|
+
* exact); a rest param packs the surplus args (possibly zero) into one
|
|
30
|
+
* array literal, evaluated in source order at the call site. */
|
|
31
|
+
export function completeArgs(lowerer, argNodes, shapes, loc, blame,
|
|
32
|
+
/** Pre-lowered values virtually PREPENDED to the argument list — the
|
|
33
|
+
* tagged-template strings object, which has no ts.Expression to lower
|
|
34
|
+
* (lowerTaggedTemplate builds it). Each rides the same slot-directed
|
|
35
|
+
* coercion an ordinary argument gets (coerceInto against its shape,
|
|
36
|
+
* DYN conversion in a dyn rest, element coercion in a typed rest). */
|
|
37
|
+
leading) {
|
|
38
|
+
// Conversion eligibility can traverse the whole recursive parameter
|
|
39
|
+
// graph. Ordinary calls and fixed tuples never need that analysis.
|
|
40
|
+
if (argNodes.some((arg) => ts.isSpreadElement(arg) && !fixedTupleSpreadInfo(lowerer, arg.expression)) &&
|
|
41
|
+
canCompleteRuntimeSpread(lowerer, shapes)) {
|
|
42
|
+
// Runtime-length spreads determine the complete argument list before
|
|
43
|
+
// any parameter default runs. Build it once in source order, then
|
|
44
|
+
// extract the fixed native ABI slots; missing elements are undefined.
|
|
45
|
+
const pack = lowerer.declareHiddenLocal("%spreadArgs", DYN);
|
|
46
|
+
const ref = () => ({ kind: "varRef", localId: pack.id, type: DYN, loc });
|
|
47
|
+
const stmts = [
|
|
48
|
+
{
|
|
49
|
+
kind: "varDecl",
|
|
50
|
+
localId: pack.id,
|
|
51
|
+
init: { kind: "dynArrLit", elems: [], type: DYN, loc },
|
|
52
|
+
loc,
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
const push = (value, fn) => {
|
|
56
|
+
stmts.push({
|
|
57
|
+
kind: "exprStmt",
|
|
58
|
+
expr: { kind: "libCall", fn, args: [ref(), value], type: VOID, loc: value.loc },
|
|
59
|
+
loc: value.loc,
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
for (const value of leading ?? [])
|
|
63
|
+
push(lowerer.coerceInto(blame, value, DYN), "dyn.packPush");
|
|
64
|
+
const spreads = argNodes.filter(ts.isSpreadElement).length;
|
|
65
|
+
argNodes.forEach((arg, index) => {
|
|
66
|
+
if (!ts.isSpreadElement(arg)) {
|
|
67
|
+
push(lowerer.lowerExprExpecting(arg, DYN), "dyn.packPush");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
let value = lowerer.lowerExpr(arg.expression);
|
|
71
|
+
if (value.type.kind === "set") {
|
|
72
|
+
value = {
|
|
73
|
+
kind: "setIntrinsic",
|
|
74
|
+
method: "toArray",
|
|
75
|
+
receiver: value,
|
|
76
|
+
args: [],
|
|
77
|
+
type: arrayOf(value.type.elem),
|
|
78
|
+
loc: value.loc,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
else if (value.type.kind === "object") {
|
|
82
|
+
value = lowerer.classIteratorDrainCall(value, locOf(arg)) ?? value;
|
|
83
|
+
}
|
|
84
|
+
if (value.type.kind === "array") {
|
|
85
|
+
// Argument iteration materializes holes as present undefined
|
|
86
|
+
// before conversion to the dense checked-dynamic argument pack.
|
|
87
|
+
value = {
|
|
88
|
+
kind: "arrayLit",
|
|
89
|
+
elems: [value],
|
|
90
|
+
spreads: [0],
|
|
91
|
+
type: value.type,
|
|
92
|
+
loc: value.loc,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
value = checkedIterableSpread(lowerer, value, arg.expression.getText(), loc);
|
|
96
|
+
if (spreads === 1 && index === argNodes.length - 1) {
|
|
97
|
+
stmts.push({
|
|
98
|
+
kind: "exprStmt",
|
|
99
|
+
expr: {
|
|
100
|
+
kind: "libCall",
|
|
101
|
+
fn: "dyn.packPushSpread",
|
|
102
|
+
args: [
|
|
103
|
+
ref(),
|
|
104
|
+
value,
|
|
105
|
+
{ kind: "strLit", value: arg.expression.getText(), type: STRING, loc },
|
|
106
|
+
],
|
|
107
|
+
type: VOID,
|
|
108
|
+
loc,
|
|
109
|
+
},
|
|
110
|
+
loc,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
else
|
|
114
|
+
push(value, "dyn.packPushSpreadIter");
|
|
115
|
+
});
|
|
116
|
+
const args = shapes.map((shape, index) => {
|
|
117
|
+
if (shape.mode === "arguments")
|
|
118
|
+
return ref();
|
|
119
|
+
const value = shape.mode === "rest" || shape.mode === "dynRest"
|
|
120
|
+
? {
|
|
121
|
+
kind: "dynInvoke",
|
|
122
|
+
recv: ref(),
|
|
123
|
+
method: "slice",
|
|
124
|
+
calleeName: "arguments.slice",
|
|
125
|
+
args: [
|
|
126
|
+
{
|
|
127
|
+
kind: "dynFrom",
|
|
128
|
+
value: { kind: "numLit", value: index, type: F64, loc },
|
|
129
|
+
type: DYN,
|
|
130
|
+
loc,
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
type: DYN,
|
|
134
|
+
loc,
|
|
135
|
+
}
|
|
136
|
+
: {
|
|
137
|
+
kind: "dynKeyGet",
|
|
138
|
+
value: ref(),
|
|
139
|
+
key: { kind: "strLit", value: String(index), type: STRING, loc },
|
|
140
|
+
type: DYN,
|
|
141
|
+
loc,
|
|
142
|
+
};
|
|
143
|
+
return lowerer.coerceInto(blame, value, shape.type);
|
|
144
|
+
});
|
|
145
|
+
// Every supported form has at least one native slot to carry the
|
|
146
|
+
// evaluation prefix, including calls whose only slot is their rest.
|
|
147
|
+
args[0] = { kind: "seqExpr", stmts, result: args[0], type: args[0].type, loc };
|
|
148
|
+
return args;
|
|
149
|
+
}
|
|
150
|
+
const isIr = (s) => s !== undefined && !(s instanceof AstNode);
|
|
151
|
+
const sources = leading?.map((ir) => ({ ir })) ?? [];
|
|
152
|
+
for (const arg of argNodes) {
|
|
153
|
+
if (!ts.isSpreadElement(arg)) {
|
|
154
|
+
sources.push(arg);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
const tuple = fixedTupleSpreadInfo(lowerer, arg.expression);
|
|
158
|
+
if (!tuple) {
|
|
159
|
+
sources.push(arg);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// A fixed tuple has a compile-time argument count, so flatten it into
|
|
163
|
+
// the callee's ordinary positional ABI. The operand itself still
|
|
164
|
+
// evaluates exactly once and at the spread's source-order position:
|
|
165
|
+
// the first extracted field carries a seqExpr that initializes one
|
|
166
|
+
// hidden tuple local, and every later field reads that same local.
|
|
167
|
+
// Tuple fields are owned reads, so the call receives the same +1
|
|
168
|
+
// values as separately written arguments while the saved tuple stays
|
|
169
|
+
// alive through the call.
|
|
170
|
+
const spreadLoc = locOf(arg);
|
|
171
|
+
const value = lowerer.coerceInto(arg.expression, lowerer.lowerExpr(arg.expression), tuple.type);
|
|
172
|
+
const saved = lowerer.declareHiddenLocal("%callSpread", tuple.type);
|
|
173
|
+
const savedRef = () => ({
|
|
174
|
+
kind: "varRef",
|
|
175
|
+
localId: saved.id,
|
|
176
|
+
type: tuple.type,
|
|
177
|
+
loc: spreadLoc,
|
|
178
|
+
});
|
|
179
|
+
tuple.fields.forEach((field, i) => {
|
|
180
|
+
const read = {
|
|
181
|
+
kind: "recordGet",
|
|
182
|
+
obj: savedRef(),
|
|
183
|
+
shapeId: tuple.type.shapeId,
|
|
184
|
+
field: field.name,
|
|
185
|
+
type: field.type,
|
|
186
|
+
loc: spreadLoc,
|
|
187
|
+
};
|
|
188
|
+
sources.push({
|
|
189
|
+
ir: i === 0
|
|
190
|
+
? {
|
|
191
|
+
kind: "seqExpr",
|
|
192
|
+
stmts: [{ kind: "varDecl", localId: saved.id, init: value, loc: spreadLoc }],
|
|
193
|
+
result: read,
|
|
194
|
+
type: field.type,
|
|
195
|
+
loc: spreadLoc,
|
|
196
|
+
}
|
|
197
|
+
: read,
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
const restAt = shapes.findIndex((s) => s.mode === "rest" ||
|
|
202
|
+
s.mode === "dynRest" ||
|
|
203
|
+
s.mode === "islandRest" ||
|
|
204
|
+
s.mode === "arguments");
|
|
205
|
+
const positional = restAt >= 0 ? shapes.slice(0, restAt) : [...shapes];
|
|
206
|
+
if (restAt >= 0 && shapes[restAt].mode === "arguments") {
|
|
207
|
+
// JS `arguments` contains every supplied value, including fixed
|
|
208
|
+
// parameters. Store each call expression once, in source order, so
|
|
209
|
+
// both the native parameter slots and the full array read it.
|
|
210
|
+
const stmts = [];
|
|
211
|
+
const passed = sources.map((source, i) => {
|
|
212
|
+
if (!isIr(source) && ts.isSpreadElement(source)) {
|
|
213
|
+
lowerer.unsupported("SC1090", source, "spread arguments into fixed parameter positions (a spread can only fill a rest parameter)");
|
|
214
|
+
}
|
|
215
|
+
const slotType = i < restAt ? positional[i].type : DYN;
|
|
216
|
+
let value;
|
|
217
|
+
if (isIr(source)) {
|
|
218
|
+
let ir = source.ir;
|
|
219
|
+
// Tuple-spread storage also feeds later arguments. Declare it in
|
|
220
|
+
// this shared sequence, not inside one argument's initializer,
|
|
221
|
+
// whose statement frame ends before the next field is read.
|
|
222
|
+
if (ir.kind === "seqExpr") {
|
|
223
|
+
stmts.push(...ir.stmts);
|
|
224
|
+
ir = ir.result;
|
|
225
|
+
}
|
|
226
|
+
value = lowerer.coerceInto(blame, ir, slotType);
|
|
227
|
+
}
|
|
228
|
+
else
|
|
229
|
+
value = lowerer.lowerExprExpecting(source, slotType);
|
|
230
|
+
const saved = lowerer.declareHiddenLocal("%callArg", slotType);
|
|
231
|
+
stmts.push({ kind: "varDecl", localId: saved.id, init: value, loc: value.loc });
|
|
232
|
+
return { kind: "varRef", localId: saved.id, type: slotType, loc: value.loc };
|
|
233
|
+
});
|
|
234
|
+
const fixed = positional.map((shape, i) => {
|
|
235
|
+
if (i < passed.length)
|
|
236
|
+
return passed[i];
|
|
237
|
+
if (shape.mode === "omittable" || lowerer.bareUndefinedArmedUnion(shape.type))
|
|
238
|
+
return shape.callDefault ?? lowerer.undefinedArgFor(shape.type, loc, blame);
|
|
239
|
+
if (shape.type.kind === "dyn")
|
|
240
|
+
return dynUndefinedExpr(loc);
|
|
241
|
+
lowerer.unsupported("SC1090", blame, "this call form");
|
|
242
|
+
});
|
|
243
|
+
const elems = passed.map((value) => lowerer.coerceInto(blame, value, DYN));
|
|
244
|
+
const full = { kind: "dynArrLit", elems, type: DYN, loc };
|
|
245
|
+
const out = [...fixed, full];
|
|
246
|
+
if (stmts.length > 0) {
|
|
247
|
+
out[0] = { kind: "seqExpr", stmts, result: out[0], type: out[0].type, loc };
|
|
248
|
+
}
|
|
249
|
+
return out;
|
|
250
|
+
}
|
|
251
|
+
const out = positional.map((shape, i) => {
|
|
252
|
+
const src = sources[i];
|
|
253
|
+
if (isIr(src))
|
|
254
|
+
return lowerer.coerceInto(blame, src.ir, shape.type);
|
|
255
|
+
const arg = src;
|
|
256
|
+
if (arg && ts.isSpreadElement(arg)) {
|
|
257
|
+
// A spread landing on FIXED parameter positions would need the
|
|
258
|
+
// array's length to decide arity at runtime — the compile-time
|
|
259
|
+
// completion has no home for that. Spreads fill REST slots only.
|
|
260
|
+
lowerer.unsupported("SC1090", arg, "spread arguments into fixed parameter positions (a spread can only fill a rest parameter)");
|
|
261
|
+
}
|
|
262
|
+
if (arg) {
|
|
263
|
+
let operand = arg;
|
|
264
|
+
while (ts.isParenthesizedExpression(operand))
|
|
265
|
+
operand = operand.expression;
|
|
266
|
+
if (ts.isVoidExpression(operand)) {
|
|
267
|
+
const absent = omittedArgFor(lowerer, shape.type, loc);
|
|
268
|
+
const effect = lowerStaticallyUndefinedArgument(lowerer, operand);
|
|
269
|
+
if (absent && effect)
|
|
270
|
+
return defaultAfterUndefined(effect, absent);
|
|
271
|
+
}
|
|
272
|
+
return lowerer.lowerExprExpecting(arg, shape.type);
|
|
273
|
+
}
|
|
274
|
+
if (shape.mode !== "omittable" && !lowerer.bareUndefinedArmedUnion(shape.type)) {
|
|
275
|
+
// A missing argument for a CHECKED-DYNAMIC param (an implicit-any
|
|
276
|
+
// JS signature called short — `mustCall(fn)` with `expected`
|
|
277
|
+
// omitted): JS fills undefined, and the dyn slot holds exactly
|
|
278
|
+
// that — the undefined dyn value. tsc's arity families don't gate
|
|
279
|
+
// .js builds (SEMANTICS.md 116), so the completion lands here.
|
|
280
|
+
if (shape.type.kind === "dyn") {
|
|
281
|
+
return dynUndefinedExpr(loc);
|
|
282
|
+
}
|
|
283
|
+
// tsc's arity checking admits omitting only the omittable suffix;
|
|
284
|
+
// reaching here means a call form we don't model — defensive.
|
|
285
|
+
lowerer.unsupported("SC1090", blame, "this call form");
|
|
286
|
+
}
|
|
287
|
+
if (shape.callDefault)
|
|
288
|
+
return shape.callDefault;
|
|
289
|
+
return lowerer.undefinedArgFor(shape.type, loc, blame);
|
|
290
|
+
});
|
|
291
|
+
if (restAt >= 0 && shapes[restAt].mode === "islandRest") {
|
|
292
|
+
// The ISLAND variadic pack: surplus arguments marshal into one
|
|
293
|
+
// fresh ENGINE array — exactly what the REST host-call adapter
|
|
294
|
+
// hands the closure for indirect calls.
|
|
295
|
+
const elems = sources.slice(restAt).map((a) => {
|
|
296
|
+
if (isIr(a))
|
|
297
|
+
return lowerer.coerceInto(blame, a.ir, JSVAL);
|
|
298
|
+
if (ts.isSpreadElement(a)) {
|
|
299
|
+
lowerer.unsupported("SC1090", a, "spread arguments into an island rest parameter");
|
|
300
|
+
}
|
|
301
|
+
return lowerer.lowerExprExpecting(a, JSVAL);
|
|
302
|
+
});
|
|
303
|
+
out.push({ kind: "jsOp", op: "arrLit", args: elems, type: JSVAL, loc });
|
|
304
|
+
}
|
|
305
|
+
else if (restAt >= 0 && shapes[restAt].mode === "dynRest") {
|
|
306
|
+
// The VARIADIC dyn pack (a JS `...args` with no static element
|
|
307
|
+
// type, or the synthetic `arguments` slot): surplus arguments
|
|
308
|
+
// convert through the dyn boundary into one fresh dyn array —
|
|
309
|
+
// exactly what the boxed call thunk builds for indirect calls.
|
|
310
|
+
const elems = sources.slice(restAt).map((a) => {
|
|
311
|
+
if (isIr(a))
|
|
312
|
+
return lowerer.coerceInto(blame, a.ir, DYN);
|
|
313
|
+
if (ts.isSpreadElement(a)) {
|
|
314
|
+
lowerer.unsupported("SC1090", a, "spread arguments into a dynamic rest parameter");
|
|
315
|
+
}
|
|
316
|
+
return lowerer.lowerExprExpecting(a, DYN);
|
|
317
|
+
});
|
|
318
|
+
out.push({ kind: "dynArrLit", elems, type: DYN, loc });
|
|
319
|
+
}
|
|
320
|
+
else if (restAt >= 0) {
|
|
321
|
+
const restType = shapes[restAt].type;
|
|
322
|
+
// A TUPLE-typed rest (`(...[x, y]: [number, number])` — the pattern
|
|
323
|
+
// rest form): tsc pins the call to exactly the tuple's arity, so
|
|
324
|
+
// the pack is a positional record literal. Spreads stay fenced —
|
|
325
|
+
// their length is a runtime fact the fixed shape cannot take.
|
|
326
|
+
if (restType.kind === "record") {
|
|
327
|
+
const tupleShape = lowerer.shapes.get(restType.shapeId);
|
|
328
|
+
if (tupleShape?.tuple) {
|
|
329
|
+
const rest = sources.slice(restAt);
|
|
330
|
+
if (rest.some((a) => !isIr(a) && ts.isSpreadElement(a)) ||
|
|
331
|
+
rest.length !== tupleShape.fields.length) {
|
|
332
|
+
lowerer.unsupported("SC1090", blame, "spread or arity-mismatched arguments into a tuple-typed rest parameter");
|
|
333
|
+
}
|
|
334
|
+
out.push({
|
|
335
|
+
kind: "recordLit",
|
|
336
|
+
fields: rest.map((a, i) => {
|
|
337
|
+
const f = tupleShape.fields.find((x) => x.name === String(i));
|
|
338
|
+
return {
|
|
339
|
+
name: f.name,
|
|
340
|
+
value: isIr(a)
|
|
341
|
+
? lowerer.coerceInto(blame, a.ir, f.type)
|
|
342
|
+
: lowerer.lowerExprExpecting(a, f.type),
|
|
343
|
+
};
|
|
344
|
+
}),
|
|
345
|
+
type: restType,
|
|
346
|
+
loc,
|
|
347
|
+
});
|
|
348
|
+
return out;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
if (restType.kind !== "array")
|
|
352
|
+
lowerer.unsupported("SC1090", blame, "this call form");
|
|
353
|
+
// The rest pack is a fresh array per call; surplus SPREADS copy
|
|
354
|
+
// their elements in (JS-exact — `f(a, ...xs, b, ...ys)` packs in
|
|
355
|
+
// order, sources untouched).
|
|
356
|
+
const spreads = [];
|
|
357
|
+
const elems = sources.slice(restAt).map((a, i) => {
|
|
358
|
+
if (isIr(a))
|
|
359
|
+
return lowerer.coerceInto(blame, a.ir, restType.elem);
|
|
360
|
+
if (ts.isSpreadElement(a)) {
|
|
361
|
+
let src = lowerer.lowerExpr(a.expression);
|
|
362
|
+
// A same-element Set spread drains first (setIntrinsic toArray).
|
|
363
|
+
if (src.type.kind === "set" && typeEquals(src.type.elem, restType.elem)) {
|
|
364
|
+
src = {
|
|
365
|
+
kind: "setIntrinsic",
|
|
366
|
+
method: "toArray",
|
|
367
|
+
receiver: src,
|
|
368
|
+
args: [],
|
|
369
|
+
type: arrayOf(src.type.elem),
|
|
370
|
+
loc: locOf(a),
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
// A CLASS ITERABLE spread (`foo(...new SymbolIterator)`) drains
|
|
374
|
+
// through its protocol into a fresh array (classIteratorDrainCall).
|
|
375
|
+
if (src.type.kind === "object") {
|
|
376
|
+
const drained = lowerer.classIteratorDrainCall(src, locOf(a), restType.elem);
|
|
377
|
+
if (drained)
|
|
378
|
+
src = drained;
|
|
379
|
+
}
|
|
380
|
+
// Same-family arrays whose element lifts reshape through the
|
|
381
|
+
// interned width helper (the array-literal spread rule).
|
|
382
|
+
if (src.type.kind === "array" && !typeEquals(src.type, restType)) {
|
|
383
|
+
const w = lowerer.widthCoerce(src, restType);
|
|
384
|
+
if (w)
|
|
385
|
+
src = w;
|
|
386
|
+
}
|
|
387
|
+
if (!typeEquals(src.type, restType)) {
|
|
388
|
+
lowerer.unsupported("SC1090", a, `spreading '${lowerer.fmt(src.type)}' into a '${lowerer.fmt(restType)}' rest parameter (only a same-element-type array spreads)`);
|
|
389
|
+
}
|
|
390
|
+
spreads.push(i);
|
|
391
|
+
return src;
|
|
392
|
+
}
|
|
393
|
+
return lowerer.lowerExprExpecting(a, restType.elem);
|
|
394
|
+
});
|
|
395
|
+
out.push({
|
|
396
|
+
kind: "arrayLit",
|
|
397
|
+
elems,
|
|
398
|
+
...(spreads.length > 0 ? { spreads } : {}),
|
|
399
|
+
type: restType,
|
|
400
|
+
loc,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
// Surplus args without a rest param: JS evaluates them in order and
|
|
405
|
+
// DROPS them (tsc's arity families don't gate .js builds —
|
|
406
|
+
// SEMANTICS.md 116, so `f(a, b, c, d)` against `function f(a, b, c)`
|
|
407
|
+
// reaches here). The completed call has no slot for them — pushing
|
|
408
|
+
// them through would break the one-signature contract (the validator
|
|
409
|
+
// catches exactly that). Effect-free lowerings (literals, plain
|
|
410
|
+
// reads, closures — the recordLit drop-field list) drop at compile
|
|
411
|
+
// time, JS-exact; an EFFECTFUL surplus (a call, an await, an
|
|
412
|
+
// assignment) has no evaluation slot in an expression-position
|
|
413
|
+
// completion, so it fences by name rather than silently not running.
|
|
414
|
+
for (let i = positional.length; i < sources.length; i++) {
|
|
415
|
+
const a = sources[i];
|
|
416
|
+
if (isIr(a))
|
|
417
|
+
continue; // pre-lowered leading values are effect-free
|
|
418
|
+
if (ts.isSpreadElement(a)) {
|
|
419
|
+
lowerer.unsupported("SC1090", a, "spread arguments into fixed parameter positions (a spread can only fill a rest parameter)");
|
|
420
|
+
}
|
|
421
|
+
const v = lowerer.lowerExpr(a);
|
|
422
|
+
if (!isSafeToDiscard(v)) {
|
|
423
|
+
lowerer.unsupported("SC1090", a, "surplus arguments with side effects (JS evaluates surplus arguments to a function without a rest parameter, then drops them; only effect-free surplus arguments compile)");
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return out;
|
|
428
|
+
}
|
|
429
|
+
/** The undefined arm of an undefined-armed union `type`, wrapped (a
|
|
430
|
+
* unitLit under a unionWrap) — the value every "absent" slot holds: an
|
|
431
|
+
* omitted optional argument, an omitted optional record field. Null when
|
|
432
|
+
* `type` has no undefined arm to wrap into. */
|
|
433
|
+
export function wrappedUndefined(lowerer, type, loc) {
|
|
434
|
+
const unit = { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc };
|
|
435
|
+
const wrapped = lowerer.coerceToExpected(unit, type);
|
|
436
|
+
return wrapped.kind === "unionWrap" ? wrapped : null;
|
|
437
|
+
}
|
|
438
|
+
/** The synthesized argument for an omitted omittable param: the interned
|
|
439
|
+
* undefined arm of the param's `T | undefined` ABI union, or the checked-dynamic tree
|
|
440
|
+
* undefined for a checked-dynamic param (`bar?: any`). */
|
|
441
|
+
/** The "absent argument" value for a param SLOT type, or null when the
|
|
442
|
+
* slot cannot hold one: the interned undefined arm for undefined-armed
|
|
443
|
+
* unions, the dyn undefined for checked-dynamic slots, the engine's own
|
|
444
|
+
* undefined for island slots. Shared by every call-completion loop
|
|
445
|
+
* (direct calls and calls through func-typed values). */
|
|
446
|
+
export function omittedArgFor(lowerer, type, loc) {
|
|
447
|
+
if (type.kind === "dyn")
|
|
448
|
+
return dynUndefinedExpr(loc);
|
|
449
|
+
if (type.kind === "jsval")
|
|
450
|
+
return { kind: "jsOp", op: "undefLit", args: [], type: JSVAL, loc };
|
|
451
|
+
return lowerer.wrappedUndefined(type, loc);
|
|
452
|
+
}
|
|
453
|
+
/** Complete an indirect static call against its func value ABI. Ordinary
|
|
454
|
+
* fixed-width values retain the historical optional-suffix completion.
|
|
455
|
+
* Typed-rest values reinterpret their final array slot as a rest ParamShape
|
|
456
|
+
* and reuse completeArgs, including fixed-tuple and same-element array
|
|
457
|
+
* spreads with source-order/evaluate-once semantics. */
|
|
458
|
+
export function completeFuncValueArgs(lowerer, call, funcType, loc) {
|
|
459
|
+
if (funcType.rest === true && funcType.restAbi === "typed") {
|
|
460
|
+
const rest = funcType.params[funcType.params.length - 1];
|
|
461
|
+
if (!rest || rest.kind !== "array") {
|
|
462
|
+
throw new InternalCompilerError("typed-rest function value has no trailing array ABI slot");
|
|
463
|
+
}
|
|
464
|
+
const shapes = funcType.params.slice(0, -1).map((type) => ({
|
|
465
|
+
type,
|
|
466
|
+
mode: omittedArgFor(lowerer, type, loc) ? "omittable" : "required",
|
|
467
|
+
}));
|
|
468
|
+
shapes.push({ type: rest, mode: "rest" });
|
|
469
|
+
return completeArgs(lowerer, call.arguments, shapes, loc, call);
|
|
470
|
+
}
|
|
471
|
+
const args = call.arguments.map((arg, index) => lowerer.lowerExprExpecting(arg, funcType.params[index]));
|
|
472
|
+
for (let i = args.length; i < funcType.params.length; i++) {
|
|
473
|
+
const absent = omittedArgFor(lowerer, funcType.params[i], loc);
|
|
474
|
+
if (!absent) {
|
|
475
|
+
lowerer.unsupported("SC1090", call, "calls omitting a non-optional parameter of the callee's type");
|
|
476
|
+
}
|
|
477
|
+
args.push(absent);
|
|
478
|
+
}
|
|
479
|
+
return args;
|
|
480
|
+
}
|
|
481
|
+
export function undefinedArgFor(lowerer, type, loc, blame) {
|
|
482
|
+
if (type.kind === "dyn")
|
|
483
|
+
return dynUndefinedExpr(loc);
|
|
484
|
+
// An omitted argument for an ISLAND-typed omittable param (`f()` where
|
|
485
|
+
// f's `x = a` default is jsval-shaped): the engine's own undefined.
|
|
486
|
+
if (type.kind === "jsval")
|
|
487
|
+
return { kind: "jsOp", op: "undefLit", args: [], type: JSVAL, loc };
|
|
488
|
+
const wrapped = lowerer.wrappedUndefined(type, loc);
|
|
489
|
+
if (!wrapped) {
|
|
490
|
+
// Omittable params always carry an undefined-armed union (paramShape
|
|
491
|
+
// guarantees it) — defensive.
|
|
492
|
+
lowerer.unsupported("SC1090", blame, "this call form");
|
|
493
|
+
}
|
|
494
|
+
return wrapped;
|
|
495
|
+
}
|
|
496
|
+
/** The RUNTIME-ARITY spread call — `f(...args)`, the rest-forwarding idiom
|
|
497
|
+
* (`const f = (...args) => from(...args)`): a spread whose length is a
|
|
498
|
+
* runtime fact has no home in the compile-time completion, so the call
|
|
499
|
+
* rides a dynamic boundary instead. Two lanes, picked by the spread
|
|
500
|
+
* source's tier:
|
|
501
|
+
*
|
|
502
|
+
* - CHECKED-DYNAMIC (dyn spread sources — a JS rest binding, a dyn
|
|
503
|
+
* value): box the callee (dynFrom; a dyn callee is already boxed),
|
|
504
|
+
* convert every argument into dyn, and emit the spread-marked dynCall
|
|
505
|
+
* — the emitters build one fresh dyn argument array (spreads flatten
|
|
506
|
+
* left-to-right, non-iterables throw V8's TypeError) and apply through
|
|
507
|
+
* it; the boxed thunk delivers JS arity exactly. Result dyn, checked
|
|
508
|
+
* per use like every any-origin value.
|
|
509
|
+
* - ISLAND (a jsval spread source — the --dynamic rest binding is the
|
|
510
|
+
* engine's own arguments array): marshal the callee in and emit jsOp
|
|
511
|
+
* callSpread — the prelude helper's REAL `f(...pre, ...s)`, so
|
|
512
|
+
* iterator protocols and the not-iterable TypeError are the engine's
|
|
513
|
+
* own. One trailing spread after the fixed arguments is the modeled
|
|
514
|
+
* shape (exactly the forwarding idiom).
|
|
515
|
+
*
|
|
516
|
+
* Answers null when neither lane fits (typed .ts spreads keep
|
|
517
|
+
* completeArgs' rest packing and its fences). JS sources only — the
|
|
518
|
+
* same guard as the over-arity dynCall precedent. */
|
|
519
|
+
export function lowerSpreadArgsCall(lowerer, expr, callee, loc) {
|
|
520
|
+
if (!isJsSourceFile(expr.getSourceFile()))
|
|
521
|
+
return null;
|
|
522
|
+
if (!expr.arguments.some((a) => ts.isSpreadElement(a)))
|
|
523
|
+
return null;
|
|
524
|
+
if (callee.type.kind !== "dyn" && callee.type.kind !== "func" && callee.type.kind !== "jsval")
|
|
525
|
+
return null;
|
|
526
|
+
const calleeName = ts.isPropertyAccessExpression(expr.expression) || ts.isElementAccessExpression(expr.expression)
|
|
527
|
+
? expr.expression.getText()
|
|
528
|
+
: ts.isIdentifier(expr.expression)
|
|
529
|
+
? expr.expression.text
|
|
530
|
+
: "value";
|
|
531
|
+
// Lower every argument ONCE, in source order (the IR nests them in
|
|
532
|
+
// exactly this order, so runtime evaluation order is JS's).
|
|
533
|
+
const parts = expr.arguments.map((a) => ts.isSpreadElement(a)
|
|
534
|
+
? { spreadOf: a.expression, node: null, v: lowerer.lowerExpr(a.expression) }
|
|
535
|
+
: { spreadOf: null, node: a, v: lowerer.lowerExpr(a) });
|
|
536
|
+
const spreadParts = parts.filter((p) => p.spreadOf !== null);
|
|
537
|
+
const getR = (id) => lowerer.shapes.get(id);
|
|
538
|
+
const getU = (id) => lowerer.unions.get(id);
|
|
539
|
+
const anyJsvalSpread = spreadParts.some((p) => p.v.type.kind === "jsval");
|
|
540
|
+
if (!anyJsvalSpread &&
|
|
541
|
+
(callee.type.kind === "dyn" ||
|
|
542
|
+
(callee.type.kind === "func" && canBoxFuncIntoDyn(callee.type, getR, getU))) &&
|
|
543
|
+
spreadParts.every((p) => p.v.type.kind === "dyn" || canConvertToDyn(p.v.type, getR, getU))) {
|
|
544
|
+
const args = [];
|
|
545
|
+
const spreads = [];
|
|
546
|
+
for (const p of parts) {
|
|
547
|
+
if (p.spreadOf !== null) {
|
|
548
|
+
// The spelling rides along for V8's nullish spread-call
|
|
549
|
+
// TypeError ("v is not iterable (cannot read property ...)").
|
|
550
|
+
spreads.push({ arg: args.length, what: p.spreadOf.getText() });
|
|
551
|
+
args.push(checkedIterableSpread(lowerer, p.v, p.spreadOf.getText(), loc));
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
args.push(lowerer.coerceInto(p.node, p.v, DYN));
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
const boxed = callee.type.kind === "dyn" ? callee : lowerer.coerceInto(expr.expression, callee, DYN);
|
|
558
|
+
return { kind: "dynCall", callee: boxed, calleeName, args, spreads, type: DYN, loc };
|
|
559
|
+
}
|
|
560
|
+
if (spreadParts.length > 0 &&
|
|
561
|
+
(spreadParts.every((p) => p.v.type.kind === "jsval") ||
|
|
562
|
+
(callee.type.kind === "func" && callee.type.restAbi === "jsval")) &&
|
|
563
|
+
(callee.type.kind === "jsval" || callee.type.kind === "func")) {
|
|
564
|
+
if (spreadParts.length !== 1 || parts[parts.length - 1].spreadOf === null) {
|
|
565
|
+
lowerer.unsupported("SC1090", expr, "spread arguments before positional arguments in island calls (one trailing spread after the fixed arguments is the supported form)");
|
|
566
|
+
}
|
|
567
|
+
const f = lowerer.coerceInto(expr.expression, callee, JSVAL);
|
|
568
|
+
const pre = parts.slice(0, -1).map((p) => lowerer.coerceInto(p.node, p.v, JSVAL));
|
|
569
|
+
const preArr = { kind: "jsOp", op: "arrLit", args: pre, type: JSVAL, loc };
|
|
570
|
+
const last = parts[parts.length - 1];
|
|
571
|
+
// The spelling rides in `name` for V8's nullish spread-call
|
|
572
|
+
// TypeError ("v is not iterable (cannot read property ...)").
|
|
573
|
+
return {
|
|
574
|
+
kind: "jsOp",
|
|
575
|
+
op: "callSpread",
|
|
576
|
+
name: last.spreadOf.getText(),
|
|
577
|
+
args: [f, preArr, lowerer.coerceInto(last.spreadOf, last.v, JSVAL)],
|
|
578
|
+
type: JSVAL,
|
|
579
|
+
loc,
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
// No lane fits (a spread source outside both tiers, a callee neither
|
|
583
|
+
// boxable nor marshalable, mixed dyn/jsval spreads): fence HERE — the
|
|
584
|
+
// arguments are already lowered, and falling back to the historical
|
|
585
|
+
// per-site fences would lower them a second time (duplicate lambda
|
|
586
|
+
// lifts, duplicated diagnostics).
|
|
587
|
+
lowerer.unsupported("SC1090", expr, "spread arguments");
|
|
588
|
+
}
|
|
589
|
+
/** True when a spread argument lands where the compile-time completion
|
|
590
|
+
* cannot take it — a FIXED parameter position, or a dynamic rest slot
|
|
591
|
+
* (dynRest/islandRest, whose packs are built per-argument): the shapes
|
|
592
|
+
* the runtime-arity lane (lowerSpreadArgsCall) serves. Typed `rest`
|
|
593
|
+
* slots keep completeArgs' same-element spread packing. */
|
|
594
|
+
export function spreadNeedsRuntimeArity(lowerer, shapes, argNodes) {
|
|
595
|
+
const restAt = shapes.findIndex((s) => s.mode === "rest" || s.mode === "dynRest" || s.mode === "islandRest");
|
|
596
|
+
let position = 0;
|
|
597
|
+
for (const arg of argNodes) {
|
|
598
|
+
if (ts.isSpreadElement(arg)) {
|
|
599
|
+
const tuple = fixedTupleSpreadInfo(lowerer, arg.expression);
|
|
600
|
+
if (tuple) {
|
|
601
|
+
position += tuple.fields.length;
|
|
602
|
+
continue;
|
|
603
|
+
}
|
|
604
|
+
if (restAt < 0 || position < restAt || shapes[restAt].mode !== "rest") {
|
|
605
|
+
return !canCompleteRuntimeSpread(lowerer, shapes);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
position++;
|
|
609
|
+
}
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
612
|
+
function canCompleteRuntimeSpread(lowerer, shapes) {
|
|
613
|
+
return (shapes.length > 0 &&
|
|
614
|
+
shapes.every((shape) => shape.mode !== "islandRest" &&
|
|
615
|
+
shape.callDefault === undefined &&
|
|
616
|
+
canDynCheckTo(shape.type, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))));
|
|
617
|
+
}
|
|
618
|
+
//# sourceMappingURL=call-arguments.js.map
|