cgraphx 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* C++ two-phase template lookup support.
|
|
4
|
+
*
|
|
5
|
+
* Inside a class template body, names from a dependent base class are NOT
|
|
6
|
+
* found by ordinary unqualified lookup. The standard requires the
|
|
7
|
+
* `this->name` or `Base<T>::name` forms to make the lookup dependent.
|
|
8
|
+
* GitNexus's global free-call fallback otherwise binds such names to the
|
|
9
|
+
* dependent base's members, producing CALLS edges the compiler would
|
|
10
|
+
* reject.
|
|
11
|
+
*
|
|
12
|
+
* This module records — during `emitCppScopeCaptures` — which template
|
|
13
|
+
* class declarations have which dependent base class names (per file).
|
|
14
|
+
* `populateCppDependentBases` then resolves those names to class nodeIds
|
|
15
|
+
* using a workspace-wide registry, building the per-class set the
|
|
16
|
+
* `isCppDependentBaseMember` predicate consumes.
|
|
17
|
+
*
|
|
18
|
+
* Cross-file resolution: `Base<T>` may be declared in a different header
|
|
19
|
+
* than `Derived<T>`. `populateCppDependentBases` therefore runs as a
|
|
20
|
+
* workspace-wide pass (`populateWorkspaceOwners` hook) after every file
|
|
21
|
+
* has had `populateOwners` applied, so all class defs are reachable.
|
|
22
|
+
*
|
|
23
|
+
* Namespace disambiguation: when multiple classes share a simple name
|
|
24
|
+
* (e.g., `Box` in two namespaces), the resolver prefers the candidate
|
|
25
|
+
* whose qualified-name prefix (namespace path) matches the deriving
|
|
26
|
+
* class's prefix. If no namespace match is found, a unique simple-name
|
|
27
|
+
* match is accepted; ambiguous matches (multiple candidates, no
|
|
28
|
+
* namespace winner) are skipped conservatively.
|
|
29
|
+
*
|
|
30
|
+
* NOTE: module-level state, single-process-single-repo use only.
|
|
31
|
+
* `clearFileLocalNames()` clears this state alongside file-local linkage
|
|
32
|
+
* (see `file-local-linkage.ts`).
|
|
33
|
+
*/
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.markCppDependentBase = markCppDependentBase;
|
|
36
|
+
exports.markCppDependentPackBase = markCppDependentPackBase;
|
|
37
|
+
exports.collectCppTwoPhaseSideChannel = collectCppTwoPhaseSideChannel;
|
|
38
|
+
exports.applyCppTwoPhaseSideChannel = applyCppTwoPhaseSideChannel;
|
|
39
|
+
exports.clearCppDependentBases = clearCppDependentBases;
|
|
40
|
+
exports.populateCppDependentBases = populateCppDependentBases;
|
|
41
|
+
exports.isCppDependentBaseMember = isCppDependentBaseMember;
|
|
42
|
+
const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
|
|
43
|
+
/**
|
|
44
|
+
* Capture-time record: for each template class declaration in a file,
|
|
45
|
+
* the simple names of its dependent base classes and their syntactic
|
|
46
|
+
* qualifiers (e.g., `detail` for `detail::Inner<T>`).
|
|
47
|
+
*
|
|
48
|
+
* Key: filePath
|
|
49
|
+
* Value: Map<className, Map<baseName, qualifier>>
|
|
50
|
+
* qualifier is '' when the base was unqualified.
|
|
51
|
+
*/
|
|
52
|
+
const dependentBasesByFile = new Map();
|
|
53
|
+
/**
|
|
54
|
+
* Class templates with pack-expanded bases (`struct Mix : Bases...`) have
|
|
55
|
+
* an unknown set of base classes. Unqualified member lookup inside the class
|
|
56
|
+
* cannot safely bind to class-owned methods outside the current class.
|
|
57
|
+
*/
|
|
58
|
+
const dependentPackBaseClassesByFile = new Map();
|
|
59
|
+
/**
|
|
60
|
+
* Post-`populateOwners` resolution: per-class-nodeId, the set of
|
|
61
|
+
* dependent-base-class nodeIds. Built by `populateCppDependentBases`
|
|
62
|
+
* from `dependentBasesByFile` + the workspace registry.
|
|
63
|
+
*/
|
|
64
|
+
const dependentBaseNodeIds = new Map();
|
|
65
|
+
/**
|
|
66
|
+
* Record a dependent-base relationship discovered during scope-capture
|
|
67
|
+
* emission. `className` is the simple name of the template class;
|
|
68
|
+
* `baseName` is the simple name of the dependent base class.
|
|
69
|
+
* `qualifier` is the syntactic namespace qualifier (e.g. `detail` for
|
|
70
|
+
* `detail::Inner<T>`), or '' for unqualified bases.
|
|
71
|
+
*
|
|
72
|
+
* The capture-time recorder uses simple names because the registry
|
|
73
|
+
* resolution that maps names → nodeIds runs later (in
|
|
74
|
+
* `populateCppDependentBases`).
|
|
75
|
+
*/
|
|
76
|
+
function markCppDependentBase(filePath, className, baseName, qualifier = '') {
|
|
77
|
+
let perFile = dependentBasesByFile.get(filePath);
|
|
78
|
+
if (perFile === undefined) {
|
|
79
|
+
perFile = new Map();
|
|
80
|
+
dependentBasesByFile.set(filePath, perFile);
|
|
81
|
+
}
|
|
82
|
+
let bases = perFile.get(className);
|
|
83
|
+
if (bases === undefined) {
|
|
84
|
+
bases = new Map();
|
|
85
|
+
perFile.set(className, bases);
|
|
86
|
+
}
|
|
87
|
+
let quals = bases.get(baseName);
|
|
88
|
+
if (quals === undefined) {
|
|
89
|
+
quals = new Set();
|
|
90
|
+
bases.set(baseName, quals);
|
|
91
|
+
}
|
|
92
|
+
quals.add(qualifier);
|
|
93
|
+
}
|
|
94
|
+
function markCppDependentPackBase(filePath, className) {
|
|
95
|
+
let perFile = dependentPackBaseClassesByFile.get(filePath);
|
|
96
|
+
if (perFile === undefined) {
|
|
97
|
+
perFile = new Set();
|
|
98
|
+
dependentPackBaseClassesByFile.set(filePath, perFile);
|
|
99
|
+
}
|
|
100
|
+
perFile.add(className);
|
|
101
|
+
}
|
|
102
|
+
/** Snapshot this file's two-phase-lookup capture state for the side-channel. */
|
|
103
|
+
function collectCppTwoPhaseSideChannel(filePath) {
|
|
104
|
+
const perFile = dependentBasesByFile.get(filePath);
|
|
105
|
+
const dependentBases = [];
|
|
106
|
+
if (perFile !== undefined) {
|
|
107
|
+
for (const [className, bases] of perFile) {
|
|
108
|
+
const baseEntries = [];
|
|
109
|
+
for (const [baseName, quals] of bases) {
|
|
110
|
+
baseEntries.push([baseName, [...quals]]);
|
|
111
|
+
}
|
|
112
|
+
dependentBases.push([className, baseEntries]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const pack = dependentPackBaseClassesByFile.get(filePath);
|
|
116
|
+
return {
|
|
117
|
+
dependentBases,
|
|
118
|
+
dependentPackBaseClasses: pack === undefined ? [] : [...pack],
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/** Restore this file's two-phase-lookup capture state from the side-channel. */
|
|
122
|
+
function applyCppTwoPhaseSideChannel(filePath, data) {
|
|
123
|
+
for (const [className, baseEntries] of data.dependentBases) {
|
|
124
|
+
for (const [baseName, quals] of baseEntries) {
|
|
125
|
+
for (const qualifier of quals) {
|
|
126
|
+
markCppDependentBase(filePath, className, baseName, qualifier);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
for (const className of data.dependentPackBaseClasses) {
|
|
131
|
+
markCppDependentPackBase(filePath, className);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** Clear two-phase-lookup state. Called from `clearFileLocalNames`. */
|
|
135
|
+
function clearCppDependentBases() {
|
|
136
|
+
dependentBasesByFile.clear();
|
|
137
|
+
dependentPackBaseClassesByFile.clear();
|
|
138
|
+
dependentBaseNodeIds.clear();
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Resolve recorded dependent-base simple names to class nodeIds using a
|
|
142
|
+
* workspace-wide index. Run as `populateWorkspaceOwners` after every
|
|
143
|
+
* file has had `populateOwners` applied, so class defs from ALL files
|
|
144
|
+
* are reachable.
|
|
145
|
+
*
|
|
146
|
+
* Disambiguation strategy (multiple classes sharing a simple name):
|
|
147
|
+
* 1. Prefer the candidate whose qualified-name namespace prefix matches
|
|
148
|
+
* the deriving class's namespace prefix (same-namespace bias).
|
|
149
|
+
* 2. When a syntactic qualifier is available (`detail` in
|
|
150
|
+
* `detail::Inner<T>`), target the exact namespace derived from it.
|
|
151
|
+
* 3. Fall back to accepting a unique simple-name match.
|
|
152
|
+
* 4. Skip when multiple candidates exist and no namespace match is
|
|
153
|
+
* found (conservative: avoids false associations).
|
|
154
|
+
*/
|
|
155
|
+
function populateCppDependentBases(parsedFiles) {
|
|
156
|
+
if (dependentBasesByFile.size === 0 && dependentPackBaseClassesByFile.size === 0)
|
|
157
|
+
return;
|
|
158
|
+
// Build workspace-wide index: simpleName → {nodeId, nsPrefix}[]
|
|
159
|
+
// nsPrefix is the dot-joined namespace path (qualifiedName without the
|
|
160
|
+
// last segment). Classes at global scope have nsPrefix = ''.
|
|
161
|
+
// Dedup by nodeId, keeping the LAST occurrence: parsed.localDefs may
|
|
162
|
+
// list the same class def multiple times — the scope-extractor creates
|
|
163
|
+
// a def with simple-name qualifiedName first, then the class extractor
|
|
164
|
+
// replaces it with the correct fully-qualified qualifiedName. Keeping
|
|
165
|
+
// the later entry ensures we capture the full namespace path.
|
|
166
|
+
const classesBySimpleName = new Map();
|
|
167
|
+
const entryByNodeId = new Map();
|
|
168
|
+
for (const parsed of parsedFiles) {
|
|
169
|
+
for (const def of parsed.localDefs) {
|
|
170
|
+
if (def.type !== 'Class' && def.type !== 'Struct' && def.type !== 'Interface')
|
|
171
|
+
continue;
|
|
172
|
+
const qn = def.qualifiedName ?? '';
|
|
173
|
+
const lastDot = qn.lastIndexOf('.');
|
|
174
|
+
const simple = lastDot >= 0 ? qn.slice(lastDot + 1) : qn;
|
|
175
|
+
if (simple === '')
|
|
176
|
+
continue;
|
|
177
|
+
const nsPrefix = lastDot >= 0 ? qn.slice(0, lastDot) : '';
|
|
178
|
+
entryByNodeId.set(def.nodeId, { nodeId: def.nodeId, nsPrefix, simple });
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
for (const entry of entryByNodeId.values()) {
|
|
182
|
+
let entries = classesBySimpleName.get(entry.simple);
|
|
183
|
+
if (entries === undefined) {
|
|
184
|
+
entries = [];
|
|
185
|
+
classesBySimpleName.set(entry.simple, entries);
|
|
186
|
+
}
|
|
187
|
+
entries.push({ nodeId: entry.nodeId, nsPrefix: entry.nsPrefix });
|
|
188
|
+
}
|
|
189
|
+
// Build a filePath → ParsedFile lookup for fast per-file access.
|
|
190
|
+
const parsedByFile = new Map();
|
|
191
|
+
for (const parsed of parsedFiles)
|
|
192
|
+
parsedByFile.set(parsed.filePath, parsed);
|
|
193
|
+
for (const [filePath, perFile] of dependentBasesByFile) {
|
|
194
|
+
const parsed = parsedByFile.get(filePath);
|
|
195
|
+
if (parsed === undefined)
|
|
196
|
+
continue;
|
|
197
|
+
// Build a simple-name → {nodeId, nsPrefix} map for THIS file's
|
|
198
|
+
// class-like defs so we can identify each template class precisely
|
|
199
|
+
// (avoids cross-file name collisions for the deriving class itself).
|
|
200
|
+
const localClassByName = new Map();
|
|
201
|
+
for (const def of parsed.localDefs) {
|
|
202
|
+
if (def.type !== 'Class' && def.type !== 'Struct' && def.type !== 'Interface')
|
|
203
|
+
continue;
|
|
204
|
+
const qn = def.qualifiedName ?? '';
|
|
205
|
+
const lastDot = qn.lastIndexOf('.');
|
|
206
|
+
const simple = lastDot >= 0 ? qn.slice(lastDot + 1) : qn;
|
|
207
|
+
if (simple === '')
|
|
208
|
+
continue;
|
|
209
|
+
const nsPrefix = lastDot >= 0 ? qn.slice(0, lastDot) : '';
|
|
210
|
+
localClassByName.set(simple, { nodeId: def.nodeId, nsPrefix });
|
|
211
|
+
}
|
|
212
|
+
const packBaseClasses = dependentPackBaseClassesByFile.get(filePath);
|
|
213
|
+
if (packBaseClasses !== undefined) {
|
|
214
|
+
for (const className of packBaseClasses) {
|
|
215
|
+
const classEntry = localClassByName.get(className);
|
|
216
|
+
if (classEntry !== undefined) {
|
|
217
|
+
dependentBaseNodeIds.set(classEntry.nodeId, new Set(['*pack-expansion*']));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// V3: qualifier-based exact targeting. When the base specifier carries
|
|
222
|
+
// a syntactic qualifier (e.g., `detail` in `detail::Inner<T>`), compute
|
|
223
|
+
// the expected namespace prefix and use exact (===) match. Falls back to
|
|
224
|
+
// the V2 prefix-contains heuristic when the qualifier isn't available or
|
|
225
|
+
// the exact match fails (absolute qualifier edge cases like `::std`).
|
|
226
|
+
for (const [className, baseEntries] of perFile) {
|
|
227
|
+
const classEntry = localClassByName.get(className);
|
|
228
|
+
if (classEntry === undefined)
|
|
229
|
+
continue;
|
|
230
|
+
let bases = dependentBaseNodeIds.get(classEntry.nodeId);
|
|
231
|
+
if (bases === undefined) {
|
|
232
|
+
bases = new Set();
|
|
233
|
+
dependentBaseNodeIds.set(classEntry.nodeId, bases);
|
|
234
|
+
}
|
|
235
|
+
for (const [baseName, qualsSet] of baseEntries) {
|
|
236
|
+
for (const baseQualifier of qualsSet) {
|
|
237
|
+
const candidates = classesBySimpleName.get(baseName);
|
|
238
|
+
if (candidates === undefined || candidates.length === 0)
|
|
239
|
+
continue;
|
|
240
|
+
// Compute the expected namespace prefix from the qualifier.
|
|
241
|
+
// Relative qualifier (e.g. `inner`): prepend deriving class's prefix.
|
|
242
|
+
// Absolute qualifiers (`::std`, `ns::other`) will fail the relative
|
|
243
|
+
// lookup and fall through to the prefix-heuristic below.
|
|
244
|
+
const normalizedQualifier = baseQualifier.replace(/::/g, '.');
|
|
245
|
+
const expectedNs = baseQualifier && classEntry.nsPrefix
|
|
246
|
+
? classEntry.nsPrefix + '.' + normalizedQualifier
|
|
247
|
+
: normalizedQualifier;
|
|
248
|
+
if (candidates.length === 1) {
|
|
249
|
+
// Unqualified base: accept unique match (pre-existing behavior).
|
|
250
|
+
if (!baseQualifier) {
|
|
251
|
+
bases.add(candidates[0].nodeId);
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
// Qualified base: verify namespace before accepting.
|
|
255
|
+
if (candidates[0].nsPrefix === expectedNs ||
|
|
256
|
+
candidates[0].nsPrefix === normalizedQualifier) {
|
|
257
|
+
bases.add(candidates[0].nodeId);
|
|
258
|
+
}
|
|
259
|
+
// else: suppress — qualifier doesn't match. #1564 policy.
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
// V3: qualifier-based exact targeting. When the base specifier
|
|
263
|
+
// carries a syntactic qualifier, compute the expected namespace
|
|
264
|
+
// prefix and attempt an exact (===) match using the deduplicated
|
|
265
|
+
// nsPrefix. Dedup by nodeId removes broken entries from the
|
|
266
|
+
// classesBySimpleName index, making the surviving nsPrefix reliable.
|
|
267
|
+
if (baseQualifier) {
|
|
268
|
+
const qualifierMatch = candidates.find((c) => c.nsPrefix === expectedNs || c.nsPrefix === normalizedQualifier);
|
|
269
|
+
if (qualifierMatch !== undefined) {
|
|
270
|
+
bases.add(qualifierMatch.nodeId);
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
continue; // qualifier was explicit but no match — suppress, don't fall through to V2
|
|
274
|
+
}
|
|
275
|
+
// V2 fallback: filter by prefix-match capped at one level deeper,
|
|
276
|
+
// then accept only if exactly one candidate survives.
|
|
277
|
+
const nsMatches = candidates.filter((c) => {
|
|
278
|
+
if (c.nsPrefix === classEntry.nsPrefix)
|
|
279
|
+
return true;
|
|
280
|
+
if (classEntry.nsPrefix === '') {
|
|
281
|
+
return c.nsPrefix !== '' && !c.nsPrefix.includes('.');
|
|
282
|
+
}
|
|
283
|
+
if (c.nsPrefix.startsWith(classEntry.nsPrefix + '.')) {
|
|
284
|
+
const suffix = c.nsPrefix.slice(classEntry.nsPrefix.length + 1);
|
|
285
|
+
return !suffix.includes('.');
|
|
286
|
+
}
|
|
287
|
+
return false;
|
|
288
|
+
});
|
|
289
|
+
const nsMatch = nsMatches.length === 1 ? nsMatches[0] : undefined;
|
|
290
|
+
if (nsMatch !== undefined) {
|
|
291
|
+
bases.add(nsMatch.nodeId);
|
|
292
|
+
}
|
|
293
|
+
// else: ambiguous (multiple candidates, no namespace match) → skip.
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Two-phase lookup predicate: is the candidate def a member of a
|
|
301
|
+
* dependent base of the caller's enclosing template class?
|
|
302
|
+
*
|
|
303
|
+
* Used as an additional reject-filter in `pickUniqueGlobalCallable` and
|
|
304
|
+
* the receiver-bound member chain walk. ONLY apply for unqualified
|
|
305
|
+
* call forms — `this->name` and `Base<T>::name` are dependent lookup
|
|
306
|
+
* forms that the standard allows.
|
|
307
|
+
*
|
|
308
|
+
* Conservative bias: when the caller's enclosing class can't be
|
|
309
|
+
* identified, return `false` (let normal resolution proceed). Over-
|
|
310
|
+
* rejection is acceptable for the template case because the standard
|
|
311
|
+
* itself requires `this->` or qualified forms for dependent base
|
|
312
|
+
* access; missing edges here match the compiler's diagnostic shape.
|
|
313
|
+
*/
|
|
314
|
+
function isCppDependentBaseMember(callerScopeId, candidateDef, scopes) {
|
|
315
|
+
const enclosing = (0, walkers_js_1.findEnclosingClassDef)(callerScopeId, scopes);
|
|
316
|
+
if (enclosing === undefined)
|
|
317
|
+
return false;
|
|
318
|
+
const bases = dependentBaseNodeIds.get(enclosing.nodeId);
|
|
319
|
+
if (bases === undefined)
|
|
320
|
+
return false;
|
|
321
|
+
if (bases.has('*pack-expansion*')) {
|
|
322
|
+
if (candidateDef.ownerId !== undefined)
|
|
323
|
+
return candidateDef.ownerId !== enclosing.nodeId;
|
|
324
|
+
if (candidateDef.type !== 'Method' && candidateDef.type !== 'Constructor')
|
|
325
|
+
return false;
|
|
326
|
+
const ownerName = getQualifiedParentName(candidateDef.qualifiedName);
|
|
327
|
+
const enclosingName = getQualifiedSimpleName(enclosing.qualifiedName);
|
|
328
|
+
return ownerName !== undefined && ownerName !== enclosingName;
|
|
329
|
+
}
|
|
330
|
+
if (candidateDef.ownerId === undefined)
|
|
331
|
+
return false;
|
|
332
|
+
return bases.has(candidateDef.ownerId);
|
|
333
|
+
}
|
|
334
|
+
function getQualifiedParentName(qualifiedName) {
|
|
335
|
+
if (qualifiedName === undefined)
|
|
336
|
+
return undefined;
|
|
337
|
+
const lastDot = qualifiedName.lastIndexOf('.');
|
|
338
|
+
if (lastDot < 0)
|
|
339
|
+
return undefined;
|
|
340
|
+
const parent = qualifiedName.slice(0, lastDot);
|
|
341
|
+
return getQualifiedSimpleName(parent);
|
|
342
|
+
}
|
|
343
|
+
function getQualifiedSimpleName(qualifiedName) {
|
|
344
|
+
if (qualifiedName === undefined)
|
|
345
|
+
return undefined;
|
|
346
|
+
const lastDot = qualifiedName.lastIndexOf('.');
|
|
347
|
+
return lastDot >= 0 ? qualifiedName.slice(lastDot + 1) : qualifiedName;
|
|
348
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Coarse-grained type classifier for C++ constraint evaluation
|
|
4
|
+
* (`<https://en.cppreference.com/w/cpp/types/is_integral>`,
|
|
5
|
+
* `<https://en.cppreference.com/w/cpp/types/is_floating_point>`).
|
|
6
|
+
*
|
|
7
|
+
* Maps a normalized type token (as produced by `normalizeCppParamType` /
|
|
8
|
+
* the call-site inference in `captures.ts`) to one of the categories
|
|
9
|
+
* the `<type_traits>` predicate registry uses for SFINAE filtering.
|
|
10
|
+
*
|
|
11
|
+
* `argumentTypes` remain normalized for overload narrowing, while
|
|
12
|
+
* constraint predicates that need cv/ref/pointer shape read the parallel
|
|
13
|
+
* `argumentTypeClasses` sidecar. Unknown shapes must stay unknown rather
|
|
14
|
+
* than being guessed as incompatible.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.classifyType = classifyType;
|
|
18
|
+
/**
|
|
19
|
+
* Classify a normalized C++ type token. The mapping mirrors the literal-
|
|
20
|
+
* inference table in `captures.ts:inferCppLiteralType` plus the std::
|
|
21
|
+
* normalization in `arity-metadata.ts:normalizeCppParamType`.
|
|
22
|
+
*
|
|
23
|
+
* Caller note: token should be normalized for overload matching. Enum
|
|
24
|
+
* tokens produced by the C++ adapter use the internal `enum:<Name>`
|
|
25
|
+
* prefix so `is_enum_v` does not have to guess that every user token is
|
|
26
|
+
* class-like.
|
|
27
|
+
*/
|
|
28
|
+
function classifyType(token) {
|
|
29
|
+
if (token.length === 0)
|
|
30
|
+
return 'unknown';
|
|
31
|
+
if (token.startsWith('enum:'))
|
|
32
|
+
return 'enum';
|
|
33
|
+
switch (token) {
|
|
34
|
+
case 'void':
|
|
35
|
+
return 'void';
|
|
36
|
+
case 'int':
|
|
37
|
+
return 'integral';
|
|
38
|
+
case 'double':
|
|
39
|
+
case 'float':
|
|
40
|
+
return 'floating';
|
|
41
|
+
case 'bool':
|
|
42
|
+
return 'bool';
|
|
43
|
+
case 'char':
|
|
44
|
+
return 'char';
|
|
45
|
+
case 'string':
|
|
46
|
+
return 'string';
|
|
47
|
+
case 'null':
|
|
48
|
+
return 'null';
|
|
49
|
+
default:
|
|
50
|
+
// After normalization, anything that isn't a recognized primitive
|
|
51
|
+
// is assumed to be a class-like type. The Tier-A predicate registry
|
|
52
|
+
// doesn't introspect class types — `is_integral_v` etc. simply
|
|
53
|
+
// returns `false` for `'class'`, matching ISO behavior.
|
|
54
|
+
return 'class';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearCppUserDefinedConversions = clearCppUserDefinedConversions;
|
|
4
|
+
exports.hasCppUserDefinedConversion = hasCppUserDefinedConversion;
|
|
5
|
+
exports.populateCppUserDefinedConversions = populateCppUserDefinedConversions;
|
|
6
|
+
exports.registerCppUserDefinedConversion = registerCppUserDefinedConversion;
|
|
7
|
+
const arity_metadata_js_1 = require("./arity-metadata.js");
|
|
8
|
+
const userDefinedConversions = new Set();
|
|
9
|
+
const pendingUserDefinedConversions = [];
|
|
10
|
+
const classIdentitiesBySimpleName = new Map();
|
|
11
|
+
function clearCppUserDefinedConversions() {
|
|
12
|
+
userDefinedConversions.clear();
|
|
13
|
+
pendingUserDefinedConversions.length = 0;
|
|
14
|
+
classIdentitiesBySimpleName.clear();
|
|
15
|
+
}
|
|
16
|
+
function hasCppUserDefinedConversion(argType, paramType) {
|
|
17
|
+
return userDefinedConversions.has(conversionKey(argType, paramType));
|
|
18
|
+
}
|
|
19
|
+
function populateCppUserDefinedConversions(parsed) {
|
|
20
|
+
const scopesById = new Map();
|
|
21
|
+
for (const scope of parsed.scopes)
|
|
22
|
+
scopesById.set(scope.id, scope);
|
|
23
|
+
for (const classScope of parsed.scopes) {
|
|
24
|
+
if (classScope.kind !== 'Class')
|
|
25
|
+
continue;
|
|
26
|
+
const classDef = classScope.ownedDefs.find(isClassLike);
|
|
27
|
+
if (classDef !== undefined)
|
|
28
|
+
recordClassIdentity(classDef);
|
|
29
|
+
}
|
|
30
|
+
for (const classScope of parsed.scopes) {
|
|
31
|
+
if (classScope.kind !== 'Class')
|
|
32
|
+
continue;
|
|
33
|
+
const classDef = classScope.ownedDefs.find(isClassLike);
|
|
34
|
+
if (classDef === undefined)
|
|
35
|
+
continue;
|
|
36
|
+
const className = normalizedSimpleName(classDef);
|
|
37
|
+
if (className === '')
|
|
38
|
+
continue;
|
|
39
|
+
const methodDefs = collectClassMethodDefs(classScope.id, parsed, scopesById);
|
|
40
|
+
for (const def of methodDefs) {
|
|
41
|
+
const simpleName = simpleNameOf(def);
|
|
42
|
+
if (simpleName === className && def.parameterTypes?.length === 1) {
|
|
43
|
+
if (def.isExplicit === true)
|
|
44
|
+
continue;
|
|
45
|
+
registerPendingCppUserDefinedConversion(def.parameterTypes[0], className, className);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
rebuildCppUserDefinedConversions();
|
|
50
|
+
}
|
|
51
|
+
function registerCppUserDefinedConversion(argType, paramType) {
|
|
52
|
+
if (argType === '' || paramType === '')
|
|
53
|
+
return;
|
|
54
|
+
if (argType === paramType)
|
|
55
|
+
return;
|
|
56
|
+
userDefinedConversions.add(conversionKey(argType, paramType));
|
|
57
|
+
}
|
|
58
|
+
function collectClassMethodDefs(classScopeId, parsed, scopesById) {
|
|
59
|
+
const methods = [];
|
|
60
|
+
const classScope = scopesById.get(classScopeId);
|
|
61
|
+
if (classScope === undefined)
|
|
62
|
+
return methods;
|
|
63
|
+
for (const def of classScope.ownedDefs) {
|
|
64
|
+
if (isCallableMember(def))
|
|
65
|
+
methods.push(def);
|
|
66
|
+
}
|
|
67
|
+
for (const scope of parsed.scopes) {
|
|
68
|
+
if (scope.parent !== classScopeId)
|
|
69
|
+
continue;
|
|
70
|
+
if (scope.kind === 'Class')
|
|
71
|
+
continue;
|
|
72
|
+
for (const def of scope.ownedDefs) {
|
|
73
|
+
if (isCallableMember(def))
|
|
74
|
+
methods.push(def);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return methods;
|
|
78
|
+
}
|
|
79
|
+
function conversionKey(argType, paramType) {
|
|
80
|
+
return `${argType}\0${paramType}`;
|
|
81
|
+
}
|
|
82
|
+
function registerPendingCppUserDefinedConversion(argType, paramType, ownerClassName) {
|
|
83
|
+
if (argType === '' || paramType === '')
|
|
84
|
+
return;
|
|
85
|
+
if (argType === paramType)
|
|
86
|
+
return;
|
|
87
|
+
pendingUserDefinedConversions.push({ argType, paramType, ownerClassName });
|
|
88
|
+
}
|
|
89
|
+
function rebuildCppUserDefinedConversions() {
|
|
90
|
+
userDefinedConversions.clear();
|
|
91
|
+
for (const conversion of pendingUserDefinedConversions) {
|
|
92
|
+
if (isAmbiguousClassName(conversion.ownerClassName))
|
|
93
|
+
continue;
|
|
94
|
+
userDefinedConversions.add(conversionKey(conversion.argType, conversion.paramType));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function recordClassIdentity(def) {
|
|
98
|
+
const simpleName = normalizedSimpleName(def);
|
|
99
|
+
if (simpleName === '')
|
|
100
|
+
return;
|
|
101
|
+
const identities = classIdentitiesBySimpleName.get(simpleName) ?? new Set();
|
|
102
|
+
identities.add(normalizedQualifiedClassName(def));
|
|
103
|
+
classIdentitiesBySimpleName.set(simpleName, identities);
|
|
104
|
+
}
|
|
105
|
+
function isAmbiguousClassName(simpleName) {
|
|
106
|
+
return (classIdentitiesBySimpleName.get(simpleName)?.size ?? 0) > 1;
|
|
107
|
+
}
|
|
108
|
+
function normalizedQualifiedClassName(def) {
|
|
109
|
+
const qualifiedName = def.qualifiedName ?? simpleNameOf(def);
|
|
110
|
+
if (qualifiedName === '' || !qualifiedName.includes('.'))
|
|
111
|
+
return `${def.filePath}:${def.nodeId}`;
|
|
112
|
+
return qualifiedName
|
|
113
|
+
.split('.')
|
|
114
|
+
.map((part) => (0, arity_metadata_js_1.normalizeCppParamType)(part))
|
|
115
|
+
.join('.');
|
|
116
|
+
}
|
|
117
|
+
function normalizedSimpleName(def) {
|
|
118
|
+
return (0, arity_metadata_js_1.normalizeCppParamType)(simpleNameOf(def));
|
|
119
|
+
}
|
|
120
|
+
function simpleNameOf(def) {
|
|
121
|
+
return def.qualifiedName?.split('.').pop() ?? def.qualifiedName ?? '';
|
|
122
|
+
}
|
|
123
|
+
function isClassLike(def) {
|
|
124
|
+
return def.type === 'Class' || def.type === 'Struct' || def.type === 'Interface';
|
|
125
|
+
}
|
|
126
|
+
function isCallableMember(def) {
|
|
127
|
+
return def.type === 'Method' || def.type === 'Constructor';
|
|
128
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unwrapCsharpElementType = unwrapCsharpElementType;
|
|
4
|
+
const shared_js_1 = require("../../type-extractors/shared.js");
|
|
5
|
+
/**
|
|
6
|
+
* C# container element-type unwrapping.
|
|
7
|
+
*
|
|
8
|
+
* When the compound-receiver resolver encounters a trailing
|
|
9
|
+
* `.Values` / `.Keys` on a dotted member-access chain, it calls the
|
|
10
|
+
* provider's `elementTypeOf` hook to find the element
|
|
11
|
+
* type. This module supplies the C# implementation — recognizing
|
|
12
|
+
* Dictionary-family generics and returning the value or key type.
|
|
13
|
+
*
|
|
14
|
+
* Other languages (Python, Java, TypeScript) use method-call syntax for the
|
|
15
|
+
* same access (`.values()` / `.keys()`), which the compound-receiver's
|
|
16
|
+
* call-expression branch already handles; they answer only the `index` route.
|
|
17
|
+
*/
|
|
18
|
+
/** Extract (K, V) from `Dictionary<K, V>` / `IDictionary<K, V>` /
|
|
19
|
+
* `IReadOnlyDictionary<K, V>` / `SortedDictionary<K, V>` /
|
|
20
|
+
* `ConcurrentDictionary<K, V>` / `ImmutableDictionary<K, V>`.
|
|
21
|
+
* Returns undefined if the type name doesn't match or the argument
|
|
22
|
+
* list isn't exactly two top-level args. */
|
|
23
|
+
function extractDictionaryArgs(rawName) {
|
|
24
|
+
const match = rawName.match(/^(?:[A-Za-z_][A-Za-z0-9_.]*\.)?(?:Dictionary|IDictionary|IReadOnlyDictionary|SortedDictionary|ConcurrentDictionary|ImmutableDictionary)<(.+)>$/);
|
|
25
|
+
if (match === null)
|
|
26
|
+
return undefined;
|
|
27
|
+
const inner = match[1];
|
|
28
|
+
// Split on the top-level comma (tolerate nested `<...>`).
|
|
29
|
+
let depth = 0;
|
|
30
|
+
let commaIdx = -1;
|
|
31
|
+
for (let i = 0; i < inner.length; i++) {
|
|
32
|
+
const ch = inner[i];
|
|
33
|
+
if (ch === '<')
|
|
34
|
+
depth++;
|
|
35
|
+
else if (ch === '>')
|
|
36
|
+
depth--;
|
|
37
|
+
else if (ch === ',' && depth === 0) {
|
|
38
|
+
commaIdx = i;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (commaIdx === -1)
|
|
43
|
+
return undefined;
|
|
44
|
+
return { key: inner.slice(0, commaIdx).trim(), value: inner.slice(commaIdx + 1).trim() };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolve `data.Values` / `data.Keys` on a Dictionary-like receiver
|
|
48
|
+
* to its element-type simple name. Returns `undefined` for any
|
|
49
|
+
* receiver / accessor combination we don't recognize, letting the
|
|
50
|
+
* compound-receiver pass fall through to the regular field walk.
|
|
51
|
+
*/
|
|
52
|
+
function unwrapCsharpElementType(containerType, via) {
|
|
53
|
+
const args = extractDictionaryArgs(containerType);
|
|
54
|
+
// Subscript on a dictionary yields the VALUE type — `dict["k"]` is a V, never
|
|
55
|
+
// a K. Previously this route returned nothing at all for C#, because the
|
|
56
|
+
// dictionary parse below was reachable only from the accessor hook.
|
|
57
|
+
if (via.kind === 'index') {
|
|
58
|
+
if (args !== undefined)
|
|
59
|
+
return args.value;
|
|
60
|
+
return (0, shared_js_1.extractElementTypeFromString)(containerType);
|
|
61
|
+
}
|
|
62
|
+
if (via.name !== 'Values' && via.name !== 'Keys')
|
|
63
|
+
return undefined;
|
|
64
|
+
if (args === undefined)
|
|
65
|
+
return undefined;
|
|
66
|
+
return via.name === 'Values' ? args.value : args.key;
|
|
67
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Extract C# arity metadata from a method-like tree-sitter node —
|
|
4
|
+
* `method_declaration`, `constructor_declaration`, `destructor_declaration`,
|
|
5
|
+
* `operator_declaration`, `conversion_operator_declaration`, or
|
|
6
|
+
* `local_function_statement`.
|
|
7
|
+
*
|
|
8
|
+
* Reuses `csharpMethodConfig.extractParameters` so scope-extracted defs
|
|
9
|
+
* carry the same arity semantics as the legacy parse-worker path:
|
|
10
|
+
* - `params` variadic collapses `parameterCount` to `undefined`,
|
|
11
|
+
* which `csharpArityCompatibility` then treats as "max unknown" —
|
|
12
|
+
* the candidate stays eligible at `argCount >= required`.
|
|
13
|
+
* - Defaulted parameters (`= expr`) contribute to `optionalCount`;
|
|
14
|
+
* `requiredParameterCount = total − optionalCount`.
|
|
15
|
+
* - `parameterTypes` collects declared type names (with `ref`/`out`/
|
|
16
|
+
* `in` prefix) for overload narrowing; a literal `'params'` marker
|
|
17
|
+
* is appended for variadic methods so `csharpArityCompatibility`
|
|
18
|
+
* can detect them without re-reading the AST.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.computeCsharpArityMetadata = computeCsharpArityMetadata;
|
|
22
|
+
const csharp_js_1 = require("../../method-extractors/configs/csharp.js");
|
|
23
|
+
function computeCsharpArityMetadata(fnNode) {
|
|
24
|
+
const params = csharp_js_1.csharpMethodConfig.extractParameters?.(fnNode) ?? [];
|
|
25
|
+
let hasVariadic = false;
|
|
26
|
+
let optionalCount = 0;
|
|
27
|
+
const types = [];
|
|
28
|
+
for (const p of params) {
|
|
29
|
+
if (p.isVariadic)
|
|
30
|
+
hasVariadic = true;
|
|
31
|
+
else if (p.isOptional)
|
|
32
|
+
optionalCount++;
|
|
33
|
+
if (p.type !== null)
|
|
34
|
+
types.push(p.type);
|
|
35
|
+
}
|
|
36
|
+
if (hasVariadic)
|
|
37
|
+
types.push('params');
|
|
38
|
+
const total = params.length;
|
|
39
|
+
// `params int[] args` declares one formal param but accepts any arg
|
|
40
|
+
// count ≥ required — mirror Python's treatment of `*args` and leave
|
|
41
|
+
// `parameterCount` undefined so the registry treats max as unknown.
|
|
42
|
+
const parameterCount = hasVariadic ? undefined : total;
|
|
43
|
+
const requiredParameterCount = hasVariadic ? undefined : total - optionalCount;
|
|
44
|
+
return {
|
|
45
|
+
parameterCount,
|
|
46
|
+
requiredParameterCount,
|
|
47
|
+
parameterTypes: types.length > 0 ? types : undefined,
|
|
48
|
+
};
|
|
49
|
+
}
|