cgraphx 2.0.1 → 2.0.3
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 +7 -5
- package/dist/.claude-template/commands/end.md +1 -1
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
- package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
- package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
- package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
- package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
- package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
- 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/features/scanner.d.ts +2 -0
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +27 -6
- package/dist/core/features/scanner.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/package.json +1 -1
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.populateCppRangeBindings = populateCppRangeBindings;
|
|
4
|
+
const query_js_1 = require("./query.js");
|
|
5
|
+
const constants_js_1 = require("../../constants.js");
|
|
6
|
+
const safe_parse_js_1 = require("../../../tree-sitter/safe-parse.js");
|
|
7
|
+
const logger_js_1 = require("../../../logger.js");
|
|
8
|
+
/**
|
|
9
|
+
* Populate range-for loop variable type bindings for C++.
|
|
10
|
+
*
|
|
11
|
+
* Handles three patterns:
|
|
12
|
+
* 1. `for (auto& user : users)` — simple range-for
|
|
13
|
+
* 2. `for (auto& [key, user] : userMap)` — structured binding
|
|
14
|
+
* 3. `for (auto& user : *usersPtr)` — dereference range-for
|
|
15
|
+
*
|
|
16
|
+
* Strategy: look up the range source variable's type in scope
|
|
17
|
+
* typeBindings, extract the last template argument as the element
|
|
18
|
+
* type, and inject a typeBinding for the loop variable.
|
|
19
|
+
*/
|
|
20
|
+
function populateCppRangeBindings(parsedFiles, _indexes, ctx) {
|
|
21
|
+
const parser = (0, query_js_1.getCppParser)();
|
|
22
|
+
for (const parsed of parsedFiles) {
|
|
23
|
+
const sourceText = ctx.fileContents.get(parsed.filePath);
|
|
24
|
+
if (sourceText === undefined)
|
|
25
|
+
continue;
|
|
26
|
+
const cachedTree = ctx.treeCache?.get(parsed.filePath);
|
|
27
|
+
let tree;
|
|
28
|
+
if (cachedTree !== undefined) {
|
|
29
|
+
tree = cachedTree;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
try {
|
|
33
|
+
tree = (0, safe_parse_js_1.parseSourceSafe)(parser, sourceText, undefined, {
|
|
34
|
+
bufferSize: (0, constants_js_1.getTreeSitterBufferSize)(sourceText),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (err instanceof safe_parse_js_1.ParseTimeoutError) {
|
|
39
|
+
logger_js_1.logger.warn({ file: parsed.filePath }, 'cpp range-binding: parse timed out, skipping file');
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const moduleScope = parsed.scopes.find((s) => s.kind === 'Module');
|
|
46
|
+
if (moduleScope === undefined)
|
|
47
|
+
continue;
|
|
48
|
+
const scopeMap = new Map(parsed.scopes.map((s) => [s.id, s]));
|
|
49
|
+
// Build a map from parameter name → AST parameter_declaration node
|
|
50
|
+
// so we can extract the un-normalized template type from the AST.
|
|
51
|
+
const paramTypeMap = buildParamTemplateMap(tree.rootNode);
|
|
52
|
+
for (const rangeNode of tree.rootNode.descendantsOfType('for_range_loop')) {
|
|
53
|
+
// Get the declarator (loop variable)
|
|
54
|
+
const declarator = rangeNode.childForFieldName('declarator');
|
|
55
|
+
if (declarator === null)
|
|
56
|
+
continue;
|
|
57
|
+
// Get the range source expression (right side of ':')
|
|
58
|
+
const right = rangeNode.childForFieldName('right');
|
|
59
|
+
if (right === null)
|
|
60
|
+
continue;
|
|
61
|
+
// Determine the loop variable name(s) and whether this is a structured binding
|
|
62
|
+
const varNames = extractLoopVarNames(declarator);
|
|
63
|
+
if (varNames.length === 0)
|
|
64
|
+
continue;
|
|
65
|
+
// Determine the range source variable name (handle dereference)
|
|
66
|
+
const sourceVarName = extractSourceVarName(right);
|
|
67
|
+
if (sourceVarName === null)
|
|
68
|
+
continue;
|
|
69
|
+
// Look up the source variable's full template type from the AST
|
|
70
|
+
// (scope typeBindings have been normalized and lost template params)
|
|
71
|
+
const fullType = paramTypeMap.get(sourceVarName);
|
|
72
|
+
if (fullType === undefined)
|
|
73
|
+
continue;
|
|
74
|
+
// Extract element type from the container type
|
|
75
|
+
const elementType = extractCppElementType(fullType);
|
|
76
|
+
if (elementType === null)
|
|
77
|
+
continue;
|
|
78
|
+
// Find the enclosing function scope
|
|
79
|
+
const functionScope = findEnclosingFunctionScope(rangeNode, scopeMap);
|
|
80
|
+
const targetScope = functionScope ?? moduleScope;
|
|
81
|
+
const mutable = targetScope.typeBindings;
|
|
82
|
+
// For structured binding [key, user], bind the last identifier to the element type
|
|
83
|
+
// For simple range-for, bind the single variable
|
|
84
|
+
const bindVar = varNames[varNames.length - 1];
|
|
85
|
+
mutable.set(bindVar, {
|
|
86
|
+
rawName: elementType,
|
|
87
|
+
declaredAtScope: targetScope.id,
|
|
88
|
+
source: 'annotation',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Build a map from parameter name → full (un-normalized) type text
|
|
95
|
+
* by walking the AST for all `parameter_declaration` nodes.
|
|
96
|
+
*
|
|
97
|
+
* This bypasses `normalizeCppTypeName` which strips template params,
|
|
98
|
+
* giving us the raw `std::vector<User>` text needed for element-type
|
|
99
|
+
* extraction.
|
|
100
|
+
*/
|
|
101
|
+
function buildParamTemplateMap(rootNode) {
|
|
102
|
+
const map = new Map();
|
|
103
|
+
for (const paramNode of rootNode.descendantsOfType('parameter_declaration')) {
|
|
104
|
+
const typeNode = paramNode.childForFieldName('type');
|
|
105
|
+
if (typeNode === null)
|
|
106
|
+
continue;
|
|
107
|
+
// Extract the parameter name from the declarator subtree.
|
|
108
|
+
// The declarator may be: identifier, reference_declarator > identifier,
|
|
109
|
+
// or pointer_declarator > identifier.
|
|
110
|
+
const declNode = paramNode.childForFieldName('declarator');
|
|
111
|
+
if (declNode === null)
|
|
112
|
+
continue;
|
|
113
|
+
const idents = declNode.descendantsOfType('identifier');
|
|
114
|
+
if (idents.length === 0)
|
|
115
|
+
continue;
|
|
116
|
+
const paramName = idents[idents.length - 1].text;
|
|
117
|
+
// Use the full type node text (preserving template params)
|
|
118
|
+
map.set(paramName, typeNode.text);
|
|
119
|
+
}
|
|
120
|
+
return map;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Extract loop variable name(s) from the declarator node.
|
|
124
|
+
* Handles both simple `identifier` and `structured_binding_declarator`.
|
|
125
|
+
*/
|
|
126
|
+
function extractLoopVarNames(declarator) {
|
|
127
|
+
// The declarator is typically reference_declarator or pointer_declarator wrapping
|
|
128
|
+
// either an identifier or a structured_binding_declarator.
|
|
129
|
+
const structBindings = declarator.descendantsOfType('structured_binding_declarator');
|
|
130
|
+
if (structBindings.length > 0) {
|
|
131
|
+
// structured_binding_declarator contains identifiers like [key, user]
|
|
132
|
+
const idents = structBindings[0].descendantsOfType('identifier');
|
|
133
|
+
return idents.map((id) => id.text).filter((t) => t !== '_');
|
|
134
|
+
}
|
|
135
|
+
// Simple case: reference_declarator > identifier or just identifier
|
|
136
|
+
const idents = declarator.descendantsOfType('identifier');
|
|
137
|
+
if (idents.length > 0) {
|
|
138
|
+
return [idents[idents.length - 1].text];
|
|
139
|
+
}
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Extract the source variable name from the range expression.
|
|
144
|
+
* Handles plain identifiers and dereference expressions (*ptr).
|
|
145
|
+
*/
|
|
146
|
+
function extractSourceVarName(right) {
|
|
147
|
+
if (right.type === 'identifier') {
|
|
148
|
+
return right.text;
|
|
149
|
+
}
|
|
150
|
+
if (right.type === 'pointer_expression') {
|
|
151
|
+
// *usersPtr → get the argument (usersPtr)
|
|
152
|
+
const arg = right.childForFieldName('argument');
|
|
153
|
+
if (arg !== null)
|
|
154
|
+
return arg.text;
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Extract the element type from a C++ container type string.
|
|
160
|
+
*
|
|
161
|
+
* Examples:
|
|
162
|
+
* - `vector<User>` → `User`
|
|
163
|
+
* - `std::vector<User>` → `User`
|
|
164
|
+
* - `map<std::string, User>` → `User` (last template arg)
|
|
165
|
+
* - `map<string, User>` → `User`
|
|
166
|
+
*
|
|
167
|
+
* For structured bindings with maps, the last template arg is the value type.
|
|
168
|
+
* For vectors/sets, the first (and only) template arg is the element type.
|
|
169
|
+
*/
|
|
170
|
+
function extractCppElementType(rawType) {
|
|
171
|
+
// Find the outermost template argument list
|
|
172
|
+
const ltIdx = rawType.indexOf('<');
|
|
173
|
+
if (ltIdx === -1)
|
|
174
|
+
return null;
|
|
175
|
+
// Extract the template argument string (handle nested templates)
|
|
176
|
+
let depth = 0;
|
|
177
|
+
let lastCommaOrStart = ltIdx + 1;
|
|
178
|
+
let lastArg = '';
|
|
179
|
+
for (let i = ltIdx; i < rawType.length; i++) {
|
|
180
|
+
const ch = rawType[i];
|
|
181
|
+
if (ch === '<') {
|
|
182
|
+
depth++;
|
|
183
|
+
}
|
|
184
|
+
else if (ch === '>') {
|
|
185
|
+
depth--;
|
|
186
|
+
if (depth === 0) {
|
|
187
|
+
lastArg = rawType.slice(lastCommaOrStart, i).trim();
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else if (ch === ',' && depth === 1) {
|
|
192
|
+
lastCommaOrStart = i + 1;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (lastArg === '')
|
|
196
|
+
return null;
|
|
197
|
+
// Strip pointer/reference qualifiers and const
|
|
198
|
+
let elementType = lastArg
|
|
199
|
+
.replace(/^const\s+/, '')
|
|
200
|
+
.replace(/\s*[*&]+\s*$/, '')
|
|
201
|
+
.trim();
|
|
202
|
+
// Strip namespace prefix (std::string → string)
|
|
203
|
+
const lastColon = elementType.lastIndexOf('::');
|
|
204
|
+
if (lastColon !== -1) {
|
|
205
|
+
elementType = elementType.slice(lastColon + 2);
|
|
206
|
+
}
|
|
207
|
+
return elementType || null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Find the enclosing Function scope for a tree-sitter node by
|
|
211
|
+
* walking up the AST and matching source positions.
|
|
212
|
+
*/
|
|
213
|
+
function findEnclosingFunctionScope(node, scopeMap) {
|
|
214
|
+
const tsNode = node;
|
|
215
|
+
let current = tsNode;
|
|
216
|
+
while (current !== null) {
|
|
217
|
+
if (current.type === 'function_definition') {
|
|
218
|
+
for (const scope of scopeMap.values()) {
|
|
219
|
+
if (scope.kind === 'Function' &&
|
|
220
|
+
scope.range.startLine === current.startPosition.row &&
|
|
221
|
+
scope.range.startCol === current.startPosition.column) {
|
|
222
|
+
return scope;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
current = current.parent ?? null;
|
|
228
|
+
}
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cppScopeResolver = void 0;
|
|
4
|
+
const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
|
|
5
|
+
const index_js_1 = require("../../../../../shared/index.js");
|
|
6
|
+
const walkers_js_2 = require("../../scope-resolution/scope/walkers.js");
|
|
7
|
+
const shared_js_1 = require("../../type-extractors/shared.js");
|
|
8
|
+
const c_cpp_js_1 = require("../c-cpp.js");
|
|
9
|
+
const arity_js_1 = require("./arity.js");
|
|
10
|
+
const conversion_rank_js_1 = require("./conversion-rank.js");
|
|
11
|
+
const merge_bindings_js_1 = require("./merge-bindings.js");
|
|
12
|
+
const import_target_js_1 = require("./import-target.js");
|
|
13
|
+
const header_scan_js_1 = require("./header-scan.js");
|
|
14
|
+
const file_local_linkage_js_1 = require("./file-local-linkage.js");
|
|
15
|
+
const two_phase_lookup_js_1 = require("./two-phase-lookup.js");
|
|
16
|
+
const adl_js_1 = require("./adl.js");
|
|
17
|
+
const capture_side_channel_js_1 = require("./capture-side-channel.js");
|
|
18
|
+
const inline_namespaces_js_1 = require("./inline-namespaces.js");
|
|
19
|
+
const range_bindings_js_1 = require("./range-bindings.js");
|
|
20
|
+
const constraint_filter_js_1 = require("./constraint-filter.js");
|
|
21
|
+
const user_defined_conversions_js_1 = require("./user-defined-conversions.js");
|
|
22
|
+
const member_lookup_js_1 = require("./member-lookup.js");
|
|
23
|
+
const interpret_js_1 = require("./interpret.js");
|
|
24
|
+
/** A pointee worth binding: a bare identifier, not `T**`, `T[]`, `A::B` or a
|
|
25
|
+
* template spelling. Hoisted — a literal here would mint a fresh RegExp on
|
|
26
|
+
* every subscript the resolver folds. */
|
|
27
|
+
const CPP_SIMPLE_POINTEE_RE = /^[A-Za-z_]\w*$/;
|
|
28
|
+
/**
|
|
29
|
+
* Per-pass memo of the augmented `#include`-resolution file set
|
|
30
|
+
* (`allFilePaths` ∪ header paths), keyed on the two stable source sets.
|
|
31
|
+
* `resolveImportTarget` is called once per C++ `#include`; the old code rebuilt
|
|
32
|
+
* a fresh ~F-entry `Set` on every call AND defeated the shared
|
|
33
|
+
* `resolveCImportTarget` suffix-index memo (in `c/import-target.ts`) by handing
|
|
34
|
+
* it a new set identity each time. Both inputs are stable per pass, so the
|
|
35
|
+
* union is built once and reused. `WeakMap`-keyed → reclaimed with the pass.
|
|
36
|
+
* (Twin of the C resolver's `augmentedFilePaths`.)
|
|
37
|
+
*/
|
|
38
|
+
const augmentedPathsByPass = new WeakMap();
|
|
39
|
+
function augmentedFilePaths(allFilePaths, headerPaths) {
|
|
40
|
+
let byHeaders = augmentedPathsByPass.get(allFilePaths);
|
|
41
|
+
if (byHeaders === undefined) {
|
|
42
|
+
byHeaders = new WeakMap();
|
|
43
|
+
augmentedPathsByPass.set(allFilePaths, byHeaders);
|
|
44
|
+
}
|
|
45
|
+
let augmented = byHeaders.get(headerPaths);
|
|
46
|
+
if (augmented === undefined) {
|
|
47
|
+
const set = new Set(allFilePaths);
|
|
48
|
+
for (const h of headerPaths)
|
|
49
|
+
set.add(h);
|
|
50
|
+
augmented = set;
|
|
51
|
+
byHeaders.set(headerPaths, augmented);
|
|
52
|
+
}
|
|
53
|
+
return augmented;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* C++ `ScopeResolver` registered in `SCOPE_RESOLVERS` and consumed by
|
|
57
|
+
* the generic `runScopeResolution` orchestrator (RFC #909 Ring 3).
|
|
58
|
+
*
|
|
59
|
+
* C++ extends C's scope resolution with:
|
|
60
|
+
* - Namespaces (`namespace foo { ... }`)
|
|
61
|
+
* - Classes with methods and multiple inheritance
|
|
62
|
+
* - `using namespace` (wildcard import from namespace)
|
|
63
|
+
* - `using X::name` (named import from namespace)
|
|
64
|
+
* - Anonymous namespace (file-local linkage, like C `static`)
|
|
65
|
+
* - Default parameters (requiredParameterCount < parameterCount)
|
|
66
|
+
* - Overloading (arity-based disambiguation)
|
|
67
|
+
* - Templates (V1: generic-ignored, `List<User>` ≡ `List`)
|
|
68
|
+
* - Leftmost-base MRO for multiple inheritance
|
|
69
|
+
*/
|
|
70
|
+
exports.cppScopeResolver = {
|
|
71
|
+
language: index_js_1.SupportedLanguages.CPlusPlus,
|
|
72
|
+
languageProvider: c_cpp_js_1.cppProvider,
|
|
73
|
+
importEdgeReason: 'cpp-scope: include',
|
|
74
|
+
loadResolutionConfig: (repoPath) => {
|
|
75
|
+
// Clear stale per-pipeline state from any previous invocation.
|
|
76
|
+
(0, file_local_linkage_js_1.clearFileLocalNames)();
|
|
77
|
+
(0, two_phase_lookup_js_1.clearCppDependentBases)();
|
|
78
|
+
(0, adl_js_1.clearCppAdlState)();
|
|
79
|
+
(0, inline_namespaces_js_1.clearCppInlineNamespaces)();
|
|
80
|
+
(0, user_defined_conversions_js_1.clearCppUserDefinedConversions)();
|
|
81
|
+
(0, member_lookup_js_1.clearCppMemberLookupState)();
|
|
82
|
+
return (0, header_scan_js_1.scanCppHeaderFiles)(repoPath);
|
|
83
|
+
},
|
|
84
|
+
resolveImportTarget: (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
|
|
85
|
+
// Augment allFilePaths with header files discovered via loadResolutionConfig.
|
|
86
|
+
// C++ .h/.hpp/.hxx/.hh files may be classified differently by language
|
|
87
|
+
// detection but are importable from .cpp files via #include.
|
|
88
|
+
const headerPaths = resolutionConfig;
|
|
89
|
+
if (headerPaths !== undefined && headerPaths.size > 0) {
|
|
90
|
+
return (0, import_target_js_1.resolveCppImportTarget)(targetRaw, fromFile, augmentedFilePaths(allFilePaths, headerPaths));
|
|
91
|
+
}
|
|
92
|
+
return (0, import_target_js_1.resolveCppImportTarget)(targetRaw, fromFile, allFilePaths);
|
|
93
|
+
},
|
|
94
|
+
expandsWildcardTo: (targetModuleScope, parsedFiles) => (0, file_local_linkage_js_1.expandCppWildcardNames)(targetModuleScope, parsedFiles),
|
|
95
|
+
mergeBindings: (existing, incoming, scopeId) => (0, merge_bindings_js_1.cppMergeBindings)(existing, incoming, scopeId),
|
|
96
|
+
// Adapter: cppArityCompatibility predates ScopeResolver and uses
|
|
97
|
+
// (def, callsite). ScopeResolver contract is (callsite, def).
|
|
98
|
+
arityCompatibility: (callsite, def) => (0, arity_js_1.cppArityCompatibility)(def, callsite),
|
|
99
|
+
// SFINAE / `requires`-clause aware overload filter (issue #1579).
|
|
100
|
+
// Drops candidates whose template constraints (`enable_if_t<P, T>`,
|
|
101
|
+
// C++20 `requires P`) provably fail at the call site. Three-valued —
|
|
102
|
+
// `'unknown'` keeps the candidate, preserving "degrade not lie".
|
|
103
|
+
constraintCompatibility: constraint_filter_js_1.cppConstraintCompatibility,
|
|
104
|
+
buildMro: member_lookup_js_1.buildCppMemberLookupMro,
|
|
105
|
+
// Worker-boundary restore (see `ScopeResolver.applyCaptureSideChannel`).
|
|
106
|
+
// `emitCppScopeCaptures` records per-file ADL call-site arg shapes
|
|
107
|
+
// (`markCppAdlSiteArgs`/`markCppAdlSiteNoAdl`), inline-/anonymous-namespace
|
|
108
|
+
// ranges (`markCppInlineNamespaceRange`/`markCppAnonymousNamespaceRange`),
|
|
109
|
+
// dependent-base names (`markCppDependentBase`/`markCppDependentPackBase`),
|
|
110
|
+
// and file-local linkage (`markFileLocal`) into module-level maps as a SIDE
|
|
111
|
+
// EFFECT — none of it is serialized onto the returned ParsedFile's scopes/defs.
|
|
112
|
+
// On the worker path those marks are populated in the worker process and lost
|
|
113
|
+
// across the MessageChannel / disk store; the main thread reuses the
|
|
114
|
+
// serialized ParsedFile and skips `extractParsedFile`, so `populateOwners` +
|
|
115
|
+
// the ADL / two-phase-lookup passes would see empty maps and emit zero edges.
|
|
116
|
+
// The worker stashed a plain-data snapshot on `parsed.captureSideChannel` via
|
|
117
|
+
// `cppProvider.collectCaptureSideChannel`; this restores it into the module
|
|
118
|
+
// maps WITHOUT any tree-sitter re-parse (the #1983 fix — the old re-parse
|
|
119
|
+
// replay re-OOM'd huge `.h`/`.cpp` repos). The freshly-extracted leg never
|
|
120
|
+
// calls this — its marks were just populated in this process.
|
|
121
|
+
applyCaptureSideChannel: capture_side_channel_js_1.applyCppCaptureSideChannel,
|
|
122
|
+
populateOwners: (parsed) => {
|
|
123
|
+
(0, walkers_js_2.populateClassOwnedMembers)(parsed);
|
|
124
|
+
// #1982: tag namespace-nested defs with their enclosing-namespace prefix so
|
|
125
|
+
// resolveDefGraphId can map them to the namespace-qualified structure-phase
|
|
126
|
+
// node (`NS.A.Inner`) instead of collapsing same-tail nested bases via the
|
|
127
|
+
// simpleKey fallback. Does NOT change qualifiedName (resolution unaffected).
|
|
128
|
+
(0, walkers_js_2.tagNamespacePrefixes)(parsed);
|
|
129
|
+
// Resolve inline- and anonymous-namespace ranges (recorded at capture
|
|
130
|
+
// time) to ScopeIds BEFORE `populateCppNonGloballyVisible` runs, so
|
|
131
|
+
// both exemptions see the populated Sets.
|
|
132
|
+
(0, inline_namespaces_js_1.populateCppInlineNamespaceScopes)(parsed);
|
|
133
|
+
(0, file_local_linkage_js_1.populateCppAnonymousNamespaceScopes)(parsed);
|
|
134
|
+
// Track namespace-nested and class-nested defs so the global free-call
|
|
135
|
+
// fallback and wildcard expansion can suppress them as unqualified
|
|
136
|
+
// cross-file callables.
|
|
137
|
+
(0, file_local_linkage_js_1.populateCppNonGloballyVisible)(parsed);
|
|
138
|
+
// Build the class-def → enclosing-namespace-qualified-name map used
|
|
139
|
+
// by ADL (U2 of plan 2026-05-13-001) to identify each argument type's
|
|
140
|
+
// associated namespace for Koenig lookup.
|
|
141
|
+
(0, adl_js_1.populateCppAssociatedNamespaces)(parsed);
|
|
142
|
+
// Build conservative one-step user-defined conversion facts for
|
|
143
|
+
// overload ranking (#1631): implicit converting constructors only,
|
|
144
|
+
// with no chaining or conversion-operator handling.
|
|
145
|
+
(0, user_defined_conversions_js_1.populateCppUserDefinedConversions)(parsed);
|
|
146
|
+
},
|
|
147
|
+
// Resolve recorded template-class → dependent-base simple names to
|
|
148
|
+
// class nodeIds for two-phase template lookup (U3 of plan
|
|
149
|
+
// 2026-05-13-001). Runs AFTER all files have had `populateOwners`
|
|
150
|
+
// applied so that cross-file base classes (e.g. Base in base.h,
|
|
151
|
+
// Derived in derived.h) are reachable in the workspace index.
|
|
152
|
+
populateWorkspaceOwners: (parsedFiles) => {
|
|
153
|
+
(0, two_phase_lookup_js_1.populateCppDependentBases)(parsedFiles);
|
|
154
|
+
},
|
|
155
|
+
// Simple `isSuperReceiver` returns false for C++. Real super
|
|
156
|
+
// classification is caller-context-dependent and lives in
|
|
157
|
+
// `isSuperReceiverInContext` below — without scope context the
|
|
158
|
+
// previous regex `/^[A-Z]\w*::/` misclassified namespace-qualified
|
|
159
|
+
// calls (e.g., `Singleton::getInstance()`) as super calls and routed
|
|
160
|
+
// them through the wrong resolution branch.
|
|
161
|
+
isSuperReceiver: () => false,
|
|
162
|
+
isSuperReceiverInContext: (text, callerScope, scopes) => {
|
|
163
|
+
// The receiver text comes from the LHS of `::` in `qualified_identifier`
|
|
164
|
+
// (e.g., for `Base<T>::method()`, text is `Base<T>`). Strip template
|
|
165
|
+
// arguments (V1: name-only matching, generics ignored) and any leading
|
|
166
|
+
// namespace qualifier so the lookup matches the bare class def's
|
|
167
|
+
// simple name. `Base<T>::method()` → `Base`; `outer::v1::Base<T>` →
|
|
168
|
+
// `Base`. This handles the Phase 5 cross-unit composition where
|
|
169
|
+
// qualified base-method calls appear inside template bodies.
|
|
170
|
+
let lhs = text;
|
|
171
|
+
const sepIdx = lhs.indexOf('::');
|
|
172
|
+
if (sepIdx > 0)
|
|
173
|
+
lhs = lhs.slice(0, sepIdx).trim();
|
|
174
|
+
// Strip trailing template-argument list (greedy: drop everything from
|
|
175
|
+
// the first `<` onward — V1 ignores generics).
|
|
176
|
+
const lt = lhs.indexOf('<');
|
|
177
|
+
if (lt > 0)
|
|
178
|
+
lhs = lhs.slice(0, lt).trim();
|
|
179
|
+
// Strip nested namespace prefix from the receiver text itself (the
|
|
180
|
+
// `outer::v1::Base` shape that appears in derived-list `base_class_clause`).
|
|
181
|
+
const lastDoubleColon = lhs.lastIndexOf('::');
|
|
182
|
+
if (lastDoubleColon >= 0)
|
|
183
|
+
lhs = lhs.slice(lastDoubleColon + 2).trim();
|
|
184
|
+
if (lhs.length === 0)
|
|
185
|
+
return false;
|
|
186
|
+
// Resolve the LHS in the caller's scope chain. Only class-like
|
|
187
|
+
// resolutions can be super receivers; Namespace and unresolved
|
|
188
|
+
// names are not super calls.
|
|
189
|
+
const lhsDef = (0, walkers_js_1.findClassBindingInScope)(callerScope, lhs, scopes);
|
|
190
|
+
if (lhsDef === undefined)
|
|
191
|
+
return false;
|
|
192
|
+
// The caller must have an enclosing class — super calls only make
|
|
193
|
+
// sense inside a class body. Free functions can use `ClassName::`
|
|
194
|
+
// for namespace-qualified calls but those are not super.
|
|
195
|
+
const enclosing = (0, walkers_js_1.findEnclosingClassDef)(callerScope, scopes);
|
|
196
|
+
if (enclosing === undefined)
|
|
197
|
+
return false;
|
|
198
|
+
// `lhsDef` must be in the caller's MRO (i.e., the caller's enclosing
|
|
199
|
+
// class derives from it). The class itself counts as its own MRO
|
|
200
|
+
// root — `Self::method()` is a qualified self-call, not a super
|
|
201
|
+
// call, so exclude the caller's own class.
|
|
202
|
+
if (lhsDef.nodeId === enclosing.nodeId)
|
|
203
|
+
return false;
|
|
204
|
+
const mro = scopes.methodDispatch.mroFor(enclosing.nodeId);
|
|
205
|
+
return mro.includes(lhsDef.nodeId);
|
|
206
|
+
},
|
|
207
|
+
// Subscript route only — C++ collection views are method calls.
|
|
208
|
+
//
|
|
209
|
+
// Two container spellings reach a subscript. A POINTER is one of them: `p[i]`
|
|
210
|
+
// on a `User*` is pointer arithmetic yielding a `User`, so the trailing `*` is
|
|
211
|
+
// peeled here rather than by `stripTypePreservingDecoration` (C++ declares
|
|
212
|
+
// none) — and peeling it at a bare class lookup instead would be wrong, since
|
|
213
|
+
// that is the route by which `p->m()` must keep seeing `User`'s own members.
|
|
214
|
+
// The other is a template container (`std::vector<User>`), left to the shared
|
|
215
|
+
// extractor.
|
|
216
|
+
//
|
|
217
|
+
// Fed the annotation AS WRITTEN, since `normalizeCppTypeName` strips both the
|
|
218
|
+
// star and the array brackets at capture. `undefined` = "not a container", so
|
|
219
|
+
// an `operator[]`-bearing class does not fold `grid[0]` onto `Grid`.
|
|
220
|
+
elementTypeOf: (containerType, via) => {
|
|
221
|
+
if (via.kind !== 'index')
|
|
222
|
+
return undefined;
|
|
223
|
+
const t = (0, interpret_js_1.stripCppSpecifiers)(containerType);
|
|
224
|
+
if (t.endsWith('*')) {
|
|
225
|
+
const pointee = t.slice(0, -1).trim();
|
|
226
|
+
return CPP_SIMPLE_POINTEE_RE.test(pointee) ? pointee : undefined;
|
|
227
|
+
}
|
|
228
|
+
return (0, shared_js_1.extractElementTypeFromString)(t);
|
|
229
|
+
},
|
|
230
|
+
// C++ is statically typed — disable field fallback heuristic
|
|
231
|
+
fieldFallbackOnMethodLookup: false,
|
|
232
|
+
// C++ needs return type propagation across #include boundaries
|
|
233
|
+
propagatesReturnTypesAcrossImports: true,
|
|
234
|
+
// C++ #include brings in all symbols — enable global free call fallback
|
|
235
|
+
allowGlobalFreeCallFallback: true,
|
|
236
|
+
// C++ standard-conversion-sequence ranking for overload resolution (#1578).
|
|
237
|
+
// Disambiguates `f(int)` vs `f(double)` called with `f(2.5)` by scoring
|
|
238
|
+
// each candidate's conversion cost; exact match wins over standard conversion.
|
|
239
|
+
conversionRankFn: conversion_rank_js_1.cppConversionRank,
|
|
240
|
+
conversionOnlyArgTypePrefixes: conversion_rank_js_1.CPP_CONVERSION_ONLY_ARG_TYPE_PREFIXES,
|
|
241
|
+
// Range-for element type inference: for (auto& user : users) → bind user to User
|
|
242
|
+
populateRangeBindings: range_bindings_js_1.populateCppRangeBindings,
|
|
243
|
+
// C++ method return-type bindings need to be visible from module scope
|
|
244
|
+
// for cross-file propagation and compound-receiver chain resolution.
|
|
245
|
+
// cppBindingScopeFor hoists @type-binding.return to Module scope.
|
|
246
|
+
hoistTypeBindingsToModule: true,
|
|
247
|
+
// Enable receiver-bound explicit-`this` fallback only for C++.
|
|
248
|
+
resolveThisViaEnclosingClass: true,
|
|
249
|
+
resolveReceiverMember: member_lookup_js_1.resolveCppReceiverMember,
|
|
250
|
+
// The `isFileLocalDef` hook on the global free-call fallback names
|
|
251
|
+
// file-local linkage historically, but semantically gates "logically
|
|
252
|
+
// invisible cross-file" defs. C++ extends this to also reject class-
|
|
253
|
+
// owned methods/fields and namespace-nested symbols — an unqualified
|
|
254
|
+
// call from a free function MUST NOT resolve to `User::save` or
|
|
255
|
+
// `ns::foo` (Cppreference, "Unqualified name lookup"). Without this
|
|
256
|
+
// gate, the global fallback walks every callable in the workspace
|
|
257
|
+
// registry and matches any class method or namespace function by
|
|
258
|
+
// simple name.
|
|
259
|
+
isFileLocalDef: (def) => {
|
|
260
|
+
const simple = def.qualifiedName?.split('.').pop() ?? def.qualifiedName ?? '';
|
|
261
|
+
if ((0, file_local_linkage_js_1.isFileLocal)(def.filePath, simple))
|
|
262
|
+
return true;
|
|
263
|
+
// Class-owned (Method/Field) — `populateClassOwnedMembers` already
|
|
264
|
+
// stamps `ownerId`; cheap fast-path before consulting the scope map.
|
|
265
|
+
if (def.ownerId !== undefined)
|
|
266
|
+
return true;
|
|
267
|
+
// Namespace-nested defs — require qualification cross-file. Scope-
|
|
268
|
+
// walked at `populateOwners` time into a per-file nodeId set.
|
|
269
|
+
if (!(0, file_local_linkage_js_1.isCppDefGloballyVisible)(def.filePath, def.nodeId))
|
|
270
|
+
return true;
|
|
271
|
+
return false;
|
|
272
|
+
},
|
|
273
|
+
// Keep declaration/definition identity narrower than the global free-call
|
|
274
|
+
// visibility gate above: namespace and class ownership do not imply
|
|
275
|
+
// internal linkage, while a namespace-scope `static` function does.
|
|
276
|
+
hasFileLocalCallableLinkage: (def) => {
|
|
277
|
+
// Class members have EXTERNAL linkage even when declared `static` —
|
|
278
|
+
// inside a class, `static` means "no instance", not internal linkage.
|
|
279
|
+
// The name-keyed set below is populated from every `static` declaration,
|
|
280
|
+
// so without this gate a header-declared static member refused its
|
|
281
|
+
// cross-file definition join (#2522 review, M2).
|
|
282
|
+
if (def.type === 'Method' || def.type === 'Constructor')
|
|
283
|
+
return false;
|
|
284
|
+
const simple = def.qualifiedName?.split('.').pop() ?? def.qualifiedName ?? '';
|
|
285
|
+
return (0, file_local_linkage_js_1.isFileLocal)(def.filePath, simple);
|
|
286
|
+
},
|
|
287
|
+
// C++ two-phase template lookup: inside a class template body,
|
|
288
|
+
// unqualified calls MUST NOT bind to members of a dependent base
|
|
289
|
+
// class. The standard requires `this->name()` or `Base<T>::name()`
|
|
290
|
+
// forms to make the lookup dependent. Without this gate the global
|
|
291
|
+
// free-call fallback walks the workspace registry and silently binds
|
|
292
|
+
// unqualified calls to dependent-base members, producing CALLS edges
|
|
293
|
+
// the compiler would reject. See plan 2026-05-13-001 U3.
|
|
294
|
+
isCallableVisibleFromCaller: ({ candidate, callerScope, scopes }) => {
|
|
295
|
+
if (callerScope === undefined || scopes === undefined)
|
|
296
|
+
return true;
|
|
297
|
+
// Reject when the candidate is a member of a dependent base of the
|
|
298
|
+
// caller's enclosing template class. Otherwise allow.
|
|
299
|
+
return !(0, two_phase_lookup_js_1.isCppDependentBaseMember)(callerScope, candidate, scopes);
|
|
300
|
+
},
|
|
301
|
+
// C++ argument-dependent / Koenig lookup (U2 of plan 2026-05-13-001).
|
|
302
|
+
// Contributes candidates from associated namespaces of class-typed
|
|
303
|
+
// arguments; caller merges with ordinary unqualified lookup candidates.
|
|
304
|
+
// Current boundary: class-typed value/pointer/reference args and template
|
|
305
|
+
// specializations with explicit type arguments contribute associated
|
|
306
|
+
// namespaces. Function-pointer args and full conversion-ranking remain
|
|
307
|
+
// excluded.
|
|
308
|
+
resolveAdlCandidates: (site, callerParsed, scopes, parsedFiles) => {
|
|
309
|
+
// `using ns::name;` introduces `name` into ordinary unqualified lookup.
|
|
310
|
+
// For template-class method bodies, lexical scope walks can miss this
|
|
311
|
+
// named-using visibility; recover by resolving the imported namespace
|
|
312
|
+
// member directly when the local call name matches a named using import.
|
|
313
|
+
const usingNamedHits = [];
|
|
314
|
+
const seenUsing = new Set();
|
|
315
|
+
for (const imp of callerParsed.parsedImports) {
|
|
316
|
+
if (imp.kind !== 'named')
|
|
317
|
+
continue;
|
|
318
|
+
if (imp.localName !== site.name)
|
|
319
|
+
continue;
|
|
320
|
+
const member = (0, inline_namespaces_js_1.resolveCppQualifiedNamespaceMember)(imp.targetRaw, imp.importedName, parsedFiles, scopes);
|
|
321
|
+
if (member === undefined || member === 'ambiguous')
|
|
322
|
+
continue;
|
|
323
|
+
if (seenUsing.has(member.nodeId))
|
|
324
|
+
continue;
|
|
325
|
+
seenUsing.add(member.nodeId);
|
|
326
|
+
usingNamedHits.push(member);
|
|
327
|
+
}
|
|
328
|
+
const adlHits = (0, adl_js_1.pickCppAdlCandidates)(site, callerParsed, scopes, parsedFiles);
|
|
329
|
+
if (usingNamedHits.length === 0)
|
|
330
|
+
return adlHits;
|
|
331
|
+
if (adlHits === undefined || adlHits.length === 0)
|
|
332
|
+
return usingNamedHits;
|
|
333
|
+
const merged = [];
|
|
334
|
+
const seen = new Set();
|
|
335
|
+
for (const hit of usingNamedHits) {
|
|
336
|
+
seen.add(hit.nodeId);
|
|
337
|
+
merged.push(hit);
|
|
338
|
+
}
|
|
339
|
+
for (const hit of adlHits) {
|
|
340
|
+
if (seen.has(hit.nodeId))
|
|
341
|
+
continue;
|
|
342
|
+
seen.add(hit.nodeId);
|
|
343
|
+
merged.push(hit);
|
|
344
|
+
}
|
|
345
|
+
return merged;
|
|
346
|
+
},
|
|
347
|
+
// C++ qualified namespace-member resolution (U5 of plan 2026-05-13-001).
|
|
348
|
+
// Handles `outer::foo()` where `outer` is a namespace (not a class).
|
|
349
|
+
// Walks each parsed file's namespace scopes by simple name, then
|
|
350
|
+
// descends transitively through inline-namespace children when
|
|
351
|
+
// searching for the called member. Returns undefined for non-namespace
|
|
352
|
+
// receivers so receiver-bound-calls Case 2 still gets a chance.
|
|
353
|
+
resolveQualifiedReceiverMember: (receiverName, memberName, _callerScope, scopes, parsedFiles, callsite) => (0, inline_namespaces_js_1.resolveCppQualifiedNamespaceMember)(receiverName, memberName, parsedFiles, scopes, callsite),
|
|
354
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cppBindingScopeFor = cppBindingScopeFor;
|
|
4
|
+
exports.cppImportOwningScope = cppImportOwningScope;
|
|
5
|
+
exports.cppReceiverBinding = cppReceiverBinding;
|
|
6
|
+
/**
|
|
7
|
+
* C++ binding scope: default auto-hoist (null) for most declarations.
|
|
8
|
+
*
|
|
9
|
+
* For `for` statement init-scope variables (e.g. `for (int i = 0; ...)`),
|
|
10
|
+
* the variable is scoped to the for-block, not the enclosing function.
|
|
11
|
+
* The tree-sitter scope query already captures for_statement as @scope.block,
|
|
12
|
+
* so tree-sitter's scope nesting handles this automatically — we return null
|
|
13
|
+
* to let the default auto-hoist apply.
|
|
14
|
+
*/
|
|
15
|
+
function cppBindingScopeFor(decl, innermost, tree) {
|
|
16
|
+
// Hoist return-type bindings to Module scope so:
|
|
17
|
+
// 1. propagateImportedReturnTypes can mirror them across files
|
|
18
|
+
// 2. compound-receiver can find method return types via hoistTypeBindingsToModule
|
|
19
|
+
if (decl['@type-binding.return'] !== undefined) {
|
|
20
|
+
let cur = innermost;
|
|
21
|
+
while (cur !== undefined && cur.kind !== 'Module') {
|
|
22
|
+
const parentId = cur.parent ?? null;
|
|
23
|
+
if (parentId === null)
|
|
24
|
+
break;
|
|
25
|
+
cur = tree.getScope(parentId);
|
|
26
|
+
}
|
|
27
|
+
if (cur !== undefined && cur.kind === 'Module')
|
|
28
|
+
return cur.id;
|
|
29
|
+
}
|
|
30
|
+
return null; // default auto-hoist for other bindings
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* C++ import owning scope: default (null).
|
|
34
|
+
* #include and using declarations are file-scoped in C++.
|
|
35
|
+
*/
|
|
36
|
+
function cppImportOwningScope(_imp, _innermost, _tree) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* C++ receiver binding: return `this` TypeRef for methods inside a class.
|
|
41
|
+
*
|
|
42
|
+
* When a function scope is inside a class scope, the implicit `this` pointer
|
|
43
|
+
* refers to the enclosing class. This enables `this->method()` and implicit
|
|
44
|
+
* `this` member access resolution.
|
|
45
|
+
*/
|
|
46
|
+
function cppReceiverBinding(functionScope) {
|
|
47
|
+
// Walk up the scope tree to find an enclosing class scope
|
|
48
|
+
if (functionScope.parent === null)
|
|
49
|
+
return null;
|
|
50
|
+
// The scope tree structure nests function scopes inside class scopes.
|
|
51
|
+
// The orchestrator provides the function scope; we need to check if
|
|
52
|
+
// its parent chain contains a class scope.
|
|
53
|
+
//
|
|
54
|
+
// However, the ScopeResolver.receiverBinding contract receives only
|
|
55
|
+
// the function Scope (not the full ScopeTree), and the Scope type
|
|
56
|
+
// includes `parent` (a ScopeId) but not a reference to the parent
|
|
57
|
+
// Scope object.
|
|
58
|
+
//
|
|
59
|
+
// The orchestrator already handles this by looking up the class owner
|
|
60
|
+
// via populateOwners. We return null here and let the shared infra
|
|
61
|
+
// handle receiver resolution through the class-ownership mechanism.
|
|
62
|
+
//
|
|
63
|
+
// This is consistent with how C# and Go handle it — the receiver
|
|
64
|
+
// binding is established through populateOwners + the MRO chain,
|
|
65
|
+
// not through this hook.
|
|
66
|
+
return null;
|
|
67
|
+
}
|