cgraphx 2.0.2 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.claude-template/FLOW-MAP.md +13 -3
- package/dist/.claude-template/agents/task-history.md +186 -0
- package/dist/.claude-template/commands/end.md +1 -0
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +5 -3
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +8 -8
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +8 -8
- package/dist/.claude-template/skills/clarify-requirements/SKILL.md +13 -9
- package/dist/.claude-template/skills/db-query/SKILL.md +19 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +51 -23
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +3 -4
- package/dist/.claude-template/skills/run-api-test/SKILL.md +15 -15
- package/dist/.claude-template/skills/run-api-test/assets/{template-test-report.md → template-/346/216/245/345/217/243/346/265/213/350/257/225/346/212/245/345/221/212.md} +4 -4
- package/dist/.claude-template/skills/run-api-test/references/bru-run.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/run-api-test/references/report-format.md +6 -6
- package/dist/.claude-template/skills/run-api-test/references/service-readiness.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/test-scope.md +6 -6
- package/dist/.claude-template/skills/run-ui-test/SKILL.md +186 -0
- package/dist/.claude-template/skills/run-ui-test/references/report-format.md +77 -0
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/SKILL.md +18 -18
- package/dist/.claude-template/skills/write-api/assets/{template-api-spec.md → template-/346/216/245/345/217/243/346/265/213/350/257/225-spec.md} +1 -1
- package/dist/.claude-template/skills/write-api/references/{api-spec-format.md → /346/216/245/345/217/243/346/265/213/350/257/225-spec-format.md} +3 -3
- package/dist/.claude-template/skills/write-plan/SKILL.md +4 -2
- package/dist/.claude-template/skills/write-ui-test/SKILL.md +125 -0
- package/dist/.claude-template/skills/write-ui-test/references//347/224/250/344/276/213/350/247/204/346/240/274-format.md +94 -0
- package/dist/core/code/engine/cli/analyze-config.js +320 -0
- package/dist/core/code/engine/cli/analyze.js +1086 -0
- package/dist/core/code/engine/cli/cli-message.js +83 -0
- package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
- package/dist/core/code/engine/cli/embedding-dims.js +43 -0
- package/dist/core/code/engine/cli/format-elapsed.js +12 -0
- package/dist/core/code/engine/cli/help-i18n.js +144 -0
- package/dist/core/code/engine/cli/i18n/en.js +110 -0
- package/dist/core/code/engine/cli/i18n/index.js +47 -0
- package/dist/core/code/engine/cli/i18n/resources.js +9 -0
- package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
- package/dist/core/code/engine/cli/lazy-action.js +67 -0
- package/dist/core/code/engine/cli/optional-grammars.js +136 -0
- package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
- package/dist/core/code/engine/cli/status.js +156 -0
- package/dist/core/code/engine/cli/tool.js +384 -0
- package/dist/core/code/engine/config/ignore-service.js +511 -0
- package/dist/core/code/engine/config/supported-languages.js +17 -0
- package/dist/core/code/engine/core/analysis-features.js +64 -0
- package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
- package/dist/core/code/engine/core/git-staleness.js +180 -0
- package/dist/core/code/engine/core/graph/graph.js +180 -0
- package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
- package/dist/core/code/engine/core/graph/types.js +2 -0
- package/dist/core/code/engine/core/index-freshness.js +12 -0
- package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
- package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
- package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
- package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
- package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
- package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
- package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
- package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
- package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
- package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
- package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
- package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
- package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
- package/dist/core/code/engine/core/ingestion/constants.js +26 -0
- package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
- package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
- package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
- package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
- package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
- package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
- package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
- package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
- package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
- package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
- package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
- package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
- package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
- package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
- package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
- package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
- package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
- package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
- package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
- package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
- package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
- package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
- package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
- package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
- package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
- package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
- package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
- package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
- package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
- package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
- package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
- package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
- package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
- package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
- package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
- package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
- package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
- package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
- package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
- package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
- package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
- package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
- package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
- package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
- package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
- package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
- package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
- package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
- package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
- package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
- package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
- package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
- package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
- package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
- package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
- package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
- package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
- package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
- package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
- package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
- package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
- package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
- package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
- package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
- package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
- package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
- package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
- package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
- package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
- package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
- package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
- package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
- package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
- package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
- package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
- package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
- package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
- package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
- package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
- package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
- package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
- package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
- package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
- package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
- package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
- package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
- package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
- package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
- package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
- package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
- package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
- package/dist/core/code/engine/core/lbug/native-check.js +435 -0
- package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
- package/dist/core/code/engine/core/lbug/query-params.js +25 -0
- package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
- package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
- package/dist/core/code/engine/core/lbug/schema.js +771 -0
- package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
- package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
- package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
- package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
- package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
- package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
- package/dist/core/code/engine/core/logger.js +339 -0
- package/dist/core/code/engine/core/platform/capabilities.js +91 -0
- package/dist/core/code/engine/core/run-analyze.js +1098 -0
- package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
- package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
- package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
- package/dist/core/code/engine/lib/utils.js +121 -0
- package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
- package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
- package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
- package/dist/core/code/engine/mcp/local/limits.js +15 -0
- package/dist/core/code/engine/mcp/local/line-display.js +6 -0
- package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
- package/dist/core/code/engine/storage/branch-index.js +72 -0
- package/dist/core/code/engine/storage/file-hash.js +95 -0
- package/dist/core/code/engine/storage/fs-atomic.js +34 -0
- package/dist/core/code/engine/storage/git.js +555 -0
- package/dist/core/code/engine/storage/index-lock.js +664 -0
- package/dist/core/code/engine/storage/parse-cache.js +650 -0
- package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
- package/dist/core/code/engine/storage/repo-manager.js +1061 -0
- package/dist/core/code/engine/storage/scope-index-store.js +247 -0
- package/dist/core/code/engine/types/pipeline.js +2 -0
- package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
- package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
- package/dist/core/code/shared/graph/types.js +8 -0
- package/dist/core/code/shared/index.js +105 -0
- package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
- package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
- package/dist/core/code/shared/integrations/retry.js +70 -0
- package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
- package/dist/core/code/shared/language-detection.js +162 -0
- package/dist/core/code/shared/languages.js +27 -0
- package/dist/core/code/shared/lbug/schema-constants.js +98 -0
- package/dist/core/code/shared/mro-strategy.js +2 -0
- package/dist/core/code/shared/pipeline.js +5 -0
- package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
- package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
- package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
- package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
- package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
- package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
- package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
- package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
- package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
- package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
- package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
- package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
- package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
- package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
- package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
- package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
- package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
- package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
- package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
- package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/core/code/shared/scope-resolution/types.js +25 -0
- package/dist/core/code/shared/test-helpers.js +17 -0
- package/dist/core/code/vendor/leiden/index.cjs +355 -0
- package/dist/core/code/vendor/leiden/utils.cjs +419 -0
- package/dist/core/dbquery/cli.d.ts.map +1 -1
- package/dist/core/dbquery/cli.js +5 -4
- package/dist/core/dbquery/cli.js.map +1 -1
- package/dist/core/dbquery/config.d.ts.map +1 -1
- package/dist/core/dbquery/config.js +39 -3
- package/dist/core/dbquery/config.js.map +1 -1
- package/dist/core/dbquery/drivers/http.d.ts +23 -0
- package/dist/core/dbquery/drivers/http.d.ts.map +1 -0
- package/dist/core/dbquery/drivers/http.js +125 -0
- package/dist/core/dbquery/drivers/http.js.map +1 -0
- package/dist/core/dbquery/drivers/mysql.js +1 -1
- package/dist/core/dbquery/drivers/mysql.js.map +1 -1
- package/dist/core/dbquery/drivers/postgres.js +1 -1
- package/dist/core/dbquery/drivers/postgres.js.map +1 -1
- package/dist/core/dbquery/executor.d.ts.map +1 -1
- package/dist/core/dbquery/executor.js +46 -12
- package/dist/core/dbquery/executor.js.map +1 -1
- package/dist/core/dbquery/format.d.ts.map +1 -1
- package/dist/core/dbquery/format.js +2 -1
- package/dist/core/dbquery/format.js.map +1 -1
- package/dist/core/dbquery/init.d.ts.map +1 -1
- package/dist/core/dbquery/init.js +7 -0
- package/dist/core/dbquery/init.js.map +1 -1
- package/dist/core/dbquery/types.d.ts +55 -7
- package/dist/core/dbquery/types.d.ts.map +1 -1
- package/dist/core/directory.d.ts +17 -0
- package/dist/core/directory.d.ts.map +1 -1
- package/dist/core/directory.js +37 -0
- package/dist/core/directory.js.map +1 -1
- package/dist/core/features/cli.d.ts.map +1 -1
- package/dist/core/features/cli.js +3 -2
- package/dist/core/features/cli.js.map +1 -1
- package/dist/core/features/scanner.d.ts +1 -1
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +20 -4
- package/dist/core/features/scanner.js.map +1 -1
- package/dist/core/markdown/cli.d.ts.map +1 -1
- package/dist/core/markdown/cli.js +9 -8
- package/dist/core/markdown/cli.js.map +1 -1
- package/dist/core/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/dist/web/register.d.ts.map +1 -1
- package/dist/web/register.js +2 -1
- package/dist/web/register.js.map +1 -1
- package/package.json +1 -1
- package/dist/.claude-template/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-deck/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-deck/references/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-sketch-engine/.cgraphx/timeline-current-turn.json +0 -1
- /package/dist/.claude-template/skills/run-api-test/assets/{template-test-verify.jsonl → template-/346/216/245/345/217/243/346/265/213/350/257/225/351/252/214/350/257/201.jsonl"} +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getKotlinParser = getKotlinParser;
|
|
7
|
+
exports.getKotlinScopeQuery = getKotlinScopeQuery;
|
|
8
|
+
const tree_sitter_1 = __importDefault(require("tree-sitter"));
|
|
9
|
+
const index_js_1 = require("../../../../../shared/index.js");
|
|
10
|
+
// `tree-sitter-kotlin` is a vendored grammar (loaded from vendor/ by absolute
|
|
11
|
+
// path, never node_modules — vendored-grammars.ts / #2111) that may be absent on
|
|
12
|
+
// a platform without a matching prebuild. Loaded lazily + guarded via parser-loader
|
|
13
|
+
// rather than statically imported: this module is pulled onto the main thread
|
|
14
|
+
// eagerly by the scope-resolution registry and the language-provider index, so
|
|
15
|
+
// a top-level `import Kotlin from 'tree-sitter-kotlin'` would throw
|
|
16
|
+
// ERR_MODULE_NOT_FOUND at module-load and crash `analyze` even for repos with no
|
|
17
|
+
// Kotlin files (#2091, #2093). The grammar is only ever needed in the getters.
|
|
18
|
+
const parser_loader_js_1 = require("../../../tree-sitter/parser-loader.js");
|
|
19
|
+
const KOTLIN_SCOPE_QUERY = `
|
|
20
|
+
;; Scopes
|
|
21
|
+
(source_file) @scope.module
|
|
22
|
+
(class_declaration) @scope.class
|
|
23
|
+
(object_declaration) @scope.class
|
|
24
|
+
(companion_object) @scope.class
|
|
25
|
+
;; Anonymous object expression: \`val h = object { fun fetch() {} }\`
|
|
26
|
+
;; (distinct from the named \`object_declaration\`/\`companion_object\` above).
|
|
27
|
+
;; Without its own scope, a method's auto-hoist (scope-extractor.ts) has
|
|
28
|
+
;; nowhere to stop and leaks the name past the literal into the enclosing
|
|
29
|
+
;; scope -- the same failure mode fixed for TS/JS object literals (#2545).
|
|
30
|
+
(object_literal) @scope.class
|
|
31
|
+
(function_declaration) @scope.function
|
|
32
|
+
|
|
33
|
+
;; Secondary-constructor body scope (issue #1919 review CF1). A
|
|
34
|
+
;; secondary constructor's "constructor(...) { ... }" body executes statements
|
|
35
|
+
;; just like a method body, so it must be its OWN Function scope — otherwise a
|
|
36
|
+
;; call inside the body resolves its caller anchor up to the enclosing Class
|
|
37
|
+
;; scope (the class's Class def), mis-attributing the CALLS edge to the class
|
|
38
|
+
;; rather than the Constructor. The matching @declaration.constructor is
|
|
39
|
+
;; synthesized in captures.ts (synthesizeKotlinSecondaryConstructorDeclarations)
|
|
40
|
+
;; so this scope owns a Constructor def keyed to the structure-phase node id.
|
|
41
|
+
(secondary_constructor) @scope.function
|
|
42
|
+
|
|
43
|
+
;; Companion-object marker (issue #1756 / U4). Side-channel capture that
|
|
44
|
+
;; lets populateCompanionMembersOnEnclosingClass distinguish a companion
|
|
45
|
+
;; Class scope from a regular Class scope without inspecting ownedDefs.
|
|
46
|
+
;; Anonymous companions AND companions containing nested classes both
|
|
47
|
+
;; look like regular classes through the old ownedDefs-based heuristic;
|
|
48
|
+
;; the marker lifts the distinction up to the parser layer where it is
|
|
49
|
+
;; unambiguous (any companion_object AST node is a companion, full
|
|
50
|
+
;; stop). Consumed by markCompanionScope / isCompanionScope in
|
|
51
|
+
;; captures.ts / companion-scopes.ts. The scope-extractor ignores the
|
|
52
|
+
;; "companion" suffix (no ScopeKind mapping), so this rule contributes
|
|
53
|
+
;; no Scope record of its own — the existing (companion_object)
|
|
54
|
+
;; @scope.class rule still creates the Class scope.
|
|
55
|
+
(companion_object) @scope.companion
|
|
56
|
+
|
|
57
|
+
;; Smart-cast narrowing scopes (RFC #909 Ring 3, issue #1758).
|
|
58
|
+
;; Each is-test arm body and each if-then body becomes its own Block
|
|
59
|
+
;; scope so synthesized narrowed type-bindings (see captures.ts
|
|
60
|
+
;; synthesizeKotlinSmartCastBindings) shadow the outer parameter
|
|
61
|
+
;; binding for calls inside the body — without leaking across arms.
|
|
62
|
+
(when_entry
|
|
63
|
+
(when_condition (type_test))
|
|
64
|
+
(control_structure_body) @scope.block)
|
|
65
|
+
|
|
66
|
+
(if_expression
|
|
67
|
+
(check_expression)
|
|
68
|
+
(control_structure_body) @scope.block)
|
|
69
|
+
|
|
70
|
+
;; Lambda body scope (issue #1757). Each lambda_literal becomes its
|
|
71
|
+
;; own Block scope so synthesized lambda-parameter and implicit-'it'
|
|
72
|
+
;; type-bindings (see captures.ts synthesizeKotlinLambdaBindings) stay
|
|
73
|
+
;; inside the lambda — they must not leak to the enclosing function
|
|
74
|
+
;; scope and must shadow same-named outer bindings (val it = "outer";
|
|
75
|
+
;; users.forEach { it.save() } — inner 'it' is the lambda's, not the
|
|
76
|
+
;; outer String).
|
|
77
|
+
;;
|
|
78
|
+
;; Lambdas appear inside call_suffix for trailing-lambda syntax
|
|
79
|
+
;; (list.forEach { it.foo() }) and inside value_arguments for
|
|
80
|
+
;; explicit-paren syntax (list.forEach({ x -> x.foo() })); both AST
|
|
81
|
+
;; positions produce the same lambda_literal subtree, so a single
|
|
82
|
+
;; capture suffices.
|
|
83
|
+
;;
|
|
84
|
+
;; Uses @scope.block (not @scope.function) to match the smart-cast
|
|
85
|
+
;; precedent (#1758) — keeps narrowed/lambda bindings scope-local
|
|
86
|
+
;; without the auto-hoist semantics of Function scopes.
|
|
87
|
+
(lambda_literal) @scope.block
|
|
88
|
+
|
|
89
|
+
;; Declarations — types
|
|
90
|
+
;; The Kotlin grammar puts NO named fields on \`class_declaration\`, so the
|
|
91
|
+
;; parameter list is matched positionally as an optional unnamed child, exactly
|
|
92
|
+
;; as the name already is.
|
|
93
|
+
;;
|
|
94
|
+
;; Only the INLINE bound (\`<T : Repo>\`) is read. A \`where T : Repo\` clause is a
|
|
95
|
+
;; separate \`type_constraints\` sibling and is left alone, so its bound reads as
|
|
96
|
+
;; absent — "unknown", not "unbounded".
|
|
97
|
+
(class_declaration
|
|
98
|
+
"interface"
|
|
99
|
+
(type_identifier) @declaration.name
|
|
100
|
+
(type_parameters)? @declaration.type-parameters) @declaration.interface
|
|
101
|
+
|
|
102
|
+
(class_declaration
|
|
103
|
+
"class"
|
|
104
|
+
(type_identifier) @declaration.name
|
|
105
|
+
(type_parameters)? @declaration.type-parameters) @declaration.class
|
|
106
|
+
|
|
107
|
+
(object_declaration
|
|
108
|
+
(type_identifier) @declaration.name) @declaration.class
|
|
109
|
+
|
|
110
|
+
(companion_object
|
|
111
|
+
(type_identifier) @declaration.name) @declaration.class
|
|
112
|
+
|
|
113
|
+
(type_alias
|
|
114
|
+
(type_identifier) @declaration.name) @declaration.type_alias
|
|
115
|
+
|
|
116
|
+
;; Class annotation syntax is carried to post-resolution enrichment. Keeping
|
|
117
|
+
;; this in the existing scope query avoids a second AST traversal. Eligibility
|
|
118
|
+
;; filtering (class vs interface/enum/annotation class) happens in captures.ts.
|
|
119
|
+
(class_declaration
|
|
120
|
+
(modifiers
|
|
121
|
+
[
|
|
122
|
+
(annotation
|
|
123
|
+
(user_type) @class-annotation.name)
|
|
124
|
+
(annotation
|
|
125
|
+
(constructor_invocation
|
|
126
|
+
(user_type) @class-annotation.name))
|
|
127
|
+
])) @class-annotation.class
|
|
128
|
+
|
|
129
|
+
;; Declarations — functions / methods / properties
|
|
130
|
+
(function_declaration
|
|
131
|
+
(simple_identifier) @declaration.name) @declaration.function
|
|
132
|
+
|
|
133
|
+
;; Lambda bound to a val/var: val handler = { x: Int -> target(x) }
|
|
134
|
+
;; Anchor discipline (same contract as javascript/query.ts): @declaration.function
|
|
135
|
+
;; sits on the INNER lambda_literal, NOT on the property_declaration wrapper, so
|
|
136
|
+
;; anchor.range aligns with the (lambda_literal) @scope.block range. That
|
|
137
|
+
;; alignment is what lets pickCallerCallableDef accept a Block-kind scope as a
|
|
138
|
+
;; callable boundary: the scope IS the callable's body. The lambda stays
|
|
139
|
+
;; @scope.block deliberately (#1757 smart casts) — do NOT re-kind it.
|
|
140
|
+
(property_declaration
|
|
141
|
+
(variable_declaration (simple_identifier) @declaration.name)
|
|
142
|
+
(lambda_literal) @declaration.function)
|
|
143
|
+
|
|
144
|
+
(property_declaration
|
|
145
|
+
(variable_declaration
|
|
146
|
+
(simple_identifier) @declaration.name)) @declaration.property
|
|
147
|
+
|
|
148
|
+
(class_parameter
|
|
149
|
+
(binding_pattern_kind)
|
|
150
|
+
(simple_identifier) @declaration.name) @declaration.property
|
|
151
|
+
|
|
152
|
+
;; Imports
|
|
153
|
+
(import_header) @import.statement
|
|
154
|
+
|
|
155
|
+
;; Type bindings — parameters
|
|
156
|
+
(parameter
|
|
157
|
+
(simple_identifier) @type-binding.name
|
|
158
|
+
[(user_type) (nullable_type) (function_type)] @type-binding.type) @type-binding.parameter
|
|
159
|
+
|
|
160
|
+
;; Type bindings — property / local annotations
|
|
161
|
+
(property_declaration
|
|
162
|
+
(variable_declaration
|
|
163
|
+
(simple_identifier) @type-binding.name
|
|
164
|
+
[(user_type) (nullable_type) (function_type)] @type-binding.type)) @type-binding.annotation
|
|
165
|
+
|
|
166
|
+
(class_parameter
|
|
167
|
+
(binding_pattern_kind)
|
|
168
|
+
(simple_identifier) @type-binding.name
|
|
169
|
+
[(user_type) (nullable_type) (function_type)] @type-binding.type) @type-binding.annotation
|
|
170
|
+
|
|
171
|
+
;; Type bindings — constructor-inferred val user = User(...)
|
|
172
|
+
(property_declaration
|
|
173
|
+
(variable_declaration
|
|
174
|
+
(simple_identifier) @type-binding.name)
|
|
175
|
+
(call_expression
|
|
176
|
+
(simple_identifier) @type-binding.type)) @type-binding.constructor
|
|
177
|
+
|
|
178
|
+
;; Type bindings — return annotations after function parameters
|
|
179
|
+
(function_declaration
|
|
180
|
+
(simple_identifier) @type-binding.name
|
|
181
|
+
(function_value_parameters)
|
|
182
|
+
[(user_type) (nullable_type) (function_type)] @type-binding.type) @type-binding.return
|
|
183
|
+
|
|
184
|
+
;; References — callable references ("::method", "Type::new", "obj::m") — F47.
|
|
185
|
+
;; A "callable_reference" references a function/constructor as a value (no
|
|
186
|
+
;; call_suffix), so the registry-primary call path never saw it. Real-parse
|
|
187
|
+
;; (issue #1919) shows the canonical shape inside a function body is:
|
|
188
|
+
;; "::topLevelFn" -> (callable_reference :: (simple_identifier)) member only
|
|
189
|
+
;; "String::length" -> (callable_reference (type_identifier) :: (simple_identifier))
|
|
190
|
+
;; "obj::method" -> (callable_reference (type_identifier) :: (simple_identifier))
|
|
191
|
+
;; "Type::new" -> (callable_reference (type_identifier) :: (simple_identifier))
|
|
192
|
+
;; The receiver (real type OR object) is always a "type_identifier"; the
|
|
193
|
+
;; referenced member is the LAST "simple_identifier". One rule with an
|
|
194
|
+
;; optional receiver and an end-anchored member covers all four forms with
|
|
195
|
+
;; exactly one match per callable_reference (no sibling-branch double-match).
|
|
196
|
+
;; (NOTE: a qualified "A.B::m" parses as a nested navigation_expression, not a
|
|
197
|
+
;; callable_reference, and is already captured by the read.member rule below.)
|
|
198
|
+
;; emitKotlinScopeCaptures rewrites this into a free/member call reference.
|
|
199
|
+
(callable_reference
|
|
200
|
+
(type_identifier)? @reference.receiver
|
|
201
|
+
(simple_identifier) @reference.name
|
|
202
|
+
.) @reference.callable
|
|
203
|
+
|
|
204
|
+
;; References — direct calls / constructor syntax
|
|
205
|
+
(call_expression
|
|
206
|
+
(simple_identifier) @reference.name) @reference.call.free
|
|
207
|
+
|
|
208
|
+
;; References — member calls: obj.method()
|
|
209
|
+
(call_expression
|
|
210
|
+
(navigation_expression
|
|
211
|
+
(_) @reference.receiver
|
|
212
|
+
(navigation_suffix
|
|
213
|
+
(simple_identifier) @reference.name))) @reference.call.member
|
|
214
|
+
|
|
215
|
+
;; References — property writes
|
|
216
|
+
(assignment
|
|
217
|
+
(directly_assignable_expression
|
|
218
|
+
(_) @reference.receiver
|
|
219
|
+
(navigation_suffix
|
|
220
|
+
(simple_identifier) @reference.name))
|
|
221
|
+
(_)) @reference.write.member
|
|
222
|
+
|
|
223
|
+
;; References — property reads
|
|
224
|
+
(navigation_expression
|
|
225
|
+
(_) @reference.receiver
|
|
226
|
+
(navigation_suffix
|
|
227
|
+
(simple_identifier) @reference.name)) @reference.read.member
|
|
228
|
+
`;
|
|
229
|
+
let parser = null;
|
|
230
|
+
let query = null;
|
|
231
|
+
function getKotlinParser() {
|
|
232
|
+
if (parser === null) {
|
|
233
|
+
parser = new tree_sitter_1.default();
|
|
234
|
+
parser.setLanguage((0, parser_loader_js_1.getLanguageGrammar)(index_js_1.SupportedLanguages.Kotlin));
|
|
235
|
+
}
|
|
236
|
+
return parser;
|
|
237
|
+
}
|
|
238
|
+
function getKotlinScopeQuery() {
|
|
239
|
+
if (query === null) {
|
|
240
|
+
query = new tree_sitter_1.default.Query((0, parser_loader_js_1.getLanguageGrammar)(index_js_1.SupportedLanguages.Kotlin), KOTLIN_SCOPE_QUERY);
|
|
241
|
+
}
|
|
242
|
+
return query;
|
|
243
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.synthesizeKotlinReceiverBinding = synthesizeKotlinReceiverBinding;
|
|
4
|
+
const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
|
|
5
|
+
const interpret_js_1 = require("./interpret.js");
|
|
6
|
+
const TYPE_DECL_NODE_TYPES = new Set([
|
|
7
|
+
'class_declaration',
|
|
8
|
+
'object_declaration',
|
|
9
|
+
'companion_object',
|
|
10
|
+
]);
|
|
11
|
+
function synthesizeKotlinReceiverBinding(fnNode) {
|
|
12
|
+
if (fnNode.type !== 'function_declaration')
|
|
13
|
+
return [];
|
|
14
|
+
const anchorNode = findFunctionBody(fnNode);
|
|
15
|
+
if (anchorNode === null)
|
|
16
|
+
return [];
|
|
17
|
+
const extensionReceiver = extensionReceiverType(fnNode);
|
|
18
|
+
if (extensionReceiver !== null) {
|
|
19
|
+
return [buildReceiverMatch(anchorNode, 'this', extensionReceiver)];
|
|
20
|
+
}
|
|
21
|
+
const enclosingType = findEnclosingTypeDeclaration(fnNode);
|
|
22
|
+
if (enclosingType === null)
|
|
23
|
+
return [];
|
|
24
|
+
const enclosingName = typeDeclarationName(enclosingType);
|
|
25
|
+
if (enclosingName === null)
|
|
26
|
+
return [];
|
|
27
|
+
const out = [buildReceiverMatch(anchorNode, 'this', enclosingName)];
|
|
28
|
+
const superName = firstSuperclassText(enclosingType);
|
|
29
|
+
if (superName !== null)
|
|
30
|
+
out.push(buildReceiverMatch(anchorNode, 'super', superName));
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
function findFunctionBody(fnNode) {
|
|
34
|
+
for (let i = 0; i < fnNode.namedChildCount; i++) {
|
|
35
|
+
const child = fnNode.namedChild(i);
|
|
36
|
+
if (child?.type === 'function_body')
|
|
37
|
+
return child;
|
|
38
|
+
}
|
|
39
|
+
return fnNode;
|
|
40
|
+
}
|
|
41
|
+
function extensionReceiverType(fnNode) {
|
|
42
|
+
for (let i = 0; i < fnNode.namedChildCount; i++) {
|
|
43
|
+
const child = fnNode.namedChild(i);
|
|
44
|
+
if (child === null)
|
|
45
|
+
continue;
|
|
46
|
+
if (child.type === 'simple_identifier')
|
|
47
|
+
return null;
|
|
48
|
+
if (child.type === 'user_type' || child.type === 'nullable_type') {
|
|
49
|
+
return (0, interpret_js_1.normalizeKotlinType)(child.text);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
function findEnclosingTypeDeclaration(node) {
|
|
55
|
+
let current = node.parent;
|
|
56
|
+
while (current !== null) {
|
|
57
|
+
if (TYPE_DECL_NODE_TYPES.has(current.type))
|
|
58
|
+
return current;
|
|
59
|
+
current = current.parent;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function typeDeclarationName(typeNode) {
|
|
64
|
+
if (typeNode.type === 'companion_object') {
|
|
65
|
+
return (typeNode.namedChildren.find((child) => child.type === 'type_identifier')?.text ??
|
|
66
|
+
enclosingNonCompanionTypeName(typeNode) ??
|
|
67
|
+
'Companion');
|
|
68
|
+
}
|
|
69
|
+
return typeNode.namedChildren.find((child) => child.type === 'type_identifier')?.text ?? null;
|
|
70
|
+
}
|
|
71
|
+
function enclosingNonCompanionTypeName(node) {
|
|
72
|
+
let current = node.parent;
|
|
73
|
+
while (current !== null) {
|
|
74
|
+
if (current.type === 'class_declaration' || current.type === 'object_declaration') {
|
|
75
|
+
return current.namedChildren.find((child) => child.type === 'type_identifier')?.text ?? null;
|
|
76
|
+
}
|
|
77
|
+
current = current.parent;
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
function firstSuperclassText(typeNode) {
|
|
82
|
+
if (typeNode.type !== 'class_declaration')
|
|
83
|
+
return null;
|
|
84
|
+
for (const child of typeNode.namedChildren) {
|
|
85
|
+
if (child.type !== 'delegation_specifier')
|
|
86
|
+
continue;
|
|
87
|
+
const ctor = child.namedChildren.find((n) => n.type === 'constructor_invocation');
|
|
88
|
+
const userType = ctor?.namedChildren.find((n) => n.type === 'user_type') ??
|
|
89
|
+
child.namedChildren.find((n) => n.type === 'user_type');
|
|
90
|
+
const name = userType?.namedChildren.find((n) => n.type === 'type_identifier')?.text;
|
|
91
|
+
if (name !== undefined)
|
|
92
|
+
return (0, interpret_js_1.normalizeKotlinType)(name);
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function buildReceiverMatch(anchorNode, name, typeText) {
|
|
97
|
+
const out = {
|
|
98
|
+
'@type-binding.self': (0, ast_helpers_js_1.nodeToCapture)('@type-binding.self', anchorNode),
|
|
99
|
+
'@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', anchorNode, name),
|
|
100
|
+
'@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', anchorNode, typeText),
|
|
101
|
+
};
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kotlinScopeResolver = void 0;
|
|
4
|
+
const index_js_1 = require("../../../../../shared/index.js");
|
|
5
|
+
const mro_js_1 = require("../../scope-resolution/passes/mro.js");
|
|
6
|
+
const ids_js_1 = require("../../scope-resolution/graph-bridge/ids.js");
|
|
7
|
+
const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
|
|
8
|
+
const shared_js_1 = require("../../type-extractors/shared.js");
|
|
9
|
+
const kotlin_js_1 = require("../kotlin.js");
|
|
10
|
+
const index_js_2 = require("./index.js");
|
|
11
|
+
const companion_scopes_js_1 = require("./companion-scopes.js");
|
|
12
|
+
const capture_side_channel_js_1 = require("./capture-side-channel.js");
|
|
13
|
+
const owners_js_1 = require("./owners.js");
|
|
14
|
+
const package_siblings_js_1 = require("./package-siblings.js");
|
|
15
|
+
const spring_bean_metadata_js_1 = require("./spring-bean-metadata.js");
|
|
16
|
+
const spring_aop_js_1 = require("./spring-aop.js");
|
|
17
|
+
const package_facts_js_1 = require("./package-facts.js");
|
|
18
|
+
const spring_di_js_1 = require("./spring-di.js");
|
|
19
|
+
const spring_conditionals_js_1 = require("./spring-conditionals.js");
|
|
20
|
+
/**
|
|
21
|
+
* Kotlin scope resolver for RFC #909 Ring 3.
|
|
22
|
+
*
|
|
23
|
+
* Kotlin resolves via the scope-resolution registry — production
|
|
24
|
+
* resolution flows through the scope-resolution pipeline as the sole
|
|
25
|
+
* call-resolution path.
|
|
26
|
+
*
|
|
27
|
+
* **Coverage:** 208/208 fixtures pass after the migration sub-issues
|
|
28
|
+
* #1758–#1763, the
|
|
29
|
+
* companion/instance dispatch fix #1756, and the lambda scopes
|
|
30
|
+
* fix #1757. Covers core import, receiver, companion, default-param,
|
|
31
|
+
* vararg, constructor, local assignment-chain, collection-iteration,
|
|
32
|
+
* smart casts (`when (x) { is T -> … }` and `if (x is T)` — #1758),
|
|
33
|
+
* cross-file iterable return propagation (#1759), single-level
|
|
34
|
+
* method-chain fixpoint receiver types (#1760), parameter-type-narrowed
|
|
35
|
+
* overload target-id selection (#1761), virtual dispatch via constructor
|
|
36
|
+
* RHS (`val x: Animal = Dog()` — #1762), interface default-method
|
|
37
|
+
* dispatch via implements-split MRO (#1763), companion-object vs
|
|
38
|
+
* instance member dispatch (#1756) via the `isStaticOnly` hook
|
|
39
|
+
* (including named companions and MRO-shadow / chain-typebinding /
|
|
40
|
+
* value-receiver crossover cases), and lambda-body Block scopes
|
|
41
|
+
* with scoped type-bindings for explicit parameters and implicit
|
|
42
|
+
* `it` (#1757) via `synthesizeKotlinLambdaBindings` plus the
|
|
43
|
+
* `(lambda_literal) @scope.block` query rule.
|
|
44
|
+
*
|
|
45
|
+
* **Legacy parity skip list:** `LEGACY_RESOLVER_PARITY_EXPECTED_FAILURES.kotlin`
|
|
46
|
+
* in `test/integration/resolvers/helpers.ts` records scope-resolver-only
|
|
47
|
+
* correctness wins that the legacy DAG cannot replicate. As of #1756 /
|
|
48
|
+
* #1757 there are 8 entries covering: the bare companion-vs-instance
|
|
49
|
+
* crossover, three MRO-shadow / standalone-chain cases, the chained-
|
|
50
|
+
* forEach lambda-scope case, the named-companion crossover, and the
|
|
51
|
+
* Case-0 / Case-3b / Case-5 companion crossovers under
|
|
52
|
+
* `kotlin-companion-other-cases`. Each entry is documented inline with
|
|
53
|
+
* its issue ref and rationale.
|
|
54
|
+
*/
|
|
55
|
+
exports.kotlinScopeResolver = {
|
|
56
|
+
language: index_js_1.SupportedLanguages.Kotlin,
|
|
57
|
+
languageProvider: kotlin_js_1.kotlinProvider,
|
|
58
|
+
importEdgeReason: 'kotlin-scope: import',
|
|
59
|
+
loadResolutionConfig: () => {
|
|
60
|
+
// Drop the module-level `companionScopesByFile` table from any
|
|
61
|
+
// prior workspace pass before this run populates it via
|
|
62
|
+
// `emitKotlinScopeCaptures`. Mirrors the C resolver's
|
|
63
|
+
// `clearStaticNames()` call in `loadResolutionConfig` — the
|
|
64
|
+
// orchestrator awaits this hook exactly once per workspace pass
|
|
65
|
+
// (see `pipeline/phase.ts`), making it the right lifecycle seam
|
|
66
|
+
// for clearing per-language side-channel state. Returns
|
|
67
|
+
// `undefined` because Kotlin has no external resolution config
|
|
68
|
+
// to load.
|
|
69
|
+
(0, companion_scopes_js_1.clearCompanionScopes)();
|
|
70
|
+
(0, capture_side_channel_js_1.clearKotlinClassAnnotationFacts)();
|
|
71
|
+
(0, package_facts_js_1.clearKotlinPackageFacts)();
|
|
72
|
+
return undefined;
|
|
73
|
+
},
|
|
74
|
+
resolveImportTarget: (targetRaw, fromFile, allFilePaths) => {
|
|
75
|
+
const ws = { fromFile, allFilePaths };
|
|
76
|
+
return (0, index_js_2.resolveKotlinImportTarget)({ kind: 'named', localName: '_', importedName: '_', targetRaw }, ws);
|
|
77
|
+
},
|
|
78
|
+
mergeBindings: (existing, incoming) => [...(0, index_js_2.kotlinMergeBindings)([...existing, ...incoming])],
|
|
79
|
+
arityCompatibility: (callsite, def) => (0, index_js_2.kotlinArityCompatibility)(def, callsite),
|
|
80
|
+
buildMro: (graph, parsedFiles, nodeLookup) => buildKotlinMro(graph, parsedFiles, nodeLookup),
|
|
81
|
+
// Worker-boundary restore (see `ScopeResolver.applyCaptureSideChannel`).
|
|
82
|
+
// `emitKotlinScopeCaptures` records per-file companion-object scope ids
|
|
83
|
+
// (`markCompanionScope` → `companionScopesByFile`) as a SIDE EFFECT — that
|
|
84
|
+
// state is NOT serialized onto the returned ParsedFile's scopes/defs. On the
|
|
85
|
+
// worker path those marks are populated in the worker process and lost across
|
|
86
|
+
// the MessageChannel / disk store; the main thread reuses the serialized
|
|
87
|
+
// ParsedFile and skips `extractParsedFile`, so `isKotlinStaticOnly` and
|
|
88
|
+
// `populateCompanionMembersOnEnclosingClass` (owners.ts) would see an empty
|
|
89
|
+
// map and companion/static dispatch would emit zero CALLS edges. The worker
|
|
90
|
+
// stashed a plain-data snapshot on `parsed.captureSideChannel` via
|
|
91
|
+
// `kotlinProvider.collectCaptureSideChannel`; this restores it into the
|
|
92
|
+
// module map WITHOUT any tree-sitter re-parse (the #1983 fix). The
|
|
93
|
+
// freshly-extracted leg never calls this — its marks were just populated in
|
|
94
|
+
// this process. Runs BEFORE `populateOwners` so the restored companion map is
|
|
95
|
+
// visible to it.
|
|
96
|
+
applyCaptureSideChannel: capture_side_channel_js_1.applyKotlinCaptureSideChannel,
|
|
97
|
+
populateOwners: (parsed) => (0, index_js_2.populateKotlinOwners)(parsed),
|
|
98
|
+
isSuperReceiver: (text) => text.trim() === 'super',
|
|
99
|
+
// Subscript route only — Kotlin's collection views (`.values`, `.keys`) are
|
|
100
|
+
// properties on the stdlib types, resolved by the ordinary member walk rather
|
|
101
|
+
// than by unwrapping a generic here.
|
|
102
|
+
//
|
|
103
|
+
// Fed the annotation AS WRITTEN (`List<User>`, `Map<String, User>`), which
|
|
104
|
+
// `normalizeKotlinType` had already reduced to `User`. `undefined` means "not
|
|
105
|
+
// a container", so an `operator fun get` class does not fold `cache[k]` onto
|
|
106
|
+
// `Cache` itself.
|
|
107
|
+
elementTypeOf: shared_js_1.indexOnlyElementType,
|
|
108
|
+
isStaticOnly: owners_js_1.isKotlinStaticOnly,
|
|
109
|
+
fieldFallbackOnMethodLookup: false,
|
|
110
|
+
propagatesReturnTypesAcrossImports: true,
|
|
111
|
+
collapseMemberCallsByCallerTarget: false,
|
|
112
|
+
hoistTypeBindingsToModule: true,
|
|
113
|
+
freeCallsRequireInstanceOwnership: true,
|
|
114
|
+
postExtractSourceTextPolicy: 'uncached-files',
|
|
115
|
+
populateNamespaceSiblings: package_siblings_js_1.populateKotlinPackageSiblings,
|
|
116
|
+
emitPostResolutionEdges: (graph, parsedFiles, nodeLookup, indexes) => {
|
|
117
|
+
(0, spring_bean_metadata_js_1.attachKotlinSpringBeanCandidateMetadata)(graph, parsedFiles, nodeLookup, indexes);
|
|
118
|
+
(0, spring_aop_js_1.attachKotlinSpringAopMetadata)(graph, parsedFiles, nodeLookup, indexes);
|
|
119
|
+
(0, spring_conditionals_js_1.attachKotlinSpringConditionalMetadata)(graph, parsedFiles, nodeLookup, indexes);
|
|
120
|
+
(0, spring_di_js_1.attachKotlinSpringDiMetadata)(graph, parsedFiles, nodeLookup, indexes);
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Kotlin MRO builder — extends `defaultLinearize` (EXTENDS-only) with
|
|
125
|
+
* interface ancestors discovered via `IMPLEMENTS` edges. Interface
|
|
126
|
+
* default methods (`interface Validator { fun validate(): Boolean = true }`)
|
|
127
|
+
* are inherited by implementing classes without an explicit override;
|
|
128
|
+
* the generic MRO would not surface them because the implementor has
|
|
129
|
+
* no `EXTENDS` link to the interface (#1763).
|
|
130
|
+
*
|
|
131
|
+
* Interfaces are appended after the EXTENDS chain (Kotlin resolves
|
|
132
|
+
* conflicts by requiring an explicit override, so first-seen-in-MRO
|
|
133
|
+
* ordering is a reasonable approximation for method lookup). Transitive
|
|
134
|
+
* interface inheritance (`interface A : B`) is closed via BFS.
|
|
135
|
+
*/
|
|
136
|
+
function buildKotlinMro(graph, parsedFiles, nodeLookup) {
|
|
137
|
+
const mro = (0, mro_js_1.buildMro)(graph, parsedFiles, nodeLookup, mro_js_1.defaultLinearize);
|
|
138
|
+
const defIdByGraphId = new Map();
|
|
139
|
+
for (const parsed of parsedFiles) {
|
|
140
|
+
for (const def of parsed.localDefs) {
|
|
141
|
+
if (!(0, walkers_js_1.isClassLike)(def.type))
|
|
142
|
+
continue;
|
|
143
|
+
const graphId = (0, ids_js_1.resolveDefGraphId)(parsed.filePath, def, nodeLookup);
|
|
144
|
+
if (graphId !== undefined)
|
|
145
|
+
defIdByGraphId.set(graphId, def.nodeId);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Direct IMPLEMENTS targets per class-like def.
|
|
149
|
+
const directImpls = new Map();
|
|
150
|
+
for (const rel of graph.iterRelationshipsByType('IMPLEMENTS')) {
|
|
151
|
+
const source = defIdByGraphId.get(rel.sourceId);
|
|
152
|
+
const target = defIdByGraphId.get(rel.targetId);
|
|
153
|
+
if (source === undefined || target === undefined)
|
|
154
|
+
continue;
|
|
155
|
+
let list = directImpls.get(source);
|
|
156
|
+
if (list === undefined) {
|
|
157
|
+
list = [];
|
|
158
|
+
directImpls.set(source, list);
|
|
159
|
+
}
|
|
160
|
+
if (!list.includes(target))
|
|
161
|
+
list.push(target);
|
|
162
|
+
}
|
|
163
|
+
// For each class, append the transitive closure of interfaces reachable
|
|
164
|
+
// through its own + ancestor classes' IMPLEMENTS edges. Walking
|
|
165
|
+
// ancestors picks up interfaces inherited via the EXTENDS chain
|
|
166
|
+
// (e.g. `class C : B; class B : A; interface A` — C inherits A's
|
|
167
|
+
// interface methods through B).
|
|
168
|
+
for (const [classDefId, extendsMro] of mro) {
|
|
169
|
+
const ancestorChain = [classDefId, ...extendsMro];
|
|
170
|
+
const seeds = [];
|
|
171
|
+
for (const ancestorId of ancestorChain) {
|
|
172
|
+
for (const ifaceId of directImpls.get(ancestorId) ?? []) {
|
|
173
|
+
seeds.push(ifaceId);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (seeds.length === 0)
|
|
177
|
+
continue;
|
|
178
|
+
const interfaces = closeInterfaces(seeds, directImpls);
|
|
179
|
+
mro.set(classDefId, [...extendsMro, ...interfaces.filter((i) => !extendsMro.includes(i))]);
|
|
180
|
+
}
|
|
181
|
+
// Classes with no EXTENDS still need an MRO entry when they implement
|
|
182
|
+
// interfaces (e.g. `class User : Validator` — no `mro` entry from the
|
|
183
|
+
// EXTENDS-only pass because no EXTENDS edges exist).
|
|
184
|
+
for (const [classDefId, ifaces] of directImpls) {
|
|
185
|
+
if (mro.has(classDefId))
|
|
186
|
+
continue;
|
|
187
|
+
mro.set(classDefId, closeInterfaces([...ifaces], directImpls));
|
|
188
|
+
}
|
|
189
|
+
return mro;
|
|
190
|
+
}
|
|
191
|
+
function closeInterfaces(seeds, directImpls) {
|
|
192
|
+
const out = [];
|
|
193
|
+
const seen = new Set();
|
|
194
|
+
const queue = [...seeds];
|
|
195
|
+
while (queue.length > 0) {
|
|
196
|
+
const cur = queue.shift();
|
|
197
|
+
if (seen.has(cur))
|
|
198
|
+
continue;
|
|
199
|
+
seen.add(cur);
|
|
200
|
+
out.push(cur);
|
|
201
|
+
for (const next of directImpls.get(cur) ?? []) {
|
|
202
|
+
if (!seen.has(next))
|
|
203
|
+
queue.push(next);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return out;
|
|
207
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kotlinBindingScopeFor = kotlinBindingScopeFor;
|
|
4
|
+
exports.kotlinImportOwningScope = kotlinImportOwningScope;
|
|
5
|
+
exports.kotlinReceiverBinding = kotlinReceiverBinding;
|
|
6
|
+
function kotlinBindingScopeFor(decl, innermost, tree) {
|
|
7
|
+
// Smart-cast narrowed bindings (issue #1758) must stay at the innermost
|
|
8
|
+
// (Block) scope. Their anchor coincides with the Block's range for
|
|
9
|
+
// unbraced arm bodies (`is User -> obj.save()`), which would otherwise
|
|
10
|
+
// trigger scope-extractor auto-hoist into the enclosing function scope
|
|
11
|
+
// and erase the arm-local narrowing.
|
|
12
|
+
if (decl['@type-binding.narrowed'] !== undefined)
|
|
13
|
+
return innermost.id;
|
|
14
|
+
// Lambda-scoped bindings (issue #1757) — explicit lambda parameters
|
|
15
|
+
// and implicit `it` must stay inside the lambda body Block scope.
|
|
16
|
+
// Without this gating, the binding hoists to the enclosing function
|
|
17
|
+
// scope and:
|
|
18
|
+
// - `it` leaks past the closing brace of the lambda, shadowing the
|
|
19
|
+
// parameter-scope `it` (or outer `val it = "outer"`) for everything
|
|
20
|
+
// that follows in the function body.
|
|
21
|
+
// - Nested lambda parameters override each other across siblings.
|
|
22
|
+
// Same mechanism as the smart-cast precedent above.
|
|
23
|
+
if (decl['@type-binding.lambda-scoped'] !== undefined)
|
|
24
|
+
return innermost.id;
|
|
25
|
+
if (decl['@type-binding.return'] === undefined)
|
|
26
|
+
return null;
|
|
27
|
+
let current = innermost;
|
|
28
|
+
while (current !== undefined && current.kind !== 'Module') {
|
|
29
|
+
if (current.parent === null)
|
|
30
|
+
break;
|
|
31
|
+
current = tree.getScope(current.parent);
|
|
32
|
+
}
|
|
33
|
+
return current?.kind === 'Module' ? current.id : null;
|
|
34
|
+
}
|
|
35
|
+
function kotlinImportOwningScope(_imp, _innermost, _tree) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
function kotlinReceiverBinding(functionScope) {
|
|
39
|
+
if (functionScope.kind !== 'Function')
|
|
40
|
+
return null;
|
|
41
|
+
return functionScope.typeBindings.get('this') ?? functionScope.typeBindings.get('super') ?? null;
|
|
42
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.attachKotlinSpringAopMetadata = void 0;
|
|
4
|
+
exports.captureKotlinSpringAopFacts = captureKotlinSpringAopFacts;
|
|
5
|
+
const index_js_1 = require("../../../../../shared/index.js");
|
|
6
|
+
const aop_js_1 = require("../../frameworks/spring/aop.js");
|
|
7
|
+
const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
|
|
8
|
+
const capture_side_channel_js_1 = require("./capture-side-channel.js");
|
|
9
|
+
const package_siblings_js_1 = require("./package-siblings.js");
|
|
10
|
+
const spring_di_js_1 = require("./spring-di.js");
|
|
11
|
+
function scopeId(filePath, node, kind) {
|
|
12
|
+
return (0, index_js_1.makeScopeId)({
|
|
13
|
+
filePath,
|
|
14
|
+
range: (0, ast_helpers_js_1.nodeToCapture)('@spring-aop.owner', node).range,
|
|
15
|
+
kind,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function ownerRange(node) {
|
|
19
|
+
return (0, ast_helpers_js_1.nodeToCapture)('@spring-aop.owner', node).range;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Capture Spring AOP syntax from the class node already surfaced by Kotlin's
|
|
23
|
+
* scope query. The shared layer resolves annotations and rejects non-default
|
|
24
|
+
* use-site targets after imports and package visibility have finalized.
|
|
25
|
+
*/
|
|
26
|
+
function captureKotlinSpringAopFacts(classNode, filePath) {
|
|
27
|
+
const facts = [];
|
|
28
|
+
const classAnnotations = (0, spring_di_js_1.kotlinSpringAnnotationFacts)(classNode);
|
|
29
|
+
const singletonInstance = classNode.type === 'object_declaration' || classNode.type === 'companion_object';
|
|
30
|
+
// Kotlin import aliases can give a Spring annotation any local simple name.
|
|
31
|
+
// Capture annotated owners conservatively, then let the post-import shared
|
|
32
|
+
// resolver keep only recognized Spring AOP annotations. Objects also retain
|
|
33
|
+
// an empty owner fact so the shared phase can distinguish their singleton
|
|
34
|
+
// instance members from true static methods without naming Kotlin.
|
|
35
|
+
if (classAnnotations.length > 0 || singletonInstance) {
|
|
36
|
+
facts.push({
|
|
37
|
+
ownerScopeId: scopeId(filePath, classNode, 'Class'),
|
|
38
|
+
ownerKind: 'class',
|
|
39
|
+
ownerFilePath: filePath,
|
|
40
|
+
ownerRange: ownerRange(classNode),
|
|
41
|
+
...(singletonInstance ? { singletonInstance: true } : {}),
|
|
42
|
+
annotations: classAnnotations,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const body = classNode.namedChildren.find((child) => child.type === 'class_body');
|
|
46
|
+
if (body === undefined)
|
|
47
|
+
return facts;
|
|
48
|
+
for (const member of body.namedChildren) {
|
|
49
|
+
if (member.type !== 'function_declaration')
|
|
50
|
+
continue;
|
|
51
|
+
const annotations = (0, spring_di_js_1.kotlinSpringAnnotationFacts)(member);
|
|
52
|
+
if (annotations.length === 0)
|
|
53
|
+
continue;
|
|
54
|
+
facts.push({
|
|
55
|
+
ownerScopeId: scopeId(filePath, member, 'Function'),
|
|
56
|
+
ownerKind: 'callable',
|
|
57
|
+
ownerFilePath: filePath,
|
|
58
|
+
ownerRange: ownerRange(member),
|
|
59
|
+
...(singletonInstance ? { singletonInstance: true } : {}),
|
|
60
|
+
annotations,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return facts;
|
|
64
|
+
}
|
|
65
|
+
exports.attachKotlinSpringAopMetadata = (0, aop_js_1.createSpringAopMetadataAttacher)({
|
|
66
|
+
getFacts: capture_side_channel_js_1.getKotlinSpringAopFacts,
|
|
67
|
+
isPackageVisibilityIncomplete: package_siblings_js_1.isKotlinPackageSiblingVisibilityIncomplete,
|
|
68
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.attachKotlinSpringBeanCandidateMetadata = void 0;
|
|
4
|
+
const bean_candidates_js_1 = require("../../frameworks/spring/bean-candidates.js");
|
|
5
|
+
const capture_side_channel_js_1 = require("./capture-side-channel.js");
|
|
6
|
+
const package_siblings_js_1 = require("./package-siblings.js");
|
|
7
|
+
/** Kotlin wiring for the language-neutral Spring candidate engine. */
|
|
8
|
+
exports.attachKotlinSpringBeanCandidateMetadata = (0, bean_candidates_js_1.createSpringBeanCandidateAttacher)({
|
|
9
|
+
getClassAnnotationFacts: capture_side_channel_js_1.getKotlinClassAnnotationFacts,
|
|
10
|
+
isPackageVisibilityIncomplete: package_siblings_js_1.isKotlinPackageSiblingVisibilityIncomplete,
|
|
11
|
+
});
|