@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,342 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { foldPhpIdentifierCase } from "../util/identifiers.js";
|
|
3
|
+
import { findPhpComposerPath, getPhpComposerAutoloadFiles, isPhpComposerClassmapExcluded, loadPhpComposerConfig, } from "../util/resolution/php-composer.js";
|
|
4
|
+
import { canonicalPhpReferenceNames, findPhpImportAlias, inferPhpQualifiedReferenceImportType, readPhpNamespaceFromRange, } from "./navigation-php.js";
|
|
5
|
+
import { SymbolKind } from "./types.js";
|
|
6
|
+
import { ensureParsedContext } from "./parse-context.js";
|
|
7
|
+
import { supportForFileWithoutHeaderSample } from "../languages.js";
|
|
8
|
+
import { fileIdentityKey } from "../util/paths.js";
|
|
9
|
+
import { definitionIdentityKey } from "./reference-context.js";
|
|
10
|
+
/**
|
|
11
|
+
* Absolute PHP class/trait/interface spellings for `name` at `node`, in PHP lookup order.
|
|
12
|
+
* A `use` alias wins; otherwise the current namespace is prepended. Class names do not fall
|
|
13
|
+
* back to the global namespace. Returns null unless `node` is a class-reference form
|
|
14
|
+
* (`extends`, `implements`, trait `use`, `new`, or a static class scope).
|
|
15
|
+
*
|
|
16
|
+
* The qualified-name index comes from `ensurePhpNamespaceSymbolIndex`. Callers await that
|
|
17
|
+
* before this synchronous lookup.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveIndexedPhpClassReference(index, source, tree, node, name, imports) {
|
|
20
|
+
if (inferPhpQualifiedReferenceImportType(node) !== "class")
|
|
21
|
+
return null;
|
|
22
|
+
return resolvePhpNamespaceSymbol(index, source, tree, node, name, imports, "class");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resolves `name` from `node`'s namespace using PHP's ordered candidates. Callers that already
|
|
26
|
+
* know the name is a class or function (a base clause, for example) skip the syntactic role check.
|
|
27
|
+
*/
|
|
28
|
+
export function resolvePhpNamespaceSymbol(index, source, tree, node, name, imports, role) {
|
|
29
|
+
if (phpAliasOwnsReference(name, imports, role))
|
|
30
|
+
return null;
|
|
31
|
+
const candidates = canonicalPhpReferenceNames(name, source, tree, node, {
|
|
32
|
+
...(imports ? { imports } : {}),
|
|
33
|
+
role,
|
|
34
|
+
});
|
|
35
|
+
return resolveFirstIndexedPhpSymbol(index, candidates, role);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A matching `use` alias is resolved by PHP's import path, including Composer classmap
|
|
39
|
+
* excludes. The namespace index must not revive a name that alias already owns.
|
|
40
|
+
*/
|
|
41
|
+
function phpAliasOwnsReference(name, imports, role) {
|
|
42
|
+
if (!imports || !imports.length)
|
|
43
|
+
return false;
|
|
44
|
+
const trimmed = name.trim();
|
|
45
|
+
if (!trimmed || trimmed.startsWith("\\") || trimmed.startsWith("namespace\\"))
|
|
46
|
+
return false;
|
|
47
|
+
const separator = trimmed.indexOf("\\");
|
|
48
|
+
const firstSegment = separator < 0 ? trimmed : trimmed.slice(0, separator);
|
|
49
|
+
const importType = separator < 0 && role === "function" ? "function" : "class";
|
|
50
|
+
return findPhpImportAlias(imports, firstSegment, importType) !== null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* First PHP candidate that names exactly one indexed declaration. A candidate that matches
|
|
54
|
+
* more than one declaration is ambiguous and stays unresolved; later fallbacks are not tried,
|
|
55
|
+
* matching PHP's ordered lookup (namespace, then global for functions only).
|
|
56
|
+
*/
|
|
57
|
+
export function resolveFirstIndexedPhpSymbol(index, candidates, role) {
|
|
58
|
+
const symbols = phpNamespaceSymbolIndexFor(index);
|
|
59
|
+
if (!symbols)
|
|
60
|
+
return null;
|
|
61
|
+
const map = role === "function" ? symbols.functions : symbols.classes;
|
|
62
|
+
for (const candidate of candidates) {
|
|
63
|
+
const key = foldPhpIdentifierCase(candidate.trim().replace(/^\\+/, ""));
|
|
64
|
+
if (!key)
|
|
65
|
+
continue;
|
|
66
|
+
const matches = map.get(key) ?? [];
|
|
67
|
+
if (matches.length === 1)
|
|
68
|
+
return matches[0] ?? null;
|
|
69
|
+
if (matches.length > 1)
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/** PHP's class import namespace: classes (including traits), interfaces, and enums. */
|
|
75
|
+
export const PHP_CLASS_LIKE_KINDS = new Set([
|
|
76
|
+
SymbolKind.Class,
|
|
77
|
+
SymbolKind.Interface,
|
|
78
|
+
SymbolKind.TypeAlias,
|
|
79
|
+
]);
|
|
80
|
+
/** PHP namespace segments fold case; the final constant identifier does not. */
|
|
81
|
+
function phpConstantQualifiedKey(name) {
|
|
82
|
+
const separator = name.lastIndexOf("\\");
|
|
83
|
+
return separator < 0 ? name : foldPhpIdentifierCase(name.slice(0, separator)) + name.slice(separator);
|
|
84
|
+
}
|
|
85
|
+
/** A PHP use binds a qualified symbol name, even without a Composer file mapping. */
|
|
86
|
+
export function resolvePhpExplicitImport(index, binding, role) {
|
|
87
|
+
if (binding.mechanism !== "php" || (binding.phpImportType ?? "class") !== role)
|
|
88
|
+
return null;
|
|
89
|
+
const symbols = phpNamespaceSymbolIndexFor(index);
|
|
90
|
+
if (!symbols)
|
|
91
|
+
return null;
|
|
92
|
+
const qualifiedName = binding.from.trim().replace(/^\\+/, "");
|
|
93
|
+
if (!qualifiedName)
|
|
94
|
+
return null;
|
|
95
|
+
const key = role === "const" ? phpConstantQualifiedKey(qualifiedName) : foldPhpIdentifierCase(qualifiedName);
|
|
96
|
+
let matches;
|
|
97
|
+
if (role === "class")
|
|
98
|
+
matches = symbols.classes.get(key);
|
|
99
|
+
else if (role === "function")
|
|
100
|
+
matches = symbols.functions.get(key);
|
|
101
|
+
else
|
|
102
|
+
matches = symbols.consts.get(key);
|
|
103
|
+
if (!matches)
|
|
104
|
+
return null;
|
|
105
|
+
const resolvedFile = typeof binding.resolved === "string" ? fileIdentityKey(binding.resolved) : undefined;
|
|
106
|
+
const visibility = symbols.composerAutoloadByImport.get(binding);
|
|
107
|
+
let found = null;
|
|
108
|
+
for (const def of matches) {
|
|
109
|
+
const fileKey = fileIdentityKey(def.file);
|
|
110
|
+
if (resolvedFile) {
|
|
111
|
+
if (fileKey !== resolvedFile)
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
else if (visibility) {
|
|
115
|
+
if (!visibility.files.has(path.resolve(def.file))) {
|
|
116
|
+
const included = visibility.module.imports.some((candidate) => candidate.kind === "star" &&
|
|
117
|
+
candidate.mechanism === "php" &&
|
|
118
|
+
typeof candidate.resolved === "string" &&
|
|
119
|
+
fileIdentityKey(candidate.resolved) === fileKey);
|
|
120
|
+
if (!included)
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (symbols.composerExcludedFiles.has(fileKey)) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (found)
|
|
128
|
+
return null;
|
|
129
|
+
found = def;
|
|
130
|
+
}
|
|
131
|
+
return found;
|
|
132
|
+
}
|
|
133
|
+
const phpNamespaceSymbolIndexes = new WeakMap();
|
|
134
|
+
const phpNamespaceSymbolIndexBuilds = new WeakMap();
|
|
135
|
+
function pushPhpNamespaceSymbol(map, key, def) {
|
|
136
|
+
const existing = map.get(key);
|
|
137
|
+
if (!existing) {
|
|
138
|
+
map.set(key, [def]);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const start = def.range.start.index;
|
|
142
|
+
if (existing.some((candidate) => {
|
|
143
|
+
const candidateStart = candidate.range.start.index;
|
|
144
|
+
return (fileIdentityKey(candidate.file) === fileIdentityKey(def.file) &&
|
|
145
|
+
candidate.localName === def.localName &&
|
|
146
|
+
candidateStart === start);
|
|
147
|
+
})) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
existing.push(def);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Qualified PHP names for one index, read once from each declaration's parsed tree.
|
|
154
|
+
* `phpIndexedCanonicalNames` and same-namespace lookup share this table. A replaced
|
|
155
|
+
* `byFile` map rebuilds it. Ambiguous spellings stay as multiple defs.
|
|
156
|
+
*/
|
|
157
|
+
export function ensurePhpNamespaceSymbolIndex(index) {
|
|
158
|
+
const cached = phpNamespaceSymbolIndexes.get(index);
|
|
159
|
+
if (cached && cached.source === index.byFile && cached.size === index.byFile.size)
|
|
160
|
+
return Promise.resolve(cached);
|
|
161
|
+
const pending = phpNamespaceSymbolIndexBuilds.get(index);
|
|
162
|
+
if (pending)
|
|
163
|
+
return pending;
|
|
164
|
+
const build = buildPhpNamespaceSymbolIndex(index)
|
|
165
|
+
.then((built) => {
|
|
166
|
+
phpNamespaceSymbolIndexes.set(index, built);
|
|
167
|
+
return built;
|
|
168
|
+
})
|
|
169
|
+
.finally(() => {
|
|
170
|
+
if (phpNamespaceSymbolIndexBuilds.get(index) === build)
|
|
171
|
+
phpNamespaceSymbolIndexBuilds.delete(index);
|
|
172
|
+
});
|
|
173
|
+
phpNamespaceSymbolIndexBuilds.set(index, build);
|
|
174
|
+
return build;
|
|
175
|
+
}
|
|
176
|
+
/** Synchronous view of `ensurePhpNamespaceSymbolIndex`. Null until that builder has finished. */
|
|
177
|
+
export function phpNamespaceSymbolIndexFor(index) {
|
|
178
|
+
const cached = phpNamespaceSymbolIndexes.get(index);
|
|
179
|
+
if (!cached || cached.source !== index.byFile || cached.size !== index.byFile.size)
|
|
180
|
+
return null;
|
|
181
|
+
return cached;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* A PHP class, function, or constant role names only declarations in that namespace.
|
|
185
|
+
* Pass the reference node to infer the role, or the role of a `use` binding directly.
|
|
186
|
+
*/
|
|
187
|
+
export function phpReferenceRoleMatchesKind(nodeOrRole, kind) {
|
|
188
|
+
const role = nodeOrRole === "class" || nodeOrRole === "function" || nodeOrRole === "const"
|
|
189
|
+
? nodeOrRole
|
|
190
|
+
: (inferPhpQualifiedReferenceImportType(nodeOrRole) ?? "const");
|
|
191
|
+
if (role === "class")
|
|
192
|
+
return PHP_CLASS_LIKE_KINDS.has(kind);
|
|
193
|
+
if (role === "function")
|
|
194
|
+
return kind === SymbolKind.Function;
|
|
195
|
+
return kind === SymbolKind.Variable;
|
|
196
|
+
}
|
|
197
|
+
/** Resolve a PHP role collision from same-scope bindings or module constants. */
|
|
198
|
+
export function resolvePhpSameScopeRoleDefinition(index, moduleEntry, source, tree, node, name, binding) {
|
|
199
|
+
const role = inferPhpQualifiedReferenceImportType(node) ?? "const";
|
|
200
|
+
if (findPhpImportAlias(moduleEntry.imports, name, role))
|
|
201
|
+
return null;
|
|
202
|
+
const symbols = phpNamespaceSymbolIndexFor(index);
|
|
203
|
+
if (!symbols)
|
|
204
|
+
return null;
|
|
205
|
+
const candidates = canonicalPhpReferenceNames(name, source, tree, node, role === "const" ? undefined : { imports: moduleEntry.imports, role });
|
|
206
|
+
for (const candidateName of candidates) {
|
|
207
|
+
const key = role === "const" ? phpConstantQualifiedKey(candidateName) : foldPhpIdentifierCase(candidateName);
|
|
208
|
+
let found = null;
|
|
209
|
+
for (const local of moduleEntry.locals) {
|
|
210
|
+
if (local.isMember || !phpReferenceRoleMatchesKind(node, local.kind))
|
|
211
|
+
continue;
|
|
212
|
+
if (role === "const") {
|
|
213
|
+
// PHP const declarations are indexed as locals but not lexical scope bindings.
|
|
214
|
+
if (local.localName !== name)
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
let inScope = false;
|
|
219
|
+
for (let current = binding; current; current = current.earlierSameScope) {
|
|
220
|
+
if (current.def?.start.index === local.range.start.index &&
|
|
221
|
+
current.def?.end.index === local.range.end.index) {
|
|
222
|
+
inScope = true;
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (!inScope)
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const canonical = symbols.canonicalByDefinition.get(definitionIdentityKey(local));
|
|
230
|
+
if (!canonical)
|
|
231
|
+
continue;
|
|
232
|
+
const localKey = role === "const" ? phpConstantQualifiedKey(canonical) : foldPhpIdentifierCase(canonical);
|
|
233
|
+
if (localKey !== key)
|
|
234
|
+
continue;
|
|
235
|
+
if (found && definitionIdentityKey(found) !== definitionIdentityKey(local))
|
|
236
|
+
return null;
|
|
237
|
+
found = local;
|
|
238
|
+
}
|
|
239
|
+
if (found)
|
|
240
|
+
return found;
|
|
241
|
+
}
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
/** Verify a class candidate proven visible through imports also names this exact PHP class. */
|
|
245
|
+
export function phpClassReferenceMatchesDefinition(index, source, tree, node, name, imports, def) {
|
|
246
|
+
if (!PHP_CLASS_LIKE_KINDS.has(def.kind))
|
|
247
|
+
return false;
|
|
248
|
+
const canonical = phpNamespaceSymbolIndexFor(index)?.canonicalByDefinition.get(definitionIdentityKey(def));
|
|
249
|
+
if (!canonical)
|
|
250
|
+
return false;
|
|
251
|
+
const expected = foldPhpIdentifierCase(canonical);
|
|
252
|
+
return canonicalPhpReferenceNames(name, source, tree, node, { imports, role: "class" }).some((candidate) => foldPhpIdentifierCase(candidate.replace(/^\\+/, "")) === expected);
|
|
253
|
+
}
|
|
254
|
+
async function buildPhpNamespaceSymbolIndex(index) {
|
|
255
|
+
const classes = new Map();
|
|
256
|
+
const functions = new Map();
|
|
257
|
+
const consts = new Map();
|
|
258
|
+
const functionNames = [];
|
|
259
|
+
const seenFunctionNames = new Set();
|
|
260
|
+
const canonicalByDefinition = new Map();
|
|
261
|
+
const composerExcludedFiles = new Set();
|
|
262
|
+
const composerAutoloadByImport = new WeakMap();
|
|
263
|
+
const phpModules = [];
|
|
264
|
+
for (const moduleEntry of index.byFile.values()) {
|
|
265
|
+
if (supportForFileWithoutHeaderSample(moduleEntry.file, index.languageExtensions)?.id === "php") {
|
|
266
|
+
phpModules.push(moduleEntry);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const parsedByFile = new Map();
|
|
270
|
+
await Promise.all(phpModules.map(async (moduleEntry) => {
|
|
271
|
+
const key = fileIdentityKey(moduleEntry.file);
|
|
272
|
+
try {
|
|
273
|
+
const parsed = await ensureParsedContext(moduleEntry.file, index.parsed?.get(key), index.languageExtensions);
|
|
274
|
+
parsedByFile.set(key, parsed.sup.id === "php" ? parsed : null);
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
parsedByFile.set(key, null);
|
|
278
|
+
}
|
|
279
|
+
if (index.projectRoot) {
|
|
280
|
+
const composerPath = await findPhpComposerPath(index.projectRoot, moduleEntry.file);
|
|
281
|
+
if (composerPath) {
|
|
282
|
+
const config = await loadPhpComposerConfig(composerPath);
|
|
283
|
+
if (config) {
|
|
284
|
+
const excluded = isPhpComposerClassmapExcluded(moduleEntry.file, config);
|
|
285
|
+
const hasPhpImports = moduleEntry.imports.some((binding) => binding.kind === "named" && binding.mechanism === "php");
|
|
286
|
+
if (excluded || hasPhpImports) {
|
|
287
|
+
const autoloadFiles = await getPhpComposerAutoloadFiles(composerPath, config);
|
|
288
|
+
if (excluded && !autoloadFiles.has(path.resolve(moduleEntry.file)))
|
|
289
|
+
composerExcludedFiles.add(key);
|
|
290
|
+
if (hasPhpImports) {
|
|
291
|
+
const visibility = { files: autoloadFiles, module: moduleEntry };
|
|
292
|
+
for (const binding of moduleEntry.imports) {
|
|
293
|
+
if (binding.kind === "named" && binding.mechanism === "php") {
|
|
294
|
+
composerAutoloadByImport.set(binding, visibility);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}));
|
|
303
|
+
for (const moduleEntry of phpModules) {
|
|
304
|
+
const parsed = parsedByFile.get(fileIdentityKey(moduleEntry.file)) ?? null;
|
|
305
|
+
for (const local of moduleEntry.locals) {
|
|
306
|
+
if (local.isMember)
|
|
307
|
+
continue;
|
|
308
|
+
if (!parsed)
|
|
309
|
+
continue;
|
|
310
|
+
const phpNamespace = readPhpNamespaceFromRange(parsed.tree, parsed.source, local.range);
|
|
311
|
+
const canonical = (phpNamespace ? `${phpNamespace}\\${local.localName}` : local.localName).replace(/^\\+/, "");
|
|
312
|
+
const cacheKey = definitionIdentityKey(local);
|
|
313
|
+
if (!canonical)
|
|
314
|
+
continue;
|
|
315
|
+
canonicalByDefinition.set(cacheKey, canonical);
|
|
316
|
+
const folded = foldPhpIdentifierCase(canonical);
|
|
317
|
+
if (PHP_CLASS_LIKE_KINDS.has(local.kind))
|
|
318
|
+
pushPhpNamespaceSymbol(classes, folded, local);
|
|
319
|
+
else if (local.kind === SymbolKind.Function) {
|
|
320
|
+
pushPhpNamespaceSymbol(functions, folded, local);
|
|
321
|
+
if (!seenFunctionNames.has(folded)) {
|
|
322
|
+
seenFunctionNames.add(folded);
|
|
323
|
+
functionNames.push(canonical);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
else if (local.kind === SymbolKind.Variable)
|
|
327
|
+
pushPhpNamespaceSymbol(consts, phpConstantQualifiedKey(canonical), local);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return {
|
|
331
|
+
classes,
|
|
332
|
+
functions,
|
|
333
|
+
consts,
|
|
334
|
+
functionNames,
|
|
335
|
+
canonicalByDefinition,
|
|
336
|
+
composerExcludedFiles,
|
|
337
|
+
composerAutoloadByImport,
|
|
338
|
+
source: index.byFile,
|
|
339
|
+
size: index.byFile.size,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=php-namespace-symbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php-namespace-symbols.js","sourceRoot":"","sources":["../../src/indexer/php-namespace-symbols.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-candidates.d.ts","sourceRoot":"","sources":["../../src/indexer/reference-candidates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"reference-candidates.d.ts","sourceRoot":"","sources":["../../src/indexer/reference-candidates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,uBAAuB,CAoB/G;AAED,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,UAAU,EAAE,MAAM,GACjB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAIjC"}
|
|
@@ -3,17 +3,23 @@ export function buildReferenceCandidateIndex(modules) {
|
|
|
3
3
|
const byTargetFile = new Map();
|
|
4
4
|
for (const moduleIndex of modules.values()) {
|
|
5
5
|
const fileId = moduleIndex.file;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
continue;
|
|
6
|
+
const recordTarget = (targetFile) => {
|
|
7
|
+
if (fileIdentityKey(targetFile) === fileIdentityKey(fileId))
|
|
8
|
+
return;
|
|
10
9
|
const targetKey = fileIdentityKey(targetFile);
|
|
11
10
|
const files = byTargetFile.get(targetKey);
|
|
12
|
-
if (files)
|
|
11
|
+
if (files)
|
|
13
12
|
files.add(fileId);
|
|
14
|
-
|
|
15
|
-
else {
|
|
13
|
+
else
|
|
16
14
|
byTargetFile.set(targetKey, new Set([fileId]));
|
|
15
|
+
};
|
|
16
|
+
for (const imp of moduleIndex.imports) {
|
|
17
|
+
if (imp.kind === "star" && imp.jvmPackageFiles) {
|
|
18
|
+
for (const targetFile of imp.jvmPackageFiles)
|
|
19
|
+
recordTarget(targetFile);
|
|
20
|
+
}
|
|
21
|
+
else if (typeof imp.resolved === "string") {
|
|
22
|
+
recordTarget(imp.resolved);
|
|
17
23
|
}
|
|
18
24
|
}
|
|
19
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-candidates.js","sourceRoot":"","sources":["../../src/indexer/reference-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,UAAU,4BAA4B,CAAC,OAAyC;IACpF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACpD,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;QAChC,
|
|
1
|
+
{"version":3,"file":"reference-candidates.js","sourceRoot":"","sources":["../../src/indexer/reference-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,UAAU,4BAA4B,CAAC,OAAyC;IACpF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACpD,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;QAChC,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAQ,EAAE;YAChD,IAAI,eAAe,CAAC,UAAU,CAAC,KAAK,eAAe,CAAC,MAAM,CAAC;gBAAE,OAAO;YACpE,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;gBACxB,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBAC/C,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,eAAe;oBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC5C,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,cAAmD,EACnD,UAAkB;IAElB,MAAM,KAAK,GAAG,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -2,6 +2,8 @@ import { type LanguageExtensionMap, type LanguageSupport } from "../languages.js
|
|
|
2
2
|
import type { SyntaxTreeLike } from "../languages/types.js";
|
|
3
3
|
import type { Range } from "../types.js";
|
|
4
4
|
import type { SymbolDef } from "./types.js";
|
|
5
|
+
/** Stable identity of one declaration site: file identity plus start offset (or line and column). */
|
|
6
|
+
export declare function definitionIdentityKey(def: SymbolDef): string;
|
|
5
7
|
export declare function sameDef(left: SymbolDef, right: SymbolDef, languageExtensions?: LanguageExtensionMap): boolean;
|
|
6
8
|
export declare function rangeContains(range: Range, pos: {
|
|
7
9
|
row: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-context.d.ts","sourceRoot":"","sources":["../../src/indexer/reference-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGrH,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAU7G;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CASzF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYrG;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,GACnB,MAAM,CAsER"}
|
|
1
|
+
{"version":3,"file":"reference-context.d.ts","sourceRoot":"","sources":["../../src/indexer/reference-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGrH,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qGAAqG;AACrG,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAE5D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAU7G;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CASzF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYrG;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,GACnB,MAAM,CAsER"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { supportForFileWithoutHeaderSample } from "../languages.js";
|
|
2
2
|
import { fileIdentityKey } from "../util/paths.js";
|
|
3
3
|
import { sliceText } from "../util/ast.js";
|
|
4
|
+
/** Stable identity of one declaration site: file identity plus start offset (or line and column). */
|
|
5
|
+
export function definitionIdentityKey(def) {
|
|
6
|
+
return `${fileIdentityKey(def.file)}:${def.range.start.index ?? `${def.range.start.line}:${def.range.start.column}`}`;
|
|
7
|
+
}
|
|
4
8
|
export function sameDef(left, right, languageExtensions) {
|
|
5
9
|
const leftIndex = left.range.start.index ?? 0;
|
|
6
10
|
const rightIndex = right.range.start.index ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-context.js","sourceRoot":"","sources":["../../src/indexer/reference-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAmD,MAAM,iBAAiB,CAAC;AACrH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,MAAM,UAAU,OAAO,CAAC,IAAe,EAAE,KAAgB,EAAE,kBAAyC;IAClG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAChD,MAAM,mBAAmB,GACvB,iCAAiC,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,mBAAmB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5G,OAAO,CACL,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1D,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC;QAC5E,SAAS,KAAK,UAAU,CACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,GAAoC;IAC9E,IAAI,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,IAAY,EAAE,KAAa;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,MAAc,EAAE,IAAY,EAAE,QAAgB;IAC3F,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IAEpE,IAAI,OAAO,GAAG,SAAS,GAAG,YAAY,EAAE,CAAC;QACvC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,IAAoB,EACpB,KAAY,EACZ,QAAgB,EAChB,GAAoB;IAEpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACjH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,8BAA8B,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,gBAAgB,GAA0B,IAAI,CAAC;IACnD,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE,CAC/C,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,UAAU,CAAC;IAC3F,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE;QACjD,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC3D,IACE,IAAI,KAAK,sBAAsB;gBAC/B,IAAI,KAAK,mBAAmB;gBAC5B,IAAI,KAAK,mBAAmB;gBAC5B,IAAI,KAAK,gBAAgB;gBACzB,IAAI,KAAK,qBAAqB,EAC9B,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBACxD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,IAAI,KAAK,qBAAqB,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAClE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,IAAI,aAAa,GAA0B,IAAI,CAAC;IAChD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,iBAAiB,EAAE,CAAC;YACjC,aAAa,GAAG,OAAO,CAAC;YACxB,iBAAiB,GAAG,QAAQ,CAAC;YAC7B,IAAI,QAAQ,IAAI,CAAC;gBAAE,MAAM;QAC3B,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC3F,gBAAgB,GAAG,OAAO,CAAC;QAC7B,CAAC;QACD,MAAM,MAAM,GAA0B,OAAO,CAAC,MAAM,CAAC;QACrD,IAAI,CAAC,MAAM;YAAE,MAAM;QACnB,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,IAAI,gBAAgB,CAAC;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,8BAA8B,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QACjC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"reference-context.js","sourceRoot":"","sources":["../../src/indexer/reference-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
* Per-language node-name tables for scope construction in `./scope.js`.
|
|
3
3
|
*
|
|
4
4
|
* Rows are keyed by language id, following the trivia-table precedent in `../util/trivia-tables.js`:
|
|
5
|
-
* the walker keeps the algorithm, the table keeps the node names
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* re-derives both halves from the pinned grammar, fails when a row drifts, and asserts that every
|
|
9
|
-
* function-scope node type with a name field has a name-registration entry.
|
|
10
|
-
*
|
|
5
|
+
* the walker keeps the algorithm, and the table keeps the pinned grammar's node names and
|
|
6
|
+
* language-specific visibility rules. `tests/scope-node-tables.test.ts` checks listed node types
|
|
7
|
+
* against the grammar and verifies that name-bearing function scopes register their names.
|
|
11
8
|
* Fields are optional: an absent field means the language has no node of that shape.
|
|
9
|
+
* Zig's `memberContainerTypes` keeps container functions out of the file scope because Zig has
|
|
10
|
+
* no implicit member scope.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* field, which is absent in those rows. Zig's `memberContainerTypes` is deliberately wider than the
|
|
17
|
-
* intersection: Zig has no implicit member scope, so a container's member functions must not land
|
|
18
|
-
* in the file scope.
|
|
12
|
+
* `wholeScopeKinds` and `wholeScopeDeclarationTypes` say when a binding covers uses that
|
|
13
|
+
* appear before it. The walker resolves occurrences once the enclosing scope is complete; the
|
|
14
|
+
* row decides whether a later declaration in that scope names those earlier uses.
|
|
19
15
|
*/
|
|
16
|
+
import type { SyntaxNodeLike } from "../languages/types.js";
|
|
17
|
+
import type { Range } from "../types.js";
|
|
18
|
+
import { SymbolKind } from "./types.js";
|
|
19
|
+
import type { Scope, ScopeIndex } from "./scope-types.js";
|
|
20
20
|
export type ScopeNodeRow = {
|
|
21
21
|
/** Ancestor node types that mark an identifier as a parameter rather than a declaration. */
|
|
22
22
|
parameterParents?: ReadonlySet<string>;
|
|
@@ -62,6 +62,8 @@ export type ScopeNodeRow = {
|
|
|
62
62
|
patternBindingTypes?: ReadonlySet<string>;
|
|
63
63
|
/** Node types whose left-hand side is a pattern (`:=` style declarations). */
|
|
64
64
|
shortVariableDeclarationTypes?: ReadonlySet<string>;
|
|
65
|
+
/** Explicit unqualified calls use the method namespace, not same-named local variables. */
|
|
66
|
+
explicitMethodCallTypes?: ReadonlySet<string>;
|
|
65
67
|
/** Node types that put a declared name and a type node side by side, so the type node is skipped. */
|
|
66
68
|
destructuringTypeFieldTypes?: ReadonlySet<string>;
|
|
67
69
|
/** Node types that destructure a value reached through their `value` field. */
|
|
@@ -74,7 +76,10 @@ export type ScopeNodeRow = {
|
|
|
74
76
|
memberFunctionTypes?: ReadonlySet<string>;
|
|
75
77
|
/** Node types that make a nested function a member rather than a file-scope declaration. */
|
|
76
78
|
memberContainerTypes?: ReadonlySet<string>;
|
|
77
|
-
/**
|
|
79
|
+
/** Node types whose body is a member scope rather than an ordinary block (C++ classes). */
|
|
80
|
+
memberScopeTypes?: ReadonlySet<string>;
|
|
81
|
+
/** Child node types skipped when they hold the name or parameters of a name-registering node,
|
|
82
|
+
* or repeat a parent identifier's spelling (PHP `variable_name > name`). */
|
|
78
83
|
childSkipNameTypes?: ReadonlySet<string>;
|
|
79
84
|
/** Node types that are the file root, so no block scope is pushed for them. */
|
|
80
85
|
moduleRootTypes?: ReadonlySet<string>;
|
|
@@ -102,7 +107,81 @@ export type ScopeNodeRow = {
|
|
|
102
107
|
enumDeclarationTypes: ReadonlySet<string>;
|
|
103
108
|
scopedKeywordPattern: RegExp;
|
|
104
109
|
};
|
|
110
|
+
/**
|
|
111
|
+
* Scope kinds whose bindings cover the whole scope, including uses that textually precede
|
|
112
|
+
* the declaration. JS `let`/`const` still name the inner binding from the start of the block
|
|
113
|
+
* (temporal dead zone). Absent kinds expose a binding only at and after its declaration, so a
|
|
114
|
+
* later declaration does not capture an earlier use in that scope (C and C++ files and
|
|
115
|
+
* blocks, Rust `let`, Go locals). Only C++ class member scopes cover earlier uses.
|
|
116
|
+
*/
|
|
117
|
+
wholeScopeKinds?: ReadonlySet<Scope["kind"]>;
|
|
118
|
+
/** A later point-declared local shadows an outer name even for an invalid earlier read (C#). */
|
|
119
|
+
laterLocalBlocksOuterKinds?: ReadonlySet<Scope["kind"]>;
|
|
120
|
+
/**
|
|
121
|
+
* Declaration node types that cover their whole scope even when the scope kind is absent from
|
|
122
|
+
* `wholeScopeKinds`. Matched against the name's parent, or that parent's parent when the name
|
|
123
|
+
* sits under a `variable_declarator`. Rust items inside a function are visible before their
|
|
124
|
+
* text; a `let` in the same block is not.
|
|
125
|
+
*/
|
|
126
|
+
wholeScopeDeclarationTypes?: ReadonlySet<string>;
|
|
127
|
+
/** Declaration forms visible before their text only when directly inside a member container. */
|
|
128
|
+
wholeScopeMemberDeclarationTypes?: ReadonlySet<string>;
|
|
129
|
+
/** Module names used inside function bodies resolve after module initialization (Python). */
|
|
130
|
+
moduleBindingsAtFunctionRuntime?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Put a variable declaration in the nearest scope of one of these kinds. Python: an assignment
|
|
133
|
+
* anywhere in a function makes that name local to the whole function, not to the block that
|
|
134
|
+
* holds the statement.
|
|
135
|
+
*/
|
|
136
|
+
variableTargetScopeKinds?: ReadonlySet<Scope["kind"]>;
|
|
137
|
+
/**
|
|
138
|
+
* A scope whose node or parent has one of these types stops `variableTargetScopeKinds` from
|
|
139
|
+
* lifting past it. Python class bodies are `block` nodes, but an assignment there is a class
|
|
140
|
+
* attribute, not a function local.
|
|
141
|
+
*/
|
|
142
|
+
variableScopeBoundaryTypes?: ReadonlySet<string>;
|
|
143
|
+
/** Class-body scopes crossed by nested definitions are not captured by those definitions. */
|
|
144
|
+
classScopeBoundaryTypes?: ReadonlySet<string>;
|
|
145
|
+
/** A comprehension runs outside its class, except for its first iterable expression. */
|
|
146
|
+
classScopeComprehension?: {
|
|
147
|
+
types: ReadonlySet<string>;
|
|
148
|
+
firstClauseType: string;
|
|
149
|
+
iterableField: string;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Member-access node types whose property name is not a lexical use.
|
|
153
|
+
* Python `self.run` must not attach to a same-named function; the property is a member.
|
|
154
|
+
*/
|
|
155
|
+
nonLexicalMemberPropertyTypes?: ReadonlySet<string>;
|
|
105
156
|
};
|
|
157
|
+
/**
|
|
158
|
+
* Whether `binding` in a scope of `scopeKind` names a use at `useStartIndex`.
|
|
159
|
+
* Whole-scope bindings name every use in the scope. Every other binding names only uses at
|
|
160
|
+
* or after its declaration. Declaration-type coverage is recorded on the binding when it is
|
|
161
|
+
* registered, so this compares indexes instead of walking the declaration's ancestors.
|
|
162
|
+
*/
|
|
163
|
+
export declare function bindingCoversUse(row: ScopeNodeRow, scopeKind: Scope["kind"], binding: {
|
|
164
|
+
def?: Range;
|
|
165
|
+
coversEnclosingScope?: boolean;
|
|
166
|
+
}, useStartIndex: number): boolean;
|
|
106
167
|
export declare const SCOPE_NODE_ROWS: Record<string, ScopeNodeRow>;
|
|
107
168
|
export declare function scopeNodesFor(languageId: string): ScopeNodeRow;
|
|
169
|
+
/** Preserve sigils on variable nodes so they cannot collide with import, type, or function names. */
|
|
170
|
+
export declare function scopeIdentifierKey(row: ScopeNodeRow, name: string, node: SyntaxNodeLike, normalizeIdentifier: (value: string) => string): string;
|
|
171
|
+
/** A call with a method name but no receiver does not name a local variable (Ruby). */
|
|
172
|
+
export declare function isExplicitMethodCall(row: ScopeNodeRow, node: SyntaxNodeLike): boolean;
|
|
173
|
+
/** Class bodies are not closures for nested runtime scopes (Python). */
|
|
174
|
+
export declare function scopeAllowsUse(row: ScopeNodeRow, scope: Scope, use: SyntaxNodeLike): boolean;
|
|
175
|
+
/** A later local in this lexical scope makes an earlier outer-name read invalid. */
|
|
176
|
+
export declare function laterLocalBlocksOuterUse(row: ScopeNodeRow, scope: Scope, canonicalName: string, useStartIndex: number): boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Whether a file-wide same-name fallback may bind the declaration starting at `defStartIndex`
|
|
179
|
+
* for a use the lexical lookup refused: the declaring scope must sit on the use's lexical
|
|
180
|
+
* chain, and a class body only binds uses inside itself (Python class scopes are not
|
|
181
|
+
* closures for nested runtime scopes). Declarations outside the scope model stay accepted.
|
|
182
|
+
*/
|
|
183
|
+
/** Innermost scope whose node contains `currentNode`. */
|
|
184
|
+
export declare function closestContainingScope(scopeIndex: ScopeIndex, currentNode: SyntaxNodeLike): Scope | undefined;
|
|
185
|
+
/** Check a same-file definition found outside lexical lookup against file-scope declaration order. */
|
|
186
|
+
export declare function fileScopeDefinitionCoversUse(languageId: string, def: Range, useStartIndex: number, kind?: SymbolKind, fromFunctionAtRuntime?: boolean): boolean;
|
|
108
187
|
//# sourceMappingURL=scope-nodes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-nodes.d.ts","sourceRoot":"","sources":["../../src/indexer/scope-nodes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scope-nodes.d.ts","sourceRoot":"","sources":["../../src/indexer/scope-nodes.ts"],"names":[],"mappings":"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"}
|