gitnexus 1.6.10-rc.99 → 1.6.10
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/README.md +177 -18
- package/dist/_shared/graph/types.d.ts +21 -2
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +3 -3
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +16 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +19 -7
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +3 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +278 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +3 -2
- package/dist/cli/ai-context.js +71 -16
- package/dist/cli/analyze-config.d.ts +1 -1
- package/dist/cli/analyze-options.d.ts +131 -0
- package/dist/cli/analyze-options.js +1 -0
- package/dist/cli/analyze.d.ts +21 -113
- package/dist/cli/analyze.js +172 -29
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +32 -5
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.js +2 -1
- package/dist/cli/format-symbol.d.ts +15 -0
- package/dist/cli/format-symbol.js +17 -0
- package/dist/cli/generated-skill.d.ts +17 -0
- package/dist/cli/generated-skill.js +1 -0
- package/dist/cli/group.js +229 -21
- package/dist/cli/help-i18n.js +1 -2
- package/dist/cli/i18n/en.d.ts +11 -9
- package/dist/cli/i18n/en.js +13 -9
- package/dist/cli/i18n/resources.d.ts +15 -11
- package/dist/cli/i18n/zh-CN.d.ts +4 -2
- package/dist/cli/i18n/zh-CN.js +11 -9
- package/dist/cli/index.js +8 -4
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.js +4 -3
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +74 -17
- package/dist/cli/wiki.js +53 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +54 -13
- package/dist/core/analyzer-identity.d.ts +80 -0
- package/dist/core/analyzer-identity.js +364 -26
- package/dist/core/augmentation/engine.js +86 -71
- package/dist/core/embedding-checkpoint.d.ts +143 -0
- package/dist/core/embedding-checkpoint.js +221 -0
- package/dist/core/embedding-count.d.ts +61 -0
- package/dist/core/embedding-count.js +69 -0
- package/dist/core/embeddings/ast-utils.js +9 -1
- package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
- package/dist/core/embeddings/embedding-pipeline.js +253 -14
- package/dist/core/embeddings/http-client.d.ts +5 -0
- package/dist/core/embeddings/http-client.js +142 -27
- package/dist/core/graph/graph.js +3 -0
- package/dist/core/graph/import-cycles.d.ts +194 -3
- package/dist/core/graph/import-cycles.js +522 -73
- package/dist/core/graph/types.d.ts +18 -0
- package/dist/core/group/bridge-db.d.ts +204 -1
- package/dist/core/group/bridge-db.js +401 -28
- package/dist/core/group/completeness.d.ts +130 -0
- package/dist/core/group/completeness.js +83 -0
- package/dist/core/group/config-parser.js +0 -5
- package/dist/core/group/cross-impact.d.ts +46 -1
- package/dist/core/group/cross-impact.js +220 -19
- package/dist/core/group/cross-trace.d.ts +32 -11
- package/dist/core/group/cross-trace.js +114 -20
- package/dist/core/group/extractors/http-patterns/java.js +278 -22
- package/dist/core/group/extractors/http-patterns/node.js +332 -216
- package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +122 -48
- package/dist/core/group/extractors/include-extractor.js +20 -2
- package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
- package/dist/core/group/extractors/manifest-extractor.js +7 -7
- package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
- package/dist/core/group/group-lock.d.ts +31 -0
- package/dist/core/group/group-lock.js +166 -0
- package/dist/core/group/service.js +297 -16
- package/dist/core/group/storage.d.ts +3 -0
- package/dist/core/group/storage.js +7 -39
- package/dist/core/group/sync.d.ts +49 -3
- package/dist/core/group/sync.js +0 -0
- package/dist/core/group/types.d.ts +183 -8
- package/dist/core/group/types.js +28 -1
- package/dist/core/incremental/subgraph-extract.d.ts +9 -6
- package/dist/core/incremental/subgraph-extract.js +33 -10
- package/dist/core/index-freshness.d.ts +77 -2
- package/dist/core/index-freshness.js +109 -2
- package/dist/core/ingestion/call-processor.d.ts +13 -1
- package/dist/core/ingestion/call-processor.js +110 -3
- package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
- package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
- package/dist/core/ingestion/cfg/emit.d.ts +8 -23
- package/dist/core/ingestion/cfg/emit.js +9 -23
- package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +81 -82
- package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
- package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
- package/dist/core/ingestion/di-extractors/spring.js +8 -1
- package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
- package/dist/core/ingestion/di-extractors/types.js +15 -0
- package/dist/core/ingestion/filesystem-walker.js +30 -14
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
- package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
- package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
- package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
- package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
- package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
- package/dist/core/ingestion/import-resolvers/go.js +44 -17
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/php.js +65 -19
- package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
- package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
- package/dist/core/ingestion/import-resolvers/python.js +25 -6
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
- package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
- package/dist/core/ingestion/import-resolvers/utils.js +215 -36
- package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
- package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
- package/dist/core/ingestion/language-config.d.ts +29 -1
- package/dist/core/ingestion/language-config.js +110 -35
- package/dist/core/ingestion/language-provider.d.ts +209 -7
- package/dist/core/ingestion/language-provider.js +37 -0
- package/dist/core/ingestion/languages/c/captures.js +7 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
- package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
- package/dist/core/ingestion/languages/c-cpp.js +13 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
- package/dist/core/ingestion/languages/cobol.js +13 -0
- package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
- package/dist/core/ingestion/languages/cpp/adl.js +67 -44
- package/dist/core/ingestion/languages/cpp/captures.js +14 -2
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
- package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
- package/dist/core/ingestion/languages/cpp/query.js +106 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
- package/dist/core/ingestion/languages/csharp/captures.js +19 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
- package/dist/core/ingestion/languages/csharp/query.js +25 -5
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
- package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/captures.js +598 -16
- package/dist/core/ingestion/languages/dart/import-target.js +32 -9
- package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
- package/dist/core/ingestion/languages/dart/index.js +1 -1
- package/dist/core/ingestion/languages/dart/query.js +98 -1
- package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
- package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
- package/dist/core/ingestion/languages/dart.js +6 -1
- package/dist/core/ingestion/languages/go/captures.js +108 -3
- package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
- package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
- package/dist/core/ingestion/languages/go/import-target.js +34 -30
- package/dist/core/ingestion/languages/go/index.d.ts +1 -1
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
- package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
- package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/go/interpret.js +22 -8
- package/dist/core/ingestion/languages/go/method-owners.js +31 -12
- package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
- package/dist/core/ingestion/languages/go/package-clause.js +75 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
- package/dist/core/ingestion/languages/go/query.js +56 -3
- package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
- package/dist/core/ingestion/languages/go.js +9 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/java/captures.js +77 -32
- package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
- package/dist/core/ingestion/languages/java/import-target.js +68 -88
- package/dist/core/ingestion/languages/java/interpret.js +3 -2
- package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
- package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
- package/dist/core/ingestion/languages/java/query.js +15 -3
- package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
- package/dist/core/ingestion/languages/java/record-components.js +185 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
- package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
- package/dist/core/ingestion/languages/java/spring-di.js +41 -9
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
- package/dist/core/ingestion/languages/java.js +94 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +262 -4
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
- package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
- package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
- package/dist/core/ingestion/languages/javascript/index.js +54 -5
- package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/javascript/query.js +211 -5
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
- package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
- package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
- package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
- package/dist/core/ingestion/languages/kotlin/index.js +1 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
- package/dist/core/ingestion/languages/kotlin/query.js +28 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
- package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +319 -51
- package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
- package/dist/core/ingestion/languages/php/import-target.js +192 -62
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
- package/dist/core/ingestion/languages/python/captures.js +29 -0
- package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
- package/dist/core/ingestion/languages/python/import-target.js +277 -91
- package/dist/core/ingestion/languages/python/index.d.ts +1 -1
- package/dist/core/ingestion/languages/python/index.js +1 -1
- package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
- package/dist/core/ingestion/languages/python/interpret.js +249 -7
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
- package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
- package/dist/core/ingestion/languages/python.js +13 -0
- package/dist/core/ingestion/languages/ruby/captures.js +158 -0
- package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
- package/dist/core/ingestion/languages/ruby/query.js +93 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
- package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
- package/dist/core/ingestion/languages/rust/captures.js +39 -1
- package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
- package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
- package/dist/core/ingestion/languages/rust/module-path.js +214 -0
- package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
- package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
- package/dist/core/ingestion/languages/rust/query.js +39 -6
- package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
- package/dist/core/ingestion/languages/rust.js +17 -0
- package/dist/core/ingestion/languages/swift/captures.js +87 -3
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
- package/dist/core/ingestion/languages/swift/import-target.js +4 -9
- package/dist/core/ingestion/languages/swift/query.js +17 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
- package/dist/core/ingestion/languages/typescript/captures.js +267 -5
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
- package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
- package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
- package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
- package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +303 -14
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
- package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
- package/dist/core/ingestion/languages/typescript.js +93 -2
- package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
- package/dist/core/ingestion/languages/vue/import-target.js +11 -47
- package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
- package/dist/core/ingestion/local-symbol-pruner.js +11 -11
- package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/di.js +136 -21
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
- package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
- package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +26 -2
- package/dist/core/ingestion/pipeline.js +60 -11
- package/dist/core/ingestion/process-processor.d.ts +109 -2
- package/dist/core/ingestion/process-processor.js +464 -52
- package/dist/core/ingestion/resolve-references.d.ts +6 -1
- package/dist/core/ingestion/resolve-references.js +66 -6
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
- package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
- package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
- package/dist/core/ingestion/route-extractors/nest.js +523 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
- package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
- package/dist/core/ingestion/route-extractors/spring.js +214 -29
- package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
- package/dist/core/ingestion/scope-extractor.d.ts +22 -7
- package/dist/core/ingestion/scope-extractor.js +309 -15
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
- package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
- package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
- package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +678 -4
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
- package/dist/core/ingestion/type-extractors/shared.js +16 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
- package/dist/core/ingestion/type-extractors/typescript.js +26 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
- package/dist/core/ingestion/utils/ast-helpers.js +578 -46
- package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
- package/dist/core/ingestion/utils/call-analysis.js +202 -7
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
- package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
- package/dist/core/ingestion/utils/callable-labels.js +31 -0
- package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
- package/dist/core/ingestion/utils/effective-ram.js +58 -0
- package/dist/core/ingestion/utils/line-base.d.ts +14 -0
- package/dist/core/ingestion/utils/line-base.js +14 -0
- package/dist/core/ingestion/utils/method-props.d.ts +27 -4
- package/dist/core/ingestion/utils/method-props.js +29 -4
- package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
- package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
- package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
- package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
- package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
- package/dist/core/ingestion/utils/template-arguments.js +196 -0
- package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
- package/dist/core/ingestion/utils/type-parameters.js +206 -0
- package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
- package/dist/core/ingestion/workers/callable-id.js +125 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +493 -54
- package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
- package/dist/core/ingestion/workers/worker-pool.js +91 -3
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +72 -17
- package/dist/core/lbug/extension-load-error.js +13 -2
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +31 -6
- package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
- package/dist/core/lbug/graph-emit-sink.js +581 -0
- package/dist/core/lbug/lbug-adapter.d.ts +290 -11
- package/dist/core/lbug/lbug-adapter.js +652 -69
- package/dist/core/lbug/native-check.d.ts +21 -0
- package/dist/core/lbug/native-check.js +248 -32
- package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
- package/dist/core/lbug/pdg-emit-sink.js +21 -111
- package/dist/core/lbug/pool-adapter.d.ts +9 -0
- package/dist/core/lbug/pool-adapter.js +164 -14
- package/dist/core/lbug/query-batch.d.ts +75 -0
- package/dist/core/lbug/query-batch.js +102 -0
- package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
- package/dist/core/lbug/rel-pair-routing.js +228 -10
- package/dist/core/lbug/schema.d.ts +163 -4
- package/dist/core/lbug/schema.js +404 -159
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/run-analyze.d.ts +147 -0
- package/dist/core/run-analyze.js +1215 -179
- package/dist/core/search/bm25-index.d.ts +11 -0
- package/dist/core/search/bm25-index.js +60 -26
- package/dist/core/search/fts-indexes.d.ts +150 -9
- package/dist/core/search/fts-indexes.js +241 -23
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +29 -3
- package/dist/core/wiki/llm-client.js +47 -12
- package/dist/core/wiki/prompts.d.ts +19 -0
- package/dist/core/wiki/prompts.js +20 -1
- package/dist/lib/utils.d.ts +113 -0
- package/dist/lib/utils.js +185 -0
- package/dist/mcp/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +2 -1
- package/dist/mcp/local/bean-metadata.js +22 -1
- package/dist/mcp/local/convex-metadata.d.ts +8 -0
- package/dist/mcp/local/convex-metadata.js +45 -0
- package/dist/mcp/local/local-backend.d.ts +174 -11
- package/dist/mcp/local/local-backend.js +1678 -331
- package/dist/mcp/local/path-predicate.d.ts +19 -0
- package/dist/mcp/local/path-predicate.js +21 -0
- package/dist/mcp/local/pdg-impact.d.ts +132 -10
- package/dist/mcp/local/pdg-impact.js +391 -98
- package/dist/mcp/repository-policy.d.ts +1 -0
- package/dist/mcp/repository-policy.js +5 -0
- package/dist/mcp/resources.js +26 -4
- package/dist/mcp/server.js +23 -13
- package/dist/mcp/tools.d.ts +8 -0
- package/dist/mcp/tools.js +76 -23
- package/dist/server/analyze-job.d.ts +37 -2
- package/dist/server/analyze-job.js +13 -2
- package/dist/server/analyze-launch.d.ts +1 -1
- package/dist/server/analyze-launch.js +79 -10
- package/dist/server/analyze-worker-core.d.ts +1 -1
- package/dist/server/analyze-worker-core.js +10 -1
- package/dist/server/analyze-worker-ipc.d.ts +1 -1
- package/dist/server/analyze-worker-ipc.js +4 -0
- package/dist/server/analyze-worker-protocol.d.ts +59 -0
- package/dist/server/analyze-worker-protocol.js +1 -0
- package/dist/server/analyze-worker.d.ts +1 -17
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +164 -163
- package/dist/server/embed-run-outcome.d.ts +89 -0
- package/dist/server/embed-run-outcome.js +88 -0
- package/dist/server/git-clone.js +6 -2
- package/dist/server/middleware.d.ts +116 -9
- package/dist/server/middleware.js +291 -22
- package/dist/server/sse-progress.d.ts +41 -0
- package/dist/server/sse-progress.js +125 -0
- package/dist/storage/branch-index.d.ts +11 -6
- package/dist/storage/branch-index.js +15 -7
- package/dist/storage/file-hash.js +2 -2
- package/dist/storage/fs-atomic.d.ts +25 -0
- package/dist/storage/fs-atomic.js +42 -0
- package/dist/storage/git.d.ts +131 -0
- package/dist/storage/git.js +236 -2
- package/dist/storage/index-lock.d.ts +102 -0
- package/dist/storage/index-lock.js +660 -0
- package/dist/storage/parse-cache.js +588 -6
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -441
- package/dist/storage/repo-manager.js +312 -221
- package/dist/storage/repo-meta.d.ts +530 -0
- package/dist/storage/repo-meta.js +100 -0
- package/dist/types/pipeline.d.ts +37 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
- package/hooks/claude/gitnexus-hook.cjs +1 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
- package/package.json +11 -2
- package/scripts/cross-platform-shard.ts +153 -0
- package/scripts/cross-platform-tests.ts +122 -0
- package/scripts/run-cross-platform.ts +16 -5
- package/skills/gitnexus-cli.md +3 -3
- package/skills/gitnexus-debugging.md +37 -7
- package/skills/gitnexus-exploring.md +26 -4
- package/skills/gitnexus-impact-analysis.md +71 -10
- package/skills/gitnexus-plan/README.md +11 -6
- package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +12 -6
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/SKILL.md +4 -1
- package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-Dr4l5EOp.js +662 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
- package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
- package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
- package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
- package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
- package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
- package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
- package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
- package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
- package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
- package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
- package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
- package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
- package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
- package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
- package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
- package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
- package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
- package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
- package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
- package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
- package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
- package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
- package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
- package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
- package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
- package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
- package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
- package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
- package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
- package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
- package/web/assets/error-D9MtuG9s.js +1 -0
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
- package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
- package/web/assets/index-CJDpyH-n.css +2 -0
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
- package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
- package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
- package/web/assets/node.browser-U-KyT5AW.js +1 -0
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
- package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
- package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
- package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
- package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
- package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
- package/web/assets/src-C5sx_gMp.js +1 -0
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
- package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
- package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
- package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
- package/web/index.html +16 -15
- package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
- package/dist/core/ingestion/languages/python/index-stats.js +0 -25
- package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
- package/web/assets/agent-Ds-lkZjX.js +0 -626
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
- package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
- package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
- package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
- package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
- package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
- package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
- package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
- package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
- package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
- package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
- package/web/assets/index-CX_fADmQ.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/node-Ct_zna8U.js +0 -8
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/sdk-CzHHH8tD.js +0 -37
- package/web/assets/src-Cv1eWg0o.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -54,12 +54,26 @@ const CPP_SCOPE_QUERY = `
|
|
|
54
54
|
declarator: (type_identifier) @declaration.name) @declaration.struct
|
|
55
55
|
|
|
56
56
|
;; ─── Declarations — class / struct inside template_declaration ───────
|
|
57
|
+
;; \`parameters:\` is the DECLARED parameter list (\`template <class T>\`), which
|
|
58
|
+
;; lives on the template_declaration and not on the specifier — the opposite
|
|
59
|
+
;; nesting from \`@declaration.template-arguments\` above, which is part of the
|
|
60
|
+
;; specifier's own NAME. A partial specialization carries both, and that pairing
|
|
61
|
+
;; is the only thing separating it from a full specialization written against
|
|
62
|
+
;; the identical arguments.
|
|
63
|
+
;;
|
|
64
|
+
;; These four patterns are TWINS of the four standalone specifier patterns
|
|
65
|
+
;; above: a templated struct matches both, minting two defs with one id, and
|
|
66
|
+
;; only this half can see the parameter list. The duplicate-declaration backfill
|
|
67
|
+
;; in scope-extractor.ts is what stops match order from deciding which twin
|
|
68
|
+
;; keeps the parameters.
|
|
57
69
|
(template_declaration
|
|
70
|
+
parameters: (template_parameter_list) @declaration.type-parameters
|
|
58
71
|
(class_specifier
|
|
59
72
|
name: (type_identifier) @declaration.name
|
|
60
73
|
body: (field_declaration_list)) @declaration.class)
|
|
61
74
|
|
|
62
75
|
(template_declaration
|
|
76
|
+
parameters: (template_parameter_list) @declaration.type-parameters
|
|
63
77
|
(class_specifier
|
|
64
78
|
name: (template_type
|
|
65
79
|
(type_identifier) @declaration.name
|
|
@@ -67,11 +81,13 @@ const CPP_SCOPE_QUERY = `
|
|
|
67
81
|
body: (field_declaration_list)) @declaration.class)
|
|
68
82
|
|
|
69
83
|
(template_declaration
|
|
84
|
+
parameters: (template_parameter_list) @declaration.type-parameters
|
|
70
85
|
(struct_specifier
|
|
71
86
|
name: (type_identifier) @declaration.name
|
|
72
87
|
body: (field_declaration_list)) @declaration.struct)
|
|
73
88
|
|
|
74
89
|
(template_declaration
|
|
90
|
+
parameters: (template_parameter_list) @declaration.type-parameters
|
|
75
91
|
(struct_specifier
|
|
76
92
|
name: (template_type
|
|
77
93
|
(type_identifier) @declaration.name
|
|
@@ -97,6 +113,16 @@ const CPP_SCOPE_QUERY = `
|
|
|
97
113
|
declarator: (function_declarator
|
|
98
114
|
declarator: (identifier) @declaration.name)) @declaration.function
|
|
99
115
|
|
|
116
|
+
;; Lambda bindings (\`auto f = [](int x){ … };\`). The \`@declaration.function\`
|
|
117
|
+
;; anchor sits on the INNER lambda_expression so its range aligns with
|
|
118
|
+
;; \`(lambda_expression) @scope.function\` above; otherwise the def is owned by
|
|
119
|
+
;; the enclosing scope and calls inside the lambda lose caller attribution.
|
|
120
|
+
;; Mirrors the TypeScript arrow patterns (#2687).
|
|
121
|
+
(declaration
|
|
122
|
+
declarator: (init_declarator
|
|
123
|
+
declarator: (identifier) @declaration.name
|
|
124
|
+
value: (lambda_expression) @declaration.function))
|
|
125
|
+
|
|
100
126
|
;; ─── Declarations — function definition with pointer return ─────────
|
|
101
127
|
(function_definition
|
|
102
128
|
declarator: (pointer_declarator
|
|
@@ -526,6 +552,86 @@ const CPP_SCOPE_QUERY = `
|
|
|
526
552
|
declarator: (reference_declarator
|
|
527
553
|
(field_identifier) @type-binding.name)) @type-binding.field
|
|
528
554
|
|
|
555
|
+
;; Generic field type: Repo<User> repo; (#2833)
|
|
556
|
+
;; The three rules above all require type: (type_identifier), so a member whose
|
|
557
|
+
;; type carries template arguments is a template_type and matched NONE of them —
|
|
558
|
+
;; the field got no type binding at all, and every call through it lost its edge
|
|
559
|
+
;; in BOTH spellings (repo.save() and this->repo.save()), while the same type in
|
|
560
|
+
;; a LOCAL resolved fine because the local declaration rules gained their
|
|
561
|
+
;; template_type variant long ago (see "Covers: List<User> users;" above).
|
|
562
|
+
;; These three mirror the three above, one per declarator shape. Written as
|
|
563
|
+
;; separate patterns rather than one alternation: a node-type alternation in a
|
|
564
|
+
;; field position is the tree-sitter 0.21 hazard this repo has been bitten by
|
|
565
|
+
;; before.
|
|
566
|
+
(field_declaration
|
|
567
|
+
type: (template_type) @type-binding.type
|
|
568
|
+
declarator: (field_identifier) @type-binding.name) @type-binding.field
|
|
569
|
+
|
|
570
|
+
;; Generic field, pointer: Repo<User>* repo;
|
|
571
|
+
(field_declaration
|
|
572
|
+
type: (template_type) @type-binding.type
|
|
573
|
+
declarator: (pointer_declarator
|
|
574
|
+
declarator: (field_identifier) @type-binding.name)) @type-binding.field
|
|
575
|
+
|
|
576
|
+
;; Generic field, reference: Repo<User>& repo;
|
|
577
|
+
(field_declaration
|
|
578
|
+
type: (template_type) @type-binding.type
|
|
579
|
+
declarator: (reference_declarator
|
|
580
|
+
(field_identifier) @type-binding.name)) @type-binding.field
|
|
581
|
+
|
|
582
|
+
;; ─── Field type, QUALIFIED: ns::Address addr; std::vector<Item> items; ─
|
|
583
|
+
;; The six rules above require the type node to BE a type_identifier or a
|
|
584
|
+
;; template_type, and a qualified member type is NEITHER: tree-sitter-cpp parses
|
|
585
|
+
;; ns::Address as a qualified_identifier WRAPPING the type_identifier, and
|
|
586
|
+
;; std::vector<Item> as one wrapping the template_type. So every qualified
|
|
587
|
+
;; member — generic or not — matched none of the six and bound nothing, which
|
|
588
|
+
;; covers the commonest member spellings in real C++ (std::string, std::mutex,
|
|
589
|
+
;; std::vector<T>, ns::Config).
|
|
590
|
+
;;
|
|
591
|
+
;; ONE PATTERN PER DECLARATOR SHAPE, MATCHING THE OUTER qualified_identifier,
|
|
592
|
+
;; and that is the whole design. A tree-sitter query cannot match a node at
|
|
593
|
+
;; arbitrary nesting depth, and a::b::c::Repo<User> nests one
|
|
594
|
+
;; qualified_identifier per qualifier — so enumerating the inner node instead
|
|
595
|
+
;; costs 3 patterns per depth per genericity and STILL ends at whatever depth
|
|
596
|
+
;; the last author enumerated (that boundary was real: depth 3 was uncaptured).
|
|
597
|
+
;; Matching the outer node is depth-agnostic and genericity-agnostic, and it is
|
|
598
|
+
;; a single node type in the field position, not an alternation — the
|
|
599
|
+
;; tree-sitter 0.21 hazard this repo has been bitten by before.
|
|
600
|
+
;;
|
|
601
|
+
;; The QUALIFIER IS THEN DROPPED, by cppQualifiedTail in interpret.ts, not
|
|
602
|
+
;; here — and dropping it was measured rather than assumed. Recording
|
|
603
|
+
;; ns::Repo<User> resolves to NOTHING: findClassBindingInScope's dotted-tail
|
|
604
|
+
;; fallback splits on "." and C++ writes "::", and resolveClassBindingForName's
|
|
605
|
+
;; generic branch then looks up the base ns::Repo, which is not a key either
|
|
606
|
+
;; because C++ emits no @declaration.qualified_name and indexes ns::Repo under
|
|
607
|
+
;; Repo. Reducing to the tail lands on exactly the path the BARE spelling
|
|
608
|
+
;; already takes — one class-like match or decline — so a qualified member field
|
|
609
|
+
;; behaves like the bare one instead of like nothing. A tail that names no
|
|
610
|
+
;; workspace class (std::string with no "class string" in the repo) binds
|
|
611
|
+
;; nothing and emits nothing, which is why this is a miss-closing change rather
|
|
612
|
+
;; than an edge-fabricating one.
|
|
613
|
+
;;
|
|
614
|
+
;; Like the six above, each requires the declarator to reach the field_identifier
|
|
615
|
+
;; DIRECTLY, so a method whose return type is qualified (ns::Thing method();)
|
|
616
|
+
;; still captures no field — a function_declarator sits in between and none of
|
|
617
|
+
;; these match it. Same for a function-pointer member, a using/typedef alias, a
|
|
618
|
+
;; friend declaration and an operator declaration.
|
|
619
|
+
(field_declaration
|
|
620
|
+
type: (qualified_identifier) @type-binding.type
|
|
621
|
+
declarator: (field_identifier) @type-binding.name) @type-binding.field
|
|
622
|
+
|
|
623
|
+
;; Qualified field, pointer: ns::Address* addr; std::unique_ptr<Repo>* repo;
|
|
624
|
+
(field_declaration
|
|
625
|
+
type: (qualified_identifier) @type-binding.type
|
|
626
|
+
declarator: (pointer_declarator
|
|
627
|
+
declarator: (field_identifier) @type-binding.name)) @type-binding.field
|
|
628
|
+
|
|
629
|
+
;; Qualified field, reference: ns::Address& addr; std::vector<Item>& items;
|
|
630
|
+
(field_declaration
|
|
631
|
+
type: (qualified_identifier) @type-binding.type
|
|
632
|
+
declarator: (reference_declarator
|
|
633
|
+
(field_identifier) @type-binding.name)) @type-binding.field
|
|
634
|
+
|
|
529
635
|
;; ─── References — constructor calls (new Foo()) ─────────────────────
|
|
530
636
|
(new_expression
|
|
531
637
|
type: (type_identifier) @reference.name) @reference.call.constructor
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { findClassBindingInScope, findEnclosingClassDef, } from '../../scope-resolution/scope/walkers.js';
|
|
2
2
|
import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
3
3
|
import { populateClassOwnedMembers, tagNamespacePrefixes, } from '../../scope-resolution/scope/walkers.js';
|
|
4
|
+
import { extractElementTypeFromString } from '../../type-extractors/shared.js';
|
|
4
5
|
import { cppProvider } from '../c-cpp.js';
|
|
5
6
|
import { cppArityCompatibility } from './arity.js';
|
|
6
7
|
import { CPP_CONVERSION_ONLY_ARG_TYPE_PREFIXES, cppConversionRank } from './conversion-rank.js';
|
|
@@ -16,6 +17,12 @@ import { populateCppRangeBindings } from './range-bindings.js';
|
|
|
16
17
|
import { cppConstraintCompatibility } from './constraint-filter.js';
|
|
17
18
|
import { clearCppUserDefinedConversions, populateCppUserDefinedConversions, } from './user-defined-conversions.js';
|
|
18
19
|
import { buildCppMemberLookupMro, clearCppMemberLookupState, resolveCppReceiverMember, } from './member-lookup.js';
|
|
20
|
+
import { stripCppSpecifiers } from './interpret.js';
|
|
21
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
22
|
+
/** A pointee worth binding: a bare identifier, not `T**`, `T[]`, `A::B` or a
|
|
23
|
+
* template spelling. Hoisted — a literal here would mint a fresh RegExp on
|
|
24
|
+
* every subscript the resolver folds. */
|
|
25
|
+
const CPP_SIMPLE_POINTEE_RE = /^[A-Za-z_]\w*$/;
|
|
19
26
|
/**
|
|
20
27
|
* Per-pass memo of the augmented `#include`-resolution file set
|
|
21
28
|
* (`allFilePaths` ∪ header paths), keyed on the two stable source sets.
|
|
@@ -23,26 +30,24 @@ import { buildCppMemberLookupMro, clearCppMemberLookupState, resolveCppReceiverM
|
|
|
23
30
|
* a fresh ~F-entry `Set` on every call AND defeated the shared
|
|
24
31
|
* `resolveCImportTarget` suffix-index memo (in `c/import-target.ts`) by handing
|
|
25
32
|
* it a new set identity each time. Both inputs are stable per pass, so the
|
|
26
|
-
* union is built once and reused.
|
|
27
|
-
*
|
|
33
|
+
* union is built once and reused. Reclaimed with the pass.
|
|
34
|
+
*
|
|
35
|
+
* Two inputs, so two levels of `perFileSet` composed rather than a second
|
|
36
|
+
* primitive: the outer memo's value is the inner memo, and a function is an
|
|
37
|
+
* object, which is all `T extends object` asks for.
|
|
38
|
+
*
|
|
39
|
+
* (Twin of the C resolver's `augmentedFilePathsFor`.) The two memos stay
|
|
40
|
+
* SEPARATE deliberately. C++ delegates to `resolveCImportTarget`, whose
|
|
41
|
+
* `suffixIndex` memo is keyed on the augmented set, so a single memo shared
|
|
42
|
+
* with C would hand each language the other's index — same
|
|
43
|
+
* builder-shared/memo-separate rule as `import-resolvers/pass-cache.ts`.
|
|
28
44
|
*/
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
let augmented = byHeaders.get(headerPaths);
|
|
37
|
-
if (augmented === undefined) {
|
|
38
|
-
const set = new Set(allFilePaths);
|
|
39
|
-
for (const h of headerPaths)
|
|
40
|
-
set.add(h);
|
|
41
|
-
augmented = set;
|
|
42
|
-
byHeaders.set(headerPaths, augmented);
|
|
43
|
-
}
|
|
44
|
-
return augmented;
|
|
45
|
-
}
|
|
45
|
+
const augmentedFilePathsFor = perFileSet((allFilePaths) => perFileSet((headerPaths) => {
|
|
46
|
+
const set = new Set(allFilePaths);
|
|
47
|
+
for (const h of headerPaths)
|
|
48
|
+
set.add(h);
|
|
49
|
+
return set;
|
|
50
|
+
}));
|
|
46
51
|
/**
|
|
47
52
|
* C++ `ScopeResolver` registered in `SCOPE_RESOLVERS` and consumed by
|
|
48
53
|
* the generic `runScopeResolution` orchestrator (RFC #909 Ring 3).
|
|
@@ -78,7 +83,7 @@ export const cppScopeResolver = {
|
|
|
78
83
|
// detection but are importable from .cpp files via #include.
|
|
79
84
|
const headerPaths = resolutionConfig;
|
|
80
85
|
if (headerPaths !== undefined && headerPaths.size > 0) {
|
|
81
|
-
return resolveCppImportTarget(targetRaw, fromFile,
|
|
86
|
+
return resolveCppImportTarget(targetRaw, fromFile, augmentedFilePathsFor(allFilePaths)(headerPaths));
|
|
82
87
|
}
|
|
83
88
|
return resolveCppImportTarget(targetRaw, fromFile, allFilePaths);
|
|
84
89
|
},
|
|
@@ -195,6 +200,29 @@ export const cppScopeResolver = {
|
|
|
195
200
|
const mro = scopes.methodDispatch.mroFor(enclosing.nodeId);
|
|
196
201
|
return mro.includes(lhsDef.nodeId);
|
|
197
202
|
},
|
|
203
|
+
// Subscript route only — C++ collection views are method calls.
|
|
204
|
+
//
|
|
205
|
+
// Two container spellings reach a subscript. A POINTER is one of them: `p[i]`
|
|
206
|
+
// on a `User*` is pointer arithmetic yielding a `User`, so the trailing `*` is
|
|
207
|
+
// peeled here rather than by `stripTypePreservingDecoration` (C++ declares
|
|
208
|
+
// none) — and peeling it at a bare class lookup instead would be wrong, since
|
|
209
|
+
// that is the route by which `p->m()` must keep seeing `User`'s own members.
|
|
210
|
+
// The other is a template container (`std::vector<User>`), left to the shared
|
|
211
|
+
// extractor.
|
|
212
|
+
//
|
|
213
|
+
// Fed the annotation AS WRITTEN, since `normalizeCppTypeName` strips both the
|
|
214
|
+
// star and the array brackets at capture. `undefined` = "not a container", so
|
|
215
|
+
// an `operator[]`-bearing class does not fold `grid[0]` onto `Grid`.
|
|
216
|
+
elementTypeOf: (containerType, via) => {
|
|
217
|
+
if (via.kind !== 'index')
|
|
218
|
+
return undefined;
|
|
219
|
+
const t = stripCppSpecifiers(containerType);
|
|
220
|
+
if (t.endsWith('*')) {
|
|
221
|
+
const pointee = t.slice(0, -1).trim();
|
|
222
|
+
return CPP_SIMPLE_POINTEE_RE.test(pointee) ? pointee : undefined;
|
|
223
|
+
}
|
|
224
|
+
return extractElementTypeFromString(t);
|
|
225
|
+
},
|
|
198
226
|
// C++ is statically typed — disable field fallback heuristic
|
|
199
227
|
fieldFallbackOnMethodLookup: false,
|
|
200
228
|
// C++ needs return type propagation across #include boundaries
|
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
* C# collection-accessor unwrapping.
|
|
3
|
-
*
|
|
4
|
-
* When the compound-receiver resolver encounters a trailing
|
|
5
|
-
* `.Values` / `.Keys` on a dotted member-access chain, it calls the
|
|
6
|
-
* provider's `unwrapCollectionAccessor` hook to find the element
|
|
7
|
-
* type. This module supplies the C# implementation — recognizing
|
|
8
|
-
* Dictionary-family generics and returning the value or key type.
|
|
9
|
-
*
|
|
10
|
-
* Other languages (Python, Java, TypeScript) use method-call syntax
|
|
11
|
-
* for the same access (`.values()` / `.keys()`), which the compound-
|
|
12
|
-
* receiver's call-expression branch already handles; they leave this
|
|
13
|
-
* hook undefined.
|
|
14
|
-
*/
|
|
1
|
+
import type { ElementAccessRoute } from '../../scope-resolution/contract/scope-resolver.js';
|
|
15
2
|
/**
|
|
16
3
|
* Resolve `data.Values` / `data.Keys` on a Dictionary-like receiver
|
|
17
4
|
* to its element-type simple name. Returns `undefined` for any
|
|
18
5
|
* receiver / accessor combination we don't recognize, letting the
|
|
19
6
|
* compound-receiver pass fall through to the regular field walk.
|
|
20
7
|
*/
|
|
21
|
-
export declare function
|
|
8
|
+
export declare function unwrapCsharpElementType(containerType: string, via: ElementAccessRoute): string | undefined;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
+
import { extractElementTypeFromString } from '../../type-extractors/shared.js';
|
|
1
2
|
/**
|
|
2
|
-
* C#
|
|
3
|
+
* C# container element-type unwrapping.
|
|
3
4
|
*
|
|
4
5
|
* When the compound-receiver resolver encounters a trailing
|
|
5
6
|
* `.Values` / `.Keys` on a dotted member-access chain, it calls the
|
|
6
|
-
* provider's `
|
|
7
|
+
* provider's `elementTypeOf` hook to find the element
|
|
7
8
|
* type. This module supplies the C# implementation — recognizing
|
|
8
9
|
* Dictionary-family generics and returning the value or key type.
|
|
9
10
|
*
|
|
10
|
-
* Other languages (Python, Java, TypeScript) use method-call syntax
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* hook undefined.
|
|
11
|
+
* Other languages (Python, Java, TypeScript) use method-call syntax for the
|
|
12
|
+
* same access (`.values()` / `.keys()`), which the compound-receiver's
|
|
13
|
+
* call-expression branch already handles; they answer only the `index` route.
|
|
14
14
|
*/
|
|
15
15
|
/** Extract (K, V) from `Dictionary<K, V>` / `IDictionary<K, V>` /
|
|
16
16
|
* `IReadOnlyDictionary<K, V>` / `SortedDictionary<K, V>` /
|
|
@@ -46,11 +46,19 @@ function extractDictionaryArgs(rawName) {
|
|
|
46
46
|
* receiver / accessor combination we don't recognize, letting the
|
|
47
47
|
* compound-receiver pass fall through to the regular field walk.
|
|
48
48
|
*/
|
|
49
|
-
export function
|
|
50
|
-
|
|
49
|
+
export function unwrapCsharpElementType(containerType, via) {
|
|
50
|
+
const args = extractDictionaryArgs(containerType);
|
|
51
|
+
// Subscript on a dictionary yields the VALUE type — `dict["k"]` is a V, never
|
|
52
|
+
// a K. Previously this route returned nothing at all for C#, because the
|
|
53
|
+
// dictionary parse below was reachable only from the accessor hook.
|
|
54
|
+
if (via.kind === 'index') {
|
|
55
|
+
if (args !== undefined)
|
|
56
|
+
return args.value;
|
|
57
|
+
return extractElementTypeFromString(containerType);
|
|
58
|
+
}
|
|
59
|
+
if (via.name !== 'Values' && via.name !== 'Keys')
|
|
51
60
|
return undefined;
|
|
52
|
-
const args = extractDictionaryArgs(receiverType);
|
|
53
61
|
if (args === undefined)
|
|
54
62
|
return undefined;
|
|
55
|
-
return
|
|
63
|
+
return via.name === 'Values' ? args.value : args.key;
|
|
56
64
|
}
|
|
@@ -24,6 +24,7 @@ import { recordCacheHit, recordCacheMiss } from './cache-stats.js';
|
|
|
24
24
|
import { getTreeSitterBufferSize } from '../../constants.js';
|
|
25
25
|
import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
|
|
26
26
|
import { synthesizeCallableFlowCaptures } from '../../utils/callable-flow-captures.js';
|
|
27
|
+
import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
|
|
27
28
|
/** Declaration anchors that carry function-like arity metadata. */
|
|
28
29
|
const FUNCTION_DECL_TAGS = [
|
|
29
30
|
'@declaration.method',
|
|
@@ -143,6 +144,12 @@ export function emitCsharpScopeCaptures(sourceText, _filePath, cachedTree) {
|
|
|
143
144
|
}
|
|
144
145
|
// Defensive fallback: emit the raw match so the extractor at
|
|
145
146
|
// least sees an anchor, even without markers.
|
|
147
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
148
|
+
// expression, so resolution can type it by folding over structure
|
|
149
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
150
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
151
|
+
// all leave `grouped` untouched.
|
|
152
|
+
synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
|
|
146
153
|
out.push(grouped);
|
|
147
154
|
continue;
|
|
148
155
|
}
|
|
@@ -159,6 +166,12 @@ export function emitCsharpScopeCaptures(sourceText, _filePath, cachedTree) {
|
|
|
159
166
|
// the AST in code. Mirrors Python's `self`/`cls` synthesis on
|
|
160
167
|
// `@scope.function` matches.
|
|
161
168
|
if (grouped['@scope.function'] !== undefined) {
|
|
169
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
170
|
+
// expression, so resolution can type it by folding over structure
|
|
171
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
172
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
173
|
+
// all leave `grouped` untouched.
|
|
174
|
+
synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
|
|
162
175
|
out.push(grouped);
|
|
163
176
|
const fnNode = nodeIfType(nodeMap['@scope.function'], ...FUNCTION_NODE_TYPES);
|
|
164
177
|
if (fnNode !== null) {
|
|
@@ -231,6 +244,12 @@ export function emitCsharpScopeCaptures(sourceText, _filePath, cachedTree) {
|
|
|
231
244
|
grouped['@reference.parameter-types'] = syntheticCapture('@reference.parameter-types', callNode, JSON.stringify(argTypes));
|
|
232
245
|
}
|
|
233
246
|
}
|
|
247
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
248
|
+
// expression, so resolution can type it by folding over structure
|
|
249
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
250
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
251
|
+
// all leave `grouped` untouched.
|
|
252
|
+
synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
|
|
234
253
|
out.push(grouped);
|
|
235
254
|
// Synthesize primary-constructor declarations on class/record
|
|
236
255
|
// declarations that carry a `parameter_list` child (C# 12 syntax
|
|
@@ -19,22 +19,17 @@
|
|
|
19
19
|
* `linkStatus: 'unresolved'`.
|
|
20
20
|
*/
|
|
21
21
|
import { resolveCSharpImportInternal } from '../../import-resolvers/csharp.js';
|
|
22
|
-
import {
|
|
22
|
+
import { getWorkspaceFileIndex, } from '../../import-resolvers/workspace-file-index.js';
|
|
23
|
+
import { buildPackageDirIndex, firstFileDirectlyInPkgDir, } from '../../import-resolvers/package-dir-index.js';
|
|
24
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
23
25
|
import { csharpSuffixFallbackAllowed } from '../../csharp-namespace-gate.js';
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return cached;
|
|
32
|
-
const all = [...allFilePaths];
|
|
33
|
-
const normalized = all.map((f) => f.replace(/\\/g, '/'));
|
|
34
|
-
const built = { normalized, all, index: buildSuffixIndex(normalized, all) };
|
|
35
|
-
workspaceFileIndexCache.set(allFilePaths, built);
|
|
36
|
-
return built;
|
|
37
|
-
}
|
|
26
|
+
/**
|
|
27
|
+
* Namespace-directory index over the `.cs` files, memoized on the Set's
|
|
28
|
+
* identity. Feeds `firstFileDirectlyInPkgDir` (in
|
|
29
|
+
* `import-resolvers/package-dir-index.ts`), which the no-csproj path calls once
|
|
30
|
+
* for the direct match and then up to once per stripped namespace prefix.
|
|
31
|
+
*/
|
|
32
|
+
const getCsharpDirIndex = perFileSet((allFilePaths) => buildPackageDirIndex(allFilePaths, (normalized) => normalized.endsWith('.cs')));
|
|
38
33
|
export function resolveCsharpImportTarget(parsedImport, workspaceIndex) {
|
|
39
34
|
const ctx = narrowContext(workspaceIndex);
|
|
40
35
|
if (ctx === null)
|
|
@@ -47,8 +42,8 @@ export function resolveCsharpImportTarget(parsedImport, workspaceIndex) {
|
|
|
47
42
|
const evidence = ctx.namespaces;
|
|
48
43
|
const csharpConfigs = ctx.csharpConfigs ?? [];
|
|
49
44
|
if (csharpConfigs.length > 0) {
|
|
50
|
-
const {
|
|
51
|
-
const fromCsproj = resolveCSharpImportInternal(targetRaw, [...csharpConfigs],
|
|
45
|
+
const { index } = getWorkspaceFileIndex(ctx.allFilePaths);
|
|
46
|
+
const fromCsproj = resolveCSharpImportInternal(targetRaw, [...csharpConfigs], ctx.allFilePaths, index, evidence);
|
|
52
47
|
if (fromCsproj.length > 0)
|
|
53
48
|
return fromCsproj[0];
|
|
54
49
|
// csproj configs are authoritative: mirror legacy `configs/csharp.ts`,
|
|
@@ -72,12 +67,19 @@ export function resolveCsharpImportTarget(parsedImport, workspaceIndex) {
|
|
|
72
67
|
return null;
|
|
73
68
|
}
|
|
74
69
|
// Exact file / nested-suffix / namespace-dir direct-child match.
|
|
75
|
-
|
|
70
|
+
//
|
|
71
|
+
// The no-csproj path used to take the raw Set and re-scan it — up to eight
|
|
72
|
+
// full workspace passes for a four-segment `using` — past the memoized index
|
|
73
|
+
// sitting right there for the csproj branch (#2878). Both legs now read the
|
|
74
|
+
// same per-run indexes.
|
|
75
|
+
const ws = getWorkspaceFileIndex(ctx.allFilePaths);
|
|
76
|
+
const dirs = getCsharpDirIndex(ctx.allFilePaths);
|
|
77
|
+
const direct = resolveDirectMatch(ws, dirs, pathLike);
|
|
76
78
|
if (direct !== null)
|
|
77
79
|
return direct;
|
|
78
80
|
// Progressive prefix stripping — mirrors csproj's root-namespace mapping
|
|
79
81
|
// without the csproj.
|
|
80
|
-
return resolveByProgressiveStripping(
|
|
82
|
+
return resolveByProgressiveStripping(ws, dirs, pathLike);
|
|
81
83
|
}
|
|
82
84
|
/**
|
|
83
85
|
* `WorkspaceIndex` is an opaque `unknown` placeholder in the shared contract;
|
|
@@ -98,46 +100,26 @@ function narrowContext(workspaceIndex) {
|
|
|
98
100
|
* exact whole-path file > nested suffix file > first `.cs` directly inside
|
|
99
101
|
* the namespace directory.
|
|
100
102
|
*/
|
|
101
|
-
function resolveDirectMatch(
|
|
103
|
+
function resolveDirectMatch(ws, dirs, pathLike) {
|
|
102
104
|
const exactName = `${pathLike}.cs`;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (suffixFile !==
|
|
105
|
+
// An exact whole-path match wins even when a `…/<exactName>` suffix match
|
|
106
|
+
// appeared EARLIER in iteration order, so the two lookups stay separate:
|
|
107
|
+
// `index.get` conflates them and would return the earlier suffix hit.
|
|
108
|
+
const exact = ws.normToRaw.get(exactName);
|
|
109
|
+
if (exact !== undefined)
|
|
110
|
+
return exact;
|
|
111
|
+
// No whole-path file exists, so every segment-suffix hit is a `/<exactName>`
|
|
112
|
+
// match and `index.get` yields the first one in iteration order — exactly the
|
|
113
|
+
// `suffixFile` the scan kept. Only a `.cs` file can carry a `.cs` suffix key,
|
|
114
|
+
// so the old `endsWith('.cs')` filter is implied.
|
|
115
|
+
const suffixFile = ws.index.get(exactName);
|
|
116
|
+
if (suffixFile !== undefined)
|
|
115
117
|
return suffixFile;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
* The legacy resolver emits all of them; the scope-resolver contract is
|
|
122
|
-
* single-target so we take one.
|
|
123
|
-
*/
|
|
124
|
-
function findDirectChild(allFilePaths, dirSegment) {
|
|
125
|
-
const dirPrefix = `${dirSegment}/`;
|
|
126
|
-
const nestedDirPrefix = `/${dirPrefix}`;
|
|
127
|
-
for (const raw of allFilePaths) {
|
|
128
|
-
const f = raw.replace(/\\/g, '/');
|
|
129
|
-
if (!f.endsWith('.cs'))
|
|
130
|
-
continue;
|
|
131
|
-
const atRoot = f.startsWith(dirPrefix);
|
|
132
|
-
const atNested = f.includes(nestedDirPrefix);
|
|
133
|
-
if (!atRoot && !atNested)
|
|
134
|
-
continue;
|
|
135
|
-
const idx = atRoot ? 0 : f.indexOf(nestedDirPrefix) + 1;
|
|
136
|
-
const after = f.slice(idx + dirPrefix.length);
|
|
137
|
-
if (after.length > 0 && !after.includes('/'))
|
|
138
|
-
return raw;
|
|
139
|
-
}
|
|
140
|
-
return null;
|
|
118
|
+
// First `.cs` file living directly inside the namespace directory `pathLike`
|
|
119
|
+
// (at repo root or nested under a project prefix), not deeper. The legacy
|
|
120
|
+
// resolver emits all of them; the scope-resolver contract is single-target so
|
|
121
|
+
// we take one.
|
|
122
|
+
return firstFileDirectlyInPkgDir(dirs, pathLike);
|
|
141
123
|
}
|
|
142
124
|
/**
|
|
143
125
|
* Try each suffix of the namespace path against `.cs` files and directories,
|
|
@@ -145,27 +127,19 @@ function findDirectChild(allFilePaths, dirSegment) {
|
|
|
145
127
|
* resolving to `Models/User.cs` in a repo laid out without the `CrossFile/`
|
|
146
128
|
* prefix (the scope-resolver layer has no csproj to consult).
|
|
147
129
|
*/
|
|
148
|
-
function resolveByProgressiveStripping(
|
|
130
|
+
function resolveByProgressiveStripping(ws, dirs, pathLike) {
|
|
149
131
|
const segments = pathLike.split('/').filter(Boolean);
|
|
150
132
|
for (let skip = 1; skip < segments.length; skip++) {
|
|
151
133
|
const tail = segments.slice(skip).join('/');
|
|
152
134
|
if (tail === '')
|
|
153
135
|
continue;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
if (!f.endsWith('.cs'))
|
|
160
|
-
continue;
|
|
161
|
-
if (f === tailFile || f.endsWith(tailSuffix)) {
|
|
162
|
-
tailFileMatch = raw;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
if (tailFileMatch !== null)
|
|
136
|
+
// `f === tailFile || f.endsWith('/' + tailFile)`, first in iteration order —
|
|
137
|
+
// no exact-wins rule here, unlike `resolveDirectMatch`, so the conflated
|
|
138
|
+
// suffix lookup is the right one.
|
|
139
|
+
const tailFileMatch = ws.index.get(`${tail}.cs`);
|
|
140
|
+
if (tailFileMatch !== undefined)
|
|
167
141
|
return tailFileMatch;
|
|
168
|
-
const child =
|
|
142
|
+
const child = firstFileDirectlyInPkgDir(dirs, tail);
|
|
169
143
|
if (child !== null)
|
|
170
144
|
return child;
|
|
171
145
|
}
|
|
@@ -545,7 +545,11 @@ export function populateCsharpNamespaceSiblings(parsedFiles, indexes, inputs) {
|
|
|
545
545
|
if (seen.has(memberDef.nodeId))
|
|
546
546
|
continue;
|
|
547
547
|
seen.add(memberDef.nodeId);
|
|
548
|
-
bucketArr.push({
|
|
548
|
+
bucketArr.push({
|
|
549
|
+
def: memberDef,
|
|
550
|
+
origin: 'import',
|
|
551
|
+
visibility: 'static-member-import',
|
|
552
|
+
});
|
|
549
553
|
}
|
|
550
554
|
}
|
|
551
555
|
}
|
|
@@ -61,24 +61,44 @@ const CSHARP_SCOPE_QUERY = `
|
|
|
61
61
|
;; Anonymous methods / lambdas are not scoped — out of scope per plan.
|
|
62
62
|
|
|
63
63
|
;; Declarations — types
|
|
64
|
+
;; The parameter list is matched as an UNNAMED optional child, not through a
|
|
65
|
+
;; \`type_parameters:\` field: the C# grammar gives \`interface_declaration\` that
|
|
66
|
+
;; field but \`class_declaration\` / \`struct_declaration\` / \`record_declaration\`
|
|
67
|
+
;; only a bare \`type_parameter_list\` child, so the field form would silently
|
|
68
|
+
;; capture nothing on exactly the three most common declarations. The unnamed
|
|
69
|
+
;; form matches all four.
|
|
70
|
+
;;
|
|
71
|
+
;; A \`where T : IRepo\` constraint is a SEPARATE sibling clause
|
|
72
|
+
;; (\`type_parameter_constraints_clause\`) and is deliberately not read here — the
|
|
73
|
+
;; bound stays absent for C#, which reads as "unknown", the safe direction.
|
|
64
74
|
(class_declaration
|
|
65
|
-
name: (identifier) @declaration.name
|
|
75
|
+
name: (identifier) @declaration.name
|
|
76
|
+
(type_parameter_list)? @declaration.type-parameters) @declaration.class
|
|
66
77
|
|
|
67
78
|
(interface_declaration
|
|
68
|
-
name: (identifier) @declaration.name
|
|
79
|
+
name: (identifier) @declaration.name
|
|
80
|
+
(type_parameter_list)? @declaration.type-parameters) @declaration.interface
|
|
69
81
|
|
|
70
82
|
(struct_declaration
|
|
71
|
-
name: (identifier) @declaration.name
|
|
83
|
+
name: (identifier) @declaration.name
|
|
84
|
+
(type_parameter_list)? @declaration.type-parameters) @declaration.struct
|
|
72
85
|
|
|
73
86
|
(record_declaration
|
|
74
|
-
name: (identifier) @declaration.name
|
|
87
|
+
name: (identifier) @declaration.name
|
|
88
|
+
(type_parameter_list)? @declaration.type-parameters) @declaration.record
|
|
75
89
|
|
|
76
90
|
(enum_declaration
|
|
77
91
|
name: (identifier) @declaration.name) @declaration.enum
|
|
78
92
|
|
|
79
93
|
;; Declarations — methods / constructors / properties
|
|
94
|
+
;;
|
|
95
|
+
;; A generic METHOD's parameters are read for the same reason a generic type's
|
|
96
|
+
;; are (#2912 review): \`void Run<T>(IValidator<T> v)\` writes a receiver whose
|
|
97
|
+
;; argument is a type VARIABLE, and a pass that cannot tell that from a concrete
|
|
98
|
+
;; type prunes every implementor of \`IValidator\` from the call's fan-out.
|
|
80
99
|
(method_declaration
|
|
81
|
-
name: (identifier) @declaration.name
|
|
100
|
+
name: (identifier) @declaration.name
|
|
101
|
+
(type_parameter_list)? @declaration.type-parameters) @declaration.method
|
|
82
102
|
|
|
83
103
|
(constructor_declaration
|
|
84
104
|
name: (identifier) @declaration.name) @declaration.constructor
|