@lzehrung/codegraph 2.3.31 → 3.0.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 +33 -141
- package/codegraph-skill/codegraph/SKILL.md +8 -6
- 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/call-hierarchy.js +2 -4
- package/dist/agent/call-hierarchy.js.map +1 -1
- package/dist/agent/explore.d.ts +1 -1
- package/dist/agent/explore.d.ts.map +1 -1
- package/dist/agent/explore.js +3 -2
- package/dist/agent/explore.js.map +1 -1
- package/dist/agent/refactor-plan.js +2 -4
- package/dist/agent/refactor-plan.js.map +1 -1
- package/dist/agent/rename-preview.d.ts.map +1 -1
- package/dist/agent/rename-preview.js +4 -3
- package/dist/agent/rename-preview.js.map +1 -1
- package/dist/agent/search.d.ts.map +1 -1
- package/dist/agent/search.js +5 -3
- package/dist/agent/search.js.map +1 -1
- package/dist/agent/semantic-symbols.d.ts.map +1 -1
- package/dist/agent/semantic-symbols.js +2 -3
- package/dist/agent/semantic-symbols.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/agent/type-hierarchy.js +2 -4
- package/dist/agent/type-hierarchy.js.map +1 -1
- package/dist/agent/workspace-symbols.d.ts.map +1 -1
- package/dist/agent/workspace-symbols.js +2 -3
- package/dist/agent/workspace-symbols.js.map +1 -1
- package/dist/agent-tools.d.ts +0 -4
- package/dist/agent-tools.d.ts.map +1 -1
- package/dist/agent-tools.js +3 -6
- package/dist/agent-tools.js.map +1 -1
- package/dist/analysis-summary.d.ts +8 -4
- package/dist/analysis-summary.d.ts.map +1 -1
- package/dist/analysis-summary.js +15 -66
- package/dist/analysis-summary.js.map +1 -1
- package/dist/bin/cli.js +51145 -41770
- package/dist/bin/query-index-worker.js +122 -82
- 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/command-table.d.ts.map +1 -1
- package/dist/cli/command-table.js +9 -17
- package/dist/cli/command-table.js.map +1 -1
- package/dist/cli/context.js +10 -10
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/drift.d.ts +0 -2
- package/dist/cli/drift.d.ts.map +1 -1
- package/dist/cli/drift.js +0 -1
- package/dist/cli/drift.js.map +1 -1
- package/dist/cli/graph-delta.d.ts +0 -2
- package/dist/cli/graph-delta.d.ts.map +1 -1
- package/dist/cli/graph-delta.js +0 -4
- package/dist/cli/graph-delta.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/graph.d.ts +0 -3
- package/dist/cli/graph.d.ts.map +1 -1
- package/dist/cli/graph.js +4 -14
- package/dist/cli/graph.js.map +1 -1
- package/dist/cli/help.d.ts +34 -34
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +9 -14
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/impact.d.ts +0 -2
- package/dist/cli/impact.d.ts.map +1 -1
- package/dist/cli/impact.js +0 -1
- package/dist/cli/impact.js.map +1 -1
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/inspect.d.ts +0 -2
- package/dist/cli/inspect.d.ts.map +1 -1
- package/dist/cli/inspect.js +5 -8
- package/dist/cli/inspect.js.map +1 -1
- package/dist/cli/invocation-context.d.ts +0 -3
- package/dist/cli/invocation-context.d.ts.map +1 -1
- package/dist/cli/invocation-context.js +4 -16
- package/dist/cli/invocation-context.js.map +1 -1
- package/dist/cli/navigation.d.ts +0 -2
- package/dist/cli/navigation.d.ts.map +1 -1
- package/dist/cli/navigation.js +0 -1
- package/dist/cli/navigation.js.map +1 -1
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +4 -14
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/review.d.ts +0 -2
- package/dist/cli/review.d.ts.map +1 -1
- package/dist/cli/review.js +0 -5
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/root-policy.d.ts +0 -2
- package/dist/cli/root-policy.d.ts.map +1 -1
- package/dist/cli/root-policy.js +0 -8
- package/dist/cli/root-policy.js.map +1 -1
- package/dist/cli/server.d.ts.map +1 -1
- package/dist/cli/server.js +0 -2
- package/dist/cli/server.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/git.d.ts.map +1 -1
- package/dist/drift/git.js +0 -1
- package/dist/drift/git.js.map +1 -1
- package/dist/drift/snapshot.d.ts.map +1 -1
- package/dist/drift/snapshot.js +5 -7
- package/dist/drift/snapshot.js.map +1 -1
- package/dist/drift/types.d.ts +2 -2
- package/dist/drift/types.d.ts.map +1 -1
- package/dist/drift/types.js.map +1 -1
- package/dist/duplicates/unit-cache.d.ts +0 -1
- package/dist/duplicates/unit-cache.d.ts.map +1 -1
- package/dist/duplicates/unit-cache.js +3 -11
- package/dist/duplicates/unit-cache.js.map +1 -1
- package/dist/duplicates/units.d.ts +5 -5
- package/dist/duplicates/units.d.ts.map +1 -1
- package/dist/duplicates/units.js +25 -88
- package/dist/duplicates/units.js.map +1 -1
- package/dist/graph-builder.d.ts +0 -6
- package/dist/graph-builder.d.ts.map +1 -1
- package/dist/graph-builder.js +6 -11
- package/dist/graph-builder.js.map +1 -1
- package/dist/graph-edge-collector.d.ts +4 -6
- package/dist/graph-edge-collector.d.ts.map +1 -1
- package/dist/graph-edge-collector.js +31 -26
- 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 +24 -76
- package/dist/graphs/edge-resolution.js.map +1 -1
- package/dist/graphs/specifiers.d.ts +4 -13
- package/dist/graphs/specifiers.d.ts.map +1 -1
- package/dist/graphs/specifiers.js +80 -173
- 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 +60 -8
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.js +997 -168
- 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 +150 -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 +141 -25
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js +1015 -166
- 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 +449 -46
- 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/graphs/types.d.ts +0 -4
- package/dist/graphs/types.d.ts.map +1 -1
- package/dist/graphs.d.ts +1 -1
- package/dist/graphs.d.ts.map +1 -1
- package/dist/impact/call-compatibility/providers/index.d.ts +4 -4
- package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
- package/dist/impact/call-compatibility/providers/index.js +6 -6
- 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 -526
- 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/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 +2 -2
- 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 +39 -1
- package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache/module-cache.js +218 -21
- package/dist/indexer/build-cache/module-cache.js.map +1 -1
- package/dist/indexer/build-cache/options.d.ts +30 -44
- package/dist/indexer/build-cache/options.d.ts.map +1 -1
- package/dist/indexer/build-cache/options.js +32 -71
- package/dist/indexer/build-cache/options.js.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts +3 -3
- package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.js +164 -84
- package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
- package/dist/indexer/build-cache/reports.d.ts +0 -2
- package/dist/indexer/build-cache/reports.d.ts.map +1 -1
- package/dist/indexer/build-cache/reports.js +0 -97
- package/dist/indexer/build-cache/reports.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 +2 -2
- package/dist/indexer/build-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache.js +2 -2
- 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 +656 -71
- package/dist/indexer/build-index.js.map +1 -1
- package/dist/indexer/build-workers.d.ts.map +1 -1
- package/dist/indexer/build-workers.js +9 -9
- package/dist/indexer/build-workers.js.map +1 -1
- package/dist/indexer/call-hierarchy.js +1 -1
- package/dist/indexer/call-hierarchy.js.map +1 -1
- package/dist/indexer/callable-identity.d.ts +24 -0
- package/dist/indexer/callable-identity.d.ts.map +1 -0
- package/dist/indexer/callable-identity.js +111 -0
- package/dist/indexer/callable-identity.js.map +1 -0
- package/dist/indexer/compilation-units.d.ts +103 -0
- package/dist/indexer/compilation-units.d.ts.map +1 -0
- package/dist/indexer/compilation-units.js +607 -0
- package/dist/indexer/compilation-units.js.map +1 -0
- package/dist/indexer/cpp-callables.d.ts +25 -0
- package/dist/indexer/cpp-callables.d.ts.map +1 -0
- package/dist/indexer/cpp-callables.js +562 -0
- package/dist/indexer/cpp-callables.js.map +1 -0
- package/dist/indexer/declaration-visibility.d.ts +43 -2
- package/dist/indexer/declaration-visibility.d.ts.map +1 -1
- package/dist/indexer/declaration-visibility.js +158 -2
- package/dist/indexer/declaration-visibility.js.map +1 -1
- package/dist/indexer/expand-star-imports.d.ts +6 -1
- package/dist/indexer/expand-star-imports.d.ts.map +1 -1
- package/dist/indexer/expand-star-imports.js +131 -37
- package/dist/indexer/expand-star-imports.js.map +1 -1
- package/dist/indexer/finalize.d.ts.map +1 -1
- package/dist/indexer/finalize.js +0 -1
- package/dist/indexer/finalize.js.map +1 -1
- package/dist/indexer/import-resolution-tables.d.ts +72 -0
- package/dist/indexer/import-resolution-tables.d.ts.map +1 -0
- package/dist/indexer/import-resolution-tables.js +137 -0
- package/dist/indexer/import-resolution-tables.js.map +1 -0
- package/dist/indexer/import-types.d.ts +54 -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/context.d.ts +16 -1
- package/dist/indexer/imports/context.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.d.ts +13 -1
- package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.js +149 -30
- package/dist/indexer/imports/import-binding-tables.js.map +1 -1
- 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/native-captures.d.ts.map +1 -1
- package/dist/indexer/imports/native-captures.js +24 -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 +128 -112
- 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 +68 -19
- package/dist/indexer/imports/text-import-extractors.js.map +1 -1
- package/dist/indexer/imports.d.ts +3 -4
- package/dist/indexer/imports.d.ts.map +1 -1
- package/dist/indexer/imports.js +116 -72
- 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 +203 -1
- package/dist/indexer/incremental-plan.js.map +1 -1
- package/dist/indexer/locals-and-exports.d.ts +3 -2
- package/dist/indexer/locals-and-exports.d.ts.map +1 -1
- package/dist/indexer/locals-and-exports.js +659 -78
- package/dist/indexer/locals-and-exports.js.map +1 -1
- package/dist/indexer/member-selection.d.ts +46 -0
- package/dist/indexer/member-selection.d.ts.map +1 -0
- package/dist/indexer/member-selection.js +169 -0
- package/dist/indexer/member-selection.js.map +1 -0
- 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 +137 -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 +119 -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 +132 -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 +82 -0
- package/dist/indexer/name-lookup-policies/php.js.map +1 -0
- package/dist/indexer/name-resolution-types.d.ts +101 -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 +57 -0
- package/dist/indexer/name-resolution.d.ts.map +1 -0
- package/dist/indexer/name-resolution.js +204 -0
- package/dist/indexer/name-resolution.js.map +1 -0
- package/dist/indexer/navigation-cpp.d.ts +58 -0
- package/dist/indexer/navigation-cpp.d.ts.map +1 -0
- package/dist/indexer/navigation-cpp.js +935 -0
- package/dist/indexer/navigation-cpp.js.map +1 -0
- package/dist/indexer/navigation-goto.d.ts +115 -3
- package/dist/indexer/navigation-goto.d.ts.map +1 -1
- package/dist/indexer/navigation-goto.js +2469 -190
- package/dist/indexer/navigation-goto.js.map +1 -1
- package/dist/indexer/navigation-local.d.ts +21 -2
- package/dist/indexer/navigation-local.d.ts.map +1 -1
- package/dist/indexer/navigation-local.js +520 -63
- 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-provenance.d.ts +1 -1
- package/dist/indexer/navigation-provenance.d.ts.map +1 -1
- package/dist/indexer/navigation-provenance.js +4 -13
- package/dist/indexer/navigation-provenance.js.map +1 -1
- package/dist/indexer/navigation-references.d.ts +73 -6
- package/dist/indexer/navigation-references.d.ts.map +1 -1
- package/dist/indexer/navigation-references.js +661 -67
- package/dist/indexer/navigation-references.js.map +1 -1
- package/dist/indexer/navigation-resolve.d.ts +46 -2
- package/dist/indexer/navigation-resolve.d.ts.map +1 -1
- package/dist/indexer/navigation-resolve.js +599 -193
- package/dist/indexer/navigation-resolve.js.map +1 -1
- package/dist/indexer/navigation.d.ts +29 -2
- package/dist/indexer/navigation.d.ts.map +1 -1
- package/dist/indexer/navigation.js +1092 -153
- package/dist/indexer/navigation.js.map +1 -1
- package/dist/indexer/parse-context.d.ts +2 -3
- package/dist/indexer/parse-context.d.ts.map +1 -1
- package/dist/indexer/parse-context.js +8 -21
- package/dist/indexer/parse-context.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-candidates.d.ts.map +1 -1
- package/dist/indexer/reference-candidates.js +13 -7
- package/dist/indexer/reference-candidates.js.map +1 -1
- 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 +29 -1
- package/dist/indexer/scope-types.d.ts.map +1 -1
- package/dist/indexer/scope.d.ts +2 -3
- package/dist/indexer/scope.d.ts.map +1 -1
- package/dist/indexer/scope.js +968 -47
- 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 +113 -0
- package/dist/indexer/star-import-precedence.d.ts.map +1 -0
- package/dist/indexer/star-import-precedence.js +402 -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 +42 -0
- package/dist/indexer/ts-callables.d.ts.map +1 -0
- package/dist/indexer/ts-callables.js +233 -0
- package/dist/indexer/ts-callables.js.map +1 -0
- package/dist/indexer/types.d.ts +41 -26
- 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 +3 -8
- 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 +223 -0
- package/dist/languages/callable-arity.d.ts.map +1 -0
- package/dist/languages/callable-arity.js +1199 -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 +8 -0
- package/dist/languages/definitions/zig.js.map +1 -1
- package/dist/lifecycle/manifest.d.ts.map +1 -1
- package/dist/lifecycle/manifest.js +0 -1
- package/dist/lifecycle/manifest.js.map +1 -1
- package/dist/mcp/handlers.js +14 -7
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/native/byte-index.d.ts +6 -0
- package/dist/native/byte-index.d.ts.map +1 -1
- package/dist/native/byte-index.js +11 -6
- package/dist/native/byte-index.js.map +1 -1
- package/dist/native/contracts.d.ts +2 -3
- package/dist/native/contracts.d.ts.map +1 -1
- package/dist/native/execution.d.ts +9 -9
- package/dist/native/execution.d.ts.map +1 -1
- package/dist/native/execution.js +37 -77
- package/dist/native/execution.js.map +1 -1
- package/dist/native/js-bridge.d.ts +2 -15
- package/dist/native/js-bridge.d.ts.map +1 -1
- package/dist/native/js-bridge.js +2 -15
- package/dist/native/js-bridge.js.map +1 -1
- package/dist/native/query-results.js +2 -2
- package/dist/native/query-results.js.map +1 -1
- package/dist/native/runtime.d.ts +12 -12
- package/dist/native/runtime.d.ts.map +1 -1
- package/dist/native/runtime.js +24 -69
- package/dist/native/runtime.js.map +1 -1
- package/dist/native/tree-sitter-native.d.ts +3 -3
- package/dist/native/tree-sitter-native.d.ts.map +1 -1
- package/dist/native/tree-sitter-native.js +2 -2
- package/dist/native/tree-sitter-native.js.map +1 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +0 -4
- package/dist/presets.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 +3 -20
- package/dist/review.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +0 -5
- package/dist/session.js.map +1 -1
- package/dist/sql/navigation.d.ts.map +1 -1
- package/dist/sql/navigation.js +2 -1
- 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 +8 -1
- package/dist/util/bloom-filter.d.ts.map +1 -1
- package/dist/util/bloom-filter.js +15 -2
- package/dist/util/bloom-filter.js.map +1 -1
- package/dist/util/glob.d.ts +32 -0
- package/dist/util/glob.d.ts.map +1 -0
- package/dist/util/glob.js +137 -0
- package/dist/util/glob.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 +61 -4
- package/dist/util/member-access-tables.d.ts.map +1 -1
- package/dist/util/member-access-tables.js +139 -19
- package/dist/util/member-access-tables.js.map +1 -1
- 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 +98 -3
- package/dist/util/member-access.js.map +1 -1
- package/dist/util/project-files.d.ts +2 -10
- package/dist/util/project-files.d.ts.map +1 -1
- package/dist/util/project-files.js +29 -51
- package/dist/util/project-files.js.map +1 -1
- package/dist/util/python-type-checking.d.ts +18 -0
- package/dist/util/python-type-checking.d.ts.map +1 -0
- package/dist/util/python-type-checking.js +160 -0
- package/dist/util/python-type-checking.js.map +1 -0
- 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/jvm.d.ts +7 -3
- package/dist/util/resolution/jvm.d.ts.map +1 -1
- package/dist/util/resolution/jvm.js +56 -38
- package/dist/util/resolution/jvm.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 +0 -1
- package/dist/util/resolution/rust.d.ts.map +1 -1
- package/dist/util/resolution/rust.js +95 -35
- package/dist/util/resolution/rust.js.map +1 -1
- package/dist/util/resolution/specifier-targets.d.ts +44 -0
- package/dist/util/resolution/specifier-targets.d.ts.map +1 -0
- package/dist/util/resolution/specifier-targets.js +152 -0
- package/dist/util/resolution/specifier-targets.js.map +1 -0
- 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 +101 -15
- package/dist/util/resolution.js.map +1 -1
- package/dist/util/specifiers.d.ts +29 -1
- package/dist/util/specifiers.d.ts.map +1 -1
- package/dist/util/specifiers.js +56 -8
- package/dist/util/specifiers.js.map +1 -1
- package/dist/util/trivia.d.ts.map +1 -1
- package/dist/util/trivia.js +49 -30
- package/dist/util/trivia.js.map +1 -1
- package/dist/util/workspace.d.ts.map +1 -1
- package/dist/util/workspace.js +32 -4
- package/dist/util/workspace.js.map +1 -1
- package/docs/mcp.md +3 -2
- package/package.json +5 -7
- package/dist/impact/call-compatibility/providers/profiles.d.ts +0 -80
- package/dist/impact/call-compatibility/providers/profiles.d.ts.map +0 -1
- package/dist/impact/call-compatibility/providers/profiles.js +0 -164
- package/dist/impact/call-compatibility/providers/profiles.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CallableArity } from "../languages/callable-arity.js";
|
|
2
|
+
import type { SyntaxNodeLike } from "../languages/types.js";
|
|
3
|
+
import type { FileId } from "../types.js";
|
|
4
|
+
import type { Binding } from "./scope-types.js";
|
|
5
|
+
/** Normalized C/C++ parameter types and member qualifiers, independent of defaults. */
|
|
6
|
+
export declare function cppCallableSignatureForNode(node: SyntaxNodeLike, arity: CallableArity | null): string | null;
|
|
7
|
+
/**
|
|
8
|
+
* The full owner path of a C++ callable declaration: its enclosing namespaces and classes plus
|
|
9
|
+
* any qualifier it declares, so `namespace b { namespace C { int f(); } }` and `int b::C::f() {}`
|
|
10
|
+
* share `b::C` while `int a::C::f() {}` is `a::C`. Declarations with the same parameters but
|
|
11
|
+
* different owners are different callables.
|
|
12
|
+
*/
|
|
13
|
+
export declare function cppCallableOwnerPath(node: SyntaxNodeLike): string;
|
|
14
|
+
/** Static namespace functions and anonymous-namespace functions belong to one translation unit. */
|
|
15
|
+
export declare function cppCallableHasInternalLinkage(node: SyntaxNodeLike): boolean;
|
|
16
|
+
/** Same-shape declarations and definitions for one C++ callable binding. */
|
|
17
|
+
export declare function cppEquivalentCallableBindings(binding: Binding): readonly Binding[];
|
|
18
|
+
/**
|
|
19
|
+
* Call-count selection without the declaration-site shortcut. Use when the query
|
|
20
|
+
* node may come from a different file than the candidate bindings.
|
|
21
|
+
*/
|
|
22
|
+
export declare function cppSelectCallableByCallArity(bindings: readonly Binding[], node: SyntaxNodeLike, source: string, canonicalNames?: ReadonlyMap<Binding, string>): Binding | null;
|
|
23
|
+
export declare function cppSelectCallableBinding(bindings: readonly Binding[], node: SyntaxNodeLike, source: string, useFile: FileId, bindingsFile: FileId): Binding | null;
|
|
24
|
+
export declare function cppCallableIsDefinition(node: SyntaxNodeLike | null | undefined): boolean;
|
|
25
|
+
//# sourceMappingURL=cpp-callables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpp-callables.d.ts","sourceRoot":"","sources":["../../src/indexer/cpp-callables.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,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;AA6XhD,uFAAuF;AACvF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAe5G;AAwCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAcjE;AAED,mGAAmG;AACnG,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAmB3E;AA4CD,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,562 @@
|
|
|
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
|
+
/** Normalized C/C++ parameter types and member qualifiers, independent of defaults. */
|
|
370
|
+
export function cppCallableSignatureForNode(node, arity) {
|
|
371
|
+
const declarator = functionDeclarator(node);
|
|
372
|
+
const parameters = declarator?.childForFieldName("parameters");
|
|
373
|
+
if (!declarator || !parameters || !arity)
|
|
374
|
+
return null;
|
|
375
|
+
let parameterNodes = parameters.namedChildren.filter((child) => child.type !== "comment");
|
|
376
|
+
// A `(void)` parameter list shares identity with `()`. A variadic pack stays distinct.
|
|
377
|
+
if (arity.maxArgs === 0)
|
|
378
|
+
parameterNodes = parameterNodes.filter((child) => isVariadicParameterMarker(child));
|
|
379
|
+
const suffixTokens = [];
|
|
380
|
+
for (let index = 0;; index += 1) {
|
|
381
|
+
const child = declarator.child(index);
|
|
382
|
+
if (!child)
|
|
383
|
+
break;
|
|
384
|
+
if (child.startIndex >= parameters.endIndex)
|
|
385
|
+
appendLeafTokens(child, new Set(), suffixTokens);
|
|
386
|
+
}
|
|
387
|
+
const variadic = parameterListIsVariadic(parameters);
|
|
388
|
+
return `${parameterNodes.map(parameterFingerprint).join("|")}::${variadic ? "variadic" : "fixed"}::${JSON.stringify(suffixTokens)}`;
|
|
389
|
+
}
|
|
390
|
+
function syntaxRoot(node) {
|
|
391
|
+
let current = node;
|
|
392
|
+
while (current.parent)
|
|
393
|
+
current = current.parent;
|
|
394
|
+
return current;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Only a binding from the query file can be its declaration site. Its scope index may
|
|
398
|
+
* come from an earlier parse, so matching trees still requires source spans and text.
|
|
399
|
+
*/
|
|
400
|
+
function isCppDeclarationSite(binding, node) {
|
|
401
|
+
const candidate = binding.node;
|
|
402
|
+
if (!candidate)
|
|
403
|
+
return false;
|
|
404
|
+
if (candidate.startIndex !== node.startIndex || candidate.endIndex !== node.endIndex)
|
|
405
|
+
return false;
|
|
406
|
+
return candidate.text === node.text && syntaxRoot(candidate).endIndex === syntaxRoot(node).endIndex;
|
|
407
|
+
}
|
|
408
|
+
function cppCallArgumentCount(node, source) {
|
|
409
|
+
let current = node.parent;
|
|
410
|
+
while (current) {
|
|
411
|
+
if (current.type === "call_expression") {
|
|
412
|
+
const callee = current.childForFieldName("function");
|
|
413
|
+
if (callee && callee.startIndex <= node.startIndex && callee.endIndex >= node.endIndex) {
|
|
414
|
+
return callArgumentCount(current, source);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (current.type === "function_definition" || current.type === "program")
|
|
418
|
+
return null;
|
|
419
|
+
current = current.parent;
|
|
420
|
+
}
|
|
421
|
+
return null;
|
|
422
|
+
}
|
|
423
|
+
const CPP_OWNER_SCOPE_TYPES = new Set([
|
|
424
|
+
"namespace_definition",
|
|
425
|
+
"class_specifier",
|
|
426
|
+
"struct_specifier",
|
|
427
|
+
"union_specifier",
|
|
428
|
+
]);
|
|
429
|
+
/**
|
|
430
|
+
* The full owner path of a C++ callable declaration: its enclosing namespaces and classes plus
|
|
431
|
+
* any qualifier it declares, so `namespace b { namespace C { int f(); } }` and `int b::C::f() {}`
|
|
432
|
+
* share `b::C` while `int a::C::f() {}` is `a::C`. Declarations with the same parameters but
|
|
433
|
+
* different owners are different callables.
|
|
434
|
+
*/
|
|
435
|
+
export function cppCallableOwnerPath(node) {
|
|
436
|
+
let qualified = null;
|
|
437
|
+
for (let current = node.parent; current?.type === "qualified_identifier"; current = current.parent) {
|
|
438
|
+
qualified = current;
|
|
439
|
+
}
|
|
440
|
+
const declared = qualified ? cppQualifiedTextSegments(qualified.text) : [];
|
|
441
|
+
declared.pop();
|
|
442
|
+
const lexical = [];
|
|
443
|
+
for (let current = (qualified ?? node).parent; current; current = current.parent) {
|
|
444
|
+
if (!CPP_OWNER_SCOPE_TYPES.has(current.type))
|
|
445
|
+
continue;
|
|
446
|
+
const name = current.childForFieldName("name");
|
|
447
|
+
if (name)
|
|
448
|
+
lexical.unshift(...cppQualifiedTextSegments(name.text));
|
|
449
|
+
}
|
|
450
|
+
return [...lexical, ...declared].join("::");
|
|
451
|
+
}
|
|
452
|
+
/** Static namespace functions and anonymous-namespace functions belong to one translation unit. */
|
|
453
|
+
export function cppCallableHasInternalLinkage(node) {
|
|
454
|
+
let insideClass = false;
|
|
455
|
+
let staticDeclaration = false;
|
|
456
|
+
for (let current = node; current; current = current.parent) {
|
|
457
|
+
if (current.type === "namespace_definition" && !current.childForFieldName("name"))
|
|
458
|
+
return true;
|
|
459
|
+
if (current.type === "class_specifier" ||
|
|
460
|
+
current.type === "struct_specifier" ||
|
|
461
|
+
current.type === "union_specifier") {
|
|
462
|
+
insideClass = true;
|
|
463
|
+
}
|
|
464
|
+
if (current.type === "function_definition" || current.type === "declaration") {
|
|
465
|
+
if (current.namedChildren.some((child) => child.type === "storage_class_specifier" && child.text === "static")) {
|
|
466
|
+
staticDeclaration = true;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return staticDeclaration && !insideClass;
|
|
471
|
+
}
|
|
472
|
+
function cppCallableEntities(bindings, canonicalNames) {
|
|
473
|
+
const entities = new Map();
|
|
474
|
+
for (const binding of bindings) {
|
|
475
|
+
const callable = binding.callable;
|
|
476
|
+
if (!callable?.signature || !callable.arity)
|
|
477
|
+
return null;
|
|
478
|
+
const canonicalName = canonicalNames?.get(binding);
|
|
479
|
+
if (canonicalNames && canonicalName === undefined)
|
|
480
|
+
return null;
|
|
481
|
+
// A using-declaration can change the visible name only after imports are known. Declarations
|
|
482
|
+
// of one external callable in several headers group by signature; an internal-linkage
|
|
483
|
+
// function stays in its own translation unit.
|
|
484
|
+
const signatureScope = binding.node && cppCallableHasInternalLinkage(binding.node)
|
|
485
|
+
? callable.key
|
|
486
|
+
: `${callable.owner}\0${callable.signature}`;
|
|
487
|
+
const key = canonicalName === undefined ? callable.key : `${canonicalName}\0${signatureScope}`;
|
|
488
|
+
const existing = entities.get(key);
|
|
489
|
+
if (!existing) {
|
|
490
|
+
entities.set(key, {
|
|
491
|
+
bindings: [binding],
|
|
492
|
+
minArity: callable.arity.minArgs,
|
|
493
|
+
maxArity: callable.arity.maxArgs,
|
|
494
|
+
});
|
|
495
|
+
continue;
|
|
496
|
+
}
|
|
497
|
+
existing.bindings.push(binding);
|
|
498
|
+
existing.minArity = Math.min(existing.minArity, callable.arity.minArgs);
|
|
499
|
+
if (existing.maxArity === null || callable.arity.maxArgs === null) {
|
|
500
|
+
existing.maxArity = null;
|
|
501
|
+
}
|
|
502
|
+
else {
|
|
503
|
+
existing.maxArity = Math.max(existing.maxArity, callable.arity.maxArgs);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
return entities;
|
|
507
|
+
}
|
|
508
|
+
function preferredCppCallableBinding(bindings) {
|
|
509
|
+
return bindings.find((binding) => binding.callable?.definition) ?? bindings[0];
|
|
510
|
+
}
|
|
511
|
+
/** Same-shape declarations and definitions for one C++ callable binding. */
|
|
512
|
+
export function cppEquivalentCallableBindings(binding) {
|
|
513
|
+
const collisions = binding.sameScopeFunctionBindings ?? [binding];
|
|
514
|
+
const entities = cppCallableEntities(collisions);
|
|
515
|
+
if (!entities)
|
|
516
|
+
return [binding];
|
|
517
|
+
for (const entity of entities.values()) {
|
|
518
|
+
if (entity.bindings.includes(binding))
|
|
519
|
+
return entity.bindings;
|
|
520
|
+
}
|
|
521
|
+
return [binding];
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Call-count selection without the declaration-site shortcut. Use when the query
|
|
525
|
+
* node may come from a different file than the candidate bindings.
|
|
526
|
+
*/
|
|
527
|
+
export function cppSelectCallableByCallArity(bindings, node, source, canonicalNames) {
|
|
528
|
+
const entities = cppCallableEntities(bindings, canonicalNames);
|
|
529
|
+
if (!entities?.size)
|
|
530
|
+
return null;
|
|
531
|
+
const argumentCount = cppCallArgumentCount(node, source);
|
|
532
|
+
const matches = argumentCount === null
|
|
533
|
+
? [...entities.values()]
|
|
534
|
+
: [...entities.values()].filter((entity) => argumentCount >= entity.minArity && (entity.maxArity === null || argumentCount <= entity.maxArity));
|
|
535
|
+
// Multiple arity-viable entities stay unresolved: default arguments and
|
|
536
|
+
// variadics can overlap, and this matcher does not implement C++ ranking.
|
|
537
|
+
// One canonical entity still has to accept a known call count: below its
|
|
538
|
+
// minimum or above a finite maximum is not a unique match.
|
|
539
|
+
if (matches.length === 1)
|
|
540
|
+
return preferredCppCallableBinding(matches[0].bindings);
|
|
541
|
+
return null;
|
|
542
|
+
}
|
|
543
|
+
export function cppSelectCallableBinding(bindings, node, source, useFile, bindingsFile) {
|
|
544
|
+
if (useFile === bindingsFile || fileIdentityKey(useFile) === fileIdentityKey(bindingsFile)) {
|
|
545
|
+
const declaration = bindings.find((candidate) => isCppDeclarationSite(candidate, node));
|
|
546
|
+
if (declaration)
|
|
547
|
+
return preferredCppCallableBinding(cppEquivalentCallableBindings(declaration));
|
|
548
|
+
}
|
|
549
|
+
return cppSelectCallableByCallArity(bindings, node, source);
|
|
550
|
+
}
|
|
551
|
+
export function cppCallableIsDefinition(node) {
|
|
552
|
+
let current = node ?? null;
|
|
553
|
+
while (current) {
|
|
554
|
+
if (current.type === "function_definition")
|
|
555
|
+
return true;
|
|
556
|
+
if (current.type === "declaration" || current.type === "program")
|
|
557
|
+
return false;
|
|
558
|
+
current = current.parent;
|
|
559
|
+
}
|
|
560
|
+
return false;
|
|
561
|
+
}
|
|
562
|
+
//# 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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"}
|