@scriptc/compiler 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +73 -24
- package/ambient/scriptc-overrides.d.ts +10 -6
- package/ambient/scriptc.d.ts +15 -0
- package/dist/backend/build-cache.d.ts +1 -3
- package/dist/backend/build-cache.js +3 -22
- package/dist/backend/build-cache.js.map +1 -1
- package/dist/backend/cache-root.d.ts +3 -0
- package/dist/backend/cache-root.js +23 -0
- package/dist/backend/cache-root.js.map +1 -0
- package/dist/backend/cycle-analysis.d.ts +15 -0
- package/dist/backend/cycle-analysis.js +107 -0
- package/dist/backend/cycle-analysis.js.map +1 -0
- package/dist/backend/cycle-analysis.test.js +124 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -0
- package/dist/backend/executable-features.d.ts +4 -0
- package/dist/backend/executable-features.js +42 -0
- package/dist/backend/executable-features.js.map +1 -0
- package/dist/backend/external-c.d.ts +5 -27
- package/dist/backend/external-c.js +5 -40
- package/dist/backend/external-c.js.map +1 -1
- package/dist/backend/ffi-callbacks.d.ts +2 -3
- package/dist/backend/ffi-callbacks.js +2 -3
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/library-identity-markers.d.ts +4 -9
- package/dist/backend/library-identity-markers.js +11 -49
- package/dist/backend/library-identity-markers.js.map +1 -1
- package/dist/backend/library-pack.d.ts +5 -0
- package/dist/backend/library-pack.js +123 -0
- package/dist/backend/library-pack.js.map +1 -0
- package/dist/backend/link-plan-core.d.ts +20 -0
- package/dist/backend/link-plan-core.js +18 -0
- package/dist/backend/link-plan-core.js.map +1 -0
- package/dist/backend/link-plan.d.ts +1 -1
- package/dist/backend/link-plan.js +16 -17
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/link-trace.d.ts +2 -0
- package/dist/backend/link-trace.js +24 -0
- package/dist/backend/link-trace.js.map +1 -0
- package/dist/backend/linker.js +1 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/literals.d.ts +9 -0
- package/dist/backend/literals.js +35 -0
- package/dist/backend/literals.js.map +1 -0
- package/dist/backend/literals.test.d.ts +1 -0
- package/dist/backend/literals.test.js +53 -0
- package/dist/backend/literals.test.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +2 -0
- package/dist/backend/llvm/blocks.js +9 -4
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.d.ts +1 -0
- package/dist/backend/llvm/blocks.test.js +91 -0
- package/dist/backend/llvm/blocks.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +14 -8
- package/dist/backend/llvm/classes.js +70 -28
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -1
- package/dist/backend/llvm/common.js +45 -4
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/debug-info.js +2 -7
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/debug-info.test.d.ts +1 -0
- package/dist/backend/llvm/debug-info.test.js +110 -0
- package/dist/backend/llvm/debug-info.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +16 -2
- package/dist/backend/llvm/dyn.js +494 -165
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +596 -1
- package/dist/backend/llvm/emitter.js +695 -410
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.d.ts +1 -0
- package/dist/backend/llvm/emitter.test.js +179 -0
- package/dist/backend/llvm/emitter.test.js.map +1 -0
- package/dist/backend/llvm/expr-async.js +23 -14
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +32 -14
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-callbacks.js +25 -22
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +136 -35
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +1 -1
- package/dist/backend/llvm/expr-containers.js +43 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +5 -260
- package/dist/backend/llvm/expr-control.js +9 -5
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.d.ts +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +62 -74
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.d.ts +1 -1
- package/dist/backend/llvm/expr-island.js +11 -7
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +51 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +1 -1
- package/dist/backend/llvm/expr-records.d.ts +5 -1
- package/dist/backend/llvm/expr-records.js +43 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +4 -4
- package/dist/backend/llvm/expr-stream-bridges.js +102 -121
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.d.ts +1 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js +55 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -0
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +12 -12
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +19 -0
- package/dist/backend/llvm/layouts.js +12 -0
- package/dist/backend/llvm/layouts.js.map +1 -0
- package/dist/backend/llvm/lib-abi.d.ts +19 -0
- package/dist/backend/llvm/lib-abi.js +82 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -0
- package/dist/backend/llvm/lib-connect.d.ts +2 -0
- package/dist/backend/llvm/lib-connect.js +51 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.d.ts +2 -0
- package/dist/backend/llvm/lib-datagram.js +135 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -0
- package/dist/backend/llvm/lib-dispatch.js +50 -6
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +30 -18
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +2 -0
- package/dist/backend/llvm/lib-http2.js +215 -0
- package/dist/backend/llvm/lib-http2.js.map +1 -0
- package/dist/backend/llvm/lib-lookup.d.ts +2 -0
- package/dist/backend/llvm/lib-lookup.js +39 -0
- package/dist/backend/llvm/lib-lookup.js.map +1 -0
- package/dist/backend/llvm/lib-network.js +25 -2
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +21 -16
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +117 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +3 -2
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.d.ts +2 -0
- package/dist/backend/llvm/lib-test.js +34 -0
- package/dist/backend/llvm/lib-test.js.map +1 -0
- package/dist/backend/llvm/lib-tls.d.ts +2 -0
- package/dist/backend/llvm/lib-tls.js +82 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +10 -9
- package/dist/backend/llvm/shapes.js +35 -130
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/unsupported.d.ts +1 -0
- package/dist/backend/llvm/unsupported.js +1 -2
- package/dist/backend/llvm/unsupported.js.map +1 -1
- package/dist/backend/llvm/walkers.js +1 -7
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/mangle.d.ts +2 -2
- package/dist/backend/mangle.js +16 -5
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/{c/may-throw.d.ts → may-throw.d.ts} +1 -1
- package/dist/backend/{c/may-throw.js → may-throw.js} +51 -46
- package/dist/backend/may-throw.js.map +1 -0
- package/dist/backend/may-throw.test.d.ts +1 -0
- package/dist/backend/may-throw.test.js +58 -0
- package/dist/backend/may-throw.test.js.map +1 -0
- package/dist/backend/native-codegen-core.d.ts +22 -0
- package/dist/backend/native-codegen-core.js +44 -0
- package/dist/backend/native-codegen-core.js.map +1 -0
- package/dist/backend/native-codegen.d.ts +3 -19
- package/dist/backend/native-codegen.js +5 -44
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +2 -2
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +94 -0
- package/dist/backend/native-link-info-core.js +62 -0
- package/dist/backend/native-link-info-core.js.map +1 -0
- package/dist/backend/native-link-info.d.ts +3 -88
- package/dist/backend/native-link-info.js +12 -243
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +41 -146
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +10 -25
- package/dist/backend/native-toolchain.js +31 -211
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +5 -5
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +24 -0
- package/dist/backend/native-tools.js +33 -0
- package/dist/backend/native-tools.js.map +1 -0
- package/dist/backend/object-localize.js +19 -8
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +22 -0
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +101 -0
- package/dist/backend/runtime-pack-core.js +172 -0
- package/dist/backend/runtime-pack-core.js.map +1 -0
- package/dist/backend/runtime-pack-native.d.ts +21 -0
- package/dist/backend/runtime-pack-native.js +70 -0
- package/dist/backend/runtime-pack-native.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.d.ts +3 -83
- package/dist/backend/runtime-pack.js +8 -151
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +24 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.d.ts +22 -0
- package/dist/backend/target-diagnostics.js +108 -0
- package/dist/backend/target-diagnostics.js.map +1 -0
- package/dist/backend/target-platform.d.ts +15 -0
- package/dist/backend/target-platform.js +72 -0
- package/dist/backend/target-platform.js.map +1 -0
- package/dist/backend/targets.d.ts +13 -4
- package/dist/backend/targets.js +95 -30
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +65 -4
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/backend/toolchain-environment.d.ts +6 -0
- package/dist/backend/toolchain-environment.js +99 -0
- package/dist/backend/toolchain-environment.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +1 -9
- package/dist/backend/vendor-archives.js +2 -9
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +9 -0
- package/dist/backend/vendor-inputs.js +10 -0
- package/dist/backend/vendor-inputs.js.map +1 -0
- package/dist/backend/warm-cache.d.ts +3 -0
- package/dist/backend/warm-cache.js +41 -0
- package/dist/backend/warm-cache.js.map +1 -0
- package/dist/cli/command.d.ts +3 -0
- package/dist/cli/command.js +328 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/host.d.ts +24 -0
- package/dist/cli/host.js +2 -0
- package/dist/cli/host.js.map +1 -0
- package/dist/cli/output-options.d.ts +26 -0
- package/dist/cli/output-options.js +60 -0
- package/dist/cli/output-options.js.map +1 -0
- package/dist/cli/paths.d.ts +12 -0
- package/dist/cli/paths.js +42 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/usage.d.ts +74 -0
- package/dist/cli/usage.js +86 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/cli/wasi-paths.d.ts +8 -0
- package/dist/cli/wasi-paths.js +41 -0
- package/dist/cli/wasi-paths.js.map +1 -0
- package/dist/cli/wasi-runner.d.ts +2 -0
- package/dist/cli/wasi-runner.js +28 -0
- package/dist/cli/wasi-runner.js.map +1 -0
- package/dist/compat/fetch-profile.js +3 -3
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +162 -0
- package/dist/compile-types.js +2 -0
- package/dist/compile-types.js.map +1 -0
- package/dist/coverage/report.js +11 -5
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +5 -2
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +3 -3
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -4
- package/dist/executable/executable-cache.js +5 -6
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +16 -17
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +14 -0
- package/dist/executable/prepare.js +66 -0
- package/dist/executable/prepare.js.map +1 -0
- package/dist/ffi/ffi-manifest.d.ts +11 -4
- package/dist/ffi/ffi-manifest.js +170 -58
- package/dist/ffi/ffi-manifest.js.map +1 -1
- package/dist/ffi/ffi-manifest.test.d.ts +1 -0
- package/dist/ffi/ffi-manifest.test.js +111 -0
- package/dist/ffi/ffi-manifest.test.js.map +1 -0
- package/dist/format-integer.d.ts +3 -0
- package/dist/format-integer.js +14 -0
- package/dist/format-integer.js.map +1 -0
- package/dist/frontend/analysis.d.ts +5 -0
- package/dist/frontend/analysis.js +88 -0
- package/dist/frontend/analysis.js.map +1 -0
- package/dist/frontend/arguments-usage.d.ts +1 -3
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -1
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-lexer.d.ts +4 -25
- package/dist/frontend/cjs-lexer.js +6 -806
- package/dist/frontend/cjs-lexer.js.map +1 -1
- package/dist/frontend/cjs-resolve.d.ts +5 -0
- package/dist/frontend/cjs-resolve.js +429 -0
- package/dist/frontend/cjs-resolve.js.map +1 -0
- package/dist/frontend/cjs-syntax.d.ts +26 -0
- package/dist/frontend/cjs-syntax.js +806 -0
- package/dist/frontend/cjs-syntax.js.map +1 -0
- package/dist/frontend/comptime-node.d.ts +4 -0
- package/dist/frontend/comptime-node.js +16 -0
- package/dist/frontend/comptime-node.js.map +1 -0
- package/dist/frontend/comptime-node.test.d.ts +1 -0
- package/dist/frontend/comptime-node.test.js +37 -0
- package/dist/frontend/comptime-node.test.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +3 -4
- package/dist/frontend/dts-paths.js +15 -8
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/fork-target.js +2 -2
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/helper-tokens.d.ts +1 -0
- package/dist/frontend/helper-tokens.js +147 -0
- package/dist/frontend/helper-tokens.js.map +1 -0
- package/dist/frontend/helper-tokens.test.d.ts +1 -0
- package/dist/frontend/helper-tokens.test.js +35 -0
- package/dist/frontend/helper-tokens.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.d.ts +5 -0
- package/dist/frontend/inferred-js-diagnostics.js +69 -0
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.d.ts +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +58 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +5 -2
- package/dist/frontend/input-tracker.js +24 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +23 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lib-contract.js +32 -24
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/literal-values.d.ts +4 -0
- package/dist/frontend/literal-values.js +21 -0
- package/dist/frontend/literal-values.js.map +1 -0
- package/dist/frontend/literal-values.test.d.ts +1 -0
- package/dist/frontend/literal-values.test.js +91 -0
- package/dist/frontend/literal-values.test.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.d.ts +1 -1
- package/dist/frontend/lowering/abstract-equality.js +3 -0
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +11 -6
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +4 -1
- package/dist/frontend/lowering/array-values.js +43 -1
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/callback-arg.js +1 -0
- package/dist/frontend/lowering/callback-arg.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +12 -0
- package/dist/frontend/lowering/class-callbacks.js +63 -0
- package/dist/frontend/lowering/class-callbacks.js.map +1 -0
- package/dist/frontend/lowering/class-descriptors.d.ts +9 -0
- package/dist/frontend/lowering/class-descriptors.js +73 -0
- package/dist/frontend/lowering/class-descriptors.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +41 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +803 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.d.ts +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +92 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -0
- package/dist/frontend/lowering/class-instance-constructor.d.ts +7 -0
- package/dist/frontend/lowering/class-instance-constructor.js +64 -0
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
- package/dist/frontend/lowering/class-method-values.d.ts +10 -0
- package/dist/frontend/lowering/class-method-values.js +170 -0
- package/dist/frontend/lowering/class-method-values.js.map +1 -0
- package/dist/frontend/lowering/class-prototypes.d.ts +16 -0
- package/dist/frontend/lowering/class-prototypes.js +134 -0
- package/dist/frontend/lowering/class-prototypes.js.map +1 -0
- package/dist/frontend/lowering/class-static-data.d.ts +6 -0
- package/dist/frontend/lowering/class-static-data.js +56 -0
- package/dist/frontend/lowering/class-static-data.js.map +1 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.d.ts +4 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js +26 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.d.ts +11 -7
- package/dist/frontend/lowering/containers/bytes.js +164 -155
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +2 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +39 -16
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.d.ts +7 -0
- package/dist/frontend/lowering/containers/string-replacement.js +217 -0
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -0
- package/dist/frontend/lowering/error-methods.d.ts +11 -0
- package/dist/frontend/lowering/error-methods.js +78 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -0
- package/dist/frontend/lowering/expressions/global-symbols.d.ts +6 -0
- package/dist/frontend/lowering/expressions/global-symbols.js +11 -0
- package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.d.ts +7 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +49 -0
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.d.ts +6 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js +124 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -0
- package/dist/frontend/lowering/expressions/object-literals.d.ts +8 -8
- package/dist/frontend/lowering/expressions/object-literals.js +473 -178
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +20 -8
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/try-lower-expression.js +1 -0
- package/dist/frontend/lowering/expressions/try-lower-expression.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-field-write.d.ts +8 -0
- package/dist/frontend/lowering/expressions/union-field-write.js +71 -0
- package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +93 -0
- package/dist/frontend/lowering/function-context.js +103 -0
- package/dist/frontend/lowering/function-context.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +7 -0
- package/dist/frontend/lowering/generator-delegation.js +85 -0
- package/dist/frontend/lowering/generator-delegation.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +10 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +105 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +2 -1
- package/dist/frontend/lowering/lib-boundary.js +59 -20
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.test.d.ts +1 -0
- package/dist/frontend/lowering/lib-boundary.test.js +45 -0
- package/dist/frontend/lowering/lib-boundary.test.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +12 -0
- package/dist/frontend/lowering/lower-builtin-values.js +139 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.d.ts +27 -41
- package/dist/frontend/lowering/lower-builtins.js +539 -343
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +20 -17
- package/dist/frontend/lowering/lower-calls.js +1236 -353
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +83 -45
- package/dist/frontend/lowering/lower-classes.js +952 -339
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +23 -32
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +27 -32
- package/dist/frontend/lowering/lower-containers.js +796 -151
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +1 -1
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.d.ts +1 -1
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +30 -1
- package/dist/frontend/lowering/lower-event-emitter.js +58 -26
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.d.ts +7 -1
- package/dist/frontend/lowering/lower-expando.js +14 -6
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +35 -11
- package/dist/frontend/lowering/lower-exprs.js +1674 -779
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +2 -5
- package/dist/frontend/lowering/lower-generators.js +77 -46
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +7 -0
- package/dist/frontend/lowering/lower-global-value.js +17 -0
- package/dist/frontend/lowering/lower-global-value.js.map +1 -0
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +17 -8
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +5 -8
- package/dist/frontend/lowering/lower-island.js +34 -23
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.d.ts +2 -2
- package/dist/frontend/lowering/lower-mixins.js +5 -3
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +233 -30
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +1 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +1 -1
- package/dist/frontend/lowering/lower-node-module.js +13 -10
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +1 -1
- package/dist/frontend/lowering/lower-server.js +6 -10
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +10 -14
- package/dist/frontend/lowering/lower-stmts.js +728 -496
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +1 -1
- package/dist/frontend/lowering/lower-stream.js +19 -10
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +1 -1
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-url.d.ts +6 -0
- package/dist/frontend/lowering/lower-url.js +77 -0
- package/dist/frontend/lowering/lower-url.js.map +1 -0
- package/dist/frontend/lowering/lowerer.d.ts +113 -189
- package/dist/frontend/lowering/lowerer.js +1031 -672
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.d.ts +1 -0
- package/dist/frontend/lowering/lowerer.test.js +26 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -0
- package/dist/frontend/lowering/native-ffi.d.ts +5 -0
- package/dist/frontend/lowering/native-ffi.js +40 -0
- package/dist/frontend/lowering/native-ffi.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.d.ts +7 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +33 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +8 -0
- package/dist/frontend/lowering/object-factory-new.js +68 -0
- package/dist/frontend/lowering/object-factory-new.js.map +1 -0
- package/dist/frontend/lowering/optional-arguments.js +6 -1
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-locals.d.ts +14 -0
- package/dist/frontend/lowering/runtime-optional-locals.js +41 -0
- package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js +85 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.d.ts +8 -0
- package/dist/frontend/lowering/sanitize-class-types.js +79 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js +60 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/static-this.d.ts +5 -1
- package/dist/frontend/lowering/static-this.js +28 -2
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +7 -0
- package/dist/frontend/lowering/string-index.js +39 -0
- package/dist/frontend/lowering/string-index.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +8 -3
- package/dist/frontend/lowering/surfaces.js +61 -29
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +22 -0
- package/dist/frontend/lowering/symbol-fields.js +183 -0
- package/dist/frontend/lowering/symbol-fields.js.map +1 -0
- package/dist/frontend/lowering/symbol-methods.d.ts +7 -0
- package/dist/frontend/lowering/symbol-methods.js +30 -0
- package/dist/frontend/lowering/symbol-methods.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.d.ts +10 -0
- package/dist/frontend/lowering/text-decoder-encoding.js +77 -0
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.d.ts +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js +38 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.d.ts +9 -0
- package/dist/frontend/lowering/union-narrow.js +59 -0
- package/dist/frontend/lowering/union-narrow.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.test.d.ts +1 -0
- package/dist/frontend/lowering/union-narrow.test.js +72 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +43 -0
- package/dist/frontend/lowering/union-retag.js +259 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -0
- package/dist/frontend/lowering/union-retag.test.d.ts +1 -0
- package/dist/frontend/lowering/union-retag.test.js +405 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.d.ts +14 -0
- package/dist/frontend/lowering/unregistered-class-types.js +94 -0
- package/dist/frontend/lowering/unregistered-class-types.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js +65 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +40 -0
- package/dist/frontend/lowering/width-lift.js +2 -0
- package/dist/frontend/lowering/width-lift.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +58 -0
- package/dist/frontend/module-syntax.js +123 -0
- package/dist/frontend/module-syntax.js.map +1 -0
- package/dist/frontend/module-syntax.test.d.ts +1 -0
- package/dist/frontend/module-syntax.test.js +78 -0
- package/dist/frontend/module-syntax.test.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.d.ts +17 -0
- package/dist/frontend/npm-fetch-analysis.js +100 -0
- package/dist/frontend/npm-fetch-analysis.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.test.d.ts +1 -0
- package/dist/frontend/npm-fetch-analysis.test.js +107 -0
- package/dist/frontend/npm-fetch-analysis.test.js.map +1 -0
- package/dist/frontend/npm-fetch-node.d.ts +2 -0
- package/dist/frontend/npm-fetch-node.js +12 -0
- package/dist/frontend/npm-fetch-node.js.map +1 -0
- package/dist/frontend/npm-fetch-syntax.d.ts +6 -0
- package/dist/frontend/npm-fetch-syntax.js +207 -0
- package/dist/frontend/npm-fetch-syntax.js.map +1 -0
- package/dist/frontend/npm-node.d.ts +10 -0
- package/dist/frontend/npm-node.js +14 -0
- package/dist/frontend/npm-node.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.d.ts +8 -0
- package/dist/frontend/npm-static-bundled-cjs.js +236 -0
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js +69 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.d.ts +57 -0
- package/dist/frontend/npm-static-declaration-syntax.js +944 -0
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -0
- package/dist/frontend/npm-static-declarations.d.ts +11 -39
- package/dist/frontend/npm-static-declarations.js +22 -561
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +245 -6
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/npm-static-prune.d.ts +1 -1
- package/dist/frontend/npm-static-prune.js +5 -4
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +1 -1
- package/dist/frontend/npm-static-prune.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -0
- package/dist/frontend/npm-static-rewrite-host.js +179 -0
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -0
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +16 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +905 -0
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -0
- package/dist/frontend/npm-static-rewrite.d.ts +0 -5
- package/dist/frontend/npm-static-rewrite.js +2 -1079
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.d.ts +5 -0
- package/dist/frontend/npm-static-subtyping.js +55 -0
- package/dist/frontend/npm-static-subtyping.js.map +1 -0
- package/dist/frontend/npm-static-subtyping.test.d.ts +1 -0
- package/dist/frontend/npm-static-subtyping.test.js +58 -0
- package/dist/frontend/npm-static-subtyping.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +7 -15
- package/dist/frontend/npm-static.js +19 -28
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +8 -69
- package/dist/frontend/npm.js +21 -361
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +2 -2
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +6 -0
- package/dist/frontend/pipeline-native.js +32 -0
- package/dist/frontend/pipeline-native.js.map +1 -0
- package/dist/frontend/pipeline.d.ts +54 -0
- package/dist/frontend/pipeline.js +382 -0
- package/dist/frontend/pipeline.js.map +1 -0
- package/dist/frontend/pipeline.test.d.ts +1 -0
- package/dist/frontend/pipeline.test.js +77 -0
- package/dist/frontend/pipeline.test.js.map +1 -0
- package/dist/frontend/program-analysis.d.ts +10 -0
- package/dist/frontend/program-analysis.js +14 -0
- package/dist/frontend/program-analysis.js.map +1 -0
- package/dist/frontend/program-node.d.ts +9 -0
- package/dist/frontend/program-node.js +48 -0
- package/dist/frontend/program-node.js.map +1 -0
- package/dist/frontend/program.d.ts +38 -19
- package/dist/frontend/program.js +344 -169
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +87 -2
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/provenance-core.d.ts +9 -0
- package/dist/frontend/provenance-core.js +435 -0
- package/dist/frontend/provenance-core.js.map +1 -0
- package/dist/frontend/provenance.d.ts +0 -4
- package/dist/frontend/provenance.js +4 -459
- package/dist/frontend/provenance.js.map +1 -1
- package/dist/frontend/resolve.d.ts +3 -1
- package/dist/frontend/resolve.js +6 -3
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.d.ts +4 -3
- package/dist/frontend/runtime-resolve.js +22 -18
- package/dist/frontend/runtime-resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.test.js +53 -0
- package/dist/frontend/runtime-resolve.test.js.map +1 -1
- package/dist/frontend/services-node.d.ts +5 -0
- package/dist/frontend/services-node.js +19 -0
- package/dist/frontend/services-node.js.map +1 -0
- package/dist/frontend/services-node.test.d.ts +1 -0
- package/dist/frontend/services-node.test.js +70 -0
- package/dist/frontend/services-node.test.js.map +1 -0
- package/dist/frontend/services.d.ts +44 -0
- package/dist/frontend/services.js +90 -0
- package/dist/frontend/services.js.map +1 -0
- package/dist/frontend/services.test.d.ts +1 -0
- package/dist/frontend/services.test.js +174 -0
- package/dist/frontend/services.test.js.map +1 -0
- package/dist/frontend/ts7/adapter.d.ts +3 -3
- package/dist/frontend/ts7/adapter.js +14 -31
- package/dist/frontend/ts7/adapter.js.map +1 -1
- package/dist/frontend/ts7/api.d.ts +16 -0
- package/dist/frontend/ts7/api.js +24 -0
- package/dist/frontend/ts7/api.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.d.ts +31 -0
- package/dist/frontend/ts7/ast-bytes.js +137 -0
- package/dist/frontend/ts7/ast-bytes.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-bytes.test.js +73 -0
- package/dist/frontend/ts7/ast-bytes.test.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.d.ts +353 -0
- package/dist/frontend/ts7/ast-guards.generated.js +1951 -0
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-guards.test.js +43 -0
- package/dist/frontend/ts7/ast-guards.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +194 -0
- package/dist/frontend/ts7/ast-node.js +448 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -0
- package/dist/frontend/ts7/ast-node.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-node.test.js +266 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -0
- package/dist/frontend/ts7/ast-schema.generated.d.ts +503 -0
- package/dist/frontend/ts7/ast-schema.generated.js +1446 -0
- package/dist/frontend/ts7/ast-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-text.d.ts +6 -0
- package/dist/frontend/ts7/ast-text.js +124 -0
- package/dist/frontend/ts7/ast-text.js.map +1 -0
- package/dist/frontend/ts7/ast-text.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-text.test.js +38 -0
- package/dist/frontend/ts7/ast-text.test.js.map +1 -0
- package/dist/frontend/ts7/ast-tokens.generated.d.ts +2 -0
- package/dist/frontend/ts7/ast-tokens.generated.js +155 -0
- package/dist/frontend/ts7/ast-tokens.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.d.ts +42 -0
- package/dist/frontend/ts7/ast-types.generated.d.ts +1615 -0
- package/dist/frontend/ts7/ast-types.generated.js +5 -0
- package/dist/frontend/ts7/ast-types.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.js +3 -0
- package/dist/frontend/ts7/ast-types.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.d.ts +58 -0
- package/dist/frontend/ts7/ast-wire.js +267 -0
- package/dist/frontend/ts7/ast-wire.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-wire.test.js +151 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -0
- package/dist/frontend/ts7/ast.d.ts +14 -14
- package/dist/frontend/ts7/ast.js +21 -15
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/census-check.js +1 -0
- package/dist/frontend/ts7/census-check.js.map +1 -1
- package/dist/frontend/ts7/checker-cache.d.ts +48 -0
- package/dist/frontend/ts7/checker-cache.js +92 -0
- package/dist/frontend/ts7/checker-cache.js.map +1 -0
- package/dist/frontend/ts7/checker.d.ts +19 -46
- package/dist/frontend/ts7/checker.js +231 -161
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.d.ts +1 -0
- package/dist/frontend/ts7/checker.test.js +335 -0
- package/dist/frontend/ts7/checker.test.js.map +1 -0
- package/dist/frontend/ts7/enums.d.ts +4 -27
- package/dist/frontend/ts7/enums.generated.d.ts +878 -0
- package/dist/frontend/ts7/enums.generated.js +1313 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -0
- package/dist/frontend/ts7/enums.js +4 -45
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/enums.test.d.ts +1 -0
- package/dist/frontend/ts7/enums.test.js +48 -0
- package/dist/frontend/ts7/enums.test.js.map +1 -0
- package/dist/frontend/ts7/native-api.d.ts +10 -0
- package/dist/frontend/ts7/native-api.js +10 -0
- package/dist/frontend/ts7/native-api.js.map +1 -0
- package/dist/frontend/ts7/native-host.d.ts +2 -0
- package/dist/frontend/ts7/native-host.js +11 -0
- package/dist/frontend/ts7/native-host.js.map +1 -0
- package/dist/frontend/ts7/native-process.d.ts +14 -0
- package/dist/frontend/ts7/native-process.js +62 -0
- package/dist/frontend/ts7/native-process.js.map +1 -0
- package/dist/frontend/ts7/program-adapter.d.ts +10 -98
- package/dist/frontend/ts7/program-adapter.js +16 -310
- package/dist/frontend/ts7/program-adapter.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +115 -0
- package/dist/frontend/ts7/program-host.js +347 -0
- package/dist/frontend/ts7/program-host.js.map +1 -0
- package/dist/frontend/ts7/program-host.test.d.ts +1 -0
- package/dist/frontend/ts7/program-host.test.js +207 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-api.d.ts +12 -0
- package/dist/frontend/ts7/rpc-api.js +23 -0
- package/dist/frontend/ts7/rpc-api.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.d.ts +27 -0
- package/dist/frontend/ts7/rpc-client.js +102 -0
- package/dist/frontend/ts7/rpc-client.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-client.test.js +133 -0
- package/dist/frontend/ts7/rpc-client.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.d.ts +16 -0
- package/dist/frontend/ts7/rpc-filesystem.js +42 -0
- package/dist/frontend/ts7/rpc-filesystem.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js +89 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.d.ts +2 -0
- package/dist/frontend/ts7/rpc-process.js +148 -0
- package/dist/frontend/ts7/rpc-process.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-process.test.js +29 -0
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.d.ts +46 -0
- package/dist/frontend/ts7/rpc-wire.js +195 -0
- package/dist/frontend/ts7/rpc-wire.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-wire.test.js +168 -0
- package/dist/frontend/ts7/rpc-wire.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.d.ts +137 -0
- package/dist/frontend/ts7/semantic-checker.js +221 -0
- package/dist/frontend/ts7/semantic-checker.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-checker.test.js +119 -0
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.d.ts +5 -0
- package/dist/frontend/ts7/semantic-json.js +52 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-json.test.js +42 -0
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.d.ts +222 -0
- package/dist/frontend/ts7/semantic-model.js +423 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-model.test.js +322 -0
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-schema.generated.d.ts +283 -0
- package/dist/frontend/ts7/semantic-schema.generated.js +222 -0
- package/dist/frontend/ts7/semantic-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/semantic-types.d.ts +5 -0
- package/dist/frontend/ts7/semantic-types.js +2 -0
- package/dist/frontend/ts7/semantic-types.js.map +1 -0
- package/dist/frontend/ts7/session-cache.d.ts +17 -0
- package/dist/frontend/ts7/session-cache.js +97 -0
- package/dist/frontend/ts7/session-cache.js.map +1 -0
- package/dist/frontend/ts7/session-cache.test.d.ts +1 -0
- package/dist/frontend/ts7/session-cache.test.js +87 -0
- package/dist/frontend/ts7/session-cache.test.js.map +1 -0
- package/dist/frontend/ts7/session-path.d.ts +18 -0
- package/dist/frontend/ts7/session-path.js +203 -0
- package/dist/frontend/ts7/session-path.js.map +1 -0
- package/dist/frontend/ts7/session-path.test.d.ts +1 -0
- package/dist/frontend/ts7/session-path.test.js +34 -0
- package/dist/frontend/ts7/session-path.test.js.map +1 -0
- package/dist/frontend/ts7/session-schema.generated.d.ts +167 -0
- package/dist/frontend/ts7/session-schema.generated.js +5 -0
- package/dist/frontend/ts7/session-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/session-timing.d.ts +50 -0
- package/dist/frontend/ts7/session-timing.js +61 -0
- package/dist/frontend/ts7/session-timing.js.map +1 -0
- package/dist/frontend/ts7/session-timing.test.d.ts +1 -0
- package/dist/frontend/ts7/session-timing.test.js +52 -0
- package/dist/frontend/ts7/session-timing.test.js.map +1 -0
- package/dist/frontend/ts7/session.d.ts +105 -0
- package/dist/frontend/ts7/session.js +233 -0
- package/dist/frontend/ts7/session.js.map +1 -0
- package/dist/frontend/ts7/session.test.d.ts +1 -0
- package/dist/frontend/ts7/session.test.js +215 -0
- package/dist/frontend/ts7/session.test.js.map +1 -0
- package/dist/frontend/ts7/source-parser-node.d.ts +6 -0
- package/dist/frontend/ts7/source-parser-node.js +15 -0
- package/dist/frontend/ts7/source-parser-node.js.map +1 -0
- package/dist/frontend/ts7/source-parser.d.ts +25 -0
- package/dist/frontend/ts7/source-parser.js +96 -0
- package/dist/frontend/ts7/source-parser.js.map +1 -0
- package/dist/frontend/ts7/source-parser.test.d.ts +1 -0
- package/dist/frontend/ts7/source-parser.test.js +151 -0
- package/dist/frontend/ts7/source-parser.test.js.map +1 -0
- package/dist/frontend/ts7/syntax.d.ts +3 -0
- package/dist/frontend/ts7/syntax.js +4 -0
- package/dist/frontend/ts7/syntax.js.map +1 -0
- package/dist/frontend/tsc-codes.js +3 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +25 -17
- package/dist/frontend/type-mapper.js +465 -121
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +123 -2
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend/union-discriminants.d.ts +16 -0
- package/dist/frontend/union-discriminants.js +98 -0
- package/dist/frontend/union-discriminants.js.map +1 -0
- package/dist/frontend/union-discriminants.test.d.ts +1 -0
- package/dist/frontend/union-discriminants.test.js +182 -0
- package/dist/frontend/union-discriminants.test.js.map +1 -0
- package/dist/index.d.ts +7 -198
- package/dist/index.js +369 -1572
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +16 -4
- package/dist/ir/analysis.js +21 -4
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -2
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/constant-tables.js +67 -49
- package/dist/ir/constant-tables.js.map +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/control-flow.d.ts +6 -0
- package/dist/ir/control-flow.js +142 -0
- package/dist/ir/control-flow.js.map +1 -0
- package/dist/ir/control-flow.test.d.ts +1 -0
- package/dist/ir/control-flow.test.js +113 -0
- package/dist/ir/control-flow.test.js.map +1 -0
- package/dist/ir/integer-loops.js +7 -18
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-ranges.js +53 -27
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +291 -152
- package/dist/ir/ir.js +588 -881
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +127 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/scalar-records.js +165 -134
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +4 -2
- package/dist/ir/serialize.js +19 -12
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.d.ts +1 -0
- package/dist/ir/serialize.test.js +53 -0
- package/dist/ir/serialize.test.js.map +1 -0
- package/dist/ir/traverse.d.ts +41 -0
- package/dist/ir/traverse.js +660 -0
- package/dist/ir/traverse.js.map +1 -0
- package/dist/ir/traverse.test.d.ts +1 -0
- package/dist/ir/traverse.test.js +242 -0
- package/dist/ir/traverse.test.js.map +1 -0
- package/dist/ir/validate.js +1942 -1491
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +476 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/cache-primitives.d.ts +2 -3
- package/dist/library/cache-primitives.js +4 -6
- package/dist/library/cache-primitives.js.map +1 -1
- package/dist/library/fence-eval.js +2 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.js +7 -6
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.d.ts +3 -2
- package/dist/library/library-cache.js +5 -17
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +54 -41
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/library-profile.d.ts +3 -1
- package/dist/library/library-profile.js +15 -6
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.d.ts +15 -0
- package/dist/library/prepare.js +584 -0
- package/dist/library/prepare.js.map +1 -0
- package/dist/library/semantic-source.d.ts +1 -1
- package/dist/library/semantic-source.js +8 -6
- package/dist/library/semantic-source.js.map +1 -1
- package/dist/library/sidecar-validate.js +4 -4
- package/dist/library/sidecar-validate.js.map +1 -1
- package/dist/library/sidecar.d.ts +2 -0
- package/dist/library/sidecar.js +10 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/cache.d.ts +11 -0
- package/dist/native/cache.js +113 -0
- package/dist/native/cache.js.map +1 -0
- package/dist/native/cache.test.d.ts +1 -0
- package/dist/native/cache.test.js +66 -0
- package/dist/native/cache.test.js.map +1 -0
- package/dist/native/cli.d.ts +1 -0
- package/dist/native/cli.js +112 -0
- package/dist/native/cli.js.map +1 -0
- package/dist/native/compiler.d.ts +15 -0
- package/dist/native/compiler.js +336 -0
- package/dist/native/compiler.js.map +1 -0
- package/dist/native/compiler.test.d.ts +1 -0
- package/dist/native/compiler.test.js +174 -0
- package/dist/native/compiler.test.js.map +1 -0
- package/dist/native/comptime.d.ts +5 -0
- package/dist/native/comptime.js +73 -0
- package/dist/native/comptime.js.map +1 -0
- package/dist/native/comptime.test.d.ts +1 -0
- package/dist/native/comptime.test.js +65 -0
- package/dist/native/comptime.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +26 -0
- package/dist/native/executable-cache.js +228 -0
- package/dist/native/executable-cache.js.map +1 -0
- package/dist/native/executable-cache.test.d.ts +1 -0
- package/dist/native/executable-cache.test.js +151 -0
- package/dist/native/executable-cache.test.js.map +1 -0
- package/dist/native/file-identity.d.ts +4 -0
- package/dist/native/file-identity.js +14 -0
- package/dist/native/file-identity.js.map +1 -0
- package/dist/native/file-identity.test.d.ts +1 -0
- package/dist/native/file-identity.test.js +43 -0
- package/dist/native/file-identity.test.js.map +1 -0
- package/dist/native/library.d.ts +22 -0
- package/dist/native/library.js +83 -0
- package/dist/native/library.js.map +1 -0
- package/dist/native/prepare.d.ts +21 -0
- package/dist/native/prepare.js +174 -0
- package/dist/native/prepare.js.map +1 -0
- package/dist/native/prepare.test.d.ts +1 -0
- package/dist/native/prepare.test.js +70 -0
- package/dist/native/prepare.test.js.map +1 -0
- package/dist/native/sanitizer.d.ts +11 -0
- package/dist/native/sanitizer.js +135 -0
- package/dist/native/sanitizer.js.map +1 -0
- package/dist/native/sanitizer.test.d.ts +1 -0
- package/dist/native/sanitizer.test.js +58 -0
- package/dist/native/sanitizer.test.js.map +1 -0
- package/dist/native/task.d.ts +4 -0
- package/dist/native/task.js +16 -0
- package/dist/native/task.js.map +1 -0
- package/dist/native/task.test.d.ts +1 -0
- package/dist/native/task.test.js +17 -0
- package/dist/native/task.test.js.map +1 -0
- package/dist/native/toolchain.d.ts +45 -0
- package/dist/native/toolchain.js +74 -0
- package/dist/native/toolchain.js.map +1 -0
- package/dist/native/toolchain.test.d.ts +1 -0
- package/dist/native/toolchain.test.js +33 -0
- package/dist/native/toolchain.test.js.map +1 -0
- package/dist/startup-cache.d.ts +1 -1
- package/dist/startup-cache.js +2 -5
- package/dist/startup-cache.js.map +1 -1
- package/dist/timing.d.ts +4 -0
- package/dist/timing.js +19 -0
- package/dist/timing.js.map +1 -0
- package/dist/wasi-paths.js +10 -7
- package/dist/wasi-paths.js.map +1 -1
- package/package.json +28 -19
- package/surface-manifest.json +52 -18
- package/dist/backend/c/async.d.ts +0 -171
- package/dist/backend/c/async.js +0 -1317
- package/dist/backend/c/async.js.map +0 -1
- package/dist/backend/c/c-emitter.d.ts +0 -536
- package/dist/backend/c/c-emitter.js +0 -1932
- package/dist/backend/c/c-emitter.js.map +0 -1
- package/dist/backend/c/exprs.d.ts +0 -15
- package/dist/backend/c/exprs.js +0 -8847
- package/dist/backend/c/exprs.js.map +0 -1
- package/dist/backend/c/island.d.ts +0 -45
- package/dist/backend/c/island.js +0 -281
- package/dist/backend/c/island.js.map +0 -1
- package/dist/backend/c/may-throw.js.map +0 -1
- package/dist/backend/c/shapes.d.ts +0 -142
- package/dist/backend/c/shapes.js +0 -603
- package/dist/backend/c/shapes.js.map +0 -1
- package/dist/backend/c/stmts.d.ts +0 -76
- package/dist/backend/c/stmts.js +0 -1108
- package/dist/backend/c/stmts.js.map +0 -1
- package/dist/backend/c/types.d.ts +0 -71
- package/dist/backend/c/types.js +0 -459
- package/dist/backend/c/types.js.map +0 -1
- package/dist/backend/c/types.test.js +0 -32
- package/dist/backend/c/types.test.js.map +0 -1
- package/dist/backend/c/walkers.d.ts +0 -134
- package/dist/backend/c/walkers.js +0 -1772
- package/dist/backend/c/walkers.js.map +0 -1
- /package/dist/backend/{c/types.test.d.ts → cycle-analysis.test.d.ts} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CheckerCache } from "./checker-cache.js";
|
|
1
2
|
import { InternalCompilerError } from "../../errors.js";
|
|
2
3
|
import { walkPreorder } from "./ast.js";
|
|
3
4
|
import { SignatureKind, SyntaxKind, TypeFlags } from "./enums.js";
|
|
@@ -57,19 +58,11 @@ const TYPE_PREFETCH_KINDS = new Set([
|
|
|
57
58
|
SyntaxKind.ArrayLiteralExpression,
|
|
58
59
|
SyntaxKind.ConditionalExpression,
|
|
59
60
|
]);
|
|
60
|
-
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* adapter, shared by preflight and lowering regardless of which facade
|
|
64
|
-
* helper led to the type. */
|
|
65
|
-
const constituentTypesOf = new WeakMap();
|
|
61
|
+
/** Constituents are owned by the type's semantic project. The type checks
|
|
62
|
+
* its lifetime even for warm reads, and releases cached references when
|
|
63
|
+
* that project is disposed. No process-global cache retains old snapshots. */
|
|
66
64
|
export function constituentTypes(type) {
|
|
67
|
-
|
|
68
|
-
if (types === undefined) {
|
|
69
|
-
types = type.getTypes() ?? [];
|
|
70
|
-
constituentTypesOf.set(type, types);
|
|
71
|
-
}
|
|
72
|
-
return types;
|
|
65
|
+
return type.getTypes() ?? [];
|
|
73
66
|
}
|
|
74
67
|
/** Function-like declarations whose body is deferred until reachability
|
|
75
68
|
* asks for it. Header prefetch walks their names, type parameters, params,
|
|
@@ -138,51 +131,24 @@ function collectNodes(roots, walk = "all") {
|
|
|
138
131
|
export class CheckerFacade {
|
|
139
132
|
raw;
|
|
140
133
|
options;
|
|
141
|
-
|
|
142
|
-
* (WeakMap.has), so misses and cached-undefined are distinguishable. */
|
|
143
|
-
typeAtLocation = new WeakMap();
|
|
144
|
-
symbolAtLocation = new WeakMap();
|
|
145
|
-
contextualType = new WeakMap();
|
|
146
|
-
typeFromTypeNode = new WeakMap();
|
|
147
|
-
shorthandValueSymbol = new WeakMap();
|
|
148
|
-
resolvedSignature = new WeakMap();
|
|
149
|
-
signatureFromDeclaration = new WeakMap();
|
|
150
|
-
/** Symbol-keyed memos. */
|
|
151
|
-
typeOfSymbol = new WeakMap();
|
|
152
|
-
aliasedSymbol = new WeakMap();
|
|
153
|
-
declaredTypeOfSymbol = new WeakMap();
|
|
154
|
-
/** Type-keyed memos. */
|
|
155
|
-
baseTypeOfLiteral = new WeakMap();
|
|
156
|
-
nonNullableType = new WeakMap();
|
|
157
|
-
propertiesOfType = new WeakMap();
|
|
158
|
-
indexInfosOfType = new WeakMap();
|
|
159
|
-
typeArgumentsOf = new WeakMap();
|
|
160
|
-
arrayTypeAnswer = new WeakMap();
|
|
161
|
-
arrayLikeAnswer = new WeakMap();
|
|
162
|
-
typeStringOf = new WeakMap();
|
|
163
|
-
awaitedTypeOf = new WeakMap();
|
|
164
|
-
/** Signature-keyed memos. */
|
|
165
|
-
returnTypeOf = new WeakMap();
|
|
166
|
-
typePredicateOf = new WeakMap();
|
|
167
|
-
/** Files whose nodes have been batch-prefetched, per query kind. */
|
|
168
|
-
prefetchedTypes = new WeakSet();
|
|
169
|
-
prefetchedSymbols = new WeakSet();
|
|
170
|
-
/** Files owned by explicit phase-aware prefetch. A miss in one of these
|
|
171
|
-
* files must stay a direct memoized query; falling back to whole-file
|
|
172
|
-
* prefetch would silently pull every unreachable body back into a build. */
|
|
173
|
-
managedTypes = new WeakSet();
|
|
174
|
-
managedSymbols = new WeakSet();
|
|
175
|
-
unknownType = null;
|
|
176
|
-
/** Intrinsic singletons (string/number/bigint/boolean), fetched once. */
|
|
177
|
-
intrinsics = new Map();
|
|
178
|
-
tupleTypeAnswer = new WeakMap();
|
|
134
|
+
cache = new CheckerCache();
|
|
179
135
|
constructor(
|
|
180
136
|
/** The underlying 7.0.2 sync checker — exposed for methods the facade
|
|
181
137
|
* does not shim; going around the facade forfeits memoization only. */
|
|
182
138
|
raw, options = {}) {
|
|
183
139
|
this.raw = raw;
|
|
184
140
|
this.options = options;
|
|
141
|
+
const cache = this.cache;
|
|
142
|
+
raw.project.onDispose(() => cache.dispose());
|
|
143
|
+
}
|
|
144
|
+
ensureActive() {
|
|
145
|
+
this.cache.ensureActive();
|
|
146
|
+
this.raw.project.ensureActive();
|
|
185
147
|
}
|
|
148
|
+
/** Eagerly release memoized answers when a facade is no longer needed.
|
|
149
|
+
* The semantic project also owns this cleanup, covering session close
|
|
150
|
+
* and snapshot disposal even when callers retain the facade. */
|
|
151
|
+
dispose() { this.cache.dispose(); }
|
|
186
152
|
/* ── the symbol-declaration surface (phase 3) ─────────────────────────
|
|
187
153
|
* 7's Symbol carries declarations as NodeHandles (server references),
|
|
188
154
|
* where 5.9.3 handed out the nodes themselves. The lowering reads
|
|
@@ -190,8 +156,6 @@ export class CheckerFacade {
|
|
|
190
156
|
* the resolve step (NodeHandle.resolve into the client AST — identity-
|
|
191
157
|
* stable, probe-verified) and memoizes per symbol. Requires the project
|
|
192
158
|
* the symbols came from (options.project — Ts7Program supplies it). */
|
|
193
|
-
declsOf = new WeakMap();
|
|
194
|
-
valueDeclOf = new WeakMap();
|
|
195
159
|
requireProject() {
|
|
196
160
|
const project = this.options.project;
|
|
197
161
|
if (!project)
|
|
@@ -201,57 +165,75 @@ export class CheckerFacade {
|
|
|
201
165
|
/** 5.9.3's symbol.declarations (never undefined here: 7 answers an empty
|
|
202
166
|
* array where 5.9.3 answered undefined — callers treat them alike). */
|
|
203
167
|
declarationsOf(symbol) {
|
|
204
|
-
|
|
168
|
+
this.ensureActive();
|
|
169
|
+
let decls = this.cache.declsOf.get(symbol);
|
|
205
170
|
if (decls === undefined) {
|
|
206
171
|
const project = this.requireProject();
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
172
|
+
const resolved = [];
|
|
173
|
+
for (const handle of symbol.declarations) {
|
|
174
|
+
const node = handle.resolve(project);
|
|
175
|
+
if (node !== undefined)
|
|
176
|
+
resolved.push(node);
|
|
177
|
+
}
|
|
178
|
+
decls = resolved;
|
|
179
|
+
this.cache.declsOf.set(symbol, decls);
|
|
211
180
|
}
|
|
212
181
|
return decls;
|
|
213
182
|
}
|
|
214
183
|
/** 5.9.3's symbol.valueDeclaration. */
|
|
215
184
|
valueDeclarationOf(symbol) {
|
|
216
|
-
|
|
217
|
-
|
|
185
|
+
this.ensureActive();
|
|
186
|
+
if (this.cache.valueDeclOf.has(symbol))
|
|
187
|
+
return this.cache.valueDeclOf.get(symbol);
|
|
218
188
|
const decl = symbol.valueDeclaration?.resolve(this.requireProject());
|
|
219
|
-
this.valueDeclOf.set(symbol, decl);
|
|
189
|
+
this.cache.valueDeclOf.set(symbol, decl);
|
|
220
190
|
return decl;
|
|
221
191
|
}
|
|
222
192
|
/** 5.9.3's signature.getDeclaration() (undefined for synthesized
|
|
223
193
|
* signatures — same contract as sig.declaration there). */
|
|
224
194
|
signatureDeclaration(signature) {
|
|
225
|
-
|
|
226
|
-
|
|
195
|
+
this.ensureActive();
|
|
196
|
+
if (this.cache.sigDeclOf.has(signature))
|
|
197
|
+
return this.cache.sigDeclOf.get(signature);
|
|
227
198
|
const decl = signature.declaration?.resolve(this.requireProject());
|
|
228
|
-
this.sigDeclOf.set(signature, decl);
|
|
199
|
+
this.cache.sigDeclOf.set(signature, decl);
|
|
229
200
|
return decl;
|
|
230
201
|
}
|
|
231
|
-
sigDeclOf = new WeakMap();
|
|
232
202
|
/** 5.9.3's type.getCallSignatures(). */
|
|
233
203
|
getCallSignatures(type) {
|
|
234
|
-
|
|
204
|
+
this.ensureActive();
|
|
205
|
+
let sigs = this.cache.callSigsOf.get(type);
|
|
235
206
|
if (sigs === undefined) {
|
|
236
207
|
sigs = this.raw.getSignaturesOfType(type, SignatureKind.Call);
|
|
237
|
-
this.callSigsOf.set(type, sigs);
|
|
208
|
+
this.cache.callSigsOf.set(type, sigs);
|
|
238
209
|
}
|
|
239
210
|
return sigs;
|
|
240
211
|
}
|
|
241
|
-
callSigsOf = new WeakMap();
|
|
242
212
|
/** 5.9.3's type.getConstructSignatures(). */
|
|
243
213
|
getConstructSignatures(type) {
|
|
244
|
-
|
|
214
|
+
this.ensureActive();
|
|
215
|
+
let sigs = this.cache.ctorSigsOf.get(type);
|
|
245
216
|
if (sigs === undefined) {
|
|
246
217
|
sigs = this.raw.getSignaturesOfType(type, SignatureKind.Construct);
|
|
247
|
-
this.ctorSigsOf.set(type, sigs);
|
|
218
|
+
this.cache.ctorSigsOf.set(type, sigs);
|
|
248
219
|
}
|
|
249
220
|
return sigs;
|
|
250
221
|
}
|
|
251
|
-
ctorSigsOf = new WeakMap();
|
|
252
222
|
/** 5.9.3's type.getProperty(name). */
|
|
253
223
|
getPropertyOfType(type, name) {
|
|
254
|
-
|
|
224
|
+
this.ensureActive();
|
|
225
|
+
let properties = this.cache.propertyOfType.get(type);
|
|
226
|
+
if (properties === undefined) {
|
|
227
|
+
properties = new Map();
|
|
228
|
+
this.cache.propertyOfType.set(type, properties);
|
|
229
|
+
}
|
|
230
|
+
// Absence is an answer too. Both keys belong to this immutable project;
|
|
231
|
+
// another snapshot or project must ask its own checker.
|
|
232
|
+
if (properties.has(name))
|
|
233
|
+
return properties.get(name);
|
|
234
|
+
const symbol = this.raw.getPropertyOfType(type, name);
|
|
235
|
+
properties.set(name, symbol);
|
|
236
|
+
return symbol;
|
|
255
237
|
}
|
|
256
238
|
/** The 5.9.3 checker never answered undefined from getTypeAtLocation-
|
|
257
239
|
* family queries (errorType/anyType stood in); the 7 client loosens them
|
|
@@ -267,6 +249,7 @@ export class CheckerFacade {
|
|
|
267
249
|
* surfaced — the per-file hook that turns the lowering's walk into three
|
|
268
250
|
* array requests instead of thousands of round trips. */
|
|
269
251
|
prefetchSourceFile(sf) {
|
|
252
|
+
this.ensureActive();
|
|
270
253
|
this.prefetchTypes(sf);
|
|
271
254
|
this.prefetchSymbols(sf);
|
|
272
255
|
}
|
|
@@ -276,6 +259,7 @@ export class CheckerFacade {
|
|
|
276
259
|
* bodies wait for reachability. Calling this also opts the files out of
|
|
277
260
|
* accidental whole-file first-miss prefetch. */
|
|
278
261
|
prefetchSourceFileStructures(files) {
|
|
262
|
+
this.ensureActive();
|
|
279
263
|
this.markManaged(files);
|
|
280
264
|
this.prefetchNodes(collectNodes(files, "structure"));
|
|
281
265
|
}
|
|
@@ -284,6 +268,7 @@ export class CheckerFacade {
|
|
|
284
268
|
* worklist wave. The roots may overlap; identity deduplication and the
|
|
285
269
|
* answer memos make warm repeats free. */
|
|
286
270
|
prefetchRoots(roots) {
|
|
271
|
+
this.ensureActive();
|
|
287
272
|
this.markManaged(roots);
|
|
288
273
|
this.prefetchNodes(collectNodes(roots, "reachable"));
|
|
289
274
|
}
|
|
@@ -292,18 +277,21 @@ export class CheckerFacade {
|
|
|
292
277
|
* analyses that themselves inspect deferred bodies for binding identity:
|
|
293
278
|
* those scans need symbols, but do not consume the symbols' types. */
|
|
294
279
|
prefetchSymbolRoots(roots) {
|
|
280
|
+
this.ensureActive();
|
|
295
281
|
this.markManaged(roots);
|
|
296
282
|
this.prefetchSymbolNodes(collectNodes(roots), false, false);
|
|
297
283
|
}
|
|
298
284
|
/** Exact-node sibling of prefetchSymbolRoots for analyses that first
|
|
299
285
|
* narrow a large AST walk to the identifier spellings they compare. */
|
|
300
286
|
prefetchSymbolNodesExact(nodes) {
|
|
287
|
+
this.ensureActive();
|
|
301
288
|
this.markManaged(nodes);
|
|
302
289
|
this.prefetchSymbolNodes([...new Set(nodes)], false, false);
|
|
303
290
|
}
|
|
304
291
|
/** Batches the hot getTypeAtLocation nodes structure collection may read
|
|
305
292
|
* despite their runtime expressions being reachability-deferred. */
|
|
306
293
|
prefetchCollectionTypes(nodes) {
|
|
294
|
+
this.ensureActive();
|
|
307
295
|
this.markManaged(nodes);
|
|
308
296
|
// Match ordinary whole-file prefetch's hot-kind boundary. Collection
|
|
309
297
|
// asks some defaults conditionally; uncommon cold expressions should
|
|
@@ -317,20 +305,21 @@ export class CheckerFacade {
|
|
|
317
305
|
* on non-identifiers. Descendants of symbol roots join because computed
|
|
318
306
|
* `this[key]` declarations resolve the key identifier too. */
|
|
319
307
|
prefetchClassCollection(typeNodes, symbolRoots) {
|
|
308
|
+
this.ensureActive();
|
|
320
309
|
this.markManaged([...typeNodes, ...symbolRoots]);
|
|
321
310
|
this.prefetchExactTypeNodes(typeNodes);
|
|
322
311
|
this.prefetchSymbolNodes(collectNodes(symbolRoots, "reachable"), true);
|
|
323
312
|
}
|
|
324
313
|
prefetchExactTypeNodes(typeNodes) {
|
|
325
|
-
const distinctTypes = [...new Set(typeNodes)].filter((node) => !this.typeAtLocation.has(node));
|
|
314
|
+
const distinctTypes = [...new Set(typeNodes)].filter((node) => !this.cache.typeAtLocation.has(node));
|
|
326
315
|
const types = chunked(distinctTypes, (chunk) => this.typesWithPanicFence(chunk));
|
|
327
|
-
distinctTypes.forEach((node, index) => this.typeAtLocation.set(node, types[index]));
|
|
316
|
+
distinctTypes.forEach((node, index) => this.cache.typeAtLocation.set(node, types[index]));
|
|
328
317
|
}
|
|
329
318
|
markManaged(roots) {
|
|
330
319
|
for (const root of roots) {
|
|
331
320
|
const sf = root.getSourceFile();
|
|
332
|
-
this.managedTypes.add(sf);
|
|
333
|
-
this.managedSymbols.add(sf);
|
|
321
|
+
this.cache.managedTypes.add(sf);
|
|
322
|
+
this.cache.managedSymbols.add(sf);
|
|
334
323
|
}
|
|
335
324
|
}
|
|
336
325
|
prefetchNodes(nodes) {
|
|
@@ -338,15 +327,15 @@ export class CheckerFacade {
|
|
|
338
327
|
this.prefetchSymbolNodes(nodes);
|
|
339
328
|
}
|
|
340
329
|
prefetchTypes(sf) {
|
|
341
|
-
if (this.prefetchedTypes.has(sf))
|
|
330
|
+
if (this.cache.prefetchedTypes.has(sf))
|
|
342
331
|
return;
|
|
343
|
-
this.prefetchedTypes.add(sf);
|
|
332
|
+
this.cache.prefetchedTypes.add(sf);
|
|
344
333
|
this.prefetchTypeNodes(collectNodes([sf]));
|
|
345
334
|
}
|
|
346
335
|
prefetchTypeNodes(allNodes) {
|
|
347
|
-
const nodes = allNodes.filter((n) => TYPE_PREFETCH_KINDS.has(n.kind) && !this.typeAtLocation.has(n));
|
|
336
|
+
const nodes = allNodes.filter((n) => TYPE_PREFETCH_KINDS.has(n.kind) && !this.cache.typeAtLocation.has(n));
|
|
348
337
|
const types = chunked(nodes, (chunk) => this.typesWithPanicFence(chunk));
|
|
349
|
-
nodes.forEach((n, i) => this.typeAtLocation.set(n, types[i]));
|
|
338
|
+
nodes.forEach((n, i) => this.cache.typeAtLocation.set(n, types[i]));
|
|
350
339
|
}
|
|
351
340
|
/** withPanicFence over the type sweep (observed panic: GetTypeAtLocation
|
|
352
341
|
* over an unresolved npm import's clause — a server-side nil deref). */
|
|
@@ -354,70 +343,77 @@ export class CheckerFacade {
|
|
|
354
343
|
return withPanicFence(chunk, (c) => this.raw.getTypeAtLocation(c));
|
|
355
344
|
}
|
|
356
345
|
prefetchSymbols(sf) {
|
|
357
|
-
if (this.prefetchedSymbols.has(sf))
|
|
346
|
+
if (this.cache.prefetchedSymbols.has(sf))
|
|
358
347
|
return;
|
|
359
|
-
this.prefetchedSymbols.add(sf);
|
|
348
|
+
this.cache.prefetchedSymbols.add(sf);
|
|
360
349
|
this.prefetchSymbolNodes(collectNodes([sf]));
|
|
361
350
|
}
|
|
362
351
|
prefetchSymbolNodes(allNodes, includePropertyAccess = false, prefetchSymbolTypes = true) {
|
|
363
352
|
const symbolNodes = allNodes.filter((n) => (n.kind === SyntaxKind.Identifier ||
|
|
364
353
|
(includePropertyAccess && n.kind === SyntaxKind.PropertyAccessExpression)));
|
|
365
|
-
const nodes = symbolNodes.filter((n) => !this.symbolAtLocation.has(n));
|
|
354
|
+
const nodes = symbolNodes.filter((n) => !this.cache.symbolAtLocation.has(n));
|
|
366
355
|
// The same bisecting panic fence as the type sweep: tsgo panics on
|
|
367
356
|
// SYMBOL queries too (observed: GetSymbolAtLocation over an
|
|
368
357
|
// `import.defer(...)` callee — the sweep's batch must not turn one
|
|
369
358
|
// poisonous node into a build crash).
|
|
370
359
|
const symbols = chunked(nodes, (chunk) => withPanicFence(chunk, (c) => this.raw.getSymbolAtLocation(c)));
|
|
371
|
-
nodes.forEach((n, i) => this.symbolAtLocation.set(n, symbols[i]));
|
|
360
|
+
nodes.forEach((n, i) => this.cache.symbolAtLocation.set(n, symbols[i]));
|
|
372
361
|
if (!prefetchSymbolTypes)
|
|
373
362
|
return;
|
|
374
363
|
// The walk's companion query: types of the symbols the file mentions.
|
|
375
364
|
// Include warm node answers too: a preceding symbol-only analysis may
|
|
376
365
|
// have populated symbolAtLocation without fetching symbol types, and a
|
|
377
366
|
// later reachable-body wave must still batch those missing types.
|
|
378
|
-
const distinct = [
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
367
|
+
const distinct = [];
|
|
368
|
+
const seen = new Set();
|
|
369
|
+
for (const node of symbolNodes) {
|
|
370
|
+
const symbol = this.cache.symbolAtLocation.get(node);
|
|
371
|
+
if (symbol === undefined || seen.has(symbol) || this.cache.typeOfSymbol.has(symbol))
|
|
372
|
+
continue;
|
|
373
|
+
seen.add(symbol);
|
|
374
|
+
distinct.push(symbol);
|
|
375
|
+
}
|
|
383
376
|
const symbolTypes = chunked(distinct, (chunk) => withPanicFence(chunk, (c) => this.raw.getTypeOfSymbol(c)));
|
|
384
|
-
distinct.forEach((s, i) => this.typeOfSymbol.set(s, symbolTypes[i]));
|
|
377
|
+
distinct.forEach((s, i) => this.cache.typeOfSymbol.set(s, symbolTypes[i]));
|
|
385
378
|
}
|
|
386
379
|
autoPrefetch(node, kind) {
|
|
387
380
|
if (this.options.autoPrefetch === false)
|
|
388
381
|
return;
|
|
389
382
|
const sf = node.getSourceFile();
|
|
390
383
|
if (kind === "types") {
|
|
391
|
-
if (!this.managedTypes.has(sf))
|
|
384
|
+
if (!this.cache.managedTypes.has(sf))
|
|
392
385
|
this.prefetchTypes(sf);
|
|
393
386
|
}
|
|
394
|
-
else if (!this.managedSymbols.has(sf)) {
|
|
387
|
+
else if (!this.cache.managedSymbols.has(sf)) {
|
|
395
388
|
this.prefetchSymbols(sf);
|
|
396
389
|
}
|
|
397
390
|
}
|
|
398
391
|
getTypeAtLocation(node) {
|
|
399
|
-
|
|
400
|
-
|
|
392
|
+
this.ensureActive();
|
|
393
|
+
if (this.cache.typeAtLocation.has(node))
|
|
394
|
+
return this.cache.typeAtLocation.get(node) ?? this.anyType();
|
|
401
395
|
this.autoPrefetch(node, "types");
|
|
402
|
-
if (this.typeAtLocation.has(node))
|
|
403
|
-
return this.typeAtLocation.get(node) ?? this.anyType();
|
|
396
|
+
if (this.cache.typeAtLocation.has(node))
|
|
397
|
+
return this.cache.typeAtLocation.get(node) ?? this.anyType();
|
|
404
398
|
const type = this.raw.getTypeAtLocation(node);
|
|
405
|
-
this.typeAtLocation.set(node, type);
|
|
399
|
+
this.cache.typeAtLocation.set(node, type);
|
|
406
400
|
return type ?? this.anyType();
|
|
407
401
|
}
|
|
408
402
|
getSymbolAtLocation(node) {
|
|
409
|
-
|
|
410
|
-
|
|
403
|
+
this.ensureActive();
|
|
404
|
+
if (this.cache.symbolAtLocation.has(node))
|
|
405
|
+
return this.cache.symbolAtLocation.get(node);
|
|
411
406
|
this.autoPrefetch(node, "symbols");
|
|
412
|
-
if (this.symbolAtLocation.has(node))
|
|
413
|
-
return this.symbolAtLocation.get(node);
|
|
407
|
+
if (this.cache.symbolAtLocation.has(node))
|
|
408
|
+
return this.cache.symbolAtLocation.get(node);
|
|
414
409
|
const symbol = this.raw.getSymbolAtLocation(node);
|
|
415
|
-
this.symbolAtLocation.set(node, symbol);
|
|
410
|
+
this.cache.symbolAtLocation.set(node, symbol);
|
|
416
411
|
return symbol;
|
|
417
412
|
}
|
|
418
413
|
getTypeOfSymbol(symbol) {
|
|
419
|
-
|
|
420
|
-
|
|
414
|
+
this.ensureActive();
|
|
415
|
+
if (this.cache.typeOfSymbol.has(symbol))
|
|
416
|
+
return this.cache.typeOfSymbol.get(symbol) ?? this.anyType();
|
|
421
417
|
// The direct (memo-miss) path wears the same panic fence as the
|
|
422
418
|
// prefetch sweep: symbols the sweep never saw (members resolved from
|
|
423
419
|
// other files' d.ts) can hit the identical server panics (observed:
|
|
@@ -425,72 +421,81 @@ export class CheckerFacade {
|
|
|
425
421
|
// engine graph), and the fence's answer is the sweep's — undefined,
|
|
426
422
|
// presented as `any`.
|
|
427
423
|
const [type] = withPanicFence([symbol], (c) => this.raw.getTypeOfSymbol(c));
|
|
428
|
-
this.typeOfSymbol.set(symbol, type);
|
|
424
|
+
this.cache.typeOfSymbol.set(symbol, type);
|
|
429
425
|
return type ?? this.anyType();
|
|
430
426
|
}
|
|
431
427
|
getAliasedSymbol(symbol) {
|
|
432
|
-
|
|
428
|
+
this.ensureActive();
|
|
429
|
+
let aliased = this.cache.aliasedSymbol.get(symbol);
|
|
433
430
|
if (aliased === undefined) {
|
|
434
431
|
aliased = this.raw.getAliasedSymbol(symbol);
|
|
435
|
-
this.aliasedSymbol.set(symbol, aliased);
|
|
432
|
+
this.cache.aliasedSymbol.set(symbol, aliased);
|
|
436
433
|
}
|
|
437
434
|
return aliased;
|
|
438
435
|
}
|
|
439
436
|
getDeclaredTypeOfSymbol(symbol) {
|
|
440
|
-
|
|
437
|
+
this.ensureActive();
|
|
438
|
+
let type = this.cache.declaredTypeOfSymbol.get(symbol);
|
|
441
439
|
if (type === undefined) {
|
|
442
440
|
type = this.raw.getDeclaredTypeOfSymbol(symbol);
|
|
443
|
-
this.declaredTypeOfSymbol.set(symbol, type);
|
|
441
|
+
this.cache.declaredTypeOfSymbol.set(symbol, type);
|
|
444
442
|
}
|
|
445
443
|
return type;
|
|
446
444
|
}
|
|
447
445
|
getContextualType(node) {
|
|
448
|
-
|
|
449
|
-
|
|
446
|
+
this.ensureActive();
|
|
447
|
+
if (this.cache.contextualType.has(node))
|
|
448
|
+
return this.cache.contextualType.get(node);
|
|
450
449
|
const type = this.raw.getContextualType(node);
|
|
451
|
-
this.contextualType.set(node, type);
|
|
450
|
+
this.cache.contextualType.set(node, type);
|
|
452
451
|
return type;
|
|
453
452
|
}
|
|
454
453
|
getTypeFromTypeNode(node) {
|
|
455
|
-
|
|
456
|
-
|
|
454
|
+
this.ensureActive();
|
|
455
|
+
if (this.cache.typeFromTypeNode.has(node))
|
|
456
|
+
return this.cache.typeFromTypeNode.get(node) ?? this.anyType();
|
|
457
457
|
const type = this.raw.getTypeFromTypeNode(node);
|
|
458
|
-
this.typeFromTypeNode.set(node, type);
|
|
458
|
+
this.cache.typeFromTypeNode.set(node, type);
|
|
459
459
|
return type ?? this.anyType();
|
|
460
460
|
}
|
|
461
461
|
getShorthandAssignmentValueSymbol(node) {
|
|
462
|
-
|
|
463
|
-
|
|
462
|
+
this.ensureActive();
|
|
463
|
+
if (this.cache.shorthandValueSymbol.has(node))
|
|
464
|
+
return this.cache.shorthandValueSymbol.get(node);
|
|
464
465
|
const symbol = this.raw.getShorthandAssignmentValueSymbol(node);
|
|
465
|
-
this.shorthandValueSymbol.set(node, symbol);
|
|
466
|
+
this.cache.shorthandValueSymbol.set(node, symbol);
|
|
466
467
|
return symbol;
|
|
467
468
|
}
|
|
468
469
|
getResolvedSignature(node) {
|
|
469
|
-
|
|
470
|
-
|
|
470
|
+
this.ensureActive();
|
|
471
|
+
if (this.cache.resolvedSignature.has(node))
|
|
472
|
+
return this.cache.resolvedSignature.get(node);
|
|
471
473
|
const signature = this.raw.getResolvedSignature(node);
|
|
472
|
-
this.resolvedSignature.set(node, signature);
|
|
474
|
+
this.cache.resolvedSignature.set(node, signature);
|
|
473
475
|
return signature;
|
|
474
476
|
}
|
|
475
477
|
getSignatureFromDeclaration(node) {
|
|
476
|
-
|
|
477
|
-
|
|
478
|
+
this.ensureActive();
|
|
479
|
+
if (this.cache.signatureFromDeclaration.has(node))
|
|
480
|
+
return this.cache.signatureFromDeclaration.get(node);
|
|
478
481
|
const signature = this.raw.getSignatureFromDeclaration(node);
|
|
479
|
-
this.signatureFromDeclaration.set(node, signature);
|
|
482
|
+
this.cache.signatureFromDeclaration.set(node, signature);
|
|
480
483
|
return signature;
|
|
481
484
|
}
|
|
482
485
|
getReturnTypeOfSignature(signature) {
|
|
483
|
-
|
|
484
|
-
|
|
486
|
+
this.ensureActive();
|
|
487
|
+
if (this.cache.returnTypeOf.has(signature))
|
|
488
|
+
return this.cache.returnTypeOf.get(signature) ?? this.anyType();
|
|
485
489
|
const type = this.raw.getReturnTypeOfSignature(signature);
|
|
486
|
-
this.returnTypeOf.set(signature, type);
|
|
490
|
+
this.cache.returnTypeOf.set(signature, type);
|
|
487
491
|
return type ?? this.anyType();
|
|
488
492
|
}
|
|
489
493
|
getTypePredicateOfSignature(signature) {
|
|
490
|
-
|
|
491
|
-
|
|
494
|
+
this.ensureActive();
|
|
495
|
+
if (this.cache.typePredicateOf.has(signature))
|
|
496
|
+
return this.cache.typePredicateOf.get(signature);
|
|
492
497
|
const predicate = this.raw.getTypePredicateOfSignature(signature);
|
|
493
|
-
this.typePredicateOf.set(signature, predicate);
|
|
498
|
+
this.cache.typePredicateOf.set(signature, predicate);
|
|
494
499
|
return predicate;
|
|
495
500
|
}
|
|
496
501
|
/** 5.9.3 semantics, answered client-side wherever type.flags suffices:
|
|
@@ -498,7 +503,8 @@ export class CheckerFacade {
|
|
|
498
503
|
* (one IPC ever per intrinsic); enum-ish and union types round-trip
|
|
499
504
|
* (memoized); everything else is itself. */
|
|
500
505
|
getBaseTypeOfLiteralType(type) {
|
|
501
|
-
|
|
506
|
+
this.ensureActive();
|
|
507
|
+
const memo = this.cache.baseTypeOfLiteral.get(type);
|
|
502
508
|
if (memo !== undefined)
|
|
503
509
|
return memo;
|
|
504
510
|
const flags = type.flags;
|
|
@@ -521,14 +527,14 @@ export class CheckerFacade {
|
|
|
521
527
|
else {
|
|
522
528
|
base = type;
|
|
523
529
|
}
|
|
524
|
-
this.baseTypeOfLiteral.set(type, base);
|
|
530
|
+
this.cache.baseTypeOfLiteral.set(type, base);
|
|
525
531
|
return base;
|
|
526
532
|
}
|
|
527
533
|
intrinsic(name, fetch) {
|
|
528
|
-
let type = this.intrinsics.get(name);
|
|
534
|
+
let type = this.cache.intrinsics.get(name);
|
|
529
535
|
if (type === undefined) {
|
|
530
536
|
type = fetch();
|
|
531
|
-
this.intrinsics.set(name, type);
|
|
537
|
+
this.cache.intrinsics.set(name, type);
|
|
532
538
|
}
|
|
533
539
|
return type;
|
|
534
540
|
}
|
|
@@ -538,59 +544,106 @@ export class CheckerFacade {
|
|
|
538
544
|
* (access-expression queries answer const enums only — same as 5.9.3 —
|
|
539
545
|
* so the lowering resolves the member symbol and asks its declaration). */
|
|
540
546
|
getConstantValue(node) {
|
|
541
|
-
|
|
542
|
-
|
|
547
|
+
this.ensureActive();
|
|
548
|
+
if (this.cache.constantValueOf.has(node))
|
|
549
|
+
return this.cache.constantValueOf.get(node);
|
|
543
550
|
const value = this.raw.getConstantValue(node);
|
|
544
|
-
this.constantValueOf.set(node, value);
|
|
551
|
+
this.cache.constantValueOf.set(node, value);
|
|
545
552
|
return value;
|
|
546
553
|
}
|
|
547
|
-
constantValueOf = new WeakMap();
|
|
548
554
|
getNonNullableType(type) {
|
|
549
|
-
|
|
550
|
-
|
|
555
|
+
this.ensureActive();
|
|
556
|
+
if (this.cache.nonNullableType.has(type))
|
|
557
|
+
return this.cache.nonNullableType.get(type) ?? type;
|
|
551
558
|
const result = this.raw.getNonNullableType(type);
|
|
552
|
-
this.nonNullableType.set(type, result);
|
|
559
|
+
this.cache.nonNullableType.set(type, result);
|
|
553
560
|
return result ?? type;
|
|
554
561
|
}
|
|
555
562
|
getPropertiesOfType(type) {
|
|
556
|
-
|
|
563
|
+
this.ensureActive();
|
|
564
|
+
let props = this.cache.propertiesOfType.get(type);
|
|
557
565
|
if (props === undefined) {
|
|
558
566
|
props = this.raw.getPropertiesOfType(type);
|
|
559
|
-
this.propertiesOfType.set(type, props);
|
|
567
|
+
this.cache.propertiesOfType.set(type, props);
|
|
560
568
|
}
|
|
561
569
|
return props;
|
|
562
570
|
}
|
|
571
|
+
getBaseTypes(type) {
|
|
572
|
+
this.ensureActive();
|
|
573
|
+
let bases = this.cache.baseTypesOf.get(type);
|
|
574
|
+
if (bases === undefined) {
|
|
575
|
+
bases = this.raw.getBaseTypes(type);
|
|
576
|
+
this.cache.baseTypesOf.set(type, bases);
|
|
577
|
+
}
|
|
578
|
+
return bases;
|
|
579
|
+
}
|
|
580
|
+
/** Distributed intersections retain their original flags in the client
|
|
581
|
+
* even when conflicting discriminants reduce the type to never. Ask the
|
|
582
|
+
* checker for that semantic answer instead of inspecting display text. */
|
|
583
|
+
isNeverType(type) {
|
|
584
|
+
this.ensureActive();
|
|
585
|
+
if (type.flags & TypeFlags.Never)
|
|
586
|
+
return true;
|
|
587
|
+
if (!(type.flags & (TypeFlags.Intersection | TypeFlags.Union)))
|
|
588
|
+
return false;
|
|
589
|
+
let answer = this.cache.neverTypeAnswer.get(type);
|
|
590
|
+
if (answer === undefined) {
|
|
591
|
+
const never = this.intrinsic("never", () => this.raw.getNeverType());
|
|
592
|
+
answer = this.raw.isTypeAssignableTo(type, never);
|
|
593
|
+
this.cache.neverTypeAnswer.set(type, answer);
|
|
594
|
+
}
|
|
595
|
+
return answer;
|
|
596
|
+
}
|
|
597
|
+
isTypeAssignableTo(source, target) {
|
|
598
|
+
this.ensureActive();
|
|
599
|
+
if (source === target)
|
|
600
|
+
return true;
|
|
601
|
+
let targets = this.cache.assignableTypes.get(source);
|
|
602
|
+
if (targets === undefined) {
|
|
603
|
+
targets = new Map();
|
|
604
|
+
this.cache.assignableTypes.set(source, targets);
|
|
605
|
+
}
|
|
606
|
+
let answer = targets.get(target);
|
|
607
|
+
if (answer === undefined) {
|
|
608
|
+
answer = this.raw.isTypeAssignableTo(source, target);
|
|
609
|
+
targets.set(target, answer);
|
|
610
|
+
}
|
|
611
|
+
return answer;
|
|
612
|
+
}
|
|
563
613
|
getIndexInfosOfType(type) {
|
|
564
|
-
|
|
614
|
+
this.ensureActive();
|
|
615
|
+
let infos = this.cache.indexInfosOfType.get(type);
|
|
565
616
|
if (infos === undefined) {
|
|
566
617
|
infos = this.raw.getIndexInfosOfType(type);
|
|
567
|
-
this.indexInfosOfType.set(type, infos);
|
|
618
|
+
this.cache.indexInfosOfType.set(type, infos);
|
|
568
619
|
}
|
|
569
620
|
return infos;
|
|
570
621
|
}
|
|
571
622
|
getTypeArguments(type) {
|
|
572
|
-
|
|
623
|
+
this.ensureActive();
|
|
624
|
+
let args = this.cache.typeArgumentsOf.get(type);
|
|
573
625
|
if (args === undefined) {
|
|
574
626
|
// 5.9.3 answered [] for a non-reference passed by cast (the lowering
|
|
575
627
|
// leans on that — a concretely-declared interface takes the same
|
|
576
628
|
// path as its generic @types twin); tsgo PANICS on it, so the
|
|
577
629
|
// reference check happens client-side (free — objectFlags).
|
|
578
630
|
args = type.isTypeReference() ? this.raw.getTypeArguments(type) : [];
|
|
579
|
-
this.typeArgumentsOf.set(type, args);
|
|
631
|
+
this.cache.typeArgumentsOf.set(type, args);
|
|
580
632
|
}
|
|
581
633
|
return args;
|
|
582
634
|
}
|
|
583
635
|
isArrayType(type) {
|
|
636
|
+
this.ensureActive();
|
|
584
637
|
// Arrays are object types. The raw checker agrees that primitive,
|
|
585
638
|
// union/intersection, and type-parameter objects themselves are not
|
|
586
639
|
// arrays (a narrowed array arm arrives as its object type), so avoid a
|
|
587
640
|
// request for every visibly non-object type just as isTupleType does.
|
|
588
641
|
if (!(type.flags & TypeFlags.Object))
|
|
589
642
|
return false;
|
|
590
|
-
let answer = this.arrayTypeAnswer.get(type);
|
|
643
|
+
let answer = this.cache.arrayTypeAnswer.get(type);
|
|
591
644
|
if (answer === undefined) {
|
|
592
645
|
answer = this.raw.isArrayType(type);
|
|
593
|
-
this.arrayTypeAnswer.set(type, answer);
|
|
646
|
+
this.cache.arrayTypeAnswer.set(type, answer);
|
|
594
647
|
}
|
|
595
648
|
return answer;
|
|
596
649
|
}
|
|
@@ -601,51 +654,60 @@ export class CheckerFacade {
|
|
|
601
654
|
* so shape-true and non-object-false resolve locally and only object
|
|
602
655
|
* types that are not visibly tuples round-trip, memoized. */
|
|
603
656
|
isTupleType(type) {
|
|
657
|
+
this.ensureActive();
|
|
604
658
|
if (type.isTupleType())
|
|
605
659
|
return true;
|
|
606
660
|
if (!(type.flags & TypeFlags.Object))
|
|
607
661
|
return false;
|
|
608
|
-
let answer = this.tupleTypeAnswer.get(type);
|
|
662
|
+
let answer = this.cache.tupleTypeAnswer.get(type);
|
|
609
663
|
if (answer === undefined) {
|
|
610
664
|
answer = this.raw.isTupleType(type);
|
|
611
|
-
this.tupleTypeAnswer.set(type, answer);
|
|
665
|
+
this.cache.tupleTypeAnswer.set(type, answer);
|
|
612
666
|
}
|
|
613
667
|
return answer;
|
|
614
668
|
}
|
|
615
669
|
isArrayLikeType(type) {
|
|
616
|
-
|
|
670
|
+
this.ensureActive();
|
|
671
|
+
let answer = this.cache.arrayLikeAnswer.get(type);
|
|
617
672
|
if (answer === undefined) {
|
|
618
673
|
answer = this.raw.isArrayLikeType(type);
|
|
619
|
-
this.arrayLikeAnswer.set(type, answer);
|
|
674
|
+
this.cache.arrayLikeAnswer.set(type, answer);
|
|
620
675
|
}
|
|
621
676
|
return answer;
|
|
622
677
|
}
|
|
623
678
|
typeToString(type, enclosingDeclaration, flags) {
|
|
679
|
+
this.ensureActive();
|
|
624
680
|
if (enclosingDeclaration === undefined && flags === undefined) {
|
|
625
|
-
let text = this.typeStringOf.get(type);
|
|
681
|
+
let text = this.cache.typeStringOf.get(type);
|
|
626
682
|
if (text === undefined) {
|
|
627
683
|
text = this.raw.typeToString(type);
|
|
628
|
-
this.typeStringOf.set(type, text);
|
|
684
|
+
this.cache.typeStringOf.set(type, text);
|
|
629
685
|
}
|
|
630
686
|
return text;
|
|
631
687
|
}
|
|
632
688
|
return this.raw.typeToString(type, enclosingDeclaration, flags);
|
|
633
689
|
}
|
|
634
690
|
getTypeOfSymbolAtLocation(symbol, location) {
|
|
691
|
+
this.ensureActive();
|
|
635
692
|
// Two-key query with one census call site: no memo, straight through.
|
|
636
693
|
return this.raw.getTypeOfSymbolAtLocation(symbol, location);
|
|
637
694
|
}
|
|
638
695
|
getUnknownType() {
|
|
639
|
-
this.
|
|
640
|
-
|
|
696
|
+
this.ensureActive();
|
|
697
|
+
if (this.cache.unknownType === null)
|
|
698
|
+
this.cache.unknownType = this.raw.getUnknownType();
|
|
699
|
+
return this.cache.unknownType;
|
|
641
700
|
}
|
|
642
701
|
getStringType() {
|
|
702
|
+
this.ensureActive();
|
|
643
703
|
return this.intrinsic("string", () => this.raw.getStringType());
|
|
644
704
|
}
|
|
645
705
|
getNumberType() {
|
|
706
|
+
this.ensureActive();
|
|
646
707
|
return this.intrinsic("number", () => this.raw.getNumberType());
|
|
647
708
|
}
|
|
648
709
|
getBooleanType() {
|
|
710
|
+
this.ensureActive();
|
|
649
711
|
return this.intrinsic("boolean", () => this.raw.getBooleanType());
|
|
650
712
|
}
|
|
651
713
|
/** 7.0.2 dropped getAwaitedType (the census's one MISSING checker method).
|
|
@@ -656,10 +718,11 @@ export class CheckerFacade {
|
|
|
656
718
|
* site does exactly that) — a union like `T | PromiseLike<T>` collapses by
|
|
657
719
|
* object identity to T, which is the pattern that call site exists for. */
|
|
658
720
|
getAwaitedType(type) {
|
|
659
|
-
|
|
660
|
-
|
|
721
|
+
this.ensureActive();
|
|
722
|
+
if (this.cache.awaitedTypeOf.has(type))
|
|
723
|
+
return this.cache.awaitedTypeOf.get(type);
|
|
661
724
|
const awaited = this.computeAwaitedType(type, 0);
|
|
662
|
-
this.awaitedTypeOf.set(type, awaited);
|
|
725
|
+
this.cache.awaitedTypeOf.set(type, awaited);
|
|
663
726
|
return awaited;
|
|
664
727
|
}
|
|
665
728
|
computeAwaitedType(type, depth) {
|
|
@@ -674,7 +737,14 @@ export class CheckerFacade {
|
|
|
674
737
|
// (5.9.3 answers the input type — string | null stays string | null).
|
|
675
738
|
if (awaited.every((arm, i) => arm === arms[i]))
|
|
676
739
|
return type;
|
|
677
|
-
const distinct = [
|
|
740
|
+
const distinct = [];
|
|
741
|
+
const seen = new Set();
|
|
742
|
+
for (const arm of awaited) {
|
|
743
|
+
if (arm !== undefined && !seen.has(arm)) {
|
|
744
|
+
seen.add(arm);
|
|
745
|
+
distinct.push(arm);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
678
748
|
return distinct.length === 1 ? distinct[0] : undefined;
|
|
679
749
|
}
|
|
680
750
|
const unwrapped = this.promiseArgumentOf(type);
|
|
@@ -688,7 +758,7 @@ export class CheckerFacade {
|
|
|
688
758
|
promiseArgumentOf(type) {
|
|
689
759
|
if (!type.isTypeReference())
|
|
690
760
|
return null;
|
|
691
|
-
const name = type.getTarget()
|
|
761
|
+
const name = type.getTarget()?.getSymbol()?.name;
|
|
692
762
|
if (name !== "Promise" && name !== "PromiseLike")
|
|
693
763
|
return null;
|
|
694
764
|
const args = this.getTypeArguments(type);
|