@lzehrung/codegraph 2.3.30 → 2.4.0
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 +30 -137
- package/codegraph-skill/codegraph/SKILL.md +5 -3
- package/dist/agent/artifact.d.ts +2 -0
- package/dist/agent/artifact.d.ts.map +1 -1
- package/dist/agent/artifact.js.map +1 -1
- package/dist/agent/search.d.ts.map +1 -1
- package/dist/agent/search.js +3 -0
- package/dist/agent/search.js.map +1 -1
- package/dist/agent/session.d.ts +3 -0
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +10 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/bin/cli.js +42229 -28876
- package/dist/bin/query-index-worker.js +73 -11
- package/dist/cli/affected.d.ts.map +1 -1
- package/dist/cli/affected.js +4 -1
- package/dist/cli/affected.js.map +1 -1
- package/dist/cli/command-catalog.js +1 -1
- package/dist/cli/command-catalog.js.map +1 -1
- package/dist/cli/graph-queries.d.ts.map +1 -1
- package/dist/cli/graph-queries.js +27 -1
- package/dist/cli/graph-queries.js.map +1 -1
- package/dist/cli/help.d.ts +2 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +4 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/options.js +2 -2
- package/dist/cli/options.js.map +1 -1
- package/dist/drift/artifact.d.ts.map +1 -1
- package/dist/drift/artifact.js +15 -18
- package/dist/drift/artifact.js.map +1 -1
- package/dist/drift/compare.js +1 -1
- package/dist/drift/compare.js.map +1 -1
- package/dist/drift/snapshot.d.ts.map +1 -1
- package/dist/drift/snapshot.js +5 -6
- package/dist/drift/snapshot.js.map +1 -1
- package/dist/drift/types.d.ts +2 -0
- package/dist/drift/types.d.ts.map +1 -1
- package/dist/drift/types.js.map +1 -1
- package/dist/graph-builder.d.ts.map +1 -1
- package/dist/graph-builder.js +4 -6
- package/dist/graph-builder.js.map +1 -1
- package/dist/graph-edge-collector.d.ts +3 -0
- package/dist/graph-edge-collector.d.ts.map +1 -1
- package/dist/graph-edge-collector.js +8 -5
- package/dist/graph-edge-collector.js.map +1 -1
- package/dist/graphs/angularjs.d.ts.map +1 -1
- package/dist/graphs/angularjs.js +2 -1
- package/dist/graphs/angularjs.js.map +1 -1
- package/dist/graphs/edge-resolution.d.ts +4 -1
- package/dist/graphs/edge-resolution.d.ts.map +1 -1
- package/dist/graphs/edge-resolution.js +26 -2
- package/dist/graphs/edge-resolution.js.map +1 -1
- package/dist/graphs/specifiers.d.ts.map +1 -1
- package/dist/graphs/specifiers.js +6 -2
- package/dist/graphs/specifiers.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
- package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
- package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +51 -8
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.js +823 -132
- package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.js +139 -7
- package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +128 -22
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js +872 -125
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed.js +434 -40
- package/dist/graphs/symbol-graph-detailed.js.map +1 -1
- package/dist/graphs/symbol-graph.d.ts +2 -0
- package/dist/graphs/symbol-graph.d.ts.map +1 -1
- package/dist/graphs/symbol-graph.js +34 -16
- package/dist/graphs/symbol-graph.js.map +1 -1
- package/dist/impact/call-compatibility/providers/index.d.ts +12 -0
- package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
- package/dist/impact/call-compatibility/providers/index.js +16 -22
- package/dist/impact/call-compatibility/providers/index.js.map +1 -1
- package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
- package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility/types.d.ts +6 -0
- package/dist/impact/call-compatibility/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility.d.ts.map +1 -1
- package/dist/impact/call-compatibility.js +316 -552
- package/dist/impact/call-compatibility.js.map +1 -1
- package/dist/impact/map.js +1 -0
- package/dist/impact/map.js.map +1 -1
- package/dist/impact/member-resolution-coverage.d.ts.map +1 -1
- package/dist/impact/member-resolution-coverage.js +1 -1
- package/dist/impact/member-resolution-coverage.js.map +1 -1
- package/dist/impact/reference-cache.d.ts.map +1 -1
- package/dist/impact/reference-cache.js +2 -2
- package/dist/impact/reference-cache.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/ambiguous-resolution.d.ts +11 -0
- package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
- package/dist/indexer/ambiguous-resolution.js +19 -0
- package/dist/indexer/ambiguous-resolution.js.map +1 -0
- package/dist/indexer/build-cache/module-cache.d.ts +38 -0
- package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache/module-cache.js +151 -9
- package/dist/indexer/build-cache/module-cache.js.map +1 -1
- package/dist/indexer/build-cache/options.d.ts +16 -43
- package/dist/indexer/build-cache/options.d.ts.map +1 -1
- package/dist/indexer/build-cache/options.js +16 -43
- package/dist/indexer/build-cache/options.js.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts +1 -0
- package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.js +117 -24
- package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.js +32 -2
- package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
- package/dist/indexer/build-cache.d.ts +1 -1
- package/dist/indexer/build-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache.js +1 -1
- package/dist/indexer/build-cache.js.map +1 -1
- package/dist/indexer/build-index.d.ts.map +1 -1
- package/dist/indexer/build-index.js +593 -22
- package/dist/indexer/build-index.js.map +1 -1
- package/dist/indexer/call-hierarchy.js +1 -1
- package/dist/indexer/call-hierarchy.js.map +1 -1
- package/dist/indexer/compilation-units.d.ts +101 -0
- package/dist/indexer/compilation-units.d.ts.map +1 -0
- package/dist/indexer/compilation-units.js +605 -0
- package/dist/indexer/compilation-units.js.map +1 -0
- package/dist/indexer/cpp-callables.d.ts +20 -0
- package/dist/indexer/cpp-callables.d.ts.map +1 -0
- package/dist/indexer/cpp-callables.js +554 -0
- package/dist/indexer/cpp-callables.js.map +1 -0
- package/dist/indexer/declaration-visibility.d.ts +36 -2
- package/dist/indexer/declaration-visibility.d.ts.map +1 -1
- package/dist/indexer/declaration-visibility.js +136 -2
- package/dist/indexer/declaration-visibility.js.map +1 -1
- package/dist/indexer/expand-star-imports.d.ts.map +1 -1
- package/dist/indexer/expand-star-imports.js +28 -6
- package/dist/indexer/expand-star-imports.js.map +1 -1
- package/dist/indexer/import-types.d.ts +37 -0
- package/dist/indexer/import-types.d.ts.map +1 -1
- package/dist/indexer/import-types.js +24 -1
- package/dist/indexer/import-types.js.map +1 -1
- package/dist/indexer/imports/binding-ranges.d.ts +1 -1
- package/dist/indexer/imports/binding-ranges.d.ts.map +1 -1
- package/dist/indexer/imports/context.d.ts +11 -1
- package/dist/indexer/imports/context.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.d.ts +75 -0
- package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -0
- package/dist/indexer/imports/import-binding-tables.js +544 -0
- package/dist/indexer/imports/import-binding-tables.js.map +1 -0
- package/dist/indexer/imports/js-text-imports.js +4 -4
- package/dist/indexer/imports/js-text-imports.js.map +1 -1
- package/dist/indexer/imports/language-specific.d.ts +3 -22
- package/dist/indexer/imports/language-specific.d.ts.map +1 -1
- package/dist/indexer/imports/language-specific.js +29 -362
- package/dist/indexer/imports/language-specific.js.map +1 -1
- package/dist/indexer/imports/native-captures.d.ts.map +1 -1
- package/dist/indexer/imports/native-captures.js +18 -6
- package/dist/indexer/imports/native-captures.js.map +1 -1
- package/dist/indexer/imports/python.d.ts +10 -2
- package/dist/indexer/imports/python.d.ts.map +1 -1
- package/dist/indexer/imports/python.js +91 -40
- package/dist/indexer/imports/python.js.map +1 -1
- package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
- package/dist/indexer/imports/text-import-extractors.js +51 -12
- package/dist/indexer/imports/text-import-extractors.js.map +1 -1
- package/dist/indexer/imports.d.ts.map +1 -1
- package/dist/indexer/imports.js +25 -5
- package/dist/indexer/imports.js.map +1 -1
- package/dist/indexer/incremental-plan.d.ts +33 -0
- package/dist/indexer/incremental-plan.d.ts.map +1 -1
- package/dist/indexer/incremental-plan.js +187 -1
- package/dist/indexer/incremental-plan.js.map +1 -1
- package/dist/indexer/locals-and-exports.d.ts +2 -0
- package/dist/indexer/locals-and-exports.d.ts.map +1 -1
- package/dist/indexer/locals-and-exports.js +565 -54
- package/dist/indexer/locals-and-exports.js.map +1 -1
- package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
- package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/c-family.js +117 -0
- package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js +113 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
- package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/index.js +106 -0
- package/dist/indexer/name-lookup-policies/index.js.map +1 -0
- package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/php.js +75 -0
- package/dist/indexer/name-lookup-policies/php.js.map +1 -0
- package/dist/indexer/name-resolution-types.d.ts +99 -0
- package/dist/indexer/name-resolution-types.d.ts.map +1 -0
- package/dist/indexer/name-resolution-types.js +2 -0
- package/dist/indexer/name-resolution-types.js.map +1 -0
- package/dist/indexer/name-resolution.d.ts +52 -0
- package/dist/indexer/name-resolution.d.ts.map +1 -0
- package/dist/indexer/name-resolution.js +189 -0
- package/dist/indexer/name-resolution.js.map +1 -0
- package/dist/indexer/navigation-cpp.d.ts +50 -0
- package/dist/indexer/navigation-cpp.d.ts.map +1 -0
- package/dist/indexer/navigation-cpp.js +654 -0
- package/dist/indexer/navigation-cpp.js.map +1 -0
- package/dist/indexer/navigation-goto.d.ts +107 -4
- package/dist/indexer/navigation-goto.d.ts.map +1 -1
- package/dist/indexer/navigation-goto.js +2075 -137
- package/dist/indexer/navigation-goto.js.map +1 -1
- package/dist/indexer/navigation-local.d.ts +18 -2
- package/dist/indexer/navigation-local.d.ts.map +1 -1
- package/dist/indexer/navigation-local.js +498 -61
- package/dist/indexer/navigation-local.js.map +1 -1
- package/dist/indexer/navigation-php.d.ts +66 -0
- package/dist/indexer/navigation-php.d.ts.map +1 -1
- package/dist/indexer/navigation-php.js +287 -4
- package/dist/indexer/navigation-php.js.map +1 -1
- package/dist/indexer/navigation-references.d.ts +72 -5
- package/dist/indexer/navigation-references.d.ts.map +1 -1
- package/dist/indexer/navigation-references.js +620 -54
- package/dist/indexer/navigation-references.js.map +1 -1
- package/dist/indexer/navigation-resolve.d.ts +33 -2
- package/dist/indexer/navigation-resolve.d.ts.map +1 -1
- package/dist/indexer/navigation-resolve.js +446 -193
- package/dist/indexer/navigation-resolve.js.map +1 -1
- package/dist/indexer/navigation.d.ts +28 -2
- package/dist/indexer/navigation.d.ts.map +1 -1
- package/dist/indexer/navigation.js +1082 -151
- package/dist/indexer/navigation.js.map +1 -1
- package/dist/indexer/php-namespace-symbols.d.ts +66 -0
- package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
- package/dist/indexer/php-namespace-symbols.js +342 -0
- package/dist/indexer/php-namespace-symbols.js.map +1 -0
- package/dist/indexer/reference-context.d.ts +2 -0
- package/dist/indexer/reference-context.d.ts.map +1 -1
- package/dist/indexer/reference-context.js +4 -0
- package/dist/indexer/reference-context.js.map +1 -1
- package/dist/indexer/scope-nodes.d.ts +92 -13
- package/dist/indexer/scope-nodes.d.ts.map +1 -1
- package/dist/indexer/scope-nodes.js +212 -20
- package/dist/indexer/scope-nodes.js.map +1 -1
- package/dist/indexer/scope-types.d.ts +25 -1
- package/dist/indexer/scope-types.d.ts.map +1 -1
- package/dist/indexer/scope.d.ts.map +1 -1
- package/dist/indexer/scope.js +894 -45
- package/dist/indexer/scope.js.map +1 -1
- package/dist/indexer/shared-owner-identity.d.ts +53 -0
- package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
- package/dist/indexer/shared-owner-identity.js +460 -0
- package/dist/indexer/shared-owner-identity.js.map +1 -0
- package/dist/indexer/shared.d.ts +1 -1
- package/dist/indexer/shared.d.ts.map +1 -1
- package/dist/indexer/shared.js +1 -1
- package/dist/indexer/shared.js.map +1 -1
- package/dist/indexer/star-import-precedence.d.ts +114 -0
- package/dist/indexer/star-import-precedence.d.ts.map +1 -0
- package/dist/indexer/star-import-precedence.js +396 -0
- package/dist/indexer/star-import-precedence.js.map +1 -0
- package/dist/indexer/symbols.d.ts +3 -1
- package/dist/indexer/symbols.d.ts.map +1 -1
- package/dist/indexer/symbols.js +58 -18
- package/dist/indexer/symbols.js.map +1 -1
- package/dist/indexer/ts-callables.d.ts +51 -0
- package/dist/indexer/ts-callables.d.ts.map +1 -0
- package/dist/indexer/ts-callables.js +264 -0
- package/dist/indexer/ts-callables.js.map +1 -0
- package/dist/indexer/types.d.ts +23 -1
- package/dist/indexer/types.d.ts.map +1 -1
- package/dist/indexer/unused-exports.d.ts +13 -0
- package/dist/indexer/unused-exports.d.ts.map +1 -0
- package/dist/indexer/unused-exports.js +159 -0
- package/dist/indexer/unused-exports.js.map +1 -0
- package/dist/indexer/workspace-symbols.d.ts.map +1 -1
- package/dist/indexer/workspace-symbols.js +3 -2
- package/dist/indexer/workspace-symbols.js.map +1 -1
- package/dist/indexer.d.ts +2 -2
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +1 -1
- package/dist/indexer.js.map +1 -1
- package/dist/languages/callable-arity.d.ts +202 -0
- package/dist/languages/callable-arity.d.ts.map +1 -0
- package/dist/languages/callable-arity.js +1182 -0
- package/dist/languages/callable-arity.js.map +1 -0
- package/dist/languages/definitions/c-family.d.ts.map +1 -1
- package/dist/languages/definitions/c-family.js +30 -1
- package/dist/languages/definitions/c-family.js.map +1 -1
- package/dist/languages/definitions/c.d.ts +4 -0
- package/dist/languages/definitions/c.d.ts.map +1 -1
- package/dist/languages/definitions/c.js +19 -0
- package/dist/languages/definitions/c.js.map +1 -1
- package/dist/languages/definitions/cpp.d.ts.map +1 -1
- package/dist/languages/definitions/cpp.js +12 -0
- package/dist/languages/definitions/cpp.js.map +1 -1
- package/dist/languages/definitions/csharp.d.ts.map +1 -1
- package/dist/languages/definitions/csharp.js +2 -8
- package/dist/languages/definitions/csharp.js.map +1 -1
- package/dist/languages/definitions/go.d.ts.map +1 -1
- package/dist/languages/definitions/go.js +3 -0
- package/dist/languages/definitions/go.js.map +1 -1
- package/dist/languages/definitions/javascript.d.ts.map +1 -1
- package/dist/languages/definitions/javascript.js +10 -1
- package/dist/languages/definitions/javascript.js.map +1 -1
- package/dist/languages/definitions/js-family.d.ts +1 -1
- package/dist/languages/definitions/js-family.d.ts.map +1 -1
- package/dist/languages/definitions/js-family.js +7 -1
- package/dist/languages/definitions/js-family.js.map +1 -1
- package/dist/languages/definitions/php.d.ts.map +1 -1
- package/dist/languages/definitions/php.js +5 -1
- package/dist/languages/definitions/php.js.map +1 -1
- package/dist/languages/definitions/typescript.d.ts.map +1 -1
- package/dist/languages/definitions/typescript.js +8 -1
- package/dist/languages/definitions/typescript.js.map +1 -1
- package/dist/languages/definitions/zig.d.ts.map +1 -1
- package/dist/languages/definitions/zig.js +2 -0
- package/dist/languages/definitions/zig.js.map +1 -1
- package/dist/mcp/handlers.js +14 -7
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/review/candidates.d.ts.map +1 -1
- package/dist/review/candidates.js +1 -1
- package/dist/review/candidates.js.map +1 -1
- package/dist/review/deleted.d.ts +3 -3
- package/dist/review/deleted.d.ts.map +1 -1
- package/dist/review/deleted.js +82 -32
- package/dist/review/deleted.js.map +1 -1
- package/dist/review/report.d.ts +1 -0
- package/dist/review/report.d.ts.map +1 -1
- package/dist/review/report.js +1 -1
- package/dist/review/report.js.map +1 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +1 -0
- package/dist/review.js.map +1 -1
- package/dist/sql/navigation.d.ts.map +1 -1
- package/dist/sql/navigation.js +1 -0
- package/dist/sql/navigation.js.map +1 -1
- package/dist/sql/source-graph.d.ts.map +1 -1
- package/dist/sql/source-graph.js +2 -2
- package/dist/sql/source-graph.js.map +1 -1
- package/dist/sqlite/schema.d.ts +1 -1
- package/dist/sqlite/schema.d.ts.map +1 -1
- package/dist/sqlite/schema.js +8 -2
- package/dist/sqlite/schema.js.map +1 -1
- package/dist/sqlite/write.js +2 -2
- package/dist/sqlite/write.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/util/bloom-filter.d.ts +7 -1
- package/dist/util/bloom-filter.d.ts.map +1 -1
- package/dist/util/bloom-filter.js +12 -2
- package/dist/util/bloom-filter.js.map +1 -1
- package/dist/util/dynamic-import-tables.d.ts +88 -0
- package/dist/util/dynamic-import-tables.d.ts.map +1 -0
- package/dist/util/dynamic-import-tables.js +100 -0
- package/dist/util/dynamic-import-tables.js.map +1 -0
- package/dist/util/graph-edges.d.ts +19 -1
- package/dist/util/graph-edges.d.ts.map +1 -1
- package/dist/util/graph-edges.js +30 -4
- package/dist/util/graph-edges.js.map +1 -1
- package/dist/util/identifiers.d.ts +15 -0
- package/dist/util/identifiers.d.ts.map +1 -1
- package/dist/util/identifiers.js +35 -0
- package/dist/util/identifiers.js.map +1 -1
- package/dist/util/member-access-tables.d.ts +129 -0
- package/dist/util/member-access-tables.d.ts.map +1 -0
- package/dist/util/member-access-tables.js +285 -0
- package/dist/util/member-access-tables.js.map +1 -0
- package/dist/util/member-access.d.ts +17 -0
- package/dist/util/member-access.d.ts.map +1 -1
- package/dist/util/member-access.js +138 -93
- package/dist/util/member-access.js.map +1 -1
- package/dist/util/resolution/cargo-targets.d.ts +11 -0
- package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
- package/dist/util/resolution/cargo-targets.js +174 -13
- package/dist/util/resolution/cargo-targets.js.map +1 -1
- package/dist/util/resolution/csharp.d.ts +33 -1
- package/dist/util/resolution/csharp.d.ts.map +1 -1
- package/dist/util/resolution/csharp.js +145 -30
- package/dist/util/resolution/csharp.js.map +1 -1
- package/dist/util/resolution/php.d.ts.map +1 -1
- package/dist/util/resolution/php.js +35 -8
- package/dist/util/resolution/php.js.map +1 -1
- package/dist/util/resolution/python.d.ts +9 -0
- package/dist/util/resolution/python.d.ts.map +1 -1
- package/dist/util/resolution/python.js +46 -0
- package/dist/util/resolution/python.js.map +1 -1
- package/dist/util/resolution/rust.d.ts.map +1 -1
- package/dist/util/resolution/rust.js +95 -26
- package/dist/util/resolution/rust.js.map +1 -1
- package/dist/util/resolution-candidates.d.ts +5 -0
- package/dist/util/resolution-candidates.d.ts.map +1 -1
- package/dist/util/resolution-candidates.js +16 -3
- package/dist/util/resolution-candidates.js.map +1 -1
- package/dist/util/resolution.d.ts +2 -1
- package/dist/util/resolution.d.ts.map +1 -1
- package/dist/util/resolution.js +96 -5
- package/dist/util/resolution.js.map +1 -1
- package/dist/util/specifiers.d.ts +20 -0
- package/dist/util/specifiers.d.ts.map +1 -1
- package/dist/util/specifiers.js +39 -93
- package/dist/util/specifiers.js.map +1 -1
- package/docs/mcp.md +3 -2
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpp-callables.d.ts","sourceRoot":"","sources":["../../src/indexer/cpp-callables.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AA6XF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,GAAG,IAAI,CA2BrF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAEjF;AAwGD,4EAA4E;AAC5E,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAQlF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAC5C,OAAO,GAAG,IAAI,CAkBhB;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,GAAG,IAAI,CAMhB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQxF"}
|
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
import { declarationMemberArity, isVariadicParameterMarker } from "../graphs/symbol-graph-detailed/ast.js";
|
|
2
|
+
import { callArgumentCount, cppQualifiedTextSegments } from "../graphs/symbol-graph-detailed/receiver-calls.js";
|
|
3
|
+
import { fileIdentityKey } from "../util/paths.js";
|
|
4
|
+
function functionDeclarator(node) {
|
|
5
|
+
let current = node;
|
|
6
|
+
while (current) {
|
|
7
|
+
if (current.type === "function_declarator")
|
|
8
|
+
return current;
|
|
9
|
+
if (current.type === "program")
|
|
10
|
+
return null;
|
|
11
|
+
current = current.parent;
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
function parameterName(parameter) {
|
|
16
|
+
let current = parameter.childForFieldName("declarator");
|
|
17
|
+
while (current) {
|
|
18
|
+
if (current.type === "identifier" || current.type === "field_identifier")
|
|
19
|
+
return current;
|
|
20
|
+
const nested = current.childForFieldName("name") ?? current.childForFieldName("declarator");
|
|
21
|
+
if (nested) {
|
|
22
|
+
current = nested;
|
|
23
|
+
}
|
|
24
|
+
else if (current.type === "reference_declarator" ||
|
|
25
|
+
current.type === "parenthesized_declarator" ||
|
|
26
|
+
current.type === "variadic_declarator") {
|
|
27
|
+
current = current.namedChildren.find((child) => child.type !== "comment") ?? null;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
function nodeSpanKey(node) {
|
|
36
|
+
return `${node.startIndex}:${node.endIndex}`;
|
|
37
|
+
}
|
|
38
|
+
function sameSpan(left, right) {
|
|
39
|
+
return left.startIndex === right.startIndex && left.endIndex === right.endIndex;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Leaf tokens for one node, skipping comments and omitted spans. Used for type
|
|
43
|
+
* specifiers, array extents, trailing function specifiers, and declarator forms
|
|
44
|
+
* the structured walker does not model. Parameter names and default values never
|
|
45
|
+
* contribute because collectOmittedParameterSpans marks their spans first.
|
|
46
|
+
*/
|
|
47
|
+
function appendLeafTokens(node, omittedSpans, tokens) {
|
|
48
|
+
if (node.type === "comment" || omittedSpans.has(nodeSpanKey(node)))
|
|
49
|
+
return;
|
|
50
|
+
// Leaf tokens keep unmodeled punctuation such as qualifiers distinct, while
|
|
51
|
+
// omitted name spans make named and abstract declarators equivalent.
|
|
52
|
+
if (!node.child(0)) {
|
|
53
|
+
tokens.push(node.text);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
for (let index = 0;; index += 1) {
|
|
57
|
+
const child = node.child(index);
|
|
58
|
+
if (!child)
|
|
59
|
+
break;
|
|
60
|
+
appendLeafTokens(child, omittedSpans, tokens);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const PARAMETER_DECLARATION_TYPES = {
|
|
64
|
+
parameter_declaration: true,
|
|
65
|
+
optional_parameter_declaration: true,
|
|
66
|
+
variadic_parameter_declaration: true,
|
|
67
|
+
};
|
|
68
|
+
const TOP_LEVEL_CV_QUALIFIER_TEXTS = {
|
|
69
|
+
const: true,
|
|
70
|
+
volatile: true,
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Type-specifier kinds that can never denote an array alias, so a qualifier on
|
|
74
|
+
* them is provably top-level when no declarator operator follows. Aliased types
|
|
75
|
+
* may name an array typedef, which would turn a leading const into a pointee
|
|
76
|
+
* qualifier after the array-to-pointer adjustment; those keep their qualifiers
|
|
77
|
+
* because alias expansion is out of scope.
|
|
78
|
+
*/
|
|
79
|
+
const PROVABLY_NON_ARRAY_TYPE_KINDS = {
|
|
80
|
+
primitive_type: true,
|
|
81
|
+
sized_type_specifier: true,
|
|
82
|
+
struct_specifier: true,
|
|
83
|
+
enum_specifier: true,
|
|
84
|
+
union_specifier: true,
|
|
85
|
+
class_specifier: true,
|
|
86
|
+
};
|
|
87
|
+
const DECLARATOR_OPERATOR_TYPES = {
|
|
88
|
+
pointer_declarator: true,
|
|
89
|
+
abstract_pointer_declarator: true,
|
|
90
|
+
reference_declarator: true,
|
|
91
|
+
abstract_reference_declarator: true,
|
|
92
|
+
array_declarator: true,
|
|
93
|
+
abstract_array_declarator: true,
|
|
94
|
+
function_declarator: true,
|
|
95
|
+
abstract_function_declarator: true,
|
|
96
|
+
};
|
|
97
|
+
/** Grouping only: parentheses and parameter packs do not construct type. */
|
|
98
|
+
const TRANSPARENT_DECLARATOR_TYPES = {
|
|
99
|
+
parenthesized_declarator: true,
|
|
100
|
+
abstract_parenthesized_declarator: true,
|
|
101
|
+
variadic_declarator: true,
|
|
102
|
+
};
|
|
103
|
+
const DECLARATOR_CORE_TYPES = {
|
|
104
|
+
identifier: true,
|
|
105
|
+
field_identifier: true,
|
|
106
|
+
type_identifier: true,
|
|
107
|
+
destructor_name: true,
|
|
108
|
+
operator_name: true,
|
|
109
|
+
template_function: true,
|
|
110
|
+
};
|
|
111
|
+
/** Inner declarator of a declarator-chain node, or null at the declared name. */
|
|
112
|
+
function declaratorInner(node) {
|
|
113
|
+
if (node.type === "parenthesized_declarator" ||
|
|
114
|
+
node.type === "abstract_parenthesized_declarator" ||
|
|
115
|
+
node.type === "variadic_declarator") {
|
|
116
|
+
return node.namedChildren.find((child) => child.type !== "comment") ?? null;
|
|
117
|
+
}
|
|
118
|
+
return node.childForFieldName("declarator");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Walks a declarator chain from its root toward the declared name. Operators
|
|
122
|
+
* wrap the accumulated type, so the deepest operator is the top of the
|
|
123
|
+
* parameter type; its qualifiers are the only declarator qualifiers that can be
|
|
124
|
+
* top-level. Any unmodeled declarator form hides the structure and vetoes both
|
|
125
|
+
* the top operator and qualifier dropping.
|
|
126
|
+
*/
|
|
127
|
+
function scanDeclaratorChain(declarator) {
|
|
128
|
+
let topOperator = null;
|
|
129
|
+
let current = declarator;
|
|
130
|
+
while (current) {
|
|
131
|
+
if (DECLARATOR_OPERATOR_TYPES[current.type]) {
|
|
132
|
+
topOperator = current;
|
|
133
|
+
}
|
|
134
|
+
else if (!TRANSPARENT_DECLARATOR_TYPES[current.type] && !DECLARATOR_CORE_TYPES[current.type]) {
|
|
135
|
+
return { topOperator: null, modeled: false };
|
|
136
|
+
}
|
|
137
|
+
const inner = declaratorInner(current);
|
|
138
|
+
if (!inner)
|
|
139
|
+
break;
|
|
140
|
+
current = inner;
|
|
141
|
+
}
|
|
142
|
+
return { topOperator, modeled: true };
|
|
143
|
+
}
|
|
144
|
+
/** Parameter names and default values at any nesting depth never become tokens. */
|
|
145
|
+
function collectOmittedParameterSpans(node, omittedSpans) {
|
|
146
|
+
if (PARAMETER_DECLARATION_TYPES[node.type]) {
|
|
147
|
+
const name = parameterName(node);
|
|
148
|
+
if (name)
|
|
149
|
+
omittedSpans.add(nodeSpanKey(name));
|
|
150
|
+
const defaultValue = node.childForFieldName("default_value");
|
|
151
|
+
if (defaultValue) {
|
|
152
|
+
omittedSpans.add(nodeSpanKey(defaultValue));
|
|
153
|
+
for (let index = 0;; index += 1) {
|
|
154
|
+
const child = node.child(index);
|
|
155
|
+
if (!child)
|
|
156
|
+
break;
|
|
157
|
+
if (child.type === "=")
|
|
158
|
+
omittedSpans.add(nodeSpanKey(child));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
for (let index = 0;; index += 1) {
|
|
163
|
+
const child = node.child(index);
|
|
164
|
+
if (!child)
|
|
165
|
+
break;
|
|
166
|
+
collectOmittedParameterSpans(child, omittedSpans);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function appendDeclaratorQualifierTokens(node, dropTopLevelCv, omittedSpans, tokens) {
|
|
170
|
+
for (let index = 0;; index += 1) {
|
|
171
|
+
const child = node.child(index);
|
|
172
|
+
if (!child)
|
|
173
|
+
break;
|
|
174
|
+
if (child.type !== "type_qualifier")
|
|
175
|
+
continue;
|
|
176
|
+
if (dropTopLevelCv && TOP_LEVEL_CV_QUALIFIER_TEXTS[child.text])
|
|
177
|
+
continue;
|
|
178
|
+
appendLeafTokens(child, omittedSpans, tokens);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function referencePunctuator(node) {
|
|
182
|
+
for (let index = 0;; index += 1) {
|
|
183
|
+
const child = node.child(index);
|
|
184
|
+
if (!child)
|
|
185
|
+
break;
|
|
186
|
+
if (child.type === "&" || child.type === "&&")
|
|
187
|
+
return child.text;
|
|
188
|
+
}
|
|
189
|
+
return "&";
|
|
190
|
+
}
|
|
191
|
+
/** Bracket contents of a retained array dimension: qualifiers and the extent. */
|
|
192
|
+
function appendArrayExtentTokens(node, omittedSpans, tokens) {
|
|
193
|
+
const declarator = node.childForFieldName("declarator");
|
|
194
|
+
for (let index = 0;; index += 1) {
|
|
195
|
+
const child = node.child(index);
|
|
196
|
+
if (!child)
|
|
197
|
+
break;
|
|
198
|
+
if (child.type === "[" || child.type === "]")
|
|
199
|
+
continue;
|
|
200
|
+
if (declarator && sameSpan(child, declarator))
|
|
201
|
+
continue;
|
|
202
|
+
appendLeafTokens(child, omittedSpans, tokens);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function appendParameterListTokens(node, omittedSpans, tokens) {
|
|
206
|
+
const parameters = node.childForFieldName("parameters");
|
|
207
|
+
if (!parameters)
|
|
208
|
+
return;
|
|
209
|
+
// `(void)` is the C/C++ zero-parameter spelling. A variadic parameter list is not empty, so it
|
|
210
|
+
// keeps its pack/ellipsis tokens instead of collapsing to `()`.
|
|
211
|
+
if (declarationMemberArity(node, "cpp") === 0 && !parameterListIsVariadic(parameters)) {
|
|
212
|
+
tokens.push("(", ")");
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
for (let index = 0;; index += 1) {
|
|
216
|
+
const child = parameters.child(index);
|
|
217
|
+
if (!child)
|
|
218
|
+
break;
|
|
219
|
+
if (child.type === "comment")
|
|
220
|
+
continue;
|
|
221
|
+
if (child.type === ",") {
|
|
222
|
+
tokens.push(",");
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (PARAMETER_DECLARATION_TYPES[child.type]) {
|
|
226
|
+
appendParameterTokens(child, tokens);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
appendLeafTokens(child, omittedSpans, tokens);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/** Exception specifications such as noexcept that trail one function type. */
|
|
233
|
+
function appendTrailingFunctionTokens(node, omittedSpans, tokens) {
|
|
234
|
+
const declarator = node.childForFieldName("declarator");
|
|
235
|
+
const parameters = node.childForFieldName("parameters");
|
|
236
|
+
for (let index = 0;; index += 1) {
|
|
237
|
+
const child = node.child(index);
|
|
238
|
+
if (!child)
|
|
239
|
+
break;
|
|
240
|
+
if (child.type === "(" || child.type === ")")
|
|
241
|
+
continue;
|
|
242
|
+
if (declarator && sameSpan(child, declarator))
|
|
243
|
+
continue;
|
|
244
|
+
if (parameters && sameSpan(child, parameters))
|
|
245
|
+
continue;
|
|
246
|
+
appendLeafTokens(child, omittedSpans, tokens);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Emits one declarator chain root-first: each operator wraps the accumulated
|
|
251
|
+
* type, so root-first order is the canonical constructor order and equivalent
|
|
252
|
+
* spellings such as `T p[][3]` and `T (*p)[3]` produce the same sequence.
|
|
253
|
+
*/
|
|
254
|
+
function appendAdjustedDeclaratorTokens(node, scan, omittedSpans, tokens) {
|
|
255
|
+
if (TRANSPARENT_DECLARATOR_TYPES[node.type]) {
|
|
256
|
+
if (node.type === "variadic_declarator")
|
|
257
|
+
tokens.push("...");
|
|
258
|
+
const inner = declaratorInner(node);
|
|
259
|
+
if (inner)
|
|
260
|
+
appendAdjustedDeclaratorTokens(inner, scan, omittedSpans, tokens);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (!DECLARATOR_OPERATOR_TYPES[node.type]) {
|
|
264
|
+
// Unmodeled or core declarator form: leaf tokens keep distinct types distinct.
|
|
265
|
+
appendLeafTokens(node, omittedSpans, tokens);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
switch (node.type) {
|
|
269
|
+
case "pointer_declarator":
|
|
270
|
+
case "abstract_pointer_declarator": {
|
|
271
|
+
tokens.push("*");
|
|
272
|
+
// Qualifiers on the top pointer are top-level cv and dropped; deeper
|
|
273
|
+
// pointers keep theirs because they qualify a pointee.
|
|
274
|
+
appendDeclaratorQualifierTokens(node, scan.topOperator === node, omittedSpans, tokens);
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
case "reference_declarator":
|
|
278
|
+
case "abstract_reference_declarator": {
|
|
279
|
+
// & and && share the node type; the punctuator text keeps them distinct.
|
|
280
|
+
tokens.push(referencePunctuator(node));
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
case "array_declarator":
|
|
284
|
+
case "abstract_array_declarator": {
|
|
285
|
+
if (scan.topOperator === node) {
|
|
286
|
+
// Parameter array-to-pointer adjustment: the outermost extent is not
|
|
287
|
+
// part of the adjusted pointer type; inner extents stay.
|
|
288
|
+
tokens.push("*");
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
tokens.push("[");
|
|
292
|
+
appendArrayExtentTokens(node, omittedSpans, tokens);
|
|
293
|
+
tokens.push("]");
|
|
294
|
+
}
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
case "function_declarator":
|
|
298
|
+
case "abstract_function_declarator": {
|
|
299
|
+
tokens.push("(");
|
|
300
|
+
appendParameterListTokens(node, omittedSpans, tokens);
|
|
301
|
+
tokens.push(")");
|
|
302
|
+
appendTrailingFunctionTokens(node, omittedSpans, tokens);
|
|
303
|
+
if (scan.topOperator === node) {
|
|
304
|
+
// Parameter function-to-pointer adjustment.
|
|
305
|
+
tokens.push("*");
|
|
306
|
+
}
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const inner = declaratorInner(node);
|
|
311
|
+
if (inner)
|
|
312
|
+
appendAdjustedDeclaratorTokens(inner, scan, omittedSpans, tokens);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Normalized fingerprint tokens for one parameter declaration.
|
|
316
|
+
*
|
|
317
|
+
* Language-defined adjustments only; no alias resolution and no general type
|
|
318
|
+
* equivalence:
|
|
319
|
+
* - array-to-pointer: the outermost array dimension of a parameter becomes a
|
|
320
|
+
* pointer, so `T p[]`, `T p[N]`, and `T* p` share one identity. Likewise,
|
|
321
|
+
* `T p[][3]` equals `T (*p)[3]`, but differs from `T* p` or `T p[][4]`;
|
|
322
|
+
* - function-to-pointer: `T f(P)` and `T (*f)(P)` share one identity;
|
|
323
|
+
* - top-level const/volatile is dropped for provably scalar base types with no
|
|
324
|
+
* declarator operator (`const int p` equals `int p`) and for the top pointer
|
|
325
|
+
* (`int* const p` equals `int* p`). Qualifiers that would land on a pointee,
|
|
326
|
+
* referent, element, or return type stay, and aliased base types keep their
|
|
327
|
+
* qualifiers because an array typedef cannot be ruled out syntactically.
|
|
328
|
+
* References, pointee qualification, member-pointer forms, unmodeled
|
|
329
|
+
* declarators, and trailing member cv/ref suffixes (handled by the shape's
|
|
330
|
+
* suffix tokens) are preserved as distinct.
|
|
331
|
+
*/
|
|
332
|
+
function appendParameterTokens(parameter, tokens) {
|
|
333
|
+
const omittedSpans = new Set();
|
|
334
|
+
collectOmittedParameterSpans(parameter, omittedSpans);
|
|
335
|
+
const declarator = parameter.childForFieldName("declarator");
|
|
336
|
+
const scan = declarator ? scanDeclaratorChain(declarator) : { topOperator: null, modeled: true };
|
|
337
|
+
const typeNode = parameter.childForFieldName("type");
|
|
338
|
+
const dropTypeQualifiers = !scan.topOperator && scan.modeled && !!typeNode && PROVABLY_NON_ARRAY_TYPE_KINDS[typeNode.type];
|
|
339
|
+
for (let index = 0;; index += 1) {
|
|
340
|
+
const child = parameter.child(index);
|
|
341
|
+
if (!child)
|
|
342
|
+
break;
|
|
343
|
+
if (child.type === "comment")
|
|
344
|
+
continue;
|
|
345
|
+
if (declarator && sameSpan(child, declarator))
|
|
346
|
+
continue;
|
|
347
|
+
if (child.type === "type_qualifier" && TOP_LEVEL_CV_QUALIFIER_TEXTS[child.text] && dropTypeQualifiers) {
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
350
|
+
appendLeafTokens(child, omittedSpans, tokens);
|
|
351
|
+
}
|
|
352
|
+
if (declarator)
|
|
353
|
+
appendAdjustedDeclaratorTokens(declarator, scan, omittedSpans, tokens);
|
|
354
|
+
}
|
|
355
|
+
function parameterFingerprint(parameter) {
|
|
356
|
+
const tokens = [];
|
|
357
|
+
appendParameterTokens(parameter, tokens);
|
|
358
|
+
return JSON.stringify(tokens);
|
|
359
|
+
}
|
|
360
|
+
function parameterListIsVariadic(parameters) {
|
|
361
|
+
for (let index = 0;; index += 1) {
|
|
362
|
+
const child = parameters.child(index);
|
|
363
|
+
if (!child)
|
|
364
|
+
return false;
|
|
365
|
+
if (child.type === "..." || child.type.includes("variadic_parameter"))
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
export function cppCallableShapeForNode(node) {
|
|
370
|
+
const declarator = functionDeclarator(node);
|
|
371
|
+
const parameters = declarator?.childForFieldName("parameters");
|
|
372
|
+
if (!declarator || !parameters)
|
|
373
|
+
return null;
|
|
374
|
+
const arity = declarationMemberArity(declarator, "cpp");
|
|
375
|
+
if (arity === undefined)
|
|
376
|
+
return null;
|
|
377
|
+
let parameterNodes = parameters.namedChildren.filter((child) => child.type !== "comment");
|
|
378
|
+
// A `(void)` parameter list is the C/C++ zero-parameter spelling and shares identity with `()`.
|
|
379
|
+
// C++ variadic markers are not zero parameters: a pack `Args... rest` (arity 0 when it is the
|
|
380
|
+
// only parameter) keeps its fingerprint so it stays distinct from a zero-parameter overload.
|
|
381
|
+
if (!arity)
|
|
382
|
+
parameterNodes = parameterNodes.filter((child) => isVariadicParameterMarker(child));
|
|
383
|
+
const optionalCount = parameterNodes.filter((parameter) => parameter.type === "optional_parameter_declaration" || !!parameter.childForFieldName("default_value")).length;
|
|
384
|
+
const suffixTokens = [];
|
|
385
|
+
for (let index = 0;; index += 1) {
|
|
386
|
+
const child = declarator.child(index);
|
|
387
|
+
if (!child)
|
|
388
|
+
break;
|
|
389
|
+
if (child.startIndex >= parameters.endIndex)
|
|
390
|
+
appendLeafTokens(child, new Set(), suffixTokens);
|
|
391
|
+
}
|
|
392
|
+
const variadic = parameterListIsVariadic(parameters);
|
|
393
|
+
return {
|
|
394
|
+
signature: `${parameterNodes.map(parameterFingerprint).join("|")}::${variadic ? "variadic" : "fixed"}::${JSON.stringify(suffixTokens)}`,
|
|
395
|
+
minArity: Math.max(0, arity - optionalCount),
|
|
396
|
+
maxArity: variadic ? null : arity,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
export function cppBindingCallableShape(binding) {
|
|
400
|
+
return binding.node ? cppCallableShapeForNode(binding.node) : null;
|
|
401
|
+
}
|
|
402
|
+
function syntaxRoot(node) {
|
|
403
|
+
let current = node;
|
|
404
|
+
while (current.parent)
|
|
405
|
+
current = current.parent;
|
|
406
|
+
return current;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Only a binding from the query file can be its declaration site. Its scope index may
|
|
410
|
+
* come from an earlier parse, so matching trees still requires source spans and text.
|
|
411
|
+
*/
|
|
412
|
+
function isCppDeclarationSite(binding, node) {
|
|
413
|
+
const candidate = binding.node;
|
|
414
|
+
if (!candidate)
|
|
415
|
+
return false;
|
|
416
|
+
if (candidate.startIndex !== node.startIndex || candidate.endIndex !== node.endIndex)
|
|
417
|
+
return false;
|
|
418
|
+
return candidate.text === node.text && syntaxRoot(candidate).endIndex === syntaxRoot(node).endIndex;
|
|
419
|
+
}
|
|
420
|
+
function cppCallArgumentCount(node, source) {
|
|
421
|
+
let current = node.parent;
|
|
422
|
+
while (current) {
|
|
423
|
+
if (current.type === "call_expression") {
|
|
424
|
+
const callee = current.childForFieldName("function");
|
|
425
|
+
if (callee && callee.startIndex <= node.startIndex && callee.endIndex >= node.endIndex) {
|
|
426
|
+
return callArgumentCount(current, source);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
if (current.type === "function_definition" || current.type === "program")
|
|
430
|
+
return null;
|
|
431
|
+
current = current.parent;
|
|
432
|
+
}
|
|
433
|
+
return null;
|
|
434
|
+
}
|
|
435
|
+
const CPP_OWNER_SCOPE_TYPES = new Set([
|
|
436
|
+
"namespace_definition",
|
|
437
|
+
"class_specifier",
|
|
438
|
+
"struct_specifier",
|
|
439
|
+
"union_specifier",
|
|
440
|
+
]);
|
|
441
|
+
/**
|
|
442
|
+
* The full owner path of a C++ callable declaration: its enclosing namespaces and classes plus
|
|
443
|
+
* any qualifier it declares, so `namespace b { namespace C { int f(); } }` and `int b::C::f() {}`
|
|
444
|
+
* share `b::C` while `int a::C::f() {}` is `a::C`. Declarations with the same parameters but
|
|
445
|
+
* different owners are different callables.
|
|
446
|
+
*/
|
|
447
|
+
function cppBindingOwnerPath(binding) {
|
|
448
|
+
const node = binding.node;
|
|
449
|
+
if (!node)
|
|
450
|
+
return "";
|
|
451
|
+
let qualified = null;
|
|
452
|
+
for (let current = node.parent; current?.type === "qualified_identifier"; current = current.parent) {
|
|
453
|
+
qualified = current;
|
|
454
|
+
}
|
|
455
|
+
const declared = qualified ? cppQualifiedTextSegments(qualified.text) : [];
|
|
456
|
+
declared.pop();
|
|
457
|
+
const lexical = [];
|
|
458
|
+
for (let current = (qualified ?? node).parent; current; current = current.parent) {
|
|
459
|
+
if (!CPP_OWNER_SCOPE_TYPES.has(current.type))
|
|
460
|
+
continue;
|
|
461
|
+
const name = current.childForFieldName("name");
|
|
462
|
+
if (name)
|
|
463
|
+
lexical.unshift(...cppQualifiedTextSegments(name.text));
|
|
464
|
+
}
|
|
465
|
+
return [...lexical, ...declared].join("::");
|
|
466
|
+
}
|
|
467
|
+
function cppCallableEntities(bindings, canonicalNames) {
|
|
468
|
+
const entities = new Map();
|
|
469
|
+
for (const binding of bindings) {
|
|
470
|
+
const shape = cppBindingCallableShape(binding);
|
|
471
|
+
if (!shape)
|
|
472
|
+
return null;
|
|
473
|
+
const canonicalName = canonicalNames?.get(binding);
|
|
474
|
+
if (canonicalNames && canonicalName === undefined)
|
|
475
|
+
return null;
|
|
476
|
+
const qualifier = cppBindingOwnerPath(binding);
|
|
477
|
+
const key = canonicalName === undefined
|
|
478
|
+
? `${qualifier}\0${shape.signature}`
|
|
479
|
+
: `${canonicalName}\0${qualifier}\0${shape.signature}`;
|
|
480
|
+
const existing = entities.get(key);
|
|
481
|
+
if (!existing) {
|
|
482
|
+
entities.set(key, {
|
|
483
|
+
bindings: [binding],
|
|
484
|
+
minArity: shape.minArity,
|
|
485
|
+
maxArity: shape.maxArity,
|
|
486
|
+
});
|
|
487
|
+
continue;
|
|
488
|
+
}
|
|
489
|
+
existing.bindings.push(binding);
|
|
490
|
+
existing.minArity = Math.min(existing.minArity, shape.minArity);
|
|
491
|
+
if (existing.maxArity === null || shape.maxArity === null) {
|
|
492
|
+
existing.maxArity = null;
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
existing.maxArity = Math.max(existing.maxArity, shape.maxArity);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
return entities;
|
|
499
|
+
}
|
|
500
|
+
function preferredCppCallableBinding(bindings) {
|
|
501
|
+
return bindings.find((binding) => cppCallableIsDefinition(binding.node)) ?? bindings[0];
|
|
502
|
+
}
|
|
503
|
+
/** Same-shape declarations and definitions for one C++ callable binding. */
|
|
504
|
+
export function cppEquivalentCallableBindings(binding) {
|
|
505
|
+
const collisions = binding.sameScopeFunctionBindings ?? [binding];
|
|
506
|
+
const entities = cppCallableEntities(collisions);
|
|
507
|
+
if (!entities)
|
|
508
|
+
return [binding];
|
|
509
|
+
for (const entity of entities.values()) {
|
|
510
|
+
if (entity.bindings.includes(binding))
|
|
511
|
+
return entity.bindings;
|
|
512
|
+
}
|
|
513
|
+
return [binding];
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Call-count selection without the declaration-site shortcut. Use when the query
|
|
517
|
+
* node may come from a different file than the candidate bindings.
|
|
518
|
+
*/
|
|
519
|
+
export function cppSelectCallableByCallArity(bindings, node, source, canonicalNames) {
|
|
520
|
+
const entities = cppCallableEntities(bindings, canonicalNames);
|
|
521
|
+
if (!entities?.size)
|
|
522
|
+
return null;
|
|
523
|
+
const argumentCount = cppCallArgumentCount(node, source);
|
|
524
|
+
const matches = argumentCount === null
|
|
525
|
+
? [...entities.values()]
|
|
526
|
+
: [...entities.values()].filter((entity) => argumentCount >= entity.minArity && (entity.maxArity === null || argumentCount <= entity.maxArity));
|
|
527
|
+
// Multiple arity-viable entities stay unresolved: default arguments and
|
|
528
|
+
// variadics can overlap, and this matcher does not implement C++ ranking.
|
|
529
|
+
// One canonical entity still has to accept a known call count: below its
|
|
530
|
+
// minimum or above a finite maximum is not a unique match.
|
|
531
|
+
if (matches.length === 1)
|
|
532
|
+
return preferredCppCallableBinding(matches[0].bindings);
|
|
533
|
+
return null;
|
|
534
|
+
}
|
|
535
|
+
export function cppSelectCallableBinding(bindings, node, source, useFile, bindingsFile) {
|
|
536
|
+
if (useFile === bindingsFile || fileIdentityKey(useFile) === fileIdentityKey(bindingsFile)) {
|
|
537
|
+
const declaration = bindings.find((candidate) => isCppDeclarationSite(candidate, node));
|
|
538
|
+
if (declaration)
|
|
539
|
+
return preferredCppCallableBinding(cppEquivalentCallableBindings(declaration));
|
|
540
|
+
}
|
|
541
|
+
return cppSelectCallableByCallArity(bindings, node, source);
|
|
542
|
+
}
|
|
543
|
+
export function cppCallableIsDefinition(node) {
|
|
544
|
+
let current = node ?? null;
|
|
545
|
+
while (current) {
|
|
546
|
+
if (current.type === "function_definition")
|
|
547
|
+
return true;
|
|
548
|
+
if (current.type === "declaration" || current.type === "program")
|
|
549
|
+
return false;
|
|
550
|
+
current = current.parent;
|
|
551
|
+
}
|
|
552
|
+
return false;
|
|
553
|
+
}
|
|
554
|
+
//# sourceMappingURL=cpp-callables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpp-callables.js","sourceRoot":"","sources":["../../src/indexer/cpp-callables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { SyntaxNodeLike } from "../languages/types.js";
|
|
2
2
|
/**
|
|
3
|
-
* Per-language declaration visibility for module exports
|
|
4
|
-
*
|
|
3
|
+
* Per-language declaration visibility for module exports and Swift shared-owner member lookup.
|
|
4
|
+
* Rows are keyed by language id. `locals-and-exports.ts` filters module exports; Swift
|
|
5
|
+
* shared-owner navigation and detailed membership reuse the same hidden-modifier tokens.
|
|
5
6
|
*
|
|
6
7
|
* A missing row keeps today's behavior: every module-scope capture is exported. Python stays on
|
|
7
8
|
* its existing `__all__` / underscore filter rather than a row here.
|
|
@@ -40,4 +41,37 @@ export declare function languageHasDeclarationVisibility(languageId: string): bo
|
|
|
40
41
|
* Languages with no table row are exported, matching pre-visibility behavior.
|
|
41
42
|
*/
|
|
42
43
|
export declare function isExportedDeclaration(languageId: string, node: SyntaxNodeLike): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Whether `node`'s declaration is `private` (and not C# `private protected`). A private member is
|
|
46
|
+
* not accessible to a subclass, so it cannot be reached through the implicit `this` there.
|
|
47
|
+
*/
|
|
48
|
+
export declare function isPrivateDeclaration(languageId: string, node: SyntaxNodeLike): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Whether a C# member is accessible from an unrelated type in the same assembly: `public`,
|
|
51
|
+
* `internal`, or `protected internal`. `private`, `protected`, `private protected`, and a class,
|
|
52
|
+
* struct, or record member without an access modifier are not.
|
|
53
|
+
*/
|
|
54
|
+
export declare function isCsharpAccessibleOutsideType(node: SyntaxNodeLike): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Go export visibility is spelled in the identifier itself (Go spec, "Exported identifiers"):
|
|
57
|
+
* a name is visible outside its declaring package only when its first Unicode letter is
|
|
58
|
+
* upper case. Unlike every `DeclarationVisibilityRow` above, this must never filter a Go
|
|
59
|
+
* file's module exports: Go's own compilation-unit peers (any file in the same package)
|
|
60
|
+
* legitimately see an unexported name, and that same-package lookup reads the same export
|
|
61
|
+
* list. Only a reference that crosses into a different Go package, whether by namespace
|
|
62
|
+
* selector (`pkg.hidden`) or by a proven receiver of an imported type (`v.hidden()`), must
|
|
63
|
+
* reject an unexported name. Both paths call this rule instead of adding a `GO_ROW` here.
|
|
64
|
+
*/
|
|
65
|
+
export declare function isGoExportedMemberName(languageId: string | undefined, name: string): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Swift `private`/`fileprivate` is file-scoped, including when that modifier is on the
|
|
68
|
+
* enclosing `extension` rather than the member.
|
|
69
|
+
*/
|
|
70
|
+
export declare function isSwiftFileHiddenSharedOwnerMember(languageId: string, memberNode: SyntaxNodeLike): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Shared-owner navigation and detailed membership drop Swift file-hidden members when
|
|
73
|
+
* the owner lives in another file, and keep same-file matches plus ordinary cross-file
|
|
74
|
+
* internal/public members.
|
|
75
|
+
*/
|
|
76
|
+
export declare function isSwiftCrossFileHiddenSharedOwnerMember(languageId: string, ownerFile: string, memberFile: string, memberNode: SyntaxNodeLike): boolean;
|
|
43
77
|
//# sourceMappingURL=declaration-visibility.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declaration-visibility.d.ts","sourceRoot":"","sources":["../../src/indexer/declaration-visibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"declaration-visibility.d.ts","sourceRoot":"","sources":["../../src/indexer/declaration-visibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;;;;;;GAOG;AAEH,MAAM,MAAM,wBAAwB,GAAG;IACrC,sEAAsE;IACtE,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,6EAA6E;IAC7E,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,gFAAgF;IAChF,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,kGAAkG;IAClG,4BAA4B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,iGAAiG;IACjG,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpD,CAAC;AAoIF,+EAA+E;AAC/E,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE5E;AAuFD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAMvF;AAWD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CActF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAW3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG5F;AA6BD;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,OAAO,CAK1G;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,GACzB,OAAO,CAGT"}
|