@scriptc/compiler 0.1.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +73 -25
- package/ambient/scriptc-overrides.d.ts +10 -6
- package/ambient/scriptc.d.ts +28 -5
- package/dist/backend/build-cache.d.ts +1 -3
- package/dist/backend/build-cache.js +3 -22
- package/dist/backend/build-cache.js.map +1 -1
- package/dist/backend/cache-root.d.ts +3 -0
- package/dist/backend/cache-root.js +23 -0
- package/dist/backend/cache-root.js.map +1 -0
- package/dist/backend/cycle-analysis.d.ts +15 -0
- package/dist/backend/cycle-analysis.js +107 -0
- package/dist/backend/cycle-analysis.js.map +1 -0
- package/dist/backend/cycle-analysis.test.js +124 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -0
- package/dist/backend/debug-symbols.d.ts +8 -0
- package/dist/backend/debug-symbols.js +52 -0
- package/dist/backend/debug-symbols.js.map +1 -0
- package/dist/backend/executable-features.d.ts +4 -0
- package/dist/backend/executable-features.js +42 -0
- package/dist/backend/executable-features.js.map +1 -0
- package/dist/backend/external-c.d.ts +5 -27
- package/dist/backend/external-c.js +5 -40
- package/dist/backend/external-c.js.map +1 -1
- package/dist/backend/ffi-callbacks.d.ts +2 -3
- package/dist/backend/ffi-callbacks.js +2 -3
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/library-identity-markers.d.ts +4 -9
- package/dist/backend/library-identity-markers.js +11 -49
- package/dist/backend/library-identity-markers.js.map +1 -1
- package/dist/backend/library-pack.d.ts +5 -0
- package/dist/backend/library-pack.js +123 -0
- package/dist/backend/library-pack.js.map +1 -0
- package/dist/backend/link-plan-core.d.ts +20 -0
- package/dist/backend/link-plan-core.js +18 -0
- package/dist/backend/link-plan-core.js.map +1 -0
- package/dist/backend/link-plan.d.ts +2 -1
- package/dist/backend/link-plan.js +18 -17
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/link-trace.d.ts +2 -0
- package/dist/backend/link-trace.js +24 -0
- package/dist/backend/link-trace.js.map +1 -0
- package/dist/backend/linker.js +9 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/literals.d.ts +9 -0
- package/dist/backend/literals.js +35 -0
- package/dist/backend/literals.js.map +1 -0
- package/dist/backend/literals.test.d.ts +1 -0
- package/dist/backend/literals.test.js +53 -0
- package/dist/backend/literals.test.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +4 -0
- package/dist/backend/llvm/blocks.js +25 -4
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.d.ts +1 -0
- package/dist/backend/llvm/blocks.test.js +91 -0
- package/dist/backend/llvm/blocks.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +14 -8
- package/dist/backend/llvm/classes.js +70 -28
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -1
- package/dist/backend/llvm/common.js +45 -4
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +32 -0
- package/dist/backend/llvm/debug-info.js +198 -0
- package/dist/backend/llvm/debug-info.js.map +1 -0
- package/dist/backend/llvm/debug-info.test.d.ts +1 -0
- package/dist/backend/llvm/debug-info.test.js +110 -0
- package/dist/backend/llvm/debug-info.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +16 -2
- package/dist/backend/llvm/dyn.js +498 -175
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +598 -1
- package/dist/backend/llvm/emitter.js +739 -409
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.d.ts +1 -0
- package/dist/backend/llvm/emitter.test.js +179 -0
- package/dist/backend/llvm/emitter.test.js.map +1 -0
- package/dist/backend/llvm/expr-async.js +23 -14
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +32 -14
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-callbacks.js +25 -22
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +136 -35
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +1 -1
- package/dist/backend/llvm/expr-containers.js +43 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +5 -260
- package/dist/backend/llvm/expr-control.js +9 -5
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.d.ts +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +72 -74
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.d.ts +1 -1
- package/dist/backend/llvm/expr-island.js +11 -7
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +51 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +1 -1
- package/dist/backend/llvm/expr-records.d.ts +5 -1
- package/dist/backend/llvm/expr-records.js +43 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +4 -4
- package/dist/backend/llvm/expr-stream-bridges.js +102 -121
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.d.ts +1 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js +55 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -0
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +12 -12
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +19 -0
- package/dist/backend/llvm/layouts.js +12 -0
- package/dist/backend/llvm/layouts.js.map +1 -0
- package/dist/backend/llvm/lib-abi.d.ts +19 -0
- package/dist/backend/llvm/lib-abi.js +82 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -0
- package/dist/backend/llvm/lib-connect.d.ts +2 -0
- package/dist/backend/llvm/lib-connect.js +51 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.d.ts +2 -0
- package/dist/backend/llvm/lib-datagram.js +135 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -0
- package/dist/backend/llvm/lib-dispatch.js +50 -6
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +59 -18
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +2 -0
- package/dist/backend/llvm/lib-http2.js +215 -0
- package/dist/backend/llvm/lib-http2.js.map +1 -0
- package/dist/backend/llvm/lib-lookup.d.ts +2 -0
- package/dist/backend/llvm/lib-lookup.js +39 -0
- package/dist/backend/llvm/lib-lookup.js.map +1 -0
- package/dist/backend/llvm/lib-network.js +25 -2
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +21 -16
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +125 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +3 -2
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.d.ts +2 -0
- package/dist/backend/llvm/lib-test.js +34 -0
- package/dist/backend/llvm/lib-test.js.map +1 -0
- package/dist/backend/llvm/lib-tls.d.ts +2 -0
- package/dist/backend/llvm/lib-tls.js +82 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +10 -9
- package/dist/backend/llvm/shapes.js +35 -130
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/split.js +4 -1
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +26 -1
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/unsupported.d.ts +1 -0
- package/dist/backend/llvm/unsupported.js +1 -2
- package/dist/backend/llvm/unsupported.js.map +1 -1
- package/dist/backend/llvm/walkers.js +1 -7
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/mangle.d.ts +2 -2
- package/dist/backend/mangle.js +16 -5
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/{c/may-throw.d.ts → may-throw.d.ts} +1 -1
- package/dist/backend/{c/may-throw.js → may-throw.js} +51 -46
- package/dist/backend/may-throw.js.map +1 -0
- package/dist/backend/may-throw.test.d.ts +1 -0
- package/dist/backend/may-throw.test.js +58 -0
- package/dist/backend/may-throw.test.js.map +1 -0
- package/dist/backend/native-codegen-core.d.ts +22 -0
- package/dist/backend/native-codegen-core.js +44 -0
- package/dist/backend/native-codegen-core.js.map +1 -0
- package/dist/backend/native-codegen.d.ts +3 -19
- package/dist/backend/native-codegen.js +5 -44
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +2 -2
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +94 -0
- package/dist/backend/native-link-info-core.js +62 -0
- package/dist/backend/native-link-info-core.js.map +1 -0
- package/dist/backend/native-link-info.d.ts +3 -88
- package/dist/backend/native-link-info.js +12 -243
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +41 -146
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +10 -25
- package/dist/backend/native-toolchain.js +89 -219
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +15 -5
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +24 -0
- package/dist/backend/native-tools.js +33 -0
- package/dist/backend/native-tools.js.map +1 -0
- package/dist/backend/object-localize.js +19 -8
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +22 -0
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +101 -0
- package/dist/backend/runtime-pack-core.js +172 -0
- package/dist/backend/runtime-pack-core.js.map +1 -0
- package/dist/backend/runtime-pack-native.d.ts +21 -0
- package/dist/backend/runtime-pack-native.js +70 -0
- package/dist/backend/runtime-pack-native.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.d.ts +3 -83
- package/dist/backend/runtime-pack.js +8 -151
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +24 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/source-locations.d.ts +12 -0
- package/dist/backend/source-locations.js +32 -0
- package/dist/backend/source-locations.js.map +1 -0
- package/dist/backend/source-locations.test.d.ts +1 -0
- package/dist/backend/source-locations.test.js +16 -0
- package/dist/backend/source-locations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.d.ts +22 -0
- package/dist/backend/target-diagnostics.js +108 -0
- package/dist/backend/target-diagnostics.js.map +1 -0
- package/dist/backend/target-platform.d.ts +15 -0
- package/dist/backend/target-platform.js +72 -0
- package/dist/backend/target-platform.js.map +1 -0
- package/dist/backend/targets.d.ts +13 -4
- package/dist/backend/targets.js +95 -30
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +65 -4
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/backend/toolchain-environment.d.ts +6 -0
- package/dist/backend/toolchain-environment.js +99 -0
- package/dist/backend/toolchain-environment.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +1 -9
- package/dist/backend/vendor-archives.js +2 -9
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +9 -0
- package/dist/backend/vendor-inputs.js +10 -0
- package/dist/backend/vendor-inputs.js.map +1 -0
- package/dist/backend/warm-cache.d.ts +3 -0
- package/dist/backend/warm-cache.js +41 -0
- package/dist/backend/warm-cache.js.map +1 -0
- package/dist/cli/command.d.ts +3 -0
- package/dist/cli/command.js +328 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/host.d.ts +24 -0
- package/dist/cli/host.js +2 -0
- package/dist/cli/host.js.map +1 -0
- package/dist/cli/output-options.d.ts +26 -0
- package/dist/cli/output-options.js +60 -0
- package/dist/cli/output-options.js.map +1 -0
- package/dist/cli/paths.d.ts +12 -0
- package/dist/cli/paths.js +42 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/usage.d.ts +74 -0
- package/dist/cli/usage.js +86 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/cli/wasi-paths.d.ts +8 -0
- package/dist/cli/wasi-paths.js +41 -0
- package/dist/cli/wasi-paths.js.map +1 -0
- package/dist/cli/wasi-runner.d.ts +2 -0
- package/dist/cli/wasi-runner.js +28 -0
- package/dist/cli/wasi-runner.js.map +1 -0
- package/dist/compat/fetch-profile.js +3 -3
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +162 -0
- package/dist/compile-types.js +2 -0
- package/dist/compile-types.js.map +1 -0
- package/dist/coverage/report.js +11 -5
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +5 -2
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js +15 -3
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -4
- package/dist/executable/executable-cache.js +33 -10
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +38 -16
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +14 -0
- package/dist/executable/prepare.js +66 -0
- package/dist/executable/prepare.js.map +1 -0
- package/dist/ffi/ffi-manifest.d.ts +11 -4
- package/dist/ffi/ffi-manifest.js +170 -58
- package/dist/ffi/ffi-manifest.js.map +1 -1
- package/dist/ffi/ffi-manifest.test.d.ts +1 -0
- package/dist/ffi/ffi-manifest.test.js +111 -0
- package/dist/ffi/ffi-manifest.test.js.map +1 -0
- package/dist/format-integer.d.ts +3 -0
- package/dist/format-integer.js +14 -0
- package/dist/format-integer.js.map +1 -0
- package/dist/frontend/analysis.d.ts +5 -0
- package/dist/frontend/analysis.js +88 -0
- package/dist/frontend/analysis.js.map +1 -0
- package/dist/frontend/arguments-usage.d.ts +4 -0
- package/dist/frontend/arguments-usage.js +40 -0
- package/dist/frontend/arguments-usage.js.map +1 -0
- package/dist/frontend/binding-source.d.ts +4 -0
- package/dist/frontend/binding-source.js +18 -0
- package/dist/frontend/binding-source.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -1
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-lexer.d.ts +4 -25
- package/dist/frontend/cjs-lexer.js +6 -806
- package/dist/frontend/cjs-lexer.js.map +1 -1
- package/dist/frontend/cjs-resolve.d.ts +5 -0
- package/dist/frontend/cjs-resolve.js +429 -0
- package/dist/frontend/cjs-resolve.js.map +1 -0
- package/dist/frontend/cjs-syntax.d.ts +26 -0
- package/dist/frontend/cjs-syntax.js +806 -0
- package/dist/frontend/cjs-syntax.js.map +1 -0
- package/dist/frontend/comptime-node.d.ts +4 -0
- package/dist/frontend/comptime-node.js +16 -0
- package/dist/frontend/comptime-node.js.map +1 -0
- package/dist/frontend/comptime-node.test.d.ts +1 -0
- package/dist/frontend/comptime-node.test.js +37 -0
- package/dist/frontend/comptime-node.test.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +3 -4
- package/dist/frontend/dts-paths.js +15 -8
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/fork-target.js +2 -2
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/helper-tokens.d.ts +1 -0
- package/dist/frontend/helper-tokens.js +147 -0
- package/dist/frontend/helper-tokens.js.map +1 -0
- package/dist/frontend/helper-tokens.test.d.ts +1 -0
- package/dist/frontend/helper-tokens.test.js +35 -0
- package/dist/frontend/helper-tokens.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.d.ts +5 -0
- package/dist/frontend/inferred-js-diagnostics.js +69 -0
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.d.ts +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +58 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +5 -2
- package/dist/frontend/input-tracker.js +24 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +23 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lib-contract.js +32 -24
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/literal-values.d.ts +4 -0
- package/dist/frontend/literal-values.js +21 -0
- package/dist/frontend/literal-values.js.map +1 -0
- package/dist/frontend/literal-values.test.d.ts +1 -0
- package/dist/frontend/literal-values.test.js +91 -0
- package/dist/frontend/literal-values.test.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.d.ts +1 -1
- package/dist/frontend/lowering/abstract-equality.js +3 -0
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +11 -6
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +4 -1
- package/dist/frontend/lowering/array-values.js +43 -1
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/callback-arg.js +1 -0
- package/dist/frontend/lowering/callback-arg.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +12 -0
- package/dist/frontend/lowering/class-callbacks.js +63 -0
- package/dist/frontend/lowering/class-callbacks.js.map +1 -0
- package/dist/frontend/lowering/class-descriptors.d.ts +9 -0
- package/dist/frontend/lowering/class-descriptors.js +73 -0
- package/dist/frontend/lowering/class-descriptors.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +41 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +803 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.d.ts +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +92 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -0
- package/dist/frontend/lowering/class-instance-constructor.d.ts +7 -0
- package/dist/frontend/lowering/class-instance-constructor.js +64 -0
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
- package/dist/frontend/lowering/class-method-values.d.ts +10 -0
- package/dist/frontend/lowering/class-method-values.js +170 -0
- package/dist/frontend/lowering/class-method-values.js.map +1 -0
- package/dist/frontend/lowering/class-prototypes.d.ts +16 -0
- package/dist/frontend/lowering/class-prototypes.js +134 -0
- package/dist/frontend/lowering/class-prototypes.js.map +1 -0
- package/dist/frontend/lowering/class-static-data.d.ts +6 -0
- package/dist/frontend/lowering/class-static-data.js +56 -0
- package/dist/frontend/lowering/class-static-data.js.map +1 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.d.ts +4 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js +26 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.d.ts +11 -7
- package/dist/frontend/lowering/containers/bytes.js +164 -155
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +2 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +39 -16
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.d.ts +7 -0
- package/dist/frontend/lowering/containers/string-replacement.js +217 -0
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -0
- package/dist/frontend/lowering/error-methods.d.ts +11 -0
- package/dist/frontend/lowering/error-methods.js +78 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -0
- package/dist/frontend/lowering/expressions/global-symbols.d.ts +6 -0
- package/dist/frontend/lowering/expressions/global-symbols.js +11 -0
- package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.d.ts +7 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +49 -0
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.d.ts +6 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js +124 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -0
- package/dist/frontend/lowering/expressions/object-literals.d.ts +8 -8
- package/dist/frontend/lowering/expressions/object-literals.js +485 -185
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +5 -6
- package/dist/frontend/lowering/expressions/optional-chains.js +27 -14
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/try-lower-expression.js +1 -0
- package/dist/frontend/lowering/expressions/try-lower-expression.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-field-write.d.ts +8 -0
- package/dist/frontend/lowering/expressions/union-field-write.js +71 -0
- package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +93 -0
- package/dist/frontend/lowering/function-context.js +103 -0
- package/dist/frontend/lowering/function-context.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +7 -0
- package/dist/frontend/lowering/generator-delegation.js +85 -0
- package/dist/frontend/lowering/generator-delegation.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +10 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +105 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +2 -1
- package/dist/frontend/lowering/lib-boundary.js +59 -20
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.test.d.ts +1 -0
- package/dist/frontend/lowering/lib-boundary.test.js +45 -0
- package/dist/frontend/lowering/lib-boundary.test.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +12 -0
- package/dist/frontend/lowering/lower-builtin-values.js +139 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.d.ts +27 -41
- package/dist/frontend/lowering/lower-builtins.js +553 -346
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +22 -26
- package/dist/frontend/lowering/lower-calls.js +1373 -380
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +83 -45
- package/dist/frontend/lowering/lower-classes.js +952 -339
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +23 -32
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +27 -32
- package/dist/frontend/lowering/lower-containers.js +796 -151
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +1 -1
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.d.ts +1 -1
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +30 -1
- package/dist/frontend/lowering/lower-event-emitter.js +58 -26
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.d.ts +7 -1
- package/dist/frontend/lowering/lower-expando.js +14 -6
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +35 -11
- package/dist/frontend/lowering/lower-exprs.js +1785 -790
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +2 -5
- package/dist/frontend/lowering/lower-generators.js +77 -46
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +7 -0
- package/dist/frontend/lowering/lower-global-value.js +17 -0
- package/dist/frontend/lowering/lower-global-value.js.map +1 -0
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +17 -8
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +5 -8
- package/dist/frontend/lowering/lower-island.js +34 -23
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.d.ts +2 -2
- package/dist/frontend/lowering/lower-mixins.js +5 -3
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +252 -38
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +1 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +1 -1
- package/dist/frontend/lowering/lower-node-module.js +13 -10
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +1 -1
- package/dist/frontend/lowering/lower-server.js +6 -10
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +10 -14
- package/dist/frontend/lowering/lower-stmts.js +731 -532
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +1 -1
- package/dist/frontend/lowering/lower-stream.js +19 -10
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +1 -1
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-url.d.ts +6 -0
- package/dist/frontend/lowering/lower-url.js +77 -0
- package/dist/frontend/lowering/lower-url.js.map +1 -0
- package/dist/frontend/lowering/lowerer.d.ts +113 -189
- package/dist/frontend/lowering/lowerer.js +1033 -663
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.d.ts +1 -0
- package/dist/frontend/lowering/lowerer.test.js +26 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -0
- package/dist/frontend/lowering/native-ffi.d.ts +5 -0
- package/dist/frontend/lowering/native-ffi.js +40 -0
- package/dist/frontend/lowering/native-ffi.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.d.ts +7 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +33 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +8 -0
- package/dist/frontend/lowering/object-factory-new.js +68 -0
- package/dist/frontend/lowering/object-factory-new.js.map +1 -0
- package/dist/frontend/lowering/optional-arguments.js +6 -1
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-locals.d.ts +14 -0
- package/dist/frontend/lowering/runtime-optional-locals.js +41 -0
- package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js +85 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.d.ts +8 -0
- package/dist/frontend/lowering/sanitize-class-types.js +79 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js +60 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/static-this.d.ts +5 -1
- package/dist/frontend/lowering/static-this.js +28 -2
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +7 -0
- package/dist/frontend/lowering/string-index.js +39 -0
- package/dist/frontend/lowering/string-index.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +9 -4
- package/dist/frontend/lowering/surfaces.js +98 -35
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +22 -0
- package/dist/frontend/lowering/symbol-fields.js +183 -0
- package/dist/frontend/lowering/symbol-fields.js.map +1 -0
- package/dist/frontend/lowering/symbol-methods.d.ts +7 -0
- package/dist/frontend/lowering/symbol-methods.js +30 -0
- package/dist/frontend/lowering/symbol-methods.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.d.ts +10 -0
- package/dist/frontend/lowering/text-decoder-encoding.js +77 -0
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.d.ts +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js +38 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.d.ts +9 -0
- package/dist/frontend/lowering/union-narrow.js +59 -0
- package/dist/frontend/lowering/union-narrow.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.test.d.ts +1 -0
- package/dist/frontend/lowering/union-narrow.test.js +72 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +43 -0
- package/dist/frontend/lowering/union-retag.js +259 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -0
- package/dist/frontend/lowering/union-retag.test.d.ts +1 -0
- package/dist/frontend/lowering/union-retag.test.js +405 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.d.ts +14 -0
- package/dist/frontend/lowering/unregistered-class-types.js +94 -0
- package/dist/frontend/lowering/unregistered-class-types.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js +65 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +40 -0
- package/dist/frontend/lowering/width-lift.js +2 -0
- package/dist/frontend/lowering/width-lift.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +58 -0
- package/dist/frontend/module-syntax.js +123 -0
- package/dist/frontend/module-syntax.js.map +1 -0
- package/dist/frontend/module-syntax.test.d.ts +1 -0
- package/dist/frontend/module-syntax.test.js +78 -0
- package/dist/frontend/module-syntax.test.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.d.ts +17 -0
- package/dist/frontend/npm-fetch-analysis.js +100 -0
- package/dist/frontend/npm-fetch-analysis.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.test.d.ts +1 -0
- package/dist/frontend/npm-fetch-analysis.test.js +107 -0
- package/dist/frontend/npm-fetch-analysis.test.js.map +1 -0
- package/dist/frontend/npm-fetch-node.d.ts +2 -0
- package/dist/frontend/npm-fetch-node.js +12 -0
- package/dist/frontend/npm-fetch-node.js.map +1 -0
- package/dist/frontend/npm-fetch-syntax.d.ts +6 -0
- package/dist/frontend/npm-fetch-syntax.js +207 -0
- package/dist/frontend/npm-fetch-syntax.js.map +1 -0
- package/dist/frontend/npm-node.d.ts +10 -0
- package/dist/frontend/npm-node.js +14 -0
- package/dist/frontend/npm-node.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.d.ts +8 -0
- package/dist/frontend/npm-static-bundled-cjs.js +236 -0
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js +69 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.d.ts +57 -0
- package/dist/frontend/npm-static-declaration-syntax.js +944 -0
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -0
- package/dist/frontend/npm-static-declarations.d.ts +11 -39
- package/dist/frontend/npm-static-declarations.js +22 -561
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +245 -6
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/npm-static-prune.d.ts +1 -1
- package/dist/frontend/npm-static-prune.js +5 -4
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +1 -1
- package/dist/frontend/npm-static-prune.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -0
- package/dist/frontend/npm-static-rewrite-host.js +179 -0
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -0
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +16 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +905 -0
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -0
- package/dist/frontend/npm-static-rewrite.d.ts +0 -5
- package/dist/frontend/npm-static-rewrite.js +2 -1079
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.d.ts +5 -0
- package/dist/frontend/npm-static-subtyping.js +55 -0
- package/dist/frontend/npm-static-subtyping.js.map +1 -0
- package/dist/frontend/npm-static-subtyping.test.d.ts +1 -0
- package/dist/frontend/npm-static-subtyping.test.js +58 -0
- package/dist/frontend/npm-static-subtyping.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +7 -15
- package/dist/frontend/npm-static.js +19 -28
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +8 -69
- package/dist/frontend/npm.js +21 -361
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +2 -2
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +6 -0
- package/dist/frontend/pipeline-native.js +32 -0
- package/dist/frontend/pipeline-native.js.map +1 -0
- package/dist/frontend/pipeline.d.ts +54 -0
- package/dist/frontend/pipeline.js +382 -0
- package/dist/frontend/pipeline.js.map +1 -0
- package/dist/frontend/pipeline.test.d.ts +1 -0
- package/dist/frontend/pipeline.test.js +77 -0
- package/dist/frontend/pipeline.test.js.map +1 -0
- package/dist/frontend/program-analysis.d.ts +10 -0
- package/dist/frontend/program-analysis.js +14 -0
- package/dist/frontend/program-analysis.js.map +1 -0
- package/dist/frontend/program-node.d.ts +9 -0
- package/dist/frontend/program-node.js +48 -0
- package/dist/frontend/program-node.js.map +1 -0
- package/dist/frontend/program.d.ts +43 -19
- package/dist/frontend/program.js +556 -197
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.d.ts +1 -0
- package/dist/frontend/program.test.js +202 -0
- package/dist/frontend/program.test.js.map +1 -0
- package/dist/frontend/provenance-core.d.ts +9 -0
- package/dist/frontend/provenance-core.js +435 -0
- package/dist/frontend/provenance-core.js.map +1 -0
- package/dist/frontend/provenance.d.ts +0 -4
- package/dist/frontend/provenance.js +4 -459
- package/dist/frontend/provenance.js.map +1 -1
- package/dist/frontend/resolve.d.ts +3 -1
- package/dist/frontend/resolve.js +6 -3
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.d.ts +4 -3
- package/dist/frontend/runtime-resolve.js +22 -18
- package/dist/frontend/runtime-resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.test.js +53 -0
- package/dist/frontend/runtime-resolve.test.js.map +1 -1
- package/dist/frontend/services-node.d.ts +5 -0
- package/dist/frontend/services-node.js +19 -0
- package/dist/frontend/services-node.js.map +1 -0
- package/dist/frontend/services-node.test.d.ts +1 -0
- package/dist/frontend/services-node.test.js +70 -0
- package/dist/frontend/services-node.test.js.map +1 -0
- package/dist/frontend/services.d.ts +44 -0
- package/dist/frontend/services.js +90 -0
- package/dist/frontend/services.js.map +1 -0
- package/dist/frontend/services.test.d.ts +1 -0
- package/dist/frontend/services.test.js +174 -0
- package/dist/frontend/services.test.js.map +1 -0
- package/dist/frontend/ts7/adapter.d.ts +3 -3
- package/dist/frontend/ts7/adapter.js +14 -31
- package/dist/frontend/ts7/adapter.js.map +1 -1
- package/dist/frontend/ts7/api.d.ts +16 -0
- package/dist/frontend/ts7/api.js +24 -0
- package/dist/frontend/ts7/api.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.d.ts +31 -0
- package/dist/frontend/ts7/ast-bytes.js +137 -0
- package/dist/frontend/ts7/ast-bytes.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-bytes.test.js +73 -0
- package/dist/frontend/ts7/ast-bytes.test.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.d.ts +353 -0
- package/dist/frontend/ts7/ast-guards.generated.js +1951 -0
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-guards.test.js +43 -0
- package/dist/frontend/ts7/ast-guards.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +194 -0
- package/dist/frontend/ts7/ast-node.js +448 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -0
- package/dist/frontend/ts7/ast-node.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-node.test.js +266 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -0
- package/dist/frontend/ts7/ast-schema.generated.d.ts +503 -0
- package/dist/frontend/ts7/ast-schema.generated.js +1446 -0
- package/dist/frontend/ts7/ast-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-text.d.ts +6 -0
- package/dist/frontend/ts7/ast-text.js +124 -0
- package/dist/frontend/ts7/ast-text.js.map +1 -0
- package/dist/frontend/ts7/ast-text.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-text.test.js +38 -0
- package/dist/frontend/ts7/ast-text.test.js.map +1 -0
- package/dist/frontend/ts7/ast-tokens.generated.d.ts +2 -0
- package/dist/frontend/ts7/ast-tokens.generated.js +155 -0
- package/dist/frontend/ts7/ast-tokens.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.d.ts +42 -0
- package/dist/frontend/ts7/ast-types.generated.d.ts +1615 -0
- package/dist/frontend/ts7/ast-types.generated.js +5 -0
- package/dist/frontend/ts7/ast-types.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.js +3 -0
- package/dist/frontend/ts7/ast-types.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.d.ts +58 -0
- package/dist/frontend/ts7/ast-wire.js +267 -0
- package/dist/frontend/ts7/ast-wire.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-wire.test.js +151 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -0
- package/dist/frontend/ts7/ast.d.ts +14 -14
- package/dist/frontend/ts7/ast.js +21 -15
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/census-check.js +1 -0
- package/dist/frontend/ts7/census-check.js.map +1 -1
- package/dist/frontend/ts7/checker-cache.d.ts +48 -0
- package/dist/frontend/ts7/checker-cache.js +92 -0
- package/dist/frontend/ts7/checker-cache.js.map +1 -0
- package/dist/frontend/ts7/checker.d.ts +19 -46
- package/dist/frontend/ts7/checker.js +231 -161
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.d.ts +1 -0
- package/dist/frontend/ts7/checker.test.js +335 -0
- package/dist/frontend/ts7/checker.test.js.map +1 -0
- package/dist/frontend/ts7/enums.d.ts +4 -27
- package/dist/frontend/ts7/enums.generated.d.ts +878 -0
- package/dist/frontend/ts7/enums.generated.js +1313 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -0
- package/dist/frontend/ts7/enums.js +4 -45
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/enums.test.d.ts +1 -0
- package/dist/frontend/ts7/enums.test.js +48 -0
- package/dist/frontend/ts7/enums.test.js.map +1 -0
- package/dist/frontend/ts7/native-api.d.ts +10 -0
- package/dist/frontend/ts7/native-api.js +10 -0
- package/dist/frontend/ts7/native-api.js.map +1 -0
- package/dist/frontend/ts7/native-host.d.ts +2 -0
- package/dist/frontend/ts7/native-host.js +11 -0
- package/dist/frontend/ts7/native-host.js.map +1 -0
- package/dist/frontend/ts7/native-process.d.ts +14 -0
- package/dist/frontend/ts7/native-process.js +62 -0
- package/dist/frontend/ts7/native-process.js.map +1 -0
- package/dist/frontend/ts7/program-adapter.d.ts +10 -98
- package/dist/frontend/ts7/program-adapter.js +16 -310
- package/dist/frontend/ts7/program-adapter.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +115 -0
- package/dist/frontend/ts7/program-host.js +347 -0
- package/dist/frontend/ts7/program-host.js.map +1 -0
- package/dist/frontend/ts7/program-host.test.d.ts +1 -0
- package/dist/frontend/ts7/program-host.test.js +207 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-api.d.ts +12 -0
- package/dist/frontend/ts7/rpc-api.js +23 -0
- package/dist/frontend/ts7/rpc-api.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.d.ts +27 -0
- package/dist/frontend/ts7/rpc-client.js +102 -0
- package/dist/frontend/ts7/rpc-client.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-client.test.js +133 -0
- package/dist/frontend/ts7/rpc-client.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.d.ts +16 -0
- package/dist/frontend/ts7/rpc-filesystem.js +42 -0
- package/dist/frontend/ts7/rpc-filesystem.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js +89 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.d.ts +2 -0
- package/dist/frontend/ts7/rpc-process.js +148 -0
- package/dist/frontend/ts7/rpc-process.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-process.test.js +29 -0
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.d.ts +46 -0
- package/dist/frontend/ts7/rpc-wire.js +195 -0
- package/dist/frontend/ts7/rpc-wire.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-wire.test.js +168 -0
- package/dist/frontend/ts7/rpc-wire.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.d.ts +137 -0
- package/dist/frontend/ts7/semantic-checker.js +221 -0
- package/dist/frontend/ts7/semantic-checker.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-checker.test.js +119 -0
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.d.ts +5 -0
- package/dist/frontend/ts7/semantic-json.js +52 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-json.test.js +42 -0
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.d.ts +222 -0
- package/dist/frontend/ts7/semantic-model.js +423 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-model.test.js +322 -0
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-schema.generated.d.ts +283 -0
- package/dist/frontend/ts7/semantic-schema.generated.js +222 -0
- package/dist/frontend/ts7/semantic-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/semantic-types.d.ts +5 -0
- package/dist/frontend/ts7/semantic-types.js +2 -0
- package/dist/frontend/ts7/semantic-types.js.map +1 -0
- package/dist/frontend/ts7/session-cache.d.ts +17 -0
- package/dist/frontend/ts7/session-cache.js +97 -0
- package/dist/frontend/ts7/session-cache.js.map +1 -0
- package/dist/frontend/ts7/session-cache.test.d.ts +1 -0
- package/dist/frontend/ts7/session-cache.test.js +87 -0
- package/dist/frontend/ts7/session-cache.test.js.map +1 -0
- package/dist/frontend/ts7/session-path.d.ts +18 -0
- package/dist/frontend/ts7/session-path.js +203 -0
- package/dist/frontend/ts7/session-path.js.map +1 -0
- package/dist/frontend/ts7/session-path.test.d.ts +1 -0
- package/dist/frontend/ts7/session-path.test.js +34 -0
- package/dist/frontend/ts7/session-path.test.js.map +1 -0
- package/dist/frontend/ts7/session-schema.generated.d.ts +167 -0
- package/dist/frontend/ts7/session-schema.generated.js +5 -0
- package/dist/frontend/ts7/session-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/session-timing.d.ts +50 -0
- package/dist/frontend/ts7/session-timing.js +61 -0
- package/dist/frontend/ts7/session-timing.js.map +1 -0
- package/dist/frontend/ts7/session-timing.test.d.ts +1 -0
- package/dist/frontend/ts7/session-timing.test.js +52 -0
- package/dist/frontend/ts7/session-timing.test.js.map +1 -0
- package/dist/frontend/ts7/session.d.ts +105 -0
- package/dist/frontend/ts7/session.js +233 -0
- package/dist/frontend/ts7/session.js.map +1 -0
- package/dist/frontend/ts7/session.test.d.ts +1 -0
- package/dist/frontend/ts7/session.test.js +215 -0
- package/dist/frontend/ts7/session.test.js.map +1 -0
- package/dist/frontend/ts7/source-parser-node.d.ts +6 -0
- package/dist/frontend/ts7/source-parser-node.js +15 -0
- package/dist/frontend/ts7/source-parser-node.js.map +1 -0
- package/dist/frontend/ts7/source-parser.d.ts +25 -0
- package/dist/frontend/ts7/source-parser.js +96 -0
- package/dist/frontend/ts7/source-parser.js.map +1 -0
- package/dist/frontend/ts7/source-parser.test.d.ts +1 -0
- package/dist/frontend/ts7/source-parser.test.js +151 -0
- package/dist/frontend/ts7/source-parser.test.js.map +1 -0
- package/dist/frontend/ts7/syntax.d.ts +3 -0
- package/dist/frontend/ts7/syntax.js +4 -0
- package/dist/frontend/ts7/syntax.js.map +1 -0
- package/dist/frontend/tsc-codes.js +3 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +29 -19
- package/dist/frontend/type-mapper.js +713 -306
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.d.ts +1 -0
- package/dist/frontend/type-mapper.test.js +207 -0
- package/dist/frontend/type-mapper.test.js.map +1 -0
- package/dist/frontend/union-discriminants.d.ts +16 -0
- package/dist/frontend/union-discriminants.js +98 -0
- package/dist/frontend/union-discriminants.js.map +1 -0
- package/dist/frontend/union-discriminants.test.d.ts +1 -0
- package/dist/frontend/union-discriminants.test.js +182 -0
- package/dist/frontend/union-discriminants.test.js.map +1 -0
- package/dist/index.d.ts +7 -197
- package/dist/index.js +369 -1567
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +16 -4
- package/dist/ir/analysis.js +25 -6
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -2
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/constant-tables.js +67 -49
- package/dist/ir/constant-tables.js.map +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/control-flow.d.ts +6 -0
- package/dist/ir/control-flow.js +142 -0
- package/dist/ir/control-flow.js.map +1 -0
- package/dist/ir/control-flow.test.d.ts +1 -0
- package/dist/ir/control-flow.test.js +113 -0
- package/dist/ir/control-flow.test.js.map +1 -0
- package/dist/ir/integer-loops.js +7 -18
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-ranges.js +53 -27
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +309 -164
- package/dist/ir/ir.js +588 -879
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +127 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/scalar-records.js +165 -134
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +4 -2
- package/dist/ir/serialize.js +19 -12
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.d.ts +1 -0
- package/dist/ir/serialize.test.js +53 -0
- package/dist/ir/serialize.test.js.map +1 -0
- package/dist/ir/traverse.d.ts +41 -0
- package/dist/ir/traverse.js +660 -0
- package/dist/ir/traverse.js.map +1 -0
- package/dist/ir/traverse.test.d.ts +1 -0
- package/dist/ir/traverse.test.js +242 -0
- package/dist/ir/traverse.test.js.map +1 -0
- package/dist/ir/validate.js +1956 -1496
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +476 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/cache-primitives.d.ts +2 -3
- package/dist/library/cache-primitives.js +4 -6
- package/dist/library/cache-primitives.js.map +1 -1
- package/dist/library/compiler-self-identity.d.ts +1 -1
- package/dist/library/compiler-self-identity.js +31 -15
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.d.ts +1 -0
- package/dist/library/compiler-self-identity.test.js +93 -0
- package/dist/library/compiler-self-identity.test.js.map +1 -0
- package/dist/library/fence-eval.js +2 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.js +7 -6
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.d.ts +3 -2
- package/dist/library/library-cache.js +5 -17
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +54 -41
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/library-profile.d.ts +3 -1
- package/dist/library/library-profile.js +15 -6
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.d.ts +15 -0
- package/dist/library/prepare.js +584 -0
- package/dist/library/prepare.js.map +1 -0
- package/dist/library/semantic-source.d.ts +1 -1
- package/dist/library/semantic-source.js +8 -6
- package/dist/library/semantic-source.js.map +1 -1
- package/dist/library/sidecar-validate.js +4 -4
- package/dist/library/sidecar-validate.js.map +1 -1
- package/dist/library/sidecar.d.ts +2 -0
- package/dist/library/sidecar.js +10 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/cache.d.ts +11 -0
- package/dist/native/cache.js +113 -0
- package/dist/native/cache.js.map +1 -0
- package/dist/native/cache.test.d.ts +1 -0
- package/dist/native/cache.test.js +66 -0
- package/dist/native/cache.test.js.map +1 -0
- package/dist/native/cli.d.ts +1 -0
- package/dist/native/cli.js +112 -0
- package/dist/native/cli.js.map +1 -0
- package/dist/native/compiler.d.ts +15 -0
- package/dist/native/compiler.js +336 -0
- package/dist/native/compiler.js.map +1 -0
- package/dist/native/compiler.test.d.ts +1 -0
- package/dist/native/compiler.test.js +174 -0
- package/dist/native/compiler.test.js.map +1 -0
- package/dist/native/comptime.d.ts +5 -0
- package/dist/native/comptime.js +73 -0
- package/dist/native/comptime.js.map +1 -0
- package/dist/native/comptime.test.d.ts +1 -0
- package/dist/native/comptime.test.js +65 -0
- package/dist/native/comptime.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +26 -0
- package/dist/native/executable-cache.js +228 -0
- package/dist/native/executable-cache.js.map +1 -0
- package/dist/native/executable-cache.test.d.ts +1 -0
- package/dist/native/executable-cache.test.js +151 -0
- package/dist/native/executable-cache.test.js.map +1 -0
- package/dist/native/file-identity.d.ts +4 -0
- package/dist/native/file-identity.js +14 -0
- package/dist/native/file-identity.js.map +1 -0
- package/dist/native/file-identity.test.d.ts +1 -0
- package/dist/native/file-identity.test.js +43 -0
- package/dist/native/file-identity.test.js.map +1 -0
- package/dist/native/library.d.ts +22 -0
- package/dist/native/library.js +83 -0
- package/dist/native/library.js.map +1 -0
- package/dist/native/prepare.d.ts +21 -0
- package/dist/native/prepare.js +174 -0
- package/dist/native/prepare.js.map +1 -0
- package/dist/native/prepare.test.d.ts +1 -0
- package/dist/native/prepare.test.js +70 -0
- package/dist/native/prepare.test.js.map +1 -0
- package/dist/native/sanitizer.d.ts +11 -0
- package/dist/native/sanitizer.js +135 -0
- package/dist/native/sanitizer.js.map +1 -0
- package/dist/native/sanitizer.test.d.ts +1 -0
- package/dist/native/sanitizer.test.js +58 -0
- package/dist/native/sanitizer.test.js.map +1 -0
- package/dist/native/task.d.ts +4 -0
- package/dist/native/task.js +16 -0
- package/dist/native/task.js.map +1 -0
- package/dist/native/task.test.d.ts +1 -0
- package/dist/native/task.test.js +17 -0
- package/dist/native/task.test.js.map +1 -0
- package/dist/native/toolchain.d.ts +45 -0
- package/dist/native/toolchain.js +74 -0
- package/dist/native/toolchain.js.map +1 -0
- package/dist/native/toolchain.test.d.ts +1 -0
- package/dist/native/toolchain.test.js +33 -0
- package/dist/native/toolchain.test.js.map +1 -0
- package/dist/startup-cache.d.ts +1 -1
- package/dist/startup-cache.js +2 -5
- package/dist/startup-cache.js.map +1 -1
- package/dist/timing.d.ts +4 -0
- package/dist/timing.js +19 -0
- package/dist/timing.js.map +1 -0
- package/dist/wasi-paths.js +10 -7
- package/dist/wasi-paths.js.map +1 -1
- package/package.json +28 -19
- package/surface-manifest.json +171 -18
- package/dist/backend/c/async.d.ts +0 -171
- package/dist/backend/c/async.js +0 -1317
- package/dist/backend/c/async.js.map +0 -1
- package/dist/backend/c/c-emitter.d.ts +0 -531
- package/dist/backend/c/c-emitter.js +0 -1917
- package/dist/backend/c/c-emitter.js.map +0 -1
- package/dist/backend/c/exprs.d.ts +0 -15
- package/dist/backend/c/exprs.js +0 -8803
- package/dist/backend/c/exprs.js.map +0 -1
- package/dist/backend/c/island.d.ts +0 -45
- package/dist/backend/c/island.js +0 -281
- package/dist/backend/c/island.js.map +0 -1
- package/dist/backend/c/may-throw.js.map +0 -1
- package/dist/backend/c/shapes.d.ts +0 -142
- package/dist/backend/c/shapes.js +0 -603
- package/dist/backend/c/shapes.js.map +0 -1
- package/dist/backend/c/stmts.d.ts +0 -76
- package/dist/backend/c/stmts.js +0 -1084
- package/dist/backend/c/stmts.js.map +0 -1
- package/dist/backend/c/types.d.ts +0 -71
- package/dist/backend/c/types.js +0 -459
- package/dist/backend/c/types.js.map +0 -1
- package/dist/backend/c/types.test.js +0 -32
- package/dist/backend/c/types.test.js.map +0 -1
- package/dist/backend/c/walkers.d.ts +0 -134
- package/dist/backend/c/walkers.js +0 -1773
- package/dist/backend/c/walkers.js.map +0 -1
- /package/dist/backend/{c/types.test.d.ts → cycle-analysis.test.d.ts} +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { expect, test } from "vitest";
|
|
2
|
+
import { F64 } from "../../ir/ir.js";
|
|
3
|
+
import { sanitizeUnregisteredClassTypes } from "./sanitize-class-types.js";
|
|
4
|
+
test("fenced instance slots are erased throughout signatures, storage and nested expressions", () => {
|
|
5
|
+
const loc = { file: "classes.js", start: 0, end: 1 };
|
|
6
|
+
const missing = { kind: "object", className: "Fenced" };
|
|
7
|
+
const kept = { kind: "object", className: "Registered" };
|
|
8
|
+
const constructor = { kind: "classval", className: "Fenced" };
|
|
9
|
+
const composite = { kind: "func", rest: true, restAbi: "typed", argumentsAll: true,
|
|
10
|
+
params: [{ kind: "array", elem: missing }, { kind: "set", elem: missing },
|
|
11
|
+
{ kind: "map", key: missing, value: { kind: "promise", inner: missing } }],
|
|
12
|
+
ret: { kind: "generator", async: true, yieldT: missing, retT: missing, nextT: missing } };
|
|
13
|
+
const ref = (type) => ({ kind: "varRef", localId: "x", type, loc });
|
|
14
|
+
const module = {
|
|
15
|
+
irVersion: 13, sourceFile: loc.file, entry: "main",
|
|
16
|
+
globals: [{ id: "g", name: "g", type: composite, mutable: false }],
|
|
17
|
+
classes: [{ name: "Registered", fields: [{ name: "value", type: missing }],
|
|
18
|
+
localCaptures: [{ localId: "x", name: "x", type: missing }], loc }],
|
|
19
|
+
records: [{ id: "r", fields: [{ name: "value", type: missing },
|
|
20
|
+
{ name: "next", type: { kind: "union", unionId: "u" } }], indexValue: missing }],
|
|
21
|
+
unions: [{ id: "u", arms: [missing, { kind: "record", shapeId: "r" }, kept, constructor] }],
|
|
22
|
+
functions: [{ name: "main", returnType: missing, loc,
|
|
23
|
+
params: [{ localId: "x", name: "x", type: missing }],
|
|
24
|
+
locals: [{ id: "x", name: "x", type: missing, mutable: false }],
|
|
25
|
+
captures: [{ localId: "y", name: "y", type: missing }],
|
|
26
|
+
classCaptures: [{ localId: "z", name: "z", type: missing, slot: 3 }],
|
|
27
|
+
generator: { yieldT: missing, nextT: missing, resultType: { kind: "record", shapeId: "r" } },
|
|
28
|
+
body: [{ kind: "if", cond: ref(kept), else_: null, loc, then: [{ kind: "exprStmt", loc,
|
|
29
|
+
expr: { kind: "seqExpr", type: missing, loc,
|
|
30
|
+
stmts: [{ kind: "exprStmt", expr: ref(composite), loc }],
|
|
31
|
+
result: { kind: "new", className: "Fenced", args: [ref(missing)], type: missing, loc } } }] }],
|
|
32
|
+
}],
|
|
33
|
+
};
|
|
34
|
+
// An independent structural oracle checks every nested slot and leaves
|
|
35
|
+
// class-value types and node-level names intact, even on invalid nodes.
|
|
36
|
+
const expected = JSON.parse(JSON.stringify(module, (_key, value) => {
|
|
37
|
+
const type = value;
|
|
38
|
+
return type?.kind === "object" && type.className === "Fenced" ? F64 : value;
|
|
39
|
+
}));
|
|
40
|
+
sanitizeUnregisteredClassTypes(module, (name) => name === "Registered");
|
|
41
|
+
expect(module).toEqual(expected);
|
|
42
|
+
expect(module.functions[0].params[0].type).toBe(F64);
|
|
43
|
+
expect(module.unions[0].arms[2]).toBe(kept);
|
|
44
|
+
expect(module.unions[0].arms[3]).toBe(constructor);
|
|
45
|
+
expect(missing).toEqual({ kind: "object", className: "Fenced" });
|
|
46
|
+
sanitizeUnregisteredClassTypes(module, (name) => name === "Registered");
|
|
47
|
+
expect(module).toEqual(expected);
|
|
48
|
+
});
|
|
49
|
+
test("modules without optional tables and registered class types retain their structure", () => {
|
|
50
|
+
const loc = { file: "registered.ts", start: 0, end: 1 };
|
|
51
|
+
const type = { kind: "object", className: "Registered" };
|
|
52
|
+
const module = { irVersion: 13, sourceFile: loc.file, entry: "main", functions: [{
|
|
53
|
+
name: "main", returnType: type, params: [], locals: [], body: [], loc,
|
|
54
|
+
}] };
|
|
55
|
+
const before = structuredClone(module);
|
|
56
|
+
sanitizeUnregisteredClassTypes(module, () => true);
|
|
57
|
+
expect(module).toEqual(before);
|
|
58
|
+
expect(module.functions[0].returnType).toBe(type);
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=sanitize-class-types.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-class-types.test.js","sourceRoot":"","sources":["../../../src/frontend/lowering/sanitize-class-types.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,4 +3,8 @@ import type { Lowerer } from "./lowerer.js";
|
|
|
3
3
|
/** Walk a static class context for `this`/`super`. Arrows inherit the
|
|
4
4
|
* surrounding receiver and remain transparent; declarations that bind
|
|
5
5
|
* their own receiver (and nested classes) are opaque. */
|
|
6
|
-
export declare function rejectStaticThis(lowerer: Lowerer, root: ts.Node, message: (keyword: "this" | "super") => string, includeRoot?: boolean): void;
|
|
6
|
+
export declare function rejectStaticThis(lowerer: Lowerer, root: ts.Node, message: (keyword: "this" | "super") => string, includeRoot?: boolean, allowThis?: boolean): void;
|
|
7
|
+
export declare function hasStaticThis(root: ts.Node): boolean;
|
|
8
|
+
/** Private names belong to the lexical class, independently of any
|
|
9
|
+
* same-spelled member in a receiver's subclass. */
|
|
10
|
+
export declare function hasLexicalPrivateReference(root: ts.Node): boolean;
|
|
@@ -2,7 +2,7 @@ import * as ts from "../ts7/adapter.js";
|
|
|
2
2
|
/** Walk a static class context for `this`/`super`. Arrows inherit the
|
|
3
3
|
* surrounding receiver and remain transparent; declarations that bind
|
|
4
4
|
* their own receiver (and nested classes) are opaque. */
|
|
5
|
-
export function rejectStaticThis(lowerer, root, message, includeRoot = false) {
|
|
5
|
+
export function rejectStaticThis(lowerer, root, message, includeRoot = false, allowThis = false) {
|
|
6
6
|
const visit = (node) => {
|
|
7
7
|
if (ts.isFunctionExpression(node) || ts.isFunctionDeclaration(node) ||
|
|
8
8
|
ts.isMethodDeclaration(node) || ts.isConstructorDeclaration(node) ||
|
|
@@ -10,7 +10,7 @@ export function rejectStaticThis(lowerer, root, message, includeRoot = false) {
|
|
|
10
10
|
ts.isClassDeclaration(node) || ts.isClassExpression(node)) {
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
|
-
if (node.kind === ts.SyntaxKind.ThisKeyword || node.kind === ts.SyntaxKind.SuperKeyword) {
|
|
13
|
+
if ((node.kind === ts.SyntaxKind.ThisKeyword && !allowThis) || node.kind === ts.SyntaxKind.SuperKeyword) {
|
|
14
14
|
const keyword = node.kind === ts.SyntaxKind.ThisKeyword ? "this" : "super";
|
|
15
15
|
lowerer.unsupported("SC1090", node, message(keyword));
|
|
16
16
|
}
|
|
@@ -21,4 +21,30 @@ export function rejectStaticThis(lowerer, root, message, includeRoot = false) {
|
|
|
21
21
|
else
|
|
22
22
|
root.forEachChild(visit);
|
|
23
23
|
}
|
|
24
|
+
export function hasStaticThis(root) {
|
|
25
|
+
let found = false;
|
|
26
|
+
const visit = (node) => {
|
|
27
|
+
if (node.kind === ts.SyntaxKind.ThisKeyword)
|
|
28
|
+
found = true;
|
|
29
|
+
if ((ts.isFunctionLike(node) && !ts.isArrowFunction(node)) || ts.isClassDeclaration(node) || ts.isClassExpression(node))
|
|
30
|
+
return;
|
|
31
|
+
node.forEachChild(visit);
|
|
32
|
+
};
|
|
33
|
+
root.forEachChild(visit);
|
|
34
|
+
return found;
|
|
35
|
+
}
|
|
36
|
+
/** Private names belong to the lexical class, independently of any
|
|
37
|
+
* same-spelled member in a receiver's subclass. */
|
|
38
|
+
export function hasLexicalPrivateReference(root) {
|
|
39
|
+
let found = false;
|
|
40
|
+
const visit = (node) => {
|
|
41
|
+
if (ts.isClassDeclaration(node) || ts.isClassExpression(node))
|
|
42
|
+
return;
|
|
43
|
+
if (ts.isPrivateIdentifier(node))
|
|
44
|
+
found = true;
|
|
45
|
+
node.forEachChild(visit);
|
|
46
|
+
};
|
|
47
|
+
root.forEachChild(visit);
|
|
48
|
+
return found;
|
|
49
|
+
}
|
|
24
50
|
//# sourceMappingURL=static-this.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-this.js","sourceRoot":"","sources":["../../../src/frontend/lowering/static-this.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGxC;;yDAEyD;AACzD,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,IAAa,EACb,OAA8C,EAC9C,WAAW,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"static-this.js","sourceRoot":"","sources":["../../../src/frontend/lowering/static-this.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGxC;;yDAEyD;AACzD,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,IAAa,EACb,OAA8C,EAC9C,WAAW,GAAG,KAAK,EACnB,SAAS,GAAG,KAAK;IAEjB,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC/D,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;YACjE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;YAChD,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EACzD,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YACxG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3E,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC;;QACxB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YAAE,KAAK,GAAG,IAAI,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,OAAO;QAChI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;mDACmD;AACnD,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,OAAO;QACtE,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,KAAK,GAAG,IAAI,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type IrExpr, type IrType, type SrcLoc } from "../../ir/ir.js";
|
|
2
|
+
import type { Lowerer } from "./lowerer.js";
|
|
3
|
+
/** A number-keyed string property read whose declared result includes
|
|
4
|
+
* undefined. Unlike charAt, property lookup does not truncate fractions or
|
|
5
|
+
* convert NaN to zero. Capture both operands before testing the index: even
|
|
6
|
+
* a plain receiver variable can be reassigned while evaluating the key. */
|
|
7
|
+
export declare function lowerOptionalStringIndex(lowerer: Lowerer, receiver: IrExpr, index: IrExpr, type: IrType, loc: SrcLoc): IrExpr;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BOOL, F64, STRING } from "../../ir/ir.js";
|
|
2
|
+
import { numLit, varRef } from "../../ir/build.js";
|
|
3
|
+
/** A number-keyed string property read whose declared result includes
|
|
4
|
+
* undefined. Unlike charAt, property lookup does not truncate fractions or
|
|
5
|
+
* convert NaN to zero. Capture both operands before testing the index: even
|
|
6
|
+
* a plain receiver variable can be reassigned while evaluating the key. */
|
|
7
|
+
export function lowerOptionalStringIndex(lowerer, receiver, index, type, loc) {
|
|
8
|
+
const textLocal = lowerer.declareHiddenLocal("%indexedString", STRING);
|
|
9
|
+
const indexLocal = lowerer.declareHiddenLocal("%stringIndex", F64);
|
|
10
|
+
const text = varRef(textLocal.id, STRING, loc);
|
|
11
|
+
const key = varRef(indexLocal.id, F64, loc);
|
|
12
|
+
const inBounds = {
|
|
13
|
+
kind: "logical", op: "&&",
|
|
14
|
+
left: { kind: "bin", op: ">=", left: key, right: numLit(0, loc), type: BOOL, loc },
|
|
15
|
+
right: { kind: "bin", op: "<", left: key,
|
|
16
|
+
right: { kind: "strIntrinsic", method: "length", receiver: text, args: [], type: F64, loc }, type: BOOL, loc },
|
|
17
|
+
type: BOOL, loc,
|
|
18
|
+
};
|
|
19
|
+
const integral = {
|
|
20
|
+
kind: "bin", op: "===", left: key,
|
|
21
|
+
right: { kind: "libCall", fn: "math.floor", args: [key], type: F64, loc },
|
|
22
|
+
type: BOOL, loc,
|
|
23
|
+
};
|
|
24
|
+
const read = { kind: "strIntrinsic", method: "charAt", receiver: text, args: [key], type: STRING, loc };
|
|
25
|
+
return {
|
|
26
|
+
kind: "seqExpr",
|
|
27
|
+
stmts: [
|
|
28
|
+
{ kind: "varDecl", localId: textLocal.id, init: receiver, loc },
|
|
29
|
+
{ kind: "varDecl", localId: indexLocal.id, init: index, loc },
|
|
30
|
+
],
|
|
31
|
+
result: {
|
|
32
|
+
kind: "ternary", cond: { kind: "logical", op: "&&", left: inBounds, right: integral, type: BOOL, loc },
|
|
33
|
+
then: lowerer.coerceToExpected(read, type),
|
|
34
|
+
else_: lowerer.wrappedUndefined(type, loc), type, loc,
|
|
35
|
+
},
|
|
36
|
+
type, loc,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=string-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-index.js","sourceRoot":"","sources":["../../../src/frontend/lowering/string-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAyC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;2EAG2E;AAC3E,MAAM,UAAU,wBAAwB,CACtC,OAAgB,EAChB,QAAgB,EAChB,KAAa,EACb,IAAY,EACZ,GAAW;IAEX,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAW;QACvB,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI;QACzB,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;QAClF,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;YACtC,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;QAChH,IAAI,EAAE,IAAI,EAAE,GAAG;KAChB,CAAC;IACF,MAAM,QAAQ,GAAW;QACvB,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG;QACjC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;QACzE,IAAI,EAAE,IAAI,EAAE,GAAG;KAChB,CAAC;IACF,MAAM,IAAI,GAAW,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAChH,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;YAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;SAC9D;QACD,MAAM,EAAE;YACN,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YACtG,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;YAC1C,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAE,EAAE,IAAI,EAAE,GAAG;SACvD;QACD,IAAI,EAAE,GAAG;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as ts from "../ts7/adapter.js";
|
|
2
2
|
import type { Lowerer } from "./lowerer.js";
|
|
3
3
|
import { UNSUPPORTED } from "../../diagnostics/diagnostic.js";
|
|
4
|
-
import { IrExpr, IrLibFn, IrStrIntrinsicMethod, IrType } from "../../ir/ir.js";
|
|
4
|
+
import { type IrExpr, type IrLibFn, type IrStrIntrinsicMethod, type IrType } from "../../ir/ir.js";
|
|
5
5
|
/** Statement-level constructs rejected wholesale, keyed by syntax kind. */
|
|
6
6
|
export declare const UNSUPPORTED_STMT: Partial<Record<ts.SyntaxKind, {
|
|
7
7
|
code: keyof typeof UNSUPPORTED;
|
|
@@ -105,6 +105,8 @@ export declare const STR_METHODS: Record<string, {
|
|
|
105
105
|
}>;
|
|
106
106
|
/** String index reads return an undefined arm and compose the existing UTF-16 intrinsics. */
|
|
107
107
|
export declare const STRING_INDEX_METHODS: Set<string>;
|
|
108
|
+
/** String-pattern replacement composes native search, slice, and callback operations. */
|
|
109
|
+
export declare const STRING_REPLACE_METHODS: Set<string>;
|
|
108
110
|
/** One member of the island-backed ambient surface: declared argument
|
|
109
111
|
* types (tsc enforces them at call sites; the arity double-checks the
|
|
110
112
|
* table against the ambient file) and the validated island-exit target the
|
|
@@ -132,7 +134,7 @@ export declare const boundaryOutOfIslandMsg: (typeName: string) => string;
|
|
|
132
134
|
* user. */
|
|
133
135
|
export declare const ISLAND_SURFACE: {
|
|
134
136
|
/** `Math.<fn>(...)` lowers to callMethod(globalGet("Math"), fn, args);
|
|
135
|
-
* Math
|
|
137
|
+
* Math constants are compile-time numeric literals in STATIC_MATH_PROPS;
|
|
136
138
|
* remaining Math properties retain island/fence behavior.
|
|
137
139
|
* The entries here handle untabled scalar call shapes where --dynamic is
|
|
138
140
|
* available; STATIC_MATH_FNS handles the ordinary typed calls first. */
|
|
@@ -196,7 +198,7 @@ export interface BuiltinModuleFn {
|
|
|
196
198
|
defaults?: string[];
|
|
197
199
|
/** The source-level function-value signature. Each admitted entry
|
|
198
200
|
* materializes as an interned zero-capture adapter over the fixed runtime
|
|
199
|
-
* libCall ABI. Optional parameters name the
|
|
201
|
+
* libCall ABI. Optional parameters name the scalar default selected for
|
|
200
202
|
* omission or explicit undefined; rest parameters pack into one typed
|
|
201
203
|
* array slot. Entries with call-site-specific validation remain absent. */
|
|
202
204
|
valueParams?: BuiltinValueParam[];
|
|
@@ -207,11 +209,14 @@ export type BuiltinValueParam = {
|
|
|
207
209
|
} | {
|
|
208
210
|
mode: "optional";
|
|
209
211
|
type: IrType;
|
|
210
|
-
defaultValue: string;
|
|
212
|
+
defaultValue: string | number;
|
|
211
213
|
} | {
|
|
212
214
|
mode: "rest";
|
|
213
215
|
type: IrType;
|
|
214
216
|
};
|
|
217
|
+
/** Object helpers whose checked-native ABI is also their stored value ABI.
|
|
218
|
+
* These adapters operate on the live checked object/property table. */
|
|
219
|
+
export declare const OBJECT_CALLABLE_VALUES: Record<string, BuiltinModuleFn | undefined>;
|
|
215
220
|
export declare const BUILTIN_MODULE_FNS: Record<string, Record<string, BuiltinModuleFn | undefined> | undefined>;
|
|
216
221
|
/** Builtin-module CONSTANTS (value reads of named imports): each lowers to
|
|
217
222
|
* a literal of its value's kind. The bare-module values are the TARGET
|
|
@@ -5,13 +5,11 @@
|
|
|
5
5
|
* diagnostic tables, and the "which world declared this symbol" predicates
|
|
6
6
|
* (ambient scriptc.d.ts / standard lib / @types/node provenance). */
|
|
7
7
|
import * as ts from "../ts7/adapter.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { UNSUPPORTED } from "../../diagnostics/diagnostic.js";
|
|
9
|
+
import { BOOL, BYTES_U8, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DYN, F64, FILEHANDLE_T, SPAWNRES_T, STATS_T, STRING, URL_T, VOID, arrayOf } from "../../ir/ir.js";
|
|
10
|
+
import { isJsSourceFile, isNodeTypesPath, requireSpecOf } from "../program.js";
|
|
10
11
|
/** Statement-level constructs rejected wholesale, keyed by syntax kind. */
|
|
11
12
|
export const UNSUPPORTED_STMT = {
|
|
12
|
-
// Top-level ClassDeclarations are supported (collected in run()); one
|
|
13
|
-
// reaching lowerStmt is nested inside a function.
|
|
14
|
-
[ts.SyntaxKind.ClassDeclaration]: { code: "SC1090", feature: "class declarations inside functions" },
|
|
15
13
|
// DoStatement / SwitchStatement are supported; handled in lowerStmt.
|
|
16
14
|
// ForOfStatement is supported (arrays); handled in lowerStmt.
|
|
17
15
|
// ThrowStatement / TryStatement are supported (exceptions); handled in
|
|
@@ -379,6 +377,8 @@ export const STR_METHODS = {
|
|
|
379
377
|
};
|
|
380
378
|
/** String index reads return an undefined arm and compose the existing UTF-16 intrinsics. */
|
|
381
379
|
export const STRING_INDEX_METHODS = new Set(["at", "codePointAt"]);
|
|
380
|
+
/** String-pattern replacement composes native search, slice, and callback operations. */
|
|
381
|
+
export const STRING_REPLACE_METHODS = new Set(["replace", "replaceAll"]);
|
|
382
382
|
const ISL_N1 = { args: [F64], ret: F64 };
|
|
383
383
|
const ISL_N2 = { args: [F64, F64], ret: F64 };
|
|
384
384
|
export const boundaryIntoIslandMsg = (typeName) => `passing a value of type '${typeName}' into dynamically-executed ('any'-typed) code ` +
|
|
@@ -404,7 +404,7 @@ export const boundaryOutOfIslandMsg = (typeName) => `using an 'any' value where
|
|
|
404
404
|
* user. */
|
|
405
405
|
export const ISLAND_SURFACE = {
|
|
406
406
|
/** `Math.<fn>(...)` lowers to callMethod(globalGet("Math"), fn, args);
|
|
407
|
-
* Math
|
|
407
|
+
* Math constants are compile-time numeric literals in STATIC_MATH_PROPS;
|
|
408
408
|
* remaining Math properties retain island/fence behavior.
|
|
409
409
|
* The entries here handle untabled scalar call shapes where --dynamic is
|
|
410
410
|
* available; STATIC_MATH_FNS handles the ordinary typed calls first. */
|
|
@@ -412,10 +412,12 @@ export const ISLAND_SURFACE = {
|
|
|
412
412
|
// The static table below handles these methods at its admitted arities.
|
|
413
413
|
fns: {
|
|
414
414
|
abs: ISL_N1, acos: ISL_N1, asin: ISL_N1, atan: ISL_N1, atan2: ISL_N2,
|
|
415
|
-
|
|
416
|
-
|
|
415
|
+
acosh: ISL_N1, asinh: ISL_N1, atanh: ISL_N1,
|
|
416
|
+
cbrt: ISL_N1, ceil: ISL_N1, clz32: ISL_N1, cos: ISL_N1, cosh: ISL_N1,
|
|
417
|
+
exp: ISL_N1, expm1: ISL_N1, fround: ISL_N1,
|
|
418
|
+
hypot: ISL_N2, imul: ISL_N2, log: ISL_N1, log1p: ISL_N1, log2: ISL_N1, log10: ISL_N1, pow: ISL_N2,
|
|
417
419
|
round: ISL_N1,
|
|
418
|
-
sign: ISL_N1, sin: ISL_N1, sqrt: ISL_N1, tan: ISL_N1, trunc: ISL_N1,
|
|
420
|
+
sign: ISL_N1, sin: ISL_N1, sinh: ISL_N1, sqrt: ISL_N1, tan: ISL_N1, tanh: ISL_N1, trunc: ISL_N1,
|
|
419
421
|
},
|
|
420
422
|
// Math constants are compile-time literals, not island properties.
|
|
421
423
|
props: {},
|
|
@@ -457,8 +459,14 @@ export const ISLAND_SURFACE = {
|
|
|
457
459
|
* their island/fence behavior through ISLAND_SURFACE.math.props and the
|
|
458
460
|
* generic standard-library member fence. */
|
|
459
461
|
export const STATIC_MATH_PROPS = {
|
|
460
|
-
PI: 3.141592653589793,
|
|
461
462
|
E: 2.718281828459045,
|
|
463
|
+
LN10: 2.302585092994046,
|
|
464
|
+
LN2: 0.6931471805599453,
|
|
465
|
+
LOG10E: 0.4342944819032518,
|
|
466
|
+
LOG2E: 1.4426950408889634,
|
|
467
|
+
PI: 3.141592653589793,
|
|
468
|
+
SQRT1_2: 0.7071067811865476,
|
|
469
|
+
SQRT2: 1.4142135623730951,
|
|
462
470
|
};
|
|
463
471
|
/** Math members with a STATIC lowering. Most use the tabled arity; min/max
|
|
464
472
|
* accept any plain arity, and hypot accepts any arity including number[]
|
|
@@ -477,20 +485,31 @@ export const STATIC_MATH_FNS = {
|
|
|
477
485
|
max: { fn: "math.max", arity: 2 },
|
|
478
486
|
random: { fn: "math.random", arity: 0 },
|
|
479
487
|
sin: { fn: "math.sin", arity: 1 },
|
|
488
|
+
sinh: { fn: "math.sinh", arity: 1 },
|
|
480
489
|
cos: { fn: "math.cos", arity: 1 },
|
|
490
|
+
cosh: { fn: "math.cosh", arity: 1 },
|
|
481
491
|
tan: { fn: "math.tan", arity: 1 },
|
|
492
|
+
tanh: { fn: "math.tanh", arity: 1 },
|
|
482
493
|
asin: { fn: "math.asin", arity: 1 },
|
|
494
|
+
asinh: { fn: "math.asinh", arity: 1 },
|
|
483
495
|
acos: { fn: "math.acos", arity: 1 },
|
|
496
|
+
acosh: { fn: "math.acosh", arity: 1 },
|
|
484
497
|
atan: { fn: "math.atan", arity: 1 },
|
|
498
|
+
atanh: { fn: "math.atanh", arity: 1 },
|
|
485
499
|
cbrt: { fn: "math.cbrt", arity: 1 },
|
|
500
|
+
clz32: { fn: "math.clz32", arity: 1 },
|
|
486
501
|
sign: { fn: "math.sign", arity: 1 },
|
|
487
502
|
exp: { fn: "math.exp", arity: 1 },
|
|
503
|
+
expm1: { fn: "math.expm1", arity: 1 },
|
|
504
|
+
fround: { fn: "math.fround", arity: 1 },
|
|
488
505
|
sqrt: { fn: "math.sqrt", arity: 1 },
|
|
489
506
|
log: { fn: "math.log", arity: 1 },
|
|
507
|
+
log1p: { fn: "math.log1p", arity: 1 },
|
|
490
508
|
log2: { fn: "math.log2", arity: 1 },
|
|
491
509
|
log10: { fn: "math.log10", arity: 1 },
|
|
492
510
|
atan2: { fn: "math.atan2", arity: 2 },
|
|
493
511
|
pow: { fn: "math.pow", arity: 2 },
|
|
512
|
+
imul: { fn: "math.imul", arity: 2 },
|
|
494
513
|
hypot: { fn: "math.hypotArr", arity: 2 },
|
|
495
514
|
};
|
|
496
515
|
/** Number prototype methods with dedicated STATIC lowering paths. The
|
|
@@ -506,6 +525,19 @@ export const STATIC_NUMBER_METHODS = {
|
|
|
506
525
|
function exactValueParams(...types) {
|
|
507
526
|
return types.map((type) => ({ mode: "required", type }));
|
|
508
527
|
}
|
|
528
|
+
/** Object helpers whose checked-native ABI is also their stored value ABI.
|
|
529
|
+
* These adapters operate on the live checked object/property table. */
|
|
530
|
+
export const OBJECT_CALLABLE_VALUES = {
|
|
531
|
+
defineProperty: { fn: "dyn.defineProperty", params: [DYN, DYN, DYN], result: DYN, valueParams: exactValueParams(DYN, DYN, DYN) },
|
|
532
|
+
getOwnPropertyDescriptor: { fn: "dyn.getOwnPropertyDescriptor", params: [DYN, DYN], result: DYN, valueParams: exactValueParams(DYN, DYN) },
|
|
533
|
+
getOwnPropertyDescriptors: { fn: "dyn.getOwnPropertyDescriptors", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
|
|
534
|
+
defineProperties: { fn: "dyn.defineProps", params: [DYN, DYN], result: DYN, valueParams: exactValueParams(DYN, DYN) },
|
|
535
|
+
keys: { fn: "dyn.objKeys", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
|
|
536
|
+
values: { fn: "dyn.objValues", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
|
|
537
|
+
entries: { fn: "dyn.objEntries", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
|
|
538
|
+
fromEntries: { fn: "dyn.fromEntries", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
|
|
539
|
+
getOwnPropertySymbols: { fn: "dyn.getOwnPropertySymbols", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
|
|
540
|
+
};
|
|
509
541
|
/** The lowerable surface of the supported node builtin modules, keyed by
|
|
510
542
|
* CANONICAL module name (both "fs" and "node:fs" land on "fs" — see
|
|
511
543
|
* canonicalBuiltinModule). Like STR_METHODS, membership is only half the
|
|
@@ -584,6 +616,7 @@ export const BUILTIN_MODULE_FNS = {
|
|
|
584
616
|
// realpath(3) — Node's realpathSync (failures spell syscall "lstat",
|
|
585
617
|
// Node's own message shape).
|
|
586
618
|
realpathSync: { fn: "fs.realpathSync", params: [STRING], result: STRING },
|
|
619
|
+
"realpathSync.native": { fn: "fs.realpathNativeSync", params: [STRING], result: STRING },
|
|
587
620
|
// The fd pair behind spawn's fd-stdio form (the daemon-log idiom:
|
|
588
621
|
// openSync(logPath, "a") → spawn stdio ["ignore", fd, fd] →
|
|
589
622
|
// closeSync). String flags use the established two-argument path;
|
|
@@ -622,7 +655,11 @@ export const BUILTIN_MODULE_FNS = {
|
|
|
622
655
|
// open's optional flags/mode completion is special-cased in
|
|
623
656
|
// lowerBuiltinModuleCall; this row routes all import spellings and
|
|
624
657
|
// gives coverage the static member.
|
|
625
|
-
open: { fn: "fsp.open", params: [STRING, STRING, F64], result: { kind: "promise", inner: FILEHANDLE_T }
|
|
658
|
+
open: { fn: "fsp.open", params: [STRING, STRING, F64], result: { kind: "promise", inner: FILEHANDLE_T }, valueParams: [
|
|
659
|
+
{ mode: "required", type: STRING },
|
|
660
|
+
{ mode: "optional", type: STRING, defaultValue: "r" },
|
|
661
|
+
{ mode: "optional", type: F64, defaultValue: 0o666 },
|
|
662
|
+
] },
|
|
626
663
|
},
|
|
627
664
|
// The bare module's POSIX-target binding; a win32 target rebinds it to
|
|
628
665
|
// the win32 table (builtinModuleFnsOf — Node on Windows IS path.win32).
|
|
@@ -859,6 +896,9 @@ export const BUILTIN_MODULE_CONSTS = {
|
|
|
859
896
|
* BUILTIN_MODULE_FNS; consumed by the fence taxonomy
|
|
860
897
|
* (library/fence-eval.ts) and the attestation-parity test. */
|
|
861
898
|
export const BUILTIN_MODULE_FN_ALIASES = {
|
|
899
|
+
url: {
|
|
900
|
+
pathToFileURL: ["url.pathToFileURLPlatform"],
|
|
901
|
+
},
|
|
862
902
|
fs: {
|
|
863
903
|
// Inline numeric O_* flags use a target-neutral runtime entry point.
|
|
864
904
|
openSync: ["fs.openNumericSync"],
|
|
@@ -867,6 +907,7 @@ export const BUILTIN_MODULE_FN_ALIASES = {
|
|
|
867
907
|
readFileSync: ["fs.readFileSyncBuf", "fs.readFileSyncBytes", "fs.readFileSyncDyn", "fs.readFdSync", "fs.readFdSyncBytes"],
|
|
868
908
|
// The bytes-data form and the { mode } options form.
|
|
869
909
|
writeFileSync: ["fs.writeFileSyncBytes", "fs.writeFileModeSync"],
|
|
910
|
+
appendFileSync: ["fs.appendFileSyncBytes"],
|
|
870
911
|
// The utf8 string overload; the table row is the Buffer-window form.
|
|
871
912
|
writeSync: ["fs.writeStrSync"],
|
|
872
913
|
// The { recursive, mode } option lowerings.
|
|
@@ -929,7 +970,7 @@ export const AMBIENT_SURFACE_FNS = [
|
|
|
929
970
|
id: "stdlib.date.constructor",
|
|
930
971
|
kind: "stdlib",
|
|
931
972
|
name: "Date constructor",
|
|
932
|
-
fns: ["date.newNow", "date.newMs", "date.newString"],
|
|
973
|
+
fns: ["date.newNow", "date.newMs", "date.newString", "date.nativeNew"],
|
|
933
974
|
note: "zero arguments, or one milliseconds/date-string argument; values are the read-only TimeClip scalar slice",
|
|
934
975
|
},
|
|
935
976
|
{
|
|
@@ -996,6 +1037,17 @@ export const AMBIENT_SURFACE_FNS = [
|
|
|
996
1037
|
note: "reads, writes, deletes, and enumeration of the process environment (the process global)",
|
|
997
1038
|
},
|
|
998
1039
|
{ id: "node-builtin.process.argv", kind: "node-builtin", name: "process.argv", fns: ["process.argv"] },
|
|
1040
|
+
{ id: "node-builtin.process.hrtime", kind: "node-builtin", name: "process.hrtime", fns: ["process.hrtimeValue"], note: "native monotonic tuple clock and bigint member; direct calls and stored JavaScript callable values" },
|
|
1041
|
+
{
|
|
1042
|
+
id: "node-builtin.process.getBuiltinModule", kind: "node-builtin", name: "process.getBuiltinModule",
|
|
1043
|
+
fns: ["process.builtinId", "process.builtinModule", "process.builtinUnsupported"],
|
|
1044
|
+
note: "native path and os export subsets plus main-thread worker_threads metadata; other modules and exports throw SC2020",
|
|
1045
|
+
},
|
|
1046
|
+
{
|
|
1047
|
+
id: "node-builtin.process.versions", kind: "node-builtin", name: "process.versions",
|
|
1048
|
+
fns: ["process.versions"],
|
|
1049
|
+
note: "shared version dictionary containing node and openssl; other components are absent unless defined by the program",
|
|
1050
|
+
},
|
|
999
1051
|
{ id: "node-builtin.process.cwd", kind: "node-builtin", name: "process.cwd", fns: ["process.cwd"] },
|
|
1000
1052
|
{ id: "node-builtin.process.chdir", kind: "node-builtin", name: "process.chdir", fns: ["process.chdir"] },
|
|
1001
1053
|
{ id: "node-builtin.process.pid", kind: "node-builtin", name: "process.pid", fns: ["process.pid"] },
|
|
@@ -1234,6 +1286,9 @@ const ASSERT_MODULE_HINTS = {
|
|
|
1234
1286
|
'"AssertionError" or err.code === "ERR_ASSERTION"',
|
|
1235
1287
|
};
|
|
1236
1288
|
export const BUILTIN_MODULE_FENCE_HINTS = {
|
|
1289
|
+
console: {
|
|
1290
|
+
Console: "custom Console instances are not supported yet; direct node:console log/info/debug/error/warn calls use the process output streams",
|
|
1291
|
+
},
|
|
1237
1292
|
assert: ASSERT_MODULE_HINTS,
|
|
1238
1293
|
// The strict module's equal/notEqual/deepEqual/notDeepEqual ARE the
|
|
1239
1294
|
// strict comparisons (aliased in the spoke) — only the members with no
|
|
@@ -1249,13 +1304,13 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
|
|
|
1249
1304
|
promisify: "the lowered shapes are const bindings over child_process.execFile and fs.readFile; call the bound function directly",
|
|
1250
1305
|
},
|
|
1251
1306
|
"stream/consumers": {
|
|
1252
|
-
arrayBuffer: "
|
|
1307
|
+
arrayBuffer: "collecting a stream directly into an ArrayBuffer has no native lowering yet; " +
|
|
1253
1308
|
"buffer(stream) collects the same bytes as a Buffer",
|
|
1254
1309
|
blob: "Blob values have no representation in a compiled binary — " +
|
|
1255
1310
|
"buffer(stream) collects the same bytes as a Buffer, text(stream) the decoded text",
|
|
1256
1311
|
},
|
|
1257
1312
|
module: {
|
|
1258
|
-
createRequire: "the lowered shape is a const binding over createRequire(import.meta.url) (or __filename) " +
|
|
1313
|
+
createRequire: "the lowered shape is a const binding (or a proven stable top-level let/var) over createRequire(import.meta.url) (or __filename) " +
|
|
1259
1314
|
"whose require calls take STATIC string literals — builtins, project modules (including #imports), " +
|
|
1260
1315
|
"relative .json documents, --npm-static packages, and installed npm packages under --dynamic resolve at build time; " +
|
|
1261
1316
|
"dynamic specifiers cannot exist in a compiled binary's fixed module graph",
|
|
@@ -1389,13 +1444,6 @@ export function stdlibMemberFence(lowerer, access) {
|
|
|
1389
1444
|
"flat has no lowering (flatMap does) — flatten into an accumulator instead: " +
|
|
1390
1445
|
"for (const x of xs) for (const y of x) out.push(y)";
|
|
1391
1446
|
}
|
|
1392
|
-
else if (recvIr?.kind === "object" &&
|
|
1393
|
-
RUNTIME_ERROR_CLASSES.has(recvIr.className) &&
|
|
1394
|
-
member === "stack") {
|
|
1395
|
-
hint =
|
|
1396
|
-
"stack traces are not captured (frames would need runtime bookkeeping); " +
|
|
1397
|
-
"name, message, and toString() are available";
|
|
1398
|
-
}
|
|
1399
1447
|
else if (container === "process.stdin" || (container === "process" && member === "stdin")) {
|
|
1400
1448
|
hint =
|
|
1401
1449
|
"isTTY, destroy(), on/once of the data/end/error events, and " +
|
|
@@ -1420,15 +1468,13 @@ export function stdlibMemberFence(lowerer, access) {
|
|
|
1420
1468
|
}
|
|
1421
1469
|
else if (container === "TextEncoder") {
|
|
1422
1470
|
hint =
|
|
1423
|
-
"
|
|
1424
|
-
"
|
|
1425
|
-
"instances and other members need a runtime object representation";
|
|
1471
|
+
"TextEncoder instances can be stored, passed, and captured; encode(string) and encode() compile, " +
|
|
1472
|
+
"while encodeInto and other members have no static lowering";
|
|
1426
1473
|
}
|
|
1427
1474
|
else if (container === "TextDecoder") {
|
|
1428
1475
|
hint =
|
|
1429
|
-
"
|
|
1430
|
-
"(
|
|
1431
|
-
"instances, streaming state, and other members need a runtime object representation";
|
|
1476
|
+
"TextDecoder instances with recognized literal WHATWG labels and default options can be stored, passed, and captured; " +
|
|
1477
|
+
"decode(Uint8Array/Buffer) and decode() compile; streaming, constructor options, and other members have no static lowering";
|
|
1432
1478
|
}
|
|
1433
1479
|
else if (member === "prototype") {
|
|
1434
1480
|
hint =
|
|
@@ -1448,9 +1494,8 @@ export function stdlibMemberFence(lowerer, access) {
|
|
|
1448
1494
|
}
|
|
1449
1495
|
else if (container === "ArrayBuffer" || container.startsWith("ArrayBuffer<")) {
|
|
1450
1496
|
hint =
|
|
1451
|
-
"
|
|
1452
|
-
"
|
|
1453
|
-
"(new Uint8Array(n)); allocate a new view and copy instead";
|
|
1497
|
+
"native ArrayBuffer storage is fixed-length; resize and transfer are unsupported — " +
|
|
1498
|
+
"allocate a new buffer and copy through typed-array views instead";
|
|
1454
1499
|
}
|
|
1455
1500
|
else if (container === "SharedArrayBuffer" || container.startsWith("SharedArrayBuffer<")) {
|
|
1456
1501
|
hint =
|
|
@@ -1467,7 +1512,8 @@ export function stdlibMemberFence(lowerer, access) {
|
|
|
1467
1512
|
"locale- and ICU-backed behavior lives outside the static runtime (the localeCompare " +
|
|
1468
1513
|
"stance: code-unit order, no collation/locale data) — what lowers: the composed " +
|
|
1469
1514
|
'new Intl.NumberFormat("en-US").format(x) and x.toLocaleString("en-US") with default ' +
|
|
1470
|
-
"options
|
|
1515
|
+
"options, plus default Unicode grapheme segmentation with Intl.Segmenter; locale " +
|
|
1516
|
+
"negotiation, word/sentence segmentation, and resolvedOptions remain unsupported";
|
|
1471
1517
|
}
|
|
1472
1518
|
else if (container === "Object" && member === "assign") {
|
|
1473
1519
|
hint =
|
|
@@ -1540,12 +1586,12 @@ export function stdlibGlobalNameOf(lowerer, expr) {
|
|
|
1540
1586
|
if (ts.isParenthesizedExpression(expr))
|
|
1541
1587
|
return stdlibGlobalNameOf(lowerer, expr.expression);
|
|
1542
1588
|
if (ts.isIdentifier(expr)) {
|
|
1589
|
+
const symbol = lowerer.checker.getSymbolAtLocation(expr);
|
|
1543
1590
|
// `globalThis` itself: a reserved intrinsic — tsc rejects user
|
|
1544
|
-
// bindings
|
|
1545
|
-
// declarations for the provenance check
|
|
1546
|
-
if (expr.text === "globalThis")
|
|
1591
|
+
// global bindings, but local parameters can shadow it. Its special
|
|
1592
|
+
// symbol has no ordinary declarations for the provenance check.
|
|
1593
|
+
if (expr.text === "globalThis" && (!symbol || lowerer.checker.declarationsOf(symbol).length === 0 || lowerer.isStdlibSymbol(symbol)))
|
|
1547
1594
|
return "globalThis";
|
|
1548
|
-
const symbol = lowerer.checker.getSymbolAtLocation(expr);
|
|
1549
1595
|
if (!symbol)
|
|
1550
1596
|
return null;
|
|
1551
1597
|
const alias = lowerer.stdlibGlobalAliases.get(symbol);
|
|
@@ -1638,6 +1684,18 @@ export function stdlibGlobalAliasNameOf(lowerer, init) {
|
|
|
1638
1684
|
: stdlibGlobalNameOf(lowerer, aliasExpr);
|
|
1639
1685
|
if (name === null)
|
|
1640
1686
|
return null;
|
|
1687
|
+
// An explicitly any-typed globalThis binding in dynamic TypeScript
|
|
1688
|
+
// holds the engine's global object. Keep the static alias for JS files
|
|
1689
|
+
// (their bare-global value path uses identity tokens) and for the
|
|
1690
|
+
// `globalThis || global` guard that the static alias path folds.
|
|
1691
|
+
let directInit = init;
|
|
1692
|
+
while (ts.isParenthesizedExpression(directInit))
|
|
1693
|
+
directInit = directInit.expression;
|
|
1694
|
+
if (name === "globalThis" && lowerer.dynamic && !isJsSourceFile(init.getSourceFile()) &&
|
|
1695
|
+
ts.isIdentifier(directInit) && directInit.text === "globalThis" &&
|
|
1696
|
+
ts.isVariableDeclaration(init.parent) &&
|
|
1697
|
+
(lowerer.typeOf(init.parent.name).flags & ts.TypeFlags.Any) !== 0)
|
|
1698
|
+
return null;
|
|
1641
1699
|
// Only alias OBJECT-shaped globals whose members lower by receiver
|
|
1642
1700
|
// identity (process, console, globalThis itself, and perf_hooks'
|
|
1643
1701
|
// performance — the mockable-clock idiom snapshots it). Function-valued
|
|
@@ -1653,6 +1711,11 @@ export function stdlibGlobalAliasDecl(lowerer, nameNode, init) {
|
|
|
1653
1711
|
const name = stdlibGlobalAliasNameOf(lowerer, init);
|
|
1654
1712
|
if (name === null)
|
|
1655
1713
|
return false;
|
|
1714
|
+
// Mutable global-object bindings keep real storage, even when never
|
|
1715
|
+
// reassigned: var can be observed before initialization and let has TDZ.
|
|
1716
|
+
if (name === "globalThis" && ts.isVariableDeclaration(nameNode.parent) &&
|
|
1717
|
+
(ts.getCombinedNodeFlags(nameNode.parent) & ts.NodeFlags.Const) === 0)
|
|
1718
|
+
return false;
|
|
1656
1719
|
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1657
1720
|
if (!symbol)
|
|
1658
1721
|
return false;
|