cgraphx 2.0.2 → 2.0.6
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/dist/.claude-template/FLOW-MAP.md +13 -3
- package/dist/.claude-template/agents/task-history.md +186 -0
- package/dist/.claude-template/commands/end.md +1 -0
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +5 -3
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +8 -8
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +8 -8
- package/dist/.claude-template/skills/clarify-requirements/SKILL.md +13 -9
- package/dist/.claude-template/skills/db-query/SKILL.md +19 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +51 -23
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +3 -4
- package/dist/.claude-template/skills/run-api-test/SKILL.md +15 -15
- package/dist/.claude-template/skills/run-api-test/assets/{template-test-report.md → template-/346/216/245/345/217/243/346/265/213/350/257/225/346/212/245/345/221/212.md} +4 -4
- package/dist/.claude-template/skills/run-api-test/references/bru-run.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/run-api-test/references/report-format.md +6 -6
- package/dist/.claude-template/skills/run-api-test/references/service-readiness.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/test-scope.md +6 -6
- package/dist/.claude-template/skills/run-ui-test/SKILL.md +186 -0
- package/dist/.claude-template/skills/run-ui-test/references/report-format.md +77 -0
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/SKILL.md +18 -18
- package/dist/.claude-template/skills/write-api/assets/{template-api-spec.md → template-/346/216/245/345/217/243/346/265/213/350/257/225-spec.md} +1 -1
- package/dist/.claude-template/skills/write-api/references/{api-spec-format.md → /346/216/245/345/217/243/346/265/213/350/257/225-spec-format.md} +3 -3
- package/dist/.claude-template/skills/write-plan/SKILL.md +4 -2
- package/dist/.claude-template/skills/write-ui-test/SKILL.md +125 -0
- package/dist/.claude-template/skills/write-ui-test/references//347/224/250/344/276/213/350/247/204/346/240/274-format.md +94 -0
- package/dist/core/code/engine/cli/analyze-config.js +320 -0
- package/dist/core/code/engine/cli/analyze.js +1086 -0
- package/dist/core/code/engine/cli/cli-message.js +83 -0
- package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
- package/dist/core/code/engine/cli/embedding-dims.js +43 -0
- package/dist/core/code/engine/cli/format-elapsed.js +12 -0
- package/dist/core/code/engine/cli/help-i18n.js +144 -0
- package/dist/core/code/engine/cli/i18n/en.js +110 -0
- package/dist/core/code/engine/cli/i18n/index.js +47 -0
- package/dist/core/code/engine/cli/i18n/resources.js +9 -0
- package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
- package/dist/core/code/engine/cli/lazy-action.js +67 -0
- package/dist/core/code/engine/cli/optional-grammars.js +136 -0
- package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
- package/dist/core/code/engine/cli/status.js +156 -0
- package/dist/core/code/engine/cli/tool.js +384 -0
- package/dist/core/code/engine/config/ignore-service.js +511 -0
- package/dist/core/code/engine/config/supported-languages.js +17 -0
- package/dist/core/code/engine/core/analysis-features.js +64 -0
- package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
- package/dist/core/code/engine/core/git-staleness.js +180 -0
- package/dist/core/code/engine/core/graph/graph.js +180 -0
- package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
- package/dist/core/code/engine/core/graph/types.js +2 -0
- package/dist/core/code/engine/core/index-freshness.js +12 -0
- package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
- package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
- package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
- package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
- package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
- package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
- package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
- package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
- package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
- package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
- package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
- package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
- package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
- package/dist/core/code/engine/core/ingestion/constants.js +26 -0
- package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
- package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
- package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
- package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
- package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
- package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
- package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
- package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
- package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
- package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
- package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
- package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
- package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
- package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
- package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
- package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
- package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
- package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
- package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
- package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
- package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
- package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
- package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
- package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
- package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
- package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
- package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
- package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
- package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
- package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
- package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
- package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
- package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
- package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
- package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
- package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
- package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
- package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
- package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
- package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
- package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
- package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
- package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
- package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
- package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
- package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
- package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
- package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
- package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
- package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
- package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
- package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
- package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
- package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
- package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
- package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
- package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
- package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
- package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
- package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
- package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
- package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
- package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
- package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
- package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
- package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
- package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
- package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
- package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
- package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
- package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
- package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
- package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
- package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
- package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
- package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
- package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
- package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
- package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
- package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
- package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
- package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
- package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
- package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
- package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
- package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
- package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
- package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
- package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
- package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
- package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
- package/dist/core/code/engine/core/lbug/native-check.js +435 -0
- package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
- package/dist/core/code/engine/core/lbug/query-params.js +25 -0
- package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
- package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
- package/dist/core/code/engine/core/lbug/schema.js +771 -0
- package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
- package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
- package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
- package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
- package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
- package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
- package/dist/core/code/engine/core/logger.js +339 -0
- package/dist/core/code/engine/core/platform/capabilities.js +91 -0
- package/dist/core/code/engine/core/run-analyze.js +1098 -0
- package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
- package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
- package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
- package/dist/core/code/engine/lib/utils.js +121 -0
- package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
- package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
- package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
- package/dist/core/code/engine/mcp/local/limits.js +15 -0
- package/dist/core/code/engine/mcp/local/line-display.js +6 -0
- package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
- package/dist/core/code/engine/storage/branch-index.js +72 -0
- package/dist/core/code/engine/storage/file-hash.js +95 -0
- package/dist/core/code/engine/storage/fs-atomic.js +34 -0
- package/dist/core/code/engine/storage/git.js +555 -0
- package/dist/core/code/engine/storage/index-lock.js +664 -0
- package/dist/core/code/engine/storage/parse-cache.js +650 -0
- package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
- package/dist/core/code/engine/storage/repo-manager.js +1061 -0
- package/dist/core/code/engine/storage/scope-index-store.js +247 -0
- package/dist/core/code/engine/types/pipeline.js +2 -0
- package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
- package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
- package/dist/core/code/shared/graph/types.js +8 -0
- package/dist/core/code/shared/index.js +105 -0
- package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
- package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
- package/dist/core/code/shared/integrations/retry.js +70 -0
- package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
- package/dist/core/code/shared/language-detection.js +162 -0
- package/dist/core/code/shared/languages.js +27 -0
- package/dist/core/code/shared/lbug/schema-constants.js +98 -0
- package/dist/core/code/shared/mro-strategy.js +2 -0
- package/dist/core/code/shared/pipeline.js +5 -0
- package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
- package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
- package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
- package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
- package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
- package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
- package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
- package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
- package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
- package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
- package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
- package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
- package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
- package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
- package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
- package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
- package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
- package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
- package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
- package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/core/code/shared/scope-resolution/types.js +25 -0
- package/dist/core/code/shared/test-helpers.js +17 -0
- package/dist/core/code/vendor/leiden/index.cjs +355 -0
- package/dist/core/code/vendor/leiden/utils.cjs +419 -0
- package/dist/core/dbquery/cli.d.ts.map +1 -1
- package/dist/core/dbquery/cli.js +5 -4
- package/dist/core/dbquery/cli.js.map +1 -1
- package/dist/core/dbquery/config.d.ts.map +1 -1
- package/dist/core/dbquery/config.js +39 -3
- package/dist/core/dbquery/config.js.map +1 -1
- package/dist/core/dbquery/drivers/http.d.ts +23 -0
- package/dist/core/dbquery/drivers/http.d.ts.map +1 -0
- package/dist/core/dbquery/drivers/http.js +125 -0
- package/dist/core/dbquery/drivers/http.js.map +1 -0
- package/dist/core/dbquery/drivers/mysql.js +1 -1
- package/dist/core/dbquery/drivers/mysql.js.map +1 -1
- package/dist/core/dbquery/drivers/postgres.js +1 -1
- package/dist/core/dbquery/drivers/postgres.js.map +1 -1
- package/dist/core/dbquery/executor.d.ts.map +1 -1
- package/dist/core/dbquery/executor.js +46 -12
- package/dist/core/dbquery/executor.js.map +1 -1
- package/dist/core/dbquery/format.d.ts.map +1 -1
- package/dist/core/dbquery/format.js +2 -1
- package/dist/core/dbquery/format.js.map +1 -1
- package/dist/core/dbquery/init.d.ts.map +1 -1
- package/dist/core/dbquery/init.js +7 -0
- package/dist/core/dbquery/init.js.map +1 -1
- package/dist/core/dbquery/types.d.ts +55 -7
- package/dist/core/dbquery/types.d.ts.map +1 -1
- package/dist/core/directory.d.ts +17 -0
- package/dist/core/directory.d.ts.map +1 -1
- package/dist/core/directory.js +37 -0
- package/dist/core/directory.js.map +1 -1
- package/dist/core/features/cli.d.ts.map +1 -1
- package/dist/core/features/cli.js +3 -2
- package/dist/core/features/cli.js.map +1 -1
- package/dist/core/features/scanner.d.ts +1 -1
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +20 -4
- package/dist/core/features/scanner.js.map +1 -1
- package/dist/core/markdown/cli.d.ts.map +1 -1
- package/dist/core/markdown/cli.js +9 -8
- package/dist/core/markdown/cli.js.map +1 -1
- package/dist/core/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/dist/web/register.d.ts.map +1 -1
- package/dist/web/register.js +2 -1
- package/dist/web/register.js.map +1 -1
- package/package.json +1 -1
- package/dist/.claude-template/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-deck/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-deck/references/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-sketch-engine/.cgraphx/timeline-current-turn.json +0 -1
- /package/dist/.claude-template/skills/run-api-test/assets/{template-test-verify.jsonl → template-/346/216/245/345/217/243/346/265/213/350/257/225/351/252/214/350/257/201.jsonl"} +0 -0
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rust module-qualified call resolution (#2730) — path resolution over the
|
|
4
|
+
* module tree, the way rustc does it.
|
|
5
|
+
*
|
|
6
|
+
* `tools::dispatch(ctx, name)` is captured as a FREE call whose `name` is the
|
|
7
|
+
* tail identifier and whose written path rides along in `site.rawQualifiedName`
|
|
8
|
+
* (the same channel #1982 built for qualified inheritance bases). Without
|
|
9
|
+
* consulting that path, the shared scope-chain walk resolves the bare tail and
|
|
10
|
+
* binds it to whatever `dispatch` is lexically nearest — which, for the wrapper
|
|
11
|
+
* idiom `fn dispatch(..) { tools::dispatch(..) }`, is the wrapper itself. The
|
|
12
|
+
* real cross-module edge then does not exist and `impact` reports the callee as
|
|
13
|
+
* unreached.
|
|
14
|
+
*
|
|
15
|
+
* The fix follows rustc's actual rule rather than a filename heuristic:
|
|
16
|
+
*
|
|
17
|
+
* 1. A path's leading segments name MODULES, resolved in the type namespace.
|
|
18
|
+
* A same-named `fn` lives in the value namespace and therefore can never
|
|
19
|
+
* shadow them — which is exactly the shadowing this bug was about.
|
|
20
|
+
* 2. `crate::` / `self::` / `super::` are prefix transforms on the caller's
|
|
21
|
+
* own module path, not reasons to give up.
|
|
22
|
+
* 3. The final segment is a MEMBER of the resolved module — looked up in that
|
|
23
|
+
* module's binding table, so `pub use` re-exports resolve like any other
|
|
24
|
+
* binding.
|
|
25
|
+
*
|
|
26
|
+
* Module identity comes from `module-path.ts`: file path below the crate root,
|
|
27
|
+
* plus any enclosing `mod` blocks (carried on `namespacePrefix`, stamped by the
|
|
28
|
+
* shared `tagNamespacePrefixes` pass now that `mod_item` emits a Namespace def).
|
|
29
|
+
*
|
|
30
|
+
* Refuses — returns `undefined`, leaving the shared chain untouched — whenever
|
|
31
|
+
* the path names no known module, the module has no such member, or two
|
|
32
|
+
* candidates tie. A wrong CALLS edge is worse than a missing one: it is what
|
|
33
|
+
* made this issue dangerous in the first place.
|
|
34
|
+
*/
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.resolveRustQualifiedFreeCall = resolveRustQualifiedFreeCall;
|
|
37
|
+
const callable_labels_js_1 = require("../../utils/callable-labels.js");
|
|
38
|
+
const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
|
|
39
|
+
const module_path_js_1 = require("./module-path.js");
|
|
40
|
+
/**
|
|
41
|
+
* Per-run memo of the crate-root index, keyed by the file set it was built from.
|
|
42
|
+
* The hook is invoked per call site; rebuilding the index each time would make
|
|
43
|
+
* qualified-call resolution O(sites x files).
|
|
44
|
+
*/
|
|
45
|
+
const MODULE_INDEX_CACHE = new WeakMap();
|
|
46
|
+
function moduleIndexFor(allFilePaths) {
|
|
47
|
+
let index = MODULE_INDEX_CACHE.get(allFilePaths);
|
|
48
|
+
if (index === undefined) {
|
|
49
|
+
index = (0, module_path_js_1.buildRustModuleIndex)(allFilePaths);
|
|
50
|
+
MODULE_INDEX_CACHE.set(allFilePaths, index);
|
|
51
|
+
}
|
|
52
|
+
return index;
|
|
53
|
+
}
|
|
54
|
+
function resolveRustQualifiedFreeCall(site, callerParsed, scopes, workspaceIndex, allFilePaths) {
|
|
55
|
+
const raw = site.rawQualifiedName;
|
|
56
|
+
if (raw === undefined)
|
|
57
|
+
return undefined;
|
|
58
|
+
// A leading `::` anchors at the EXTERN PRELUDE — `::tools::dispatch()` names
|
|
59
|
+
// the crate `tools`, not a module of this one. Extern crates are outside the
|
|
60
|
+
// workspace module tree, so the honest answer is to refuse. Filtering the empty
|
|
61
|
+
// first segment out instead silently reinterpreted the path as relative and
|
|
62
|
+
// resolved it against a local module of the same name.
|
|
63
|
+
if (raw.trimStart().startsWith('::'))
|
|
64
|
+
return undefined;
|
|
65
|
+
const segments = raw
|
|
66
|
+
.split('::')
|
|
67
|
+
.map((s) => s.trim())
|
|
68
|
+
.filter((s) => s.length > 0);
|
|
69
|
+
// Everything before the callee name names modules.
|
|
70
|
+
const qualifier = segments.slice(0, -1);
|
|
71
|
+
if (qualifier.length === 0)
|
|
72
|
+
return undefined;
|
|
73
|
+
// Cheap rejection before the candidate SEARCH. The capture that carries
|
|
74
|
+
// `rawQualifiedName` matches every `scoped_identifier` callee, so this hook is
|
|
75
|
+
// reached by `Vec::new()`, `String::from()`, `Self::method()` and every other
|
|
76
|
+
// type-qualified call — the overwhelming majority of `::` calls in real Rust,
|
|
77
|
+
// none of which name a module. Letting those through meant each one paid a
|
|
78
|
+
// same-name-bucket scan plus a walk of every module scope in the workspace
|
|
79
|
+
// before returning undefined (#2741 review).
|
|
80
|
+
//
|
|
81
|
+
// `passIndexFor` is not free on its FIRST call in a pass — it walks the def
|
|
82
|
+
// index once — so this is not "before any index work", as an earlier version of
|
|
83
|
+
// this comment claimed. It is memoized per resolution pass on a WeakMap, over
|
|
84
|
+
// structures already resident in memory, and every later site here is a set
|
|
85
|
+
// lookup. What the filter still buys is skipping the per-site candidate search,
|
|
86
|
+
// which is the part that scales with the workspace.
|
|
87
|
+
const index = moduleIndexFor(allFilePaths);
|
|
88
|
+
const pass = passIndexFor(workspaceIndex, index, scopes);
|
|
89
|
+
if (!(0, module_path_js_1.couldNameAModule)(qualifier, pass.knownModuleNames)) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
const callerModule = callerModuleOf(callerParsed, site.inScope, scopes, index);
|
|
93
|
+
if (callerModule === undefined)
|
|
94
|
+
return undefined;
|
|
95
|
+
const anchored = (0, module_path_js_1.resolveAnchoredModulePath)(qualifier, callerModule);
|
|
96
|
+
if (anchored === undefined)
|
|
97
|
+
return undefined;
|
|
98
|
+
for (const targetModule of candidateModules(anchored, qualifier, callerModule, callerParsed, scopes, workspaceIndex, index)) {
|
|
99
|
+
const hit = findMemberInModule(targetModule, site.name, scopes, workspaceIndex, index) ??
|
|
100
|
+
findReexportedMember(targetModule, site.name, scopes, workspaceIndex, index);
|
|
101
|
+
if (hit !== undefined)
|
|
102
|
+
return hit;
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The module the call site sits in: its file's module path plus any `mod` blocks
|
|
108
|
+
* around it. Walking the scope chain (rather than reading the file alone) is what
|
|
109
|
+
* makes `super::` correct from inside an inline module.
|
|
110
|
+
*/
|
|
111
|
+
function callerModuleOf(callerParsed, inScope, scopes, index) {
|
|
112
|
+
const fileModule = (0, module_path_js_1.moduleOfFile)(callerParsed.filePath, index);
|
|
113
|
+
if (fileModule === undefined)
|
|
114
|
+
return undefined;
|
|
115
|
+
const inline = [];
|
|
116
|
+
let scopeId = inScope;
|
|
117
|
+
while (scopeId !== null) {
|
|
118
|
+
const scope = scopes.scopeTree.getScope(scopeId);
|
|
119
|
+
if (scope === undefined)
|
|
120
|
+
break;
|
|
121
|
+
if (scope.kind === 'Namespace') {
|
|
122
|
+
const nsDef = scope.ownedDefs.find((d) => d.type === 'Namespace');
|
|
123
|
+
const name = nsDef?.qualifiedName;
|
|
124
|
+
if (name !== undefined && name.length > 0) {
|
|
125
|
+
inline.unshift(name.slice(name.lastIndexOf('.') + 1));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
scopeId = scope.parent;
|
|
129
|
+
}
|
|
130
|
+
return { crateRoot: fileModule.crateRoot, segments: [...fileModule.segments, ...inline] };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Module paths the qualifier could name, in rustc's first-segment lookup order.
|
|
134
|
+
* An anchored path (`crate::`, `self::`, `super::`) names exactly one module and
|
|
135
|
+
* admits no alternatives.
|
|
136
|
+
*/
|
|
137
|
+
function* candidateModules(anchored, qualifier, callerModule, callerParsed, scopes, workspaceIndex, index) {
|
|
138
|
+
if (anchored.anchored) {
|
|
139
|
+
yield anchored.module;
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// 1. A submodule the caller actually DECLARES (`mod inner { … }` or
|
|
143
|
+
// `mod tools;`) — the in-scope type-namespace binding.
|
|
144
|
+
//
|
|
145
|
+
// This must be checked, not assumed. Yielding `callerModule ++ qualifier`
|
|
146
|
+
// unconditionally let file layout outrank a real `use` binding: with
|
|
147
|
+
// `use crate::b;` in `src/a/mod.rs` and an undeclared (or `cfg`-gated)
|
|
148
|
+
// `src/a/b.rs` sitting on disk, `b::f()` bound to the sibling file, where
|
|
149
|
+
// rustc resolves it to `crate::b` (#2741 review).
|
|
150
|
+
//
|
|
151
|
+
// A `mod` declaration — inline or file-backed — emits a `Namespace` def
|
|
152
|
+
// bound in the declaring scope, so the check is a binding lookup.
|
|
153
|
+
const head = qualifier[0];
|
|
154
|
+
if (head !== undefined &&
|
|
155
|
+
declaresSubmodule(callerParsed, callerModule, head, workspaceIndex, index, scopes)) {
|
|
156
|
+
yield { crateRoot: callerModule.crateRoot, segments: [...callerModule.segments, ...qualifier] };
|
|
157
|
+
}
|
|
158
|
+
// 2. A `use` binding for the first segment. Finalize already resolved the
|
|
159
|
+
// import to a file, so the module path comes back through the same
|
|
160
|
+
// file → module mapping as everything else. Covers `use crate::tools;`,
|
|
161
|
+
// `use crate::tools::{self}` and `use crate::a::b as tools`.
|
|
162
|
+
//
|
|
163
|
+
// The binding must name a MODULE, not a symbol inside one. Import
|
|
164
|
+
// resolution deliberately strips a trailing symbol segment when probing for
|
|
165
|
+
// a file ("the last segment might be a symbol, not a module" —
|
|
166
|
+
// import-resolvers/rust.ts), so `use crate::client::ClientBuilder;` also
|
|
167
|
+
// lands on `client/mod.rs`. Taking that at face value made the imported
|
|
168
|
+
// TYPE look like the module `client`, and `ClientBuilder::new()` then
|
|
169
|
+
// resolved against `client`'s module members — binding an associated
|
|
170
|
+
// function to an unrelated module-level `new` (#2741 review H2).
|
|
171
|
+
for (const edge of scopes.imports.get(callerParsed.moduleScope) ?? []) {
|
|
172
|
+
if (edge.localName !== head || edge.targetFile === null)
|
|
173
|
+
continue;
|
|
174
|
+
const importedModule = (0, module_path_js_1.moduleOfFile)(edge.targetFile, index);
|
|
175
|
+
if (importedModule === undefined)
|
|
176
|
+
continue;
|
|
177
|
+
if (!importNamesModule(edge.targetExportedName, importedModule))
|
|
178
|
+
continue;
|
|
179
|
+
yield {
|
|
180
|
+
crateRoot: importedModule.crateRoot,
|
|
181
|
+
segments: [...importedModule.segments, ...qualifier.slice(1)],
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// 3. Crate-root-relative (`a::b::f()` written from a nested module — 2015
|
|
185
|
+
// edition style, and still what a single-file crate looks like).
|
|
186
|
+
//
|
|
187
|
+
// Skipped when the head already names something else in the caller's own
|
|
188
|
+
// module. This is the loosest candidate — a guess at a path the caller never
|
|
189
|
+
// wrote — and in Rust 2018 a bare first segment resolves in the caller's
|
|
190
|
+
// module, not at the crate root, so a local binding for it settles the
|
|
191
|
+
// question. Without the check, a crate-root `mod` whose name matches an
|
|
192
|
+
// imported TYPE captured the call:
|
|
193
|
+
//
|
|
194
|
+
// // src/lib.rs
|
|
195
|
+
// pub mod Buffer { pub fn with_capacity() -> usize { 111 } }
|
|
196
|
+
// // src/b.rs
|
|
197
|
+
// use crate::c::Buffer; // the real target, in c.rs
|
|
198
|
+
// pub fn call() -> usize { Buffer::with_capacity() }
|
|
199
|
+
//
|
|
200
|
+
// which yielded `CALLS b::call -> lib.rs:Buffer.with_capacity`, an edge to a
|
|
201
|
+
// callee the source never names. The base emitted no edge at all, and per the
|
|
202
|
+
// doctrine quoted in `ids.ts` that is the correct failure direction: a missing
|
|
203
|
+
// edge is recoverable, a fabricated caller silently misleads `impact`.
|
|
204
|
+
if (callerModule.segments.length > 0 && !headBoundLocally(callerParsed, head, scopes)) {
|
|
205
|
+
yield { crateRoot: callerModule.crateRoot, segments: [...qualifier] };
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Is `name` bound in the caller's own module to anything that is NOT a module?
|
|
210
|
+
*
|
|
211
|
+
* A `use crate::c::Buffer;` binds the TYPE `Buffer`, so a bare `Buffer::…` path in
|
|
212
|
+
* that file resolves through the import — never to a same-named module elsewhere in
|
|
213
|
+
* the crate. Module bindings are excluded so the legitimate `use crate::tools;`
|
|
214
|
+
* case, which candidate 2 already handles, is not double-counted here.
|
|
215
|
+
*/
|
|
216
|
+
function headBoundLocally(callerParsed, name, scopes) {
|
|
217
|
+
if (name === undefined)
|
|
218
|
+
return false;
|
|
219
|
+
// Read through `lookupBindingsAt`, not the raw `Scope.bindings` map: a `use`
|
|
220
|
+
// binding is finalize OUTPUT and is absent from the scope's own local table, so
|
|
221
|
+
// the direct read saw nothing for exactly the imported-type case this guards
|
|
222
|
+
// (contract I8 in `contract/scope-resolver.ts` requires this channel anyway).
|
|
223
|
+
for (const ref of (0, walkers_js_1.lookupBindingsAt)(callerParsed.moduleScope, name, scopes)) {
|
|
224
|
+
if (ref.def.type !== 'Namespace')
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
/** Tail segment of a dot-joined qualified name (`outer.tools` → `tools`). */
|
|
230
|
+
function tailSegment(qualifiedName) {
|
|
231
|
+
return qualifiedName.slice(qualifiedName.lastIndexOf('.') + 1);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Does the caller's own module declare `name` as a submodule (`mod name;` or
|
|
235
|
+
* `mod name { … }`)?
|
|
236
|
+
*
|
|
237
|
+
* Answered against the set of module paths the workspace actually DECLARES, so it
|
|
238
|
+
* holds at any nesting depth. The previous binding lookup went through
|
|
239
|
+
* `moduleScopeByFile`, which maps a file to its root `Module` scope only: a `mod`
|
|
240
|
+
* nested inside an inline `mod` binds in that parent module's scope and was
|
|
241
|
+
* therefore invisible. `mod outer { mod tools { … } fn dispatch() { tools::dispatch() } }`
|
|
242
|
+
* skipped this candidate entirely and fell through to the lexical tier, which
|
|
243
|
+
* reinstated the very #2730 self-loop this hook exists to prevent.
|
|
244
|
+
*
|
|
245
|
+
* Still a declaration check, not a filesystem probe: the set is built from
|
|
246
|
+
* `Namespace` defs, so an undeclared (or `cfg`-gated) file sitting on disk
|
|
247
|
+
* contributes nothing and cannot outrank a real `use` binding (#2741 review).
|
|
248
|
+
*/
|
|
249
|
+
function declaresSubmodule(callerParsed, callerModule, name, workspaceIndex, index, scopes) {
|
|
250
|
+
// Inline modules at any depth, keyed by full path.
|
|
251
|
+
const inline = passIndexFor(workspaceIndex, index, scopes).inlineModuleKeys;
|
|
252
|
+
if (inline.has(moduleKey({ crateRoot: callerModule.crateRoot, segments: [...callerModule.segments, name] }))) {
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
// File-backed submodules (`mod tools;`) still go through the declaring scope's
|
|
256
|
+
// binding table. A `Namespace` def bound locally is the DECLARATION; probing the
|
|
257
|
+
// file set instead would let an undeclared or `cfg`-gated file on disk outrank a
|
|
258
|
+
// real `use` binding (#2741 review).
|
|
259
|
+
const moduleScope = workspaceIndex.moduleScopeByFile.get(callerParsed.filePath);
|
|
260
|
+
if (moduleScope === undefined)
|
|
261
|
+
return false;
|
|
262
|
+
for (const ref of moduleScope.bindings.get(name) ?? []) {
|
|
263
|
+
if (ref.origin === 'local' && ref.def.type === 'Namespace')
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Does this `use` binding name the module it resolved to, rather than a symbol
|
|
270
|
+
* declared inside it?
|
|
271
|
+
*
|
|
272
|
+
* The edge's `targetExportedName` is the tail of the written path, so comparing
|
|
273
|
+
* it to the resolved module's own tail separates the two cases exactly:
|
|
274
|
+
*
|
|
275
|
+
* use crate::tools; tail `tools` module ['tools'] ✓
|
|
276
|
+
* use crate::a::b as tools; tail `b` module ['a','b'] ✓ (alias)
|
|
277
|
+
* use crate::tools::{self, Ctx}; tail `tools` module ['tools'] ✓
|
|
278
|
+
* use crate::client::ClientBuilder; tail `ClientBuilder` module ['client'] ✗ a type
|
|
279
|
+
*
|
|
280
|
+
* An import of the crate-root module itself has no tail segment to match; those
|
|
281
|
+
* are left to the anchored (`crate::`) channel rather than guessed at here.
|
|
282
|
+
*/
|
|
283
|
+
function importNamesModule(targetExportedName, module) {
|
|
284
|
+
const tail = module.segments[module.segments.length - 1];
|
|
285
|
+
return tail !== undefined && tail === targetExportedName;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Is `def` a MEMBER of its module, rather than merely a callable sitting in the
|
|
289
|
+
* same file?
|
|
290
|
+
*
|
|
291
|
+
* Module membership cannot be inferred from the file path: a `fn` nested inside
|
|
292
|
+
* another `fn` has the same `filePath`, the same bare `qualifiedName` and no
|
|
293
|
+
* owner, so a path-only test counts it as a second member of the module. That
|
|
294
|
+
* ties `findMemberInModule`, which then refuses and hands the site back to the
|
|
295
|
+
* lexical walk — reinstating the very self-loop #2730 fixes, from a module that
|
|
296
|
+
* merely happens to contain a local helper (#2741 review H3).
|
|
297
|
+
*
|
|
298
|
+
* The scope model already draws the line exactly: a module-level item is bound
|
|
299
|
+
* with `origin: 'local'` in its module's own scope, a function-local item binds
|
|
300
|
+
* in the enclosing Block, and an `impl`/trait method binds in the Class scope.
|
|
301
|
+
* So membership is a binding lookup, not a path comparison.
|
|
302
|
+
*
|
|
303
|
+
* Inline-`mod` members bind in their `Namespace` scope rather than the file's
|
|
304
|
+
* Module scope, and reaching that scope would mean walking every child scope
|
|
305
|
+
* (faulting them in from disk on the out-of-core path). They are instead
|
|
306
|
+
* identified by the `namespacePrefix` the shared tagging pass stamps on them,
|
|
307
|
+
* which a file-module member never carries. Residual: a `fn` nested inside a
|
|
308
|
+
* `fn` that is itself inside an inline `mod` inherits that prefix and is still
|
|
309
|
+
* counted — a strictly smaller hole than before, and one that only costs a
|
|
310
|
+
* refusal, never a wrong edge.
|
|
311
|
+
*/
|
|
312
|
+
function isModuleLevelMember(def, name, workspaceIndex) {
|
|
313
|
+
if (def.namespacePrefix !== undefined && def.namespacePrefix !== '')
|
|
314
|
+
return true;
|
|
315
|
+
const moduleScope = workspaceIndex.moduleScopeByFile.get(def.filePath);
|
|
316
|
+
if (moduleScope === undefined)
|
|
317
|
+
return false;
|
|
318
|
+
for (const ref of moduleScope.bindings.get(name) ?? []) {
|
|
319
|
+
if (ref.origin === 'local' && ref.def.nodeId === def.nodeId)
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
/** A callable named `name` declared directly in `targetModule`. Refuses on a tie. */
|
|
325
|
+
function findMemberInModule(targetModule, name, scopes, workspaceIndex, index) {
|
|
326
|
+
let unique;
|
|
327
|
+
let count = 0;
|
|
328
|
+
for (const defId of scopes.qualifiedNames.get(name)) {
|
|
329
|
+
const def = scopes.defs.get(defId);
|
|
330
|
+
if (def === undefined || !(0, callable_labels_js_1.isOverloadableCallable)(def.type))
|
|
331
|
+
continue;
|
|
332
|
+
const defModule = (0, module_path_js_1.moduleOfDef)(def.filePath, def.namespacePrefix, index);
|
|
333
|
+
if (defModule === undefined || !(0, module_path_js_1.sameModule)(defModule, targetModule))
|
|
334
|
+
continue;
|
|
335
|
+
if (!isModuleLevelMember(def, name, workspaceIndex))
|
|
336
|
+
continue;
|
|
337
|
+
unique = def;
|
|
338
|
+
count++;
|
|
339
|
+
}
|
|
340
|
+
return count === 1 ? unique : undefined;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* A member the target module re-exports rather than declares (`pub use
|
|
344
|
+
* crate::tools::dispatch;`). rustc treats a re-export as an ordinary binding in
|
|
345
|
+
* the module's resolution table, so a call through the facade must land on the
|
|
346
|
+
* original definition.
|
|
347
|
+
*
|
|
348
|
+
* Finalize does NOT create a local binding for a re-export on the re-exporting
|
|
349
|
+
* module's own scope — a `pub use` is modelled as visibility granted to
|
|
350
|
+
* IMPORTERS, so the re-exporting file's `bindings` map is empty. The re-export
|
|
351
|
+
* survives as an `ImportEdge` on that module scope, which is what this reads.
|
|
352
|
+
*
|
|
353
|
+
* Known limitation: only FILE modules are reachable here. `moduleScopeByFile`
|
|
354
|
+
* holds one Module scope per file, so a re-export declared inside an inline
|
|
355
|
+
* `mod facade { pub use … }` has no entry and is not resolved. Reaching it would
|
|
356
|
+
* mean walking every child scope, which faults the whole scope tree back in from
|
|
357
|
+
* disk on the out-of-core path — the cost this index exists to avoid. A miss
|
|
358
|
+
* here falls through to the unchanged chain rather than guessing (#2741 review).
|
|
359
|
+
*/
|
|
360
|
+
function findReexportedMember(targetModule, name, scopes, workspaceIndex, index) {
|
|
361
|
+
let unique;
|
|
362
|
+
let count = 0;
|
|
363
|
+
for (const moduleScope of moduleScopesFor(targetModule, workspaceIndex, index, scopes)) {
|
|
364
|
+
for (const edge of scopes.imports.get(moduleScope.id) ?? []) {
|
|
365
|
+
if (edge.localName !== name)
|
|
366
|
+
continue;
|
|
367
|
+
// Only a `pub use` re-exports. A private `use` (`named`) makes the name
|
|
368
|
+
// visible INSIDE the module and does not put it on the module's public
|
|
369
|
+
// surface, so treating one as a re-export resolved paths that do not
|
|
370
|
+
// compile. `alias` carries `pub use x::y as name`, which does re-export.
|
|
371
|
+
if (edge.kind !== 'reexport' && edge.kind !== 'alias')
|
|
372
|
+
continue;
|
|
373
|
+
const resolved = resolveReexportTarget(edge, name, scopes, workspaceIndex);
|
|
374
|
+
if (resolved === undefined)
|
|
375
|
+
continue;
|
|
376
|
+
// Refuse on a tie rather than taking whichever file the pool happened to
|
|
377
|
+
// parse first: two `cfg`-exclusive facades re-exporting the same name are
|
|
378
|
+
// indistinguishable here, and picking one is a coin flip baked into the graph.
|
|
379
|
+
if (unique !== undefined && resolved.nodeId !== unique.nodeId)
|
|
380
|
+
return undefined;
|
|
381
|
+
unique = resolved;
|
|
382
|
+
count++;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return count >= 1 ? unique : undefined;
|
|
386
|
+
}
|
|
387
|
+
const MODULE_SCOPE_CACHE = new WeakMap();
|
|
388
|
+
function moduleKey(module) {
|
|
389
|
+
return `${module.crateRoot}\u0000${module.segments.join('::')}`;
|
|
390
|
+
}
|
|
391
|
+
function passIndexFor(workspaceIndex, index, scopes) {
|
|
392
|
+
let pass = MODULE_SCOPE_CACHE.get(workspaceIndex);
|
|
393
|
+
if (pass === undefined) {
|
|
394
|
+
const scopesByModule = new Map();
|
|
395
|
+
const knownModuleNames = new Set(index.moduleNames);
|
|
396
|
+
// Inline `mod x { … }` never appears in a file path, so its name exists only
|
|
397
|
+
// as a `Namespace` def. Read from the def index rather than from module-scope
|
|
398
|
+
// bindings: `moduleScopeByFile` holds each file's ROOT `Module` scope only, so
|
|
399
|
+
// a binding walk saw depth-1 inline modules and missed every nested one —
|
|
400
|
+
// `mod outer { mod tools { … } }` left `tools` out of the set, and this gate
|
|
401
|
+
// then rejected `tools::dispatch()` before any module walk could resolve it.
|
|
402
|
+
//
|
|
403
|
+
// One pass over the defs, memoized per resolution pass on the WeakMap above,
|
|
404
|
+
// over an already-resident in-memory index — the same order of work as the
|
|
405
|
+
// binding walk it replaces, and it subsumes it (a `mod` declaration at any
|
|
406
|
+
// depth is a `Namespace` def).
|
|
407
|
+
//
|
|
408
|
+
// The same pass records every INLINE module path, which is what
|
|
409
|
+
// `declaresSubmodule` needs at depth > 1.
|
|
410
|
+
//
|
|
411
|
+
// Derived from the MEMBERS, not from the `Namespace` defs: a `mod` def carries
|
|
412
|
+
// no nesting information of its own (`mod outer { mod tools { … } }` gives the
|
|
413
|
+
// inner def `qualifiedName: 'tools'` and NO `namespacePrefix`), whereas every
|
|
414
|
+
// def inside it is stamped `outer.tools` by `tagNamespacePrefixes`. A
|
|
415
|
+
// `Namespace` scope also owns its OWN def rather than its children's, so
|
|
416
|
+
// walking scopes cannot answer this either — the `mod outer` scope lists
|
|
417
|
+
// `outer`, never `tools`.
|
|
418
|
+
//
|
|
419
|
+
// Restricted to non-empty prefixes on purpose: those come from `mod` blocks in
|
|
420
|
+
// source, so this stays a DECLARATION check. Including file-derived modules
|
|
421
|
+
// here would let an undeclared (or `cfg`-gated) file on disk outrank a real
|
|
422
|
+
// `use` binding — the #2741 review regression. File-backed submodules keep
|
|
423
|
+
// going through the binding check in `declaresSubmodule`.
|
|
424
|
+
//
|
|
425
|
+
// A module containing no defs at all is absent, which is harmless: it has no
|
|
426
|
+
// member for a qualified call to resolve to.
|
|
427
|
+
const inlineModuleKeys = new Set();
|
|
428
|
+
for (const def of scopes.defs.byId.values()) {
|
|
429
|
+
if (def.type === 'Namespace' && def.qualifiedName !== undefined) {
|
|
430
|
+
knownModuleNames.add(tailSegment(def.qualifiedName));
|
|
431
|
+
}
|
|
432
|
+
if (def.namespacePrefix === undefined || def.namespacePrefix === '')
|
|
433
|
+
continue;
|
|
434
|
+
const declaringModule = (0, module_path_js_1.moduleOfDef)(def.filePath, def.namespacePrefix, index);
|
|
435
|
+
if (declaringModule !== undefined)
|
|
436
|
+
inlineModuleKeys.add(moduleKey(declaringModule));
|
|
437
|
+
}
|
|
438
|
+
for (const [filePath, moduleScope] of workspaceIndex.moduleScopeByFile) {
|
|
439
|
+
const fileModule = (0, module_path_js_1.moduleOfFile)(filePath, index);
|
|
440
|
+
if (fileModule === undefined)
|
|
441
|
+
continue;
|
|
442
|
+
const key = moduleKey(fileModule);
|
|
443
|
+
const bucket = scopesByModule.get(key);
|
|
444
|
+
if (bucket === undefined)
|
|
445
|
+
scopesByModule.set(key, [moduleScope]);
|
|
446
|
+
else
|
|
447
|
+
bucket.push(moduleScope);
|
|
448
|
+
}
|
|
449
|
+
pass = { scopesByModule, knownModuleNames, inlineModuleKeys };
|
|
450
|
+
MODULE_SCOPE_CACHE.set(workspaceIndex, pass);
|
|
451
|
+
}
|
|
452
|
+
return pass;
|
|
453
|
+
}
|
|
454
|
+
function moduleScopesFor(targetModule, workspaceIndex, index, scopes) {
|
|
455
|
+
return (passIndexFor(workspaceIndex, index, scopes).scopesByModule.get(moduleKey(targetModule)) ??
|
|
456
|
+
EMPTY_SCOPES);
|
|
457
|
+
}
|
|
458
|
+
const EMPTY_SCOPES = Object.freeze([]);
|
|
459
|
+
/** Follow one re-export edge to the definition it exposes. */
|
|
460
|
+
function resolveReexportTarget(edge, name, scopes, workspaceIndex) {
|
|
461
|
+
const viaDefId = edge.targetDefId;
|
|
462
|
+
if (viaDefId !== undefined) {
|
|
463
|
+
const def = scopes.defs.get(viaDefId);
|
|
464
|
+
if (def !== undefined && (0, callable_labels_js_1.isOverloadableCallable)(def.type))
|
|
465
|
+
return def;
|
|
466
|
+
}
|
|
467
|
+
// No pre-resolved def id: fall back to the exporting file's own module.
|
|
468
|
+
if (edge.targetFile === null)
|
|
469
|
+
return undefined;
|
|
470
|
+
return findExportedCallable(edge.targetFile, name, workspaceIndex);
|
|
471
|
+
}
|
|
472
|
+
/** Module-scope callable declared locally by `targetFile`. */
|
|
473
|
+
function findExportedCallable(targetFile, name, workspaceIndex) {
|
|
474
|
+
const moduleScope = workspaceIndex.moduleScopeByFile.get(targetFile);
|
|
475
|
+
if (moduleScope === undefined)
|
|
476
|
+
return undefined;
|
|
477
|
+
for (const ref of moduleScope.bindings.get(name) ?? []) {
|
|
478
|
+
if (ref.origin === 'local' && (0, callable_labels_js_1.isOverloadableCallable)(ref.def.type))
|
|
479
|
+
return ref.def;
|
|
480
|
+
}
|
|
481
|
+
return undefined;
|
|
482
|
+
}
|