@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,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP additions to the shared name lookup order. Classes, functions, and constants occupy
|
|
3
|
+
* separate namespaces, so the syntactic role of the use selects which one a name can bind.
|
|
4
|
+
*/
|
|
5
|
+
import { findClosestBinding } from "../navigation-local.js";
|
|
6
|
+
import { findPhpImportAlias, getPhpQualifiedReference, inferPhpQualifiedReferenceImportType, } from "../navigation-php.js";
|
|
7
|
+
import { okGoToResult } from "../navigation-provenance.js";
|
|
8
|
+
import { phpClassReferenceMatchesDefinition, phpReferenceRoleMatchesKind, resolveIndexedPhpClassReference, resolvePhpExplicitImport, resolvePhpNamespaceSymbol, resolvePhpSameScopeRoleDefinition, } from "../php-namespace-symbols.js";
|
|
9
|
+
import { scopeNodesFor } from "../scope-nodes.js";
|
|
10
|
+
/** A class-reference form (`new X`, `X::y`, a type) cannot bind a same-named function. */
|
|
11
|
+
const isClassReference = (use) => inferPhpQualifiedReferenceImportType(use.node) === "class";
|
|
12
|
+
const classMatches = (use, lookupName, def) => phpClassReferenceMatchesDefinition(use.index, use.parsed.source, use.parsed.tree, use.node, lookupName, use.mod.imports, def);
|
|
13
|
+
export const phpLookupPolicy = {
|
|
14
|
+
beforeLexical(use, lookupName) {
|
|
15
|
+
const { index, mod, file, node, name, scopeIndex, parsed } = use;
|
|
16
|
+
const variableTypes = scopeNodesFor("php").assignmentIdentifierTypes;
|
|
17
|
+
if (variableTypes?.has(node.type) || (node.parent && variableTypes?.has(node.parent.type))) {
|
|
18
|
+
const variable = findClosestBinding(scopeIndex, file, lookupName, node, parsed.sup, parsed.source, parsed.tree);
|
|
19
|
+
if (!variable)
|
|
20
|
+
return { status: "not_found", reason: "No matching PHP variable definition" };
|
|
21
|
+
return okGoToResult(index, variable, { resolution: "exact", confidence: "high" });
|
|
22
|
+
}
|
|
23
|
+
// A declaration names itself even when an unrelated namespace uses the same spelling.
|
|
24
|
+
const declaration = mod.locals.find((local) => local.range.start.index === node.startIndex && local.range.end.index === node.endIndex);
|
|
25
|
+
if (declaration)
|
|
26
|
+
return okGoToResult(index, declaration, { resolution: "exact", confidence: "high" });
|
|
27
|
+
const role = use.phpImportType ?? "const";
|
|
28
|
+
const binding = findPhpImportAlias(mod.imports, name, role);
|
|
29
|
+
const alias = binding ? resolvePhpExplicitImport(index, binding, role) : null;
|
|
30
|
+
if (alias) {
|
|
31
|
+
return okGoToResult(index, alias, {
|
|
32
|
+
via: { importedFrom: alias.file, exportedName: alias.localName },
|
|
33
|
+
resolution: "import",
|
|
34
|
+
confidence: "high",
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const qualified = getPhpQualifiedReference(node, parsed.source);
|
|
38
|
+
if (qualified?.includes("\\") && inferPhpQualifiedReferenceImportType(node) === "function") {
|
|
39
|
+
const target = resolvePhpNamespaceSymbol(index, parsed.source, parsed.tree, node, qualified, mod.imports, "function");
|
|
40
|
+
if (target)
|
|
41
|
+
return okGoToResult(index, target, { resolution: "php-qualified", confidence: "high" });
|
|
42
|
+
return { status: "not_found", reason: "No matching PHP qualified function" };
|
|
43
|
+
}
|
|
44
|
+
if (!isClassReference(use))
|
|
45
|
+
return undefined;
|
|
46
|
+
const phpClass = resolveIndexedPhpClassReference(index, parsed.source, parsed.tree, node, lookupName, mod.imports);
|
|
47
|
+
if (!phpClass)
|
|
48
|
+
return undefined;
|
|
49
|
+
return okGoToResult(index, phpClass, {
|
|
50
|
+
via: { exportedName: phpClass.localName },
|
|
51
|
+
resolution: "php-qualified",
|
|
52
|
+
confidence: "high",
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
// Scope and export fallbacks may only name this exact class, or a symbol of the use's role.
|
|
56
|
+
onLocal({ use, lookupName, closestBinding }, local) {
|
|
57
|
+
const { index, mod, node, parsed } = use;
|
|
58
|
+
if (isClassReference(use) && !classMatches(use, lookupName, local)) {
|
|
59
|
+
return { status: "not_found", reason: "No matching PHP class" };
|
|
60
|
+
}
|
|
61
|
+
if (phpReferenceRoleMatchesKind(node, local.kind))
|
|
62
|
+
return undefined;
|
|
63
|
+
const sameScope = closestBinding
|
|
64
|
+
? resolvePhpSameScopeRoleDefinition(index, mod, parsed.source, parsed.tree, node, lookupName, closestBinding)
|
|
65
|
+
: null;
|
|
66
|
+
if (sameScope)
|
|
67
|
+
return okGoToResult(index, sameScope, { resolution: "exact", confidence: "high" });
|
|
68
|
+
return { status: "not_found", reason: "No matching PHP symbol role" };
|
|
69
|
+
},
|
|
70
|
+
afterCrossModule({ use, lookupName }, resolved) {
|
|
71
|
+
if (resolved?.status !== "ok")
|
|
72
|
+
return undefined;
|
|
73
|
+
if (isClassReference(use) && !classMatches(use, lookupName, resolved.definition)) {
|
|
74
|
+
return { status: "not_found", reason: "No matching PHP class" };
|
|
75
|
+
}
|
|
76
|
+
if (!phpReferenceRoleMatchesKind(use.node, resolved.definition.kind)) {
|
|
77
|
+
return { status: "not_found", reason: "No matching PHP symbol role" };
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=php.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/php.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the shared bare-name lookup (`./name-resolution.ts`) and its per-language policies
|
|
3
|
+
* (`./name-lookup-policies/`). A leaf module, so policies can name these types without a cycle.
|
|
4
|
+
*/
|
|
5
|
+
import type { SyntaxNodeLike } from "../languages/types.js";
|
|
6
|
+
import type { FileId } from "../types.js";
|
|
7
|
+
import type { ParsedFileContext } from "./parse-context.js";
|
|
8
|
+
import type { Binding, ScopeIndex } from "./scope.js";
|
|
9
|
+
import type { GoToResult, ModuleIndex, ProjectIndex, SymbolDef } from "./types.js";
|
|
10
|
+
/** Synchronous access to parsed files. A miss is recorded so an async caller can load and retry. */
|
|
11
|
+
export type ParsedFileProvider = {
|
|
12
|
+
get(file: FileId): ParsedFileContext | null;
|
|
13
|
+
};
|
|
14
|
+
/** A provider that parses on demand between synchronous resolution passes. */
|
|
15
|
+
export type LoadingParsedFileProvider = ParsedFileProvider & {
|
|
16
|
+
/** Files requested since the last call, which were not loaded. */
|
|
17
|
+
takeMisses(): FileId[];
|
|
18
|
+
load(files: readonly FileId[]): Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
/** A lookup step that needs async member resolution before its answer is known. */
|
|
21
|
+
export type DeferredNameRequest =
|
|
22
|
+
/** Inside an out-of-line C++ member body, a member of the owner hides a file-scope name. */
|
|
23
|
+
{
|
|
24
|
+
kind: "cpp-out-of-line-member";
|
|
25
|
+
}
|
|
26
|
+
/** A member of the enclosing type, found through `this`/`self`. */
|
|
27
|
+
| {
|
|
28
|
+
kind: "implicit-self-member";
|
|
29
|
+
lookupName: string;
|
|
30
|
+
}
|
|
31
|
+
/** Several included C/C++ declarations that may be one callable. */
|
|
32
|
+
| {
|
|
33
|
+
kind: "c-included-star";
|
|
34
|
+
lookupName: string;
|
|
35
|
+
cNamespace: "tag" | "ordinary" | undefined;
|
|
36
|
+
};
|
|
37
|
+
export type NameResolution = GoToResult | {
|
|
38
|
+
status: "deferred";
|
|
39
|
+
request: DeferredNameRequest;
|
|
40
|
+
/** The answer when the deferred lookup finds nothing; `null` means no answer. */
|
|
41
|
+
fallback: NameResolution | null;
|
|
42
|
+
/** The answer when the lookup proves a hiding member that is not a valid target. */
|
|
43
|
+
hidden?: GoToResult;
|
|
44
|
+
};
|
|
45
|
+
export type BareNameUse = {
|
|
46
|
+
index: ProjectIndex;
|
|
47
|
+
mod: ModuleIndex;
|
|
48
|
+
file: FileId;
|
|
49
|
+
parsed: ParsedFileContext;
|
|
50
|
+
scopeIndex: ScopeIndex;
|
|
51
|
+
files: ParsedFileProvider;
|
|
52
|
+
node: SyntaxNodeLike;
|
|
53
|
+
name: string;
|
|
54
|
+
/** PHP import role at the use, when the caller knows it. */
|
|
55
|
+
phpImportType?: "class" | "function" | "const";
|
|
56
|
+
};
|
|
57
|
+
/** What a lookup step knows about the use once the closest scope binding is found. */
|
|
58
|
+
export type NameLookupState = {
|
|
59
|
+
use: BareNameUse;
|
|
60
|
+
/** The name as scope and import tables spell it (C# drops alias qualifiers). */
|
|
61
|
+
lookupName: string;
|
|
62
|
+
closestBinding: Binding | null;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* One language's additions to the shared lookup order. Each hook returns a resolution to stop
|
|
66
|
+
* the lookup, or `undefined` to continue; the skeleton in {@link resolveBareName} fixes the
|
|
67
|
+
* order in which hooks run. A language without special rules has an empty policy.
|
|
68
|
+
*/
|
|
69
|
+
export type NameLookupPolicy = {
|
|
70
|
+
lookupName?(use: BareNameUse): string;
|
|
71
|
+
/** Before scope lookup: qualified names, role namespaces, unparsed macro input. */
|
|
72
|
+
beforeLexical?(use: BareNameUse, lookupName: string): NameResolution | null | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Whether the closest scope binding is in a different namespace than the use and must be
|
|
75
|
+
* ignored (a Java variable cannot be called as a method).
|
|
76
|
+
*/
|
|
77
|
+
ignoresBinding?(use: BareNameUse, binding: Binding): boolean;
|
|
78
|
+
/** From the closest binding before anything else (a C++ `using` declaration). */
|
|
79
|
+
fromClosestBinding?(state: NameLookupState): NameResolution | null | undefined;
|
|
80
|
+
/** Wraps the rest of the lookup, for a deferred step whose fallback is that rest. */
|
|
81
|
+
wrapRest?(state: NameLookupState, rest: () => NameResolution | null): NameResolution | null;
|
|
82
|
+
/** Before the closest binding's definition is taken (C++ same-scope overload collisions). */
|
|
83
|
+
beforeLocal?(state: NameLookupState): NameResolution | null | undefined;
|
|
84
|
+
/** Adjusts a lexical hit (member precedence, role checks). */
|
|
85
|
+
onLocal?(state: NameLookupState, local: SymbolDef): NameResolution | null | undefined;
|
|
86
|
+
/** No lexical hit, before the shared later-local check. */
|
|
87
|
+
onUnboundLocal?(state: NameLookupState): NameResolution | null | undefined;
|
|
88
|
+
/** No lexical hit, before cross-module lookup (visible C++ callables, `using namespace`). */
|
|
89
|
+
beforeCrossModule?(state: NameLookupState): NameResolution | null | undefined;
|
|
90
|
+
/** Name for cross-module lookup (C# alias-qualified). */
|
|
91
|
+
crossModuleName?(state: NameLookupState): string;
|
|
92
|
+
/** C ordinary versus tag namespace. */
|
|
93
|
+
cNamespace?(node: SyntaxNodeLike): "tag" | "ordinary" | undefined;
|
|
94
|
+
/** Adjusts the cross-module result (arity, roles, member precedence, deferred recovery). */
|
|
95
|
+
afterCrossModule?(state: NameLookupState, resolved: GoToResult | null): NameResolution | null | undefined;
|
|
96
|
+
/** Whether a file import alias remains visible at this use, after lexical shadowing. */
|
|
97
|
+
moduleAliasIsUnshadowed?(state: NameLookupState): boolean;
|
|
98
|
+
/** Files a synchronous consumer loads before resolving names in a module of this language. */
|
|
99
|
+
preloadFiles?(index: ProjectIndex, mod: ModuleIndex): Iterable<FileId>;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=name-resolution-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-resolution-types.d.ts","sourceRoot":"","sources":["../../src/indexer/name-resolution-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnF,oGAAoG;AACpG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG;IAC3D,kEAAkE;IAClE,UAAU,IAAI,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,mBAAmB;AAC7B,4FAA4F;AAC1F;IAAE,IAAI,EAAE,wBAAwB,CAAA;CAAE;AACpC,mEAAmE;GACjE;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AACtD,oEAAoE;GAClE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CAAA;CAAE,CAAC;AAEhG,MAAM,MAAM,cAAc,GACtB,UAAU,GACV;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,oFAAoF;IACpF,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAEN,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;CAChD,CAAC;AAEF,sFAAsF;AACtF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,WAAW,CAAC;IACjB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC;IACtC,mFAAmF;IACnF,aAAa,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACxF;;;OAGG;IACH,cAAc,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7D,iFAAiF;IACjF,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/E,qFAAqF;IACrF,QAAQ,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC;IAC5F,6FAA6F;IAC7F,WAAW,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACxE,8DAA8D;IAC9D,OAAO,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACtF,2DAA2D;IAC3D,cAAc,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3E,6FAA6F;IAC7F,iBAAiB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9E,yDAAyD;IACzD,eAAe,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC;IACjD,uCAAuC;IACvC,UAAU,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;IAClE,4FAA4F;IAC5F,gBAAgB,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1G,wFAAwF;IACxF,uBAAuB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC;IAC1D,8FAA8F;IAC9F,YAAY,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;CACxE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-resolution-types.js","sourceRoot":"","sources":["../../src/indexer/name-resolution-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One lookup order for a bare name at a use site, shared by go-to-definition, references (which
|
|
3
|
+
* verify through go-to-definition), and the detailed call graph.
|
|
4
|
+
*
|
|
5
|
+
* `resolveBareName` is synchronous: it reads parsed files through a {@link ParsedFileProvider}
|
|
6
|
+
* and never awaits. The few steps that need async member lookup return a `deferred` resolution
|
|
7
|
+
* with the answer to use when that lookup finds nothing; {@link settleNameResolution} runs those
|
|
8
|
+
* steps. Navigation settles immediately; the graph settles after its body walk.
|
|
9
|
+
*/
|
|
10
|
+
import type { FileId } from "../types.js";
|
|
11
|
+
import { type ParsedFileContext } from "./parse-context.js";
|
|
12
|
+
import type { BareNameUse, LoadingParsedFileProvider, NameResolution } from "./name-resolution-types.js";
|
|
13
|
+
export type { BareNameUse, DeferredNameRequest, LoadingParsedFileProvider, NameLookupPolicy, NameLookupState, NameResolution, ParsedFileProvider, } from "./name-resolution-types.js";
|
|
14
|
+
import { type GoToResult, type ImportBinding, type ModuleIndex, type ProjectIndex, type SymbolDef } from "./types.js";
|
|
15
|
+
import type { Binding, ScopeIndex } from "./scope.js";
|
|
16
|
+
/** PHP import role (class, function, or const) of the import that covers a 0-based position. */
|
|
17
|
+
export declare function phpImportTypeAtPosition(imports: readonly ImportBinding[], line: number, column: number): "class" | "function" | "const" | undefined;
|
|
18
|
+
export declare function createLoadingParsedFileProvider(index: ProjectIndex, current: {
|
|
19
|
+
file: FileId;
|
|
20
|
+
parsed: ParsedFileContext;
|
|
21
|
+
}): LoadingParsedFileProvider;
|
|
22
|
+
/** Runs a synchronous lookup step, parsing any file it missed and rerunning it. */
|
|
23
|
+
export declare function withParsedFiles<T>(files: LoadingParsedFileProvider, step: () => T): Promise<T>;
|
|
24
|
+
/** A closer lexical binding hides a file alias unless that local holds the same module. */
|
|
25
|
+
export declare function fileBindingIsUnshadowed(scopeIndex: ScopeIndex, binding: Binding | null, aliasFrom?: string): boolean;
|
|
26
|
+
/** File import aliases yield to closer lexical bindings unless a language policy says otherwise. */
|
|
27
|
+
export declare function moduleAliasIsUnshadowed(use: BareNameUse, aliasFrom?: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves a bare (unqualified or C++-qualified) name at a use site. Returns `null` when no
|
|
30
|
+
* lookup step answers; go-to-definition then tries a declaration at the position.
|
|
31
|
+
*
|
|
32
|
+
* Shared order: language pre-lexical steps, closest scope binding, its definition (with
|
|
33
|
+
* overloads chosen by arity), a local declared later in the same scope, then cross-module
|
|
34
|
+
* lookup (imports, compilation-unit peers, star imports) through {@link resolveNamedDefinition}.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveBareName(use: BareNameUse): NameResolution | null;
|
|
37
|
+
/** How a consumer settles deferred steps. */
|
|
38
|
+
export type SettleNameOptions = {
|
|
39
|
+
/** The graph records no edge when the member a call names cannot accept its argument count. */
|
|
40
|
+
requireAcceptedArity?: boolean;
|
|
41
|
+
/** Resolves included C/C++ star candidates; navigation owns this recovery. */
|
|
42
|
+
recoverIncludedStar?: (lookupName: string, cNamespace: "tag" | "ordinary" | undefined) => Promise<GoToResult | null>;
|
|
43
|
+
};
|
|
44
|
+
/** Runs the async member steps a {@link resolveBareName} result deferred. */
|
|
45
|
+
export declare function settleNameResolution(use: BareNameUse, resolution: NameResolution | null, options?: SettleNameOptions): Promise<GoToResult | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Files a synchronous consumer must load before resolving names in `mod`: the file itself, its
|
|
48
|
+
* resolved imports (TS/TSX overload checks read import targets), and for C++ the transitive
|
|
49
|
+
* include closure. A lookup that reads any other file finds it missing and skips that check.
|
|
50
|
+
*/
|
|
51
|
+
export declare function nameResolutionPreloadFiles(index: ProjectIndex, mod: ModuleIndex, languageId: string): FileId[];
|
|
52
|
+
/**
|
|
53
|
+
* The definition a resolution names without running deferred member steps: a deferred step
|
|
54
|
+
* contributes its fallback. For consumers that settle member lookups separately.
|
|
55
|
+
*/
|
|
56
|
+
export declare function definitionWithoutDeferredSteps(resolution: NameResolution | null): SymbolDef | null;
|
|
57
|
+
//# sourceMappingURL=name-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-resolution.d.ts","sourceRoot":"","sources":["../../src/indexer/name-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAkB1C,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EAEzB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACtH,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMtD,gGAAgG;AAChG,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAU5C;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACnD,yBAAyB,CA6B3B;AAKD,mFAAmF;AACnF,wBAAsB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CASpG;AAED,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAMpH;AAED,oGAAoG;AACpG,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAOrF;AACD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CA+CvE;AAED,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+FAA+F;IAC/F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACtH,CAAC;AAEF,6EAA6E;AAC7E,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA4C5B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9G;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAIlG"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One lookup order for a bare name at a use site, shared by go-to-definition, references (which
|
|
3
|
+
* verify through go-to-definition), and the detailed call graph.
|
|
4
|
+
*
|
|
5
|
+
* `resolveBareName` is synchronous: it reads parsed files through a {@link ParsedFileProvider}
|
|
6
|
+
* and never awaits. The few steps that need async member lookup return a `deferred` resolution
|
|
7
|
+
* with the answer to use when that lookup finds nothing; {@link settleNameResolution} runs those
|
|
8
|
+
* steps. Navigation settles immediately; the graph settles after its body walk.
|
|
9
|
+
*/
|
|
10
|
+
import { fileIdentityKey } from "../util/paths.js";
|
|
11
|
+
import { memberAcceptsCallAt, resolveCppOutOfLineImplicitMember, resolveImplicitSelfMember, } from "./navigation-goto.js";
|
|
12
|
+
import { definitionForBinding, findClosestScopeBinding, laterLocalShadowsUse, resolveNamedDefinition, } from "./navigation-local.js";
|
|
13
|
+
import { okGoToResult } from "./navigation-provenance.js";
|
|
14
|
+
import { ensureParsedContext } from "./parse-context.js";
|
|
15
|
+
import { nameLookupPolicyFor } from "./name-lookup-policies/index.js";
|
|
16
|
+
import {} from "./types.js";
|
|
17
|
+
import { importBindingReferenceSites } from "./navigation-references.js";
|
|
18
|
+
import { rangeContains } from "./reference-context.js";
|
|
19
|
+
/** PHP import role (class, function, or const) of the import that covers a 0-based position. */
|
|
20
|
+
export function phpImportTypeAtPosition(imports, line, column) {
|
|
21
|
+
for (const imp of imports) {
|
|
22
|
+
if (imp.kind !== "named" || imp.mechanism !== "php")
|
|
23
|
+
continue;
|
|
24
|
+
if (importBindingReferenceSites(imp).some((site) => rangeContains(site.range, { row: line + 1, column: column + 1 }))) {
|
|
25
|
+
return imp.phpImportType ?? "class";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
export function createLoadingParsedFileProvider(index, current) {
|
|
31
|
+
const loaded = new Map([[fileIdentityKey(current.file), current.parsed]]);
|
|
32
|
+
const misses = new Map();
|
|
33
|
+
return {
|
|
34
|
+
get(file) {
|
|
35
|
+
const key = fileIdentityKey(file);
|
|
36
|
+
const hit = loaded.get(key);
|
|
37
|
+
if (hit !== undefined)
|
|
38
|
+
return hit;
|
|
39
|
+
misses.set(key, file);
|
|
40
|
+
return null;
|
|
41
|
+
},
|
|
42
|
+
takeMisses() {
|
|
43
|
+
const files = [...misses.values()];
|
|
44
|
+
misses.clear();
|
|
45
|
+
return files;
|
|
46
|
+
},
|
|
47
|
+
async load(files) {
|
|
48
|
+
for (const file of files) {
|
|
49
|
+
const key = fileIdentityKey(file);
|
|
50
|
+
if (loaded.has(key))
|
|
51
|
+
continue;
|
|
52
|
+
try {
|
|
53
|
+
loaded.set(key, await ensureParsedContext(file, index.parsed?.get(key), index.languageExtensions));
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Reduced mode: a file that cannot be parsed stays unavailable, as before.
|
|
57
|
+
loaded.set(key, null);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** Load-and-retry passes for a lookup that reads files it has not parsed yet. */
|
|
64
|
+
const MAX_NAME_RESOLUTION_LOADS = 4;
|
|
65
|
+
/** Runs a synchronous lookup step, parsing any file it missed and rerunning it. */
|
|
66
|
+
export async function withParsedFiles(files, step) {
|
|
67
|
+
let result = step();
|
|
68
|
+
for (let attempt = 0; attempt < MAX_NAME_RESOLUTION_LOADS; attempt += 1) {
|
|
69
|
+
const missing = files.takeMisses();
|
|
70
|
+
if (!missing.length)
|
|
71
|
+
break;
|
|
72
|
+
await files.load(missing);
|
|
73
|
+
result = step();
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
/** A closer lexical binding hides a file alias unless that local holds the same module. */
|
|
78
|
+
export function fileBindingIsUnshadowed(scopeIndex, binding, aliasFrom) {
|
|
79
|
+
return (!binding ||
|
|
80
|
+
(!!binding.import && scopeIndex.allScopes[0]?.map.get(binding.canonicalName) === binding) ||
|
|
81
|
+
(binding.kind === "local" && aliasFrom !== undefined && binding.heldModuleSpecifier === aliasFrom));
|
|
82
|
+
}
|
|
83
|
+
/** File import aliases yield to closer lexical bindings unless a language policy says otherwise. */
|
|
84
|
+
export function moduleAliasIsUnshadowed(use, aliasFrom) {
|
|
85
|
+
const policy = nameLookupPolicyFor(use.parsed.sup.id);
|
|
86
|
+
const closestBinding = findClosestScopeBinding(use.scopeIndex, use.name, use.node, use.parsed.sup);
|
|
87
|
+
if (policy.moduleAliasIsUnshadowed) {
|
|
88
|
+
return policy.moduleAliasIsUnshadowed({ use, lookupName: use.name, closestBinding });
|
|
89
|
+
}
|
|
90
|
+
return fileBindingIsUnshadowed(use.scopeIndex, closestBinding, aliasFrom);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolves a bare (unqualified or C++-qualified) name at a use site. Returns `null` when no
|
|
94
|
+
* lookup step answers; go-to-definition then tries a declaration at the position.
|
|
95
|
+
*
|
|
96
|
+
* Shared order: language pre-lexical steps, closest scope binding, its definition (with
|
|
97
|
+
* overloads chosen by arity), a local declared later in the same scope, then cross-module
|
|
98
|
+
* lookup (imports, compilation-unit peers, star imports) through {@link resolveNamedDefinition}.
|
|
99
|
+
*/
|
|
100
|
+
export function resolveBareName(use) {
|
|
101
|
+
const { index, mod, file, parsed, scopeIndex, node } = use;
|
|
102
|
+
const { sup, source, tree } = parsed;
|
|
103
|
+
const policy = nameLookupPolicyFor(sup.id);
|
|
104
|
+
const lookupName = policy.lookupName?.(use) ?? use.name;
|
|
105
|
+
const early = policy.beforeLexical?.(use, lookupName);
|
|
106
|
+
if (early !== undefined)
|
|
107
|
+
return early;
|
|
108
|
+
const found = findClosestScopeBinding(scopeIndex, lookupName, node, sup);
|
|
109
|
+
const state = {
|
|
110
|
+
use,
|
|
111
|
+
lookupName,
|
|
112
|
+
closestBinding: found && policy.ignoresBinding?.(use, found) ? null : found,
|
|
113
|
+
};
|
|
114
|
+
const fromBinding = policy.fromClosestBinding?.(state);
|
|
115
|
+
if (fromBinding !== undefined)
|
|
116
|
+
return fromBinding;
|
|
117
|
+
const rest = () => {
|
|
118
|
+
const beforeLocal = policy.beforeLocal?.(state);
|
|
119
|
+
if (beforeLocal !== undefined)
|
|
120
|
+
return beforeLocal;
|
|
121
|
+
const { closestBinding } = state;
|
|
122
|
+
const local = closestBinding ? definitionForBinding(closestBinding, file, node, sup, source, tree) : null;
|
|
123
|
+
if (local) {
|
|
124
|
+
const adjusted = policy.onLocal?.(state, local);
|
|
125
|
+
if (adjusted !== undefined)
|
|
126
|
+
return adjusted;
|
|
127
|
+
return okGoToResult(index, local, { resolution: "exact", confidence: "high" });
|
|
128
|
+
}
|
|
129
|
+
const unbound = policy.onUnboundLocal?.(state);
|
|
130
|
+
if (unbound !== undefined)
|
|
131
|
+
return unbound;
|
|
132
|
+
if (laterLocalShadowsUse(scopeIndex, lookupName, node, sup)) {
|
|
133
|
+
return { status: "not_found", reason: "Local is not in scope before its declaration" };
|
|
134
|
+
}
|
|
135
|
+
const beforeCrossModule = policy.beforeCrossModule?.(state);
|
|
136
|
+
if (beforeCrossModule !== undefined)
|
|
137
|
+
return beforeCrossModule;
|
|
138
|
+
if (!sup.supportsCrossModuleSymbols)
|
|
139
|
+
return null;
|
|
140
|
+
const resolved = resolveNamedDefinition(index, mod, file, sup, policy.crossModuleName?.(state) ?? lookupName, policy.cNamespace?.(node), node.startIndex, { node, source });
|
|
141
|
+
const adjusted = policy.afterCrossModule?.(state, resolved);
|
|
142
|
+
return adjusted !== undefined ? adjusted : resolved;
|
|
143
|
+
};
|
|
144
|
+
return policy.wrapRest ? policy.wrapRest(state, rest) : rest();
|
|
145
|
+
}
|
|
146
|
+
/** Runs the async member steps a {@link resolveBareName} result deferred. */
|
|
147
|
+
export async function settleNameResolution(use, resolution, options = {}) {
|
|
148
|
+
let current = resolution;
|
|
149
|
+
while (current?.status === "deferred") {
|
|
150
|
+
const { request, fallback, hidden } = current;
|
|
151
|
+
const { index, mod, node, name, parsed } = use;
|
|
152
|
+
if (request.kind === "cpp-out-of-line-member") {
|
|
153
|
+
const member = await resolveCppOutOfLineImplicitMember(index, mod, node, name, parsed.source, parsed.sup, options.requireAcceptedArity);
|
|
154
|
+
if (member)
|
|
155
|
+
return okGoToResult(index, member, { resolution: "member-access", confidence: "high" });
|
|
156
|
+
if (member === null)
|
|
157
|
+
return hidden ?? null;
|
|
158
|
+
}
|
|
159
|
+
else if (request.kind === "implicit-self-member") {
|
|
160
|
+
const member = await resolveImplicitSelfMember(index, mod, node, request.lookupName, parsed.source, parsed.sup.id);
|
|
161
|
+
// The graph records no edge for a call its target cannot accept, and does not fall back.
|
|
162
|
+
if (member &&
|
|
163
|
+
options.requireAcceptedArity &&
|
|
164
|
+
!memberAcceptsCallAt(index, member, node, parsed.source, parsed.sup.id)) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
if (member)
|
|
168
|
+
return okGoToResult(index, member, { resolution: "member-access", confidence: "medium" });
|
|
169
|
+
// A member hides the name but none is a unique, reachable target (static context, ambiguity).
|
|
170
|
+
if (member === null)
|
|
171
|
+
return { status: "not_found", reason: "No unique member through the implicit receiver" };
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
const recovered = await options.recoverIncludedStar?.(request.lookupName, request.cNamespace);
|
|
175
|
+
if (recovered)
|
|
176
|
+
return recovered;
|
|
177
|
+
}
|
|
178
|
+
current = fallback;
|
|
179
|
+
}
|
|
180
|
+
return current;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Files a synchronous consumer must load before resolving names in `mod`: the file itself, its
|
|
184
|
+
* resolved imports (TS/TSX overload checks read import targets), and for C++ the transitive
|
|
185
|
+
* include closure. A lookup that reads any other file finds it missing and skips that check.
|
|
186
|
+
*/
|
|
187
|
+
export function nameResolutionPreloadFiles(index, mod, languageId) {
|
|
188
|
+
const files = new Map([[fileIdentityKey(mod.file), mod.file]]);
|
|
189
|
+
for (const file of nameLookupPolicyFor(languageId).preloadFiles?.(index, mod) ?? []) {
|
|
190
|
+
files.set(fileIdentityKey(file), file);
|
|
191
|
+
}
|
|
192
|
+
return [...files.values()];
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The definition a resolution names without running deferred member steps: a deferred step
|
|
196
|
+
* contributes its fallback. For consumers that settle member lookups separately.
|
|
197
|
+
*/
|
|
198
|
+
export function definitionWithoutDeferredSteps(resolution) {
|
|
199
|
+
let current = resolution;
|
|
200
|
+
while (current?.status === "deferred")
|
|
201
|
+
current = current.fallback;
|
|
202
|
+
return current?.status === "ok" ? current.definition : null;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=name-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-resolution.js","sourceRoot":"","sources":["../../src/indexer/name-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,mBAAmB,EACnB,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAA0B,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAkBtE,OAAO,EAA4F,MAAM,YAAY,CAAC;AAGtH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,gGAAgG;AAChG,MAAM,UAAU,uBAAuB,CACrC,OAAiC,EACjC,IAAY,EACZ,MAAc;IAEd,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;YAAE,SAAS;QAC9D,IACE,2BAA2B,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,EACjH,CAAC;YACD,OAAO,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAmB,EACnB,OAAoD;IAEpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAmC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,OAAO;QACL,GAAG,CAAC,IAAI;YACN,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU;YACR,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC9B,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACrG,CAAC;gBAAC,MAAM,CAAC;oBACP,2EAA2E;oBAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,KAAgC,EAAE,IAAa;IACtF,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;IACpB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,yBAAyB,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM;QAC3B,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,GAAG,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,uBAAuB,CAAC,UAAsB,EAAE,OAAuB,EAAE,SAAkB;IACzG,OAAO,CACL,CAAC,OAAO;QACR,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC;QACzF,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,CAAC,CACnG,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,uBAAuB,CAAC,GAAgB,EAAE,SAAkB;IAC1E,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnG,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,uBAAuB,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAgB;IAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,KAAK,GAAoB;QAC7B,GAAG;QACH,UAAU;QACV,cAAc,EAAE,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;KAC5E,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAClD,MAAM,IAAI,GAAG,GAA0B,EAAE;QACvC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC;QAClD,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QACjC,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1G,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;YAC5C,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC1C,IAAI,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;QACzF,CAAC;QACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,iBAAiB,KAAK,SAAS;YAAE,OAAO,iBAAiB,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,0BAA0B;YAAE,OAAO,IAAI,CAAC;QACjD,MAAM,QAAQ,GAAG,sBAAsB,CACrC,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,EACH,MAAM,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,UAAU,EAC7C,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,UAAU,EACf,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5D,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtD,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC;AAUD,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAgB,EAChB,UAAiC,EACjC,UAA6B,EAAE;IAE/B,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,OAAO,OAAO,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,iCAAiC,CACpD,KAAK,EACL,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,GAAG,EACV,OAAO,CAAC,oBAAoB,CAC7B,CAAC;YACF,IAAI,MAAM;gBAAE,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,IAAI,IAAI,CAAC;QAC7C,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,CAAC,UAAU,EAClB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,GAAG,CAAC,EAAE,CACd,CAAC;YACF,yFAAyF;YACzF,IACE,MAAM;gBACN,OAAO,CAAC,oBAAoB;gBAC5B,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EACvE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,MAAM;gBAAE,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtG,8FAA8F;YAC9F,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAC;QAChH,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9F,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,QAAQ,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAmB,EAAE,GAAgB,EAAE,UAAkB;IAClG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAiB,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,UAAiC;IAC9E,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,OAAO,OAAO,EAAE,MAAM,KAAK,UAAU;QAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClE,OAAO,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type LanguageSupport } from "../languages.js";
|
|
2
|
+
import type { SyntaxNodeLike, SyntaxTreeLike } from "../languages/types.js";
|
|
3
|
+
import type { FileId } from "../types.js";
|
|
4
|
+
import type { Binding } from "./scope-types.js";
|
|
5
|
+
import { type ModuleIndex, type ProjectIndex, type SymbolDef } from "./types.js";
|
|
6
|
+
export type CppParsedFile = {
|
|
7
|
+
source: string;
|
|
8
|
+
tree: SyntaxTreeLike;
|
|
9
|
+
sup?: LanguageSupport;
|
|
10
|
+
};
|
|
11
|
+
type CppParsedFileLoader = (file: string) => Promise<CppParsedFile | null>;
|
|
12
|
+
export declare function resolveCppCallableBindings(file: FileId, bindings: readonly Binding[], node: SyntaxNodeLike, source: string): SymbolDef | null;
|
|
13
|
+
/**
|
|
14
|
+
* Undefined means the lexical binding is not a C++ callable that needs arity
|
|
15
|
+
* selection. Null means no unique target after declaration-site and known-call-arity checks.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveCppCollidingBinding(file: FileId, binding: Binding, node: SyntaxNodeLike, source: string): SymbolDef | null | undefined;
|
|
18
|
+
/** A using-declaration introduces its target, not a new local definition. */
|
|
19
|
+
export declare function cppUsingDeclarationTarget(binding: Binding, source: string): string | undefined;
|
|
20
|
+
/** Function exports visible as `name` in this module, including include and using-alias targets. */
|
|
21
|
+
export declare function collectVisibleCppFunctionExports(index: ProjectIndex, sourceModule: ModuleIndex, name: string): SymbolDef[];
|
|
22
|
+
/**
|
|
23
|
+
* Selects among already-collected C++ function definitions by known call arity,
|
|
24
|
+
* without treating a consumer's source position as a declaration site.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveCppExportedCallables(index: ProjectIndex, defs: readonly SymbolDef[], node: SyntaxNodeLike, source: string, loadParsedFile: (file: string) => CppParsedFile | null, canonicalNameForDef?: (def: SymbolDef) => string | undefined): SymbolDef | null;
|
|
27
|
+
/**
|
|
28
|
+
* Undefined means this name has no visible C++ function exports. Null means no
|
|
29
|
+
* unique target remains after known-call-arity checks.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveVisibleCppCallableName(index: ProjectIndex, sourceModule: ModuleIndex, name: string, node: SyntaxNodeLike, source: string, loadParsedFile: (file: string) => CppParsedFile | null): SymbolDef | null | undefined;
|
|
32
|
+
export declare function cppStarImportClosure(index: ProjectIndex, sourceModule: ModuleIndex): readonly ModuleIndex[];
|
|
33
|
+
/**
|
|
34
|
+
* Find the first qualifier where it is used: a block alias, then namespace aliases,
|
|
35
|
+
* nested namespaces, and type names in the enclosing namespaces, innermost first.
|
|
36
|
+
* Undefined means no binding was found; null means an ambiguous or cyclic alias.
|
|
37
|
+
*/
|
|
38
|
+
export declare function cppQualifiedNameThroughVisiblePrefix(index: ProjectIndex, sourceModule: ModuleIndex, name: string, node: SyntaxNodeLike, source: string, tree: SyntaxTreeLike, loadParsedFile: (file: string) => CppParsedFile | null): string | null | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Bare lookup through `using namespace`. Undefined means no directive nominates
|
|
41
|
+
* this name. Null means more than one viable candidate, or the candidate could
|
|
42
|
+
* not be proved unique. Block-scope directives are ignored.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveCppUsingDirectiveName(index: ProjectIndex, sourceModule: ModuleIndex, name: string, node: SyntaxNodeLike, source: string, loadParsedFile: (file: string) => CppParsedFile | null): SymbolDef | null | undefined;
|
|
45
|
+
/** Resolves one reachable C++ class/struct/union by its exact namespace and nesting path. */
|
|
46
|
+
export declare function resolveCppQualifiedMemberContainer(index: ProjectIndex, sourceModule: ModuleIndex, ownerPath: readonly string[], loadParsedFile?: CppParsedFileLoader): Promise<SymbolDef | null>;
|
|
47
|
+
/** Select a proven static class member named through a namespace-qualified type. */
|
|
48
|
+
export declare function resolveCppVisibleStaticCallableName(index: ProjectIndex, sourceModule: ModuleIndex, qualifiedName: string, node: SyntaxNodeLike, source: string, loadParsedFile: (file: string) => CppParsedFile | null): SymbolDef | null | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Whether code inside a C++ function definition has an implicit `this`: the function is a
|
|
51
|
+
* non-static member function, defined in its class body or out of line as `Owner::f`. A free
|
|
52
|
+
* function (including a namespace-qualified one) and a static member function have none, so an
|
|
53
|
+
* instance member cannot be named without an object there. Mixed static and non-static
|
|
54
|
+
* declarations of the same name are not proven either way and count as static.
|
|
55
|
+
*/
|
|
56
|
+
export declare function cppFunctionHasImplicitThis(index: ProjectIndex, sourceModule: ModuleIndex, definition: SyntaxNodeLike, source: string, sup: LanguageSupport, loadParsedFile?: CppParsedFileLoader): Promise<boolean>;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=navigation-cpp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-cpp.d.ts","sourceRoot":"","sources":["../../src/indexer/navigation-cpp.ts"],"names":[],"mappings":"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"}
|