@lzehrung/codegraph 2.3.30 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -137
- package/codegraph-skill/codegraph/SKILL.md +5 -3
- package/dist/agent/artifact.d.ts +2 -0
- package/dist/agent/artifact.d.ts.map +1 -1
- package/dist/agent/artifact.js.map +1 -1
- package/dist/agent/search.d.ts.map +1 -1
- package/dist/agent/search.js +3 -0
- package/dist/agent/search.js.map +1 -1
- package/dist/agent/session.d.ts +3 -0
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +10 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/bin/cli.js +42229 -28876
- package/dist/bin/query-index-worker.js +73 -11
- package/dist/cli/affected.d.ts.map +1 -1
- package/dist/cli/affected.js +4 -1
- package/dist/cli/affected.js.map +1 -1
- package/dist/cli/command-catalog.js +1 -1
- package/dist/cli/command-catalog.js.map +1 -1
- package/dist/cli/graph-queries.d.ts.map +1 -1
- package/dist/cli/graph-queries.js +27 -1
- package/dist/cli/graph-queries.js.map +1 -1
- package/dist/cli/help.d.ts +2 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +4 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/options.js +2 -2
- package/dist/cli/options.js.map +1 -1
- package/dist/drift/artifact.d.ts.map +1 -1
- package/dist/drift/artifact.js +15 -18
- package/dist/drift/artifact.js.map +1 -1
- package/dist/drift/compare.js +1 -1
- package/dist/drift/compare.js.map +1 -1
- package/dist/drift/snapshot.d.ts.map +1 -1
- package/dist/drift/snapshot.js +5 -6
- package/dist/drift/snapshot.js.map +1 -1
- package/dist/drift/types.d.ts +2 -0
- package/dist/drift/types.d.ts.map +1 -1
- package/dist/drift/types.js.map +1 -1
- package/dist/graph-builder.d.ts.map +1 -1
- package/dist/graph-builder.js +4 -6
- package/dist/graph-builder.js.map +1 -1
- package/dist/graph-edge-collector.d.ts +3 -0
- package/dist/graph-edge-collector.d.ts.map +1 -1
- package/dist/graph-edge-collector.js +8 -5
- package/dist/graph-edge-collector.js.map +1 -1
- package/dist/graphs/angularjs.d.ts.map +1 -1
- package/dist/graphs/angularjs.js +2 -1
- package/dist/graphs/angularjs.js.map +1 -1
- package/dist/graphs/edge-resolution.d.ts +4 -1
- package/dist/graphs/edge-resolution.d.ts.map +1 -1
- package/dist/graphs/edge-resolution.js +26 -2
- package/dist/graphs/edge-resolution.js.map +1 -1
- package/dist/graphs/specifiers.d.ts.map +1 -1
- package/dist/graphs/specifiers.js +6 -2
- package/dist/graphs/specifiers.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
- package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
- package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +51 -8
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.js +823 -132
- package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.js +139 -7
- package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +128 -22
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js +872 -125
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed.js +434 -40
- package/dist/graphs/symbol-graph-detailed.js.map +1 -1
- package/dist/graphs/symbol-graph.d.ts +2 -0
- package/dist/graphs/symbol-graph.d.ts.map +1 -1
- package/dist/graphs/symbol-graph.js +34 -16
- package/dist/graphs/symbol-graph.js.map +1 -1
- package/dist/impact/call-compatibility/providers/index.d.ts +12 -0
- package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
- package/dist/impact/call-compatibility/providers/index.js +16 -22
- package/dist/impact/call-compatibility/providers/index.js.map +1 -1
- package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
- package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility/types.d.ts +6 -0
- package/dist/impact/call-compatibility/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility.d.ts.map +1 -1
- package/dist/impact/call-compatibility.js +316 -552
- package/dist/impact/call-compatibility.js.map +1 -1
- package/dist/impact/map.js +1 -0
- package/dist/impact/map.js.map +1 -1
- package/dist/impact/member-resolution-coverage.d.ts.map +1 -1
- package/dist/impact/member-resolution-coverage.js +1 -1
- package/dist/impact/member-resolution-coverage.js.map +1 -1
- package/dist/impact/reference-cache.d.ts.map +1 -1
- package/dist/impact/reference-cache.js +2 -2
- package/dist/impact/reference-cache.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/ambiguous-resolution.d.ts +11 -0
- package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
- package/dist/indexer/ambiguous-resolution.js +19 -0
- package/dist/indexer/ambiguous-resolution.js.map +1 -0
- package/dist/indexer/build-cache/module-cache.d.ts +38 -0
- package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache/module-cache.js +151 -9
- package/dist/indexer/build-cache/module-cache.js.map +1 -1
- package/dist/indexer/build-cache/options.d.ts +16 -43
- package/dist/indexer/build-cache/options.d.ts.map +1 -1
- package/dist/indexer/build-cache/options.js +16 -43
- package/dist/indexer/build-cache/options.js.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts +1 -0
- package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.js +117 -24
- package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.js +32 -2
- package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
- package/dist/indexer/build-cache.d.ts +1 -1
- package/dist/indexer/build-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache.js +1 -1
- package/dist/indexer/build-cache.js.map +1 -1
- package/dist/indexer/build-index.d.ts.map +1 -1
- package/dist/indexer/build-index.js +593 -22
- package/dist/indexer/build-index.js.map +1 -1
- package/dist/indexer/call-hierarchy.js +1 -1
- package/dist/indexer/call-hierarchy.js.map +1 -1
- package/dist/indexer/compilation-units.d.ts +101 -0
- package/dist/indexer/compilation-units.d.ts.map +1 -0
- package/dist/indexer/compilation-units.js +605 -0
- package/dist/indexer/compilation-units.js.map +1 -0
- package/dist/indexer/cpp-callables.d.ts +20 -0
- package/dist/indexer/cpp-callables.d.ts.map +1 -0
- package/dist/indexer/cpp-callables.js +554 -0
- package/dist/indexer/cpp-callables.js.map +1 -0
- package/dist/indexer/declaration-visibility.d.ts +36 -2
- package/dist/indexer/declaration-visibility.d.ts.map +1 -1
- package/dist/indexer/declaration-visibility.js +136 -2
- package/dist/indexer/declaration-visibility.js.map +1 -1
- package/dist/indexer/expand-star-imports.d.ts.map +1 -1
- package/dist/indexer/expand-star-imports.js +28 -6
- package/dist/indexer/expand-star-imports.js.map +1 -1
- package/dist/indexer/import-types.d.ts +37 -0
- package/dist/indexer/import-types.d.ts.map +1 -1
- package/dist/indexer/import-types.js +24 -1
- package/dist/indexer/import-types.js.map +1 -1
- package/dist/indexer/imports/binding-ranges.d.ts +1 -1
- package/dist/indexer/imports/binding-ranges.d.ts.map +1 -1
- package/dist/indexer/imports/context.d.ts +11 -1
- package/dist/indexer/imports/context.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.d.ts +75 -0
- package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -0
- package/dist/indexer/imports/import-binding-tables.js +544 -0
- package/dist/indexer/imports/import-binding-tables.js.map +1 -0
- package/dist/indexer/imports/js-text-imports.js +4 -4
- package/dist/indexer/imports/js-text-imports.js.map +1 -1
- package/dist/indexer/imports/language-specific.d.ts +3 -22
- package/dist/indexer/imports/language-specific.d.ts.map +1 -1
- package/dist/indexer/imports/language-specific.js +29 -362
- package/dist/indexer/imports/language-specific.js.map +1 -1
- package/dist/indexer/imports/native-captures.d.ts.map +1 -1
- package/dist/indexer/imports/native-captures.js +18 -6
- package/dist/indexer/imports/native-captures.js.map +1 -1
- package/dist/indexer/imports/python.d.ts +10 -2
- package/dist/indexer/imports/python.d.ts.map +1 -1
- package/dist/indexer/imports/python.js +91 -40
- package/dist/indexer/imports/python.js.map +1 -1
- package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
- package/dist/indexer/imports/text-import-extractors.js +51 -12
- package/dist/indexer/imports/text-import-extractors.js.map +1 -1
- package/dist/indexer/imports.d.ts.map +1 -1
- package/dist/indexer/imports.js +25 -5
- package/dist/indexer/imports.js.map +1 -1
- package/dist/indexer/incremental-plan.d.ts +33 -0
- package/dist/indexer/incremental-plan.d.ts.map +1 -1
- package/dist/indexer/incremental-plan.js +187 -1
- package/dist/indexer/incremental-plan.js.map +1 -1
- package/dist/indexer/locals-and-exports.d.ts +2 -0
- package/dist/indexer/locals-and-exports.d.ts.map +1 -1
- package/dist/indexer/locals-and-exports.js +565 -54
- package/dist/indexer/locals-and-exports.js.map +1 -1
- package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
- package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/c-family.js +117 -0
- package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js +113 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
- package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/index.js +106 -0
- package/dist/indexer/name-lookup-policies/index.js.map +1 -0
- package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/php.js +75 -0
- package/dist/indexer/name-lookup-policies/php.js.map +1 -0
- package/dist/indexer/name-resolution-types.d.ts +99 -0
- package/dist/indexer/name-resolution-types.d.ts.map +1 -0
- package/dist/indexer/name-resolution-types.js +2 -0
- package/dist/indexer/name-resolution-types.js.map +1 -0
- package/dist/indexer/name-resolution.d.ts +52 -0
- package/dist/indexer/name-resolution.d.ts.map +1 -0
- package/dist/indexer/name-resolution.js +189 -0
- package/dist/indexer/name-resolution.js.map +1 -0
- package/dist/indexer/navigation-cpp.d.ts +50 -0
- package/dist/indexer/navigation-cpp.d.ts.map +1 -0
- package/dist/indexer/navigation-cpp.js +654 -0
- package/dist/indexer/navigation-cpp.js.map +1 -0
- package/dist/indexer/navigation-goto.d.ts +107 -4
- package/dist/indexer/navigation-goto.d.ts.map +1 -1
- package/dist/indexer/navigation-goto.js +2075 -137
- package/dist/indexer/navigation-goto.js.map +1 -1
- package/dist/indexer/navigation-local.d.ts +18 -2
- package/dist/indexer/navigation-local.d.ts.map +1 -1
- package/dist/indexer/navigation-local.js +498 -61
- package/dist/indexer/navigation-local.js.map +1 -1
- package/dist/indexer/navigation-php.d.ts +66 -0
- package/dist/indexer/navigation-php.d.ts.map +1 -1
- package/dist/indexer/navigation-php.js +287 -4
- package/dist/indexer/navigation-php.js.map +1 -1
- package/dist/indexer/navigation-references.d.ts +72 -5
- package/dist/indexer/navigation-references.d.ts.map +1 -1
- package/dist/indexer/navigation-references.js +620 -54
- package/dist/indexer/navigation-references.js.map +1 -1
- package/dist/indexer/navigation-resolve.d.ts +33 -2
- package/dist/indexer/navigation-resolve.d.ts.map +1 -1
- package/dist/indexer/navigation-resolve.js +446 -193
- package/dist/indexer/navigation-resolve.js.map +1 -1
- package/dist/indexer/navigation.d.ts +28 -2
- package/dist/indexer/navigation.d.ts.map +1 -1
- package/dist/indexer/navigation.js +1082 -151
- package/dist/indexer/navigation.js.map +1 -1
- package/dist/indexer/php-namespace-symbols.d.ts +66 -0
- package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
- package/dist/indexer/php-namespace-symbols.js +342 -0
- package/dist/indexer/php-namespace-symbols.js.map +1 -0
- package/dist/indexer/reference-context.d.ts +2 -0
- package/dist/indexer/reference-context.d.ts.map +1 -1
- package/dist/indexer/reference-context.js +4 -0
- package/dist/indexer/reference-context.js.map +1 -1
- package/dist/indexer/scope-nodes.d.ts +92 -13
- package/dist/indexer/scope-nodes.d.ts.map +1 -1
- package/dist/indexer/scope-nodes.js +212 -20
- package/dist/indexer/scope-nodes.js.map +1 -1
- package/dist/indexer/scope-types.d.ts +25 -1
- package/dist/indexer/scope-types.d.ts.map +1 -1
- package/dist/indexer/scope.d.ts.map +1 -1
- package/dist/indexer/scope.js +894 -45
- package/dist/indexer/scope.js.map +1 -1
- package/dist/indexer/shared-owner-identity.d.ts +53 -0
- package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
- package/dist/indexer/shared-owner-identity.js +460 -0
- package/dist/indexer/shared-owner-identity.js.map +1 -0
- package/dist/indexer/shared.d.ts +1 -1
- package/dist/indexer/shared.d.ts.map +1 -1
- package/dist/indexer/shared.js +1 -1
- package/dist/indexer/shared.js.map +1 -1
- package/dist/indexer/star-import-precedence.d.ts +114 -0
- package/dist/indexer/star-import-precedence.d.ts.map +1 -0
- package/dist/indexer/star-import-precedence.js +396 -0
- package/dist/indexer/star-import-precedence.js.map +1 -0
- package/dist/indexer/symbols.d.ts +3 -1
- package/dist/indexer/symbols.d.ts.map +1 -1
- package/dist/indexer/symbols.js +58 -18
- package/dist/indexer/symbols.js.map +1 -1
- package/dist/indexer/ts-callables.d.ts +51 -0
- package/dist/indexer/ts-callables.d.ts.map +1 -0
- package/dist/indexer/ts-callables.js +264 -0
- package/dist/indexer/ts-callables.js.map +1 -0
- package/dist/indexer/types.d.ts +23 -1
- package/dist/indexer/types.d.ts.map +1 -1
- package/dist/indexer/unused-exports.d.ts +13 -0
- package/dist/indexer/unused-exports.d.ts.map +1 -0
- package/dist/indexer/unused-exports.js +159 -0
- package/dist/indexer/unused-exports.js.map +1 -0
- package/dist/indexer/workspace-symbols.d.ts.map +1 -1
- package/dist/indexer/workspace-symbols.js +3 -2
- package/dist/indexer/workspace-symbols.js.map +1 -1
- package/dist/indexer.d.ts +2 -2
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +1 -1
- package/dist/indexer.js.map +1 -1
- package/dist/languages/callable-arity.d.ts +202 -0
- package/dist/languages/callable-arity.d.ts.map +1 -0
- package/dist/languages/callable-arity.js +1182 -0
- package/dist/languages/callable-arity.js.map +1 -0
- package/dist/languages/definitions/c-family.d.ts.map +1 -1
- package/dist/languages/definitions/c-family.js +30 -1
- package/dist/languages/definitions/c-family.js.map +1 -1
- package/dist/languages/definitions/c.d.ts +4 -0
- package/dist/languages/definitions/c.d.ts.map +1 -1
- package/dist/languages/definitions/c.js +19 -0
- package/dist/languages/definitions/c.js.map +1 -1
- package/dist/languages/definitions/cpp.d.ts.map +1 -1
- package/dist/languages/definitions/cpp.js +12 -0
- package/dist/languages/definitions/cpp.js.map +1 -1
- package/dist/languages/definitions/csharp.d.ts.map +1 -1
- package/dist/languages/definitions/csharp.js +2 -8
- package/dist/languages/definitions/csharp.js.map +1 -1
- package/dist/languages/definitions/go.d.ts.map +1 -1
- package/dist/languages/definitions/go.js +3 -0
- package/dist/languages/definitions/go.js.map +1 -1
- package/dist/languages/definitions/javascript.d.ts.map +1 -1
- package/dist/languages/definitions/javascript.js +10 -1
- package/dist/languages/definitions/javascript.js.map +1 -1
- package/dist/languages/definitions/js-family.d.ts +1 -1
- package/dist/languages/definitions/js-family.d.ts.map +1 -1
- package/dist/languages/definitions/js-family.js +7 -1
- package/dist/languages/definitions/js-family.js.map +1 -1
- package/dist/languages/definitions/php.d.ts.map +1 -1
- package/dist/languages/definitions/php.js +5 -1
- package/dist/languages/definitions/php.js.map +1 -1
- package/dist/languages/definitions/typescript.d.ts.map +1 -1
- package/dist/languages/definitions/typescript.js +8 -1
- package/dist/languages/definitions/typescript.js.map +1 -1
- package/dist/languages/definitions/zig.d.ts.map +1 -1
- package/dist/languages/definitions/zig.js +2 -0
- package/dist/languages/definitions/zig.js.map +1 -1
- package/dist/mcp/handlers.js +14 -7
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/review/candidates.d.ts.map +1 -1
- package/dist/review/candidates.js +1 -1
- package/dist/review/candidates.js.map +1 -1
- package/dist/review/deleted.d.ts +3 -3
- package/dist/review/deleted.d.ts.map +1 -1
- package/dist/review/deleted.js +82 -32
- package/dist/review/deleted.js.map +1 -1
- package/dist/review/report.d.ts +1 -0
- package/dist/review/report.d.ts.map +1 -1
- package/dist/review/report.js +1 -1
- package/dist/review/report.js.map +1 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +1 -0
- package/dist/review.js.map +1 -1
- package/dist/sql/navigation.d.ts.map +1 -1
- package/dist/sql/navigation.js +1 -0
- package/dist/sql/navigation.js.map +1 -1
- package/dist/sql/source-graph.d.ts.map +1 -1
- package/dist/sql/source-graph.js +2 -2
- package/dist/sql/source-graph.js.map +1 -1
- package/dist/sqlite/schema.d.ts +1 -1
- package/dist/sqlite/schema.d.ts.map +1 -1
- package/dist/sqlite/schema.js +8 -2
- package/dist/sqlite/schema.js.map +1 -1
- package/dist/sqlite/write.js +2 -2
- package/dist/sqlite/write.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/util/bloom-filter.d.ts +7 -1
- package/dist/util/bloom-filter.d.ts.map +1 -1
- package/dist/util/bloom-filter.js +12 -2
- package/dist/util/bloom-filter.js.map +1 -1
- package/dist/util/dynamic-import-tables.d.ts +88 -0
- package/dist/util/dynamic-import-tables.d.ts.map +1 -0
- package/dist/util/dynamic-import-tables.js +100 -0
- package/dist/util/dynamic-import-tables.js.map +1 -0
- package/dist/util/graph-edges.d.ts +19 -1
- package/dist/util/graph-edges.d.ts.map +1 -1
- package/dist/util/graph-edges.js +30 -4
- package/dist/util/graph-edges.js.map +1 -1
- package/dist/util/identifiers.d.ts +15 -0
- package/dist/util/identifiers.d.ts.map +1 -1
- package/dist/util/identifiers.js +35 -0
- package/dist/util/identifiers.js.map +1 -1
- package/dist/util/member-access-tables.d.ts +129 -0
- package/dist/util/member-access-tables.d.ts.map +1 -0
- package/dist/util/member-access-tables.js +285 -0
- package/dist/util/member-access-tables.js.map +1 -0
- package/dist/util/member-access.d.ts +17 -0
- package/dist/util/member-access.d.ts.map +1 -1
- package/dist/util/member-access.js +138 -93
- package/dist/util/member-access.js.map +1 -1
- package/dist/util/resolution/cargo-targets.d.ts +11 -0
- package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
- package/dist/util/resolution/cargo-targets.js +174 -13
- package/dist/util/resolution/cargo-targets.js.map +1 -1
- package/dist/util/resolution/csharp.d.ts +33 -1
- package/dist/util/resolution/csharp.d.ts.map +1 -1
- package/dist/util/resolution/csharp.js +145 -30
- package/dist/util/resolution/csharp.js.map +1 -1
- package/dist/util/resolution/php.d.ts.map +1 -1
- package/dist/util/resolution/php.js +35 -8
- package/dist/util/resolution/php.js.map +1 -1
- package/dist/util/resolution/python.d.ts +9 -0
- package/dist/util/resolution/python.d.ts.map +1 -1
- package/dist/util/resolution/python.js +46 -0
- package/dist/util/resolution/python.js.map +1 -1
- package/dist/util/resolution/rust.d.ts.map +1 -1
- package/dist/util/resolution/rust.js +95 -26
- package/dist/util/resolution/rust.js.map +1 -1
- package/dist/util/resolution-candidates.d.ts +5 -0
- package/dist/util/resolution-candidates.d.ts.map +1 -1
- package/dist/util/resolution-candidates.js +16 -3
- package/dist/util/resolution-candidates.js.map +1 -1
- package/dist/util/resolution.d.ts +2 -1
- package/dist/util/resolution.d.ts.map +1 -1
- package/dist/util/resolution.js +96 -5
- package/dist/util/resolution.js.map +1 -1
- package/dist/util/specifiers.d.ts +20 -0
- package/dist/util/specifiers.d.ts.map +1 -1
- package/dist/util/specifiers.js +39 -93
- package/dist/util/specifiers.js.map +1 -1
- package/docs/mcp.md +3 -2
- package/package.json +3 -3
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swift, C#, Java, and Kotlin additions to the shared name lookup order: inside a type, a member
|
|
3
|
+
* reached through the implicit `self`/`this` (including an inherited one) is settled by the
|
|
4
|
+
* member lookup, which applies static scope and overload selection, and it takes precedence over
|
|
5
|
+
* a same-named module-level name or import.
|
|
6
|
+
*/
|
|
7
|
+
import { nearestMemberContainer, nodeInStaticMemberContext, } from "../../graphs/symbol-graph-detailed/receiver-calls.js";
|
|
8
|
+
import { csharpAliasQualifiedLookupName, implicitSelfCallee, isDirectKeywordMemberDeclaration, } from "../navigation-goto.js";
|
|
9
|
+
import { csharpLookupName, definitionForBinding } from "../navigation-local.js";
|
|
10
|
+
import { csharpUsingStaticFiles, withCsharpUsingStatic } from "./csharp-using-static.js";
|
|
11
|
+
import { okGoToResult } from "../navigation-provenance.js";
|
|
12
|
+
import { resolveCsharpQualifiedName } from "../navigation-resolve.js";
|
|
13
|
+
const implicitSelf = (state, fallback) => ({
|
|
14
|
+
status: "deferred",
|
|
15
|
+
request: { kind: "implicit-self-member", lookupName: state.lookupName },
|
|
16
|
+
fallback,
|
|
17
|
+
});
|
|
18
|
+
const lexical = (state, local) => okGoToResult(state.use.index, local, { resolution: "exact", confidence: "high" });
|
|
19
|
+
/** The closest binding is declared in the file's top scope (module-level function or type). */
|
|
20
|
+
const bindsAtFileScope = ({ use, closestBinding }) => !!closestBinding && use.scopeIndex.allScopes[0]?.map.get(closestBinding.canonicalName) === closestBinding;
|
|
21
|
+
/**
|
|
22
|
+
* The closest binding is a method declared directly in a type body. Overloads bound this way are
|
|
23
|
+
* not grouped by the scope lookup, so the member lookup chooses among them; a function declared
|
|
24
|
+
* inside a method body is not a member and keeps its lexical binding.
|
|
25
|
+
*/
|
|
26
|
+
function bindsTypeMethod({ closestBinding }) {
|
|
27
|
+
const declaration = closestBinding?.kind === "function" ? closestBinding.node?.parent : undefined;
|
|
28
|
+
const container = declaration ? nearestMemberContainer(declaration) : null;
|
|
29
|
+
return !!declaration && !!container && isDirectKeywordMemberDeclaration(declaration, container);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The use is the name of a same-scope overload that a later declaration replaced in the scope map
|
|
33
|
+
* (`int Two(int a)` before `int Two(int a, int b)`). A declaration's own name resolves to that
|
|
34
|
+
* declaration, not to the last overload.
|
|
35
|
+
*/
|
|
36
|
+
function ownOverloadDeclaration({ use, closestBinding }) {
|
|
37
|
+
const { node, file, parsed } = use;
|
|
38
|
+
for (let binding = closestBinding?.earlierSameScope; binding; binding = binding.earlierSameScope) {
|
|
39
|
+
if (binding.node?.startIndex !== node.startIndex || binding.node.endIndex !== node.endIndex)
|
|
40
|
+
continue;
|
|
41
|
+
const own = definitionForBinding(binding, file, node, parsed.sup, parsed.source, parsed.tree);
|
|
42
|
+
return own ? okGoToResult(use.index, own, { resolution: "exact", confidence: "high" }) : undefined;
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
/** The use is the callee of a receiverless call (`f()`). */
|
|
47
|
+
const isImplicitSelfCall = ({ use }) => implicitSelfCallee(use.parsed.sup.id, use.node.parent ?? use.node)?.id === use.node.id;
|
|
48
|
+
export const swiftLookupPolicy = {
|
|
49
|
+
fromClosestBinding: ownOverloadDeclaration,
|
|
50
|
+
// Swift checks every bare name through `self`; method-local bindings still win.
|
|
51
|
+
onLocal(state, local) {
|
|
52
|
+
if (!bindsAtFileScope(state) && !bindsTypeMethod(state))
|
|
53
|
+
return undefined;
|
|
54
|
+
return implicitSelf(state, lexical(state, local));
|
|
55
|
+
},
|
|
56
|
+
afterCrossModule(state, resolved) {
|
|
57
|
+
// A member reached only by name, not through `self`, is not a module-level target.
|
|
58
|
+
const memberOnly = resolved?.status === "ok" && !!resolved.definition.isMember;
|
|
59
|
+
return implicitSelf(state, memberOnly ? { status: "not_found", reason: "No matching Swift member definition" } : resolved);
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* A qualified C# type name (`P.Mix`) the directory-scoped lookup missed, resolved through the
|
|
64
|
+
* file's `using P;` across every directory that declares `P`.
|
|
65
|
+
*/
|
|
66
|
+
function csharpQualifiedThroughUsing({ use, lookupName }) {
|
|
67
|
+
if (!lookupName.includes("."))
|
|
68
|
+
return null;
|
|
69
|
+
const hit = resolveCsharpQualifiedName(use.index, use.mod, lookupName, use.node.startIndex);
|
|
70
|
+
return hit?.kind === "resolved"
|
|
71
|
+
? okGoToResult(use.index, hit.def, { resolution: "import", confidence: "high" })
|
|
72
|
+
: null;
|
|
73
|
+
}
|
|
74
|
+
export const csharpLookupPolicy = {
|
|
75
|
+
lookupName: (use) => csharpLookupName(use.node, use.parsed.source, use.name),
|
|
76
|
+
fromClosestBinding: ownOverloadDeclaration,
|
|
77
|
+
crossModuleName: ({ use, lookupName }) => csharpAliasQualifiedLookupName(use.node, use.parsed.source, lookupName, use.mod.imports),
|
|
78
|
+
// A static member function reaches only static members of its type.
|
|
79
|
+
onLocal(state, local) {
|
|
80
|
+
if (!bindsTypeMethod(state) || !isImplicitSelfCall(state))
|
|
81
|
+
return undefined;
|
|
82
|
+
const staticContext = nodeInStaticMemberContext(state.use.node, state.use.parsed.source);
|
|
83
|
+
return implicitSelf(state, staticContext
|
|
84
|
+
? { status: "not_found", reason: "No matching C# static member definition" }
|
|
85
|
+
: lexical(state, local));
|
|
86
|
+
},
|
|
87
|
+
// Partial members declared in another file reach this path only as invocation callees.
|
|
88
|
+
// Without a member, `using static` members join the namespace-level answer.
|
|
89
|
+
afterCrossModule: (state, resolved) => implicitSelf(state, withCsharpUsingStatic(state.use, state.lookupName, resolved ?? csharpQualifiedThroughUsing(state))),
|
|
90
|
+
preloadFiles: (_index, mod) => csharpUsingStaticFiles(mod),
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Java and Kotlin: a type method bound lexically still needs static-scope and overload checks,
|
|
94
|
+
* and an inherited member beats a same-file top-level (Kotlin) function, a same-package
|
|
95
|
+
* declaration, or an import.
|
|
96
|
+
*/
|
|
97
|
+
export const jvmLookupPolicy = {
|
|
98
|
+
// Java methods and variables are separate namespaces: `int hit = 0; hit();` still calls the
|
|
99
|
+
// method. A Kotlin local holding a function is callable, so Kotlin keeps the binding.
|
|
100
|
+
ignoresBinding: (use, binding) => use.parsed.sup.id === "java" &&
|
|
101
|
+
binding.kind !== "function" &&
|
|
102
|
+
implicitSelfCallee("java", use.node.parent ?? use.node)?.id === use.node.id,
|
|
103
|
+
fromClosestBinding: ownOverloadDeclaration,
|
|
104
|
+
onLocal(state, local) {
|
|
105
|
+
if (state.closestBinding?.kind !== "function" || !isImplicitSelfCall(state))
|
|
106
|
+
return undefined;
|
|
107
|
+
if (!bindsAtFileScope(state) && !bindsTypeMethod(state))
|
|
108
|
+
return undefined;
|
|
109
|
+
return implicitSelf(state, lexical(state, local));
|
|
110
|
+
},
|
|
111
|
+
afterCrossModule: (state, resolved) => implicitSelf(state, resolved),
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=implicit-self.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implicit-self.js","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/implicit-self.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AA2FpE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAExE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-language additions to the shared bare-name lookup order in `../name-resolution.ts`.
|
|
3
|
+
* New lookup rules belong in a policy here, never in a consumer (go-to-definition, references,
|
|
4
|
+
* or the detailed graph), so every consumer answers the same way.
|
|
5
|
+
*/
|
|
6
|
+
import { getCallArgumentCount } from "../../languages/callable-arity.js";
|
|
7
|
+
import { rustTokenTreeNameFollowsSeparator } from "../../util/member-access.js";
|
|
8
|
+
import { fileIdentityKey } from "../../util/paths.js";
|
|
9
|
+
import { resolveImported } from "../navigation-resolve.js";
|
|
10
|
+
import { typescriptOverloadImplementationAcceptsCount } from "../ts-callables.js";
|
|
11
|
+
import { SymbolKind } from "../types.js";
|
|
12
|
+
import { cLookupPolicy, cppLookupPolicy } from "./c-family.js";
|
|
13
|
+
import { csharpLookupPolicy, jvmLookupPolicy, swiftLookupPolicy } from "./implicit-self.js";
|
|
14
|
+
import { phpLookupPolicy } from "./php.js";
|
|
15
|
+
/** Whether a function shares its name with another function in its file (an overload set). */
|
|
16
|
+
function hasSameNameSiblings(module, def) {
|
|
17
|
+
return module.locals.some((candidate) => candidate.kind === def.kind &&
|
|
18
|
+
candidate.localName === def.localName &&
|
|
19
|
+
candidate.range.start.index !== def.range.start.index);
|
|
20
|
+
}
|
|
21
|
+
/** TypeScript overloads: a call must match a signature of the implementation it names. */
|
|
22
|
+
const typescriptLookupPolicy = {
|
|
23
|
+
onUnboundLocal({ use, closestBinding }) {
|
|
24
|
+
if (closestBinding?.kind !== "function" || use.node.parent?.type !== "call_expression")
|
|
25
|
+
return undefined;
|
|
26
|
+
return { status: "not_found", reason: "No matching TypeScript overload signature" };
|
|
27
|
+
},
|
|
28
|
+
afterCrossModule({ use }, resolved) {
|
|
29
|
+
const call = use.node.parent;
|
|
30
|
+
if (call?.type !== "call_expression" || resolved?.status !== "ok")
|
|
31
|
+
return undefined;
|
|
32
|
+
const target = resolved.definition;
|
|
33
|
+
if (target.kind !== SymbolKind.Function)
|
|
34
|
+
return undefined;
|
|
35
|
+
const argumentCount = getCallArgumentCount({ languageId: use.parsed.sup.id, source: use.parsed.source, call });
|
|
36
|
+
const targetModule = use.index.byFile.get(fileIdentityKey(target.file));
|
|
37
|
+
// Only an overload set needs the target's syntax; a single implementation accepts any count.
|
|
38
|
+
if (argumentCount === null || !targetModule || !hasSameNameSiblings(targetModule, target))
|
|
39
|
+
return undefined;
|
|
40
|
+
const targetContext = use.files.get(target.file);
|
|
41
|
+
if (!targetContext || (targetContext.sup.id !== "ts" && targetContext.sup.id !== "tsx"))
|
|
42
|
+
return undefined;
|
|
43
|
+
const accepted = typescriptOverloadImplementationAcceptsCount({
|
|
44
|
+
implementation: target,
|
|
45
|
+
locals: targetModule.locals,
|
|
46
|
+
tree: targetContext.tree,
|
|
47
|
+
source: targetContext.source,
|
|
48
|
+
languageId: targetContext.sup.id,
|
|
49
|
+
argumentCount,
|
|
50
|
+
});
|
|
51
|
+
return accepted ? undefined : { status: "not_found", reason: "No matching TypeScript overload signature" };
|
|
52
|
+
},
|
|
53
|
+
// A re-exported overload set lives in another file than the module the import names.
|
|
54
|
+
*preloadFiles(index, mod) {
|
|
55
|
+
for (const imp of mod.imports) {
|
|
56
|
+
if (imp.kind !== "named" && imp.kind !== "default")
|
|
57
|
+
continue;
|
|
58
|
+
const target = resolveImported(index, imp, imp.kind === "default" ? "default" : imp.imported);
|
|
59
|
+
if (!target || "namespace" in target)
|
|
60
|
+
continue;
|
|
61
|
+
const targetModule = index.byFile.get(fileIdentityKey(target.file));
|
|
62
|
+
if (targetModule && hasSameNameSiblings(targetModule, target))
|
|
63
|
+
yield target.file;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
/** Python: a module object is not callable. */
|
|
68
|
+
const pythonLookupPolicy = {
|
|
69
|
+
afterCrossModule({ use }, resolved) {
|
|
70
|
+
if (use.node.parent?.type !== "call" || resolved?.status !== "ok")
|
|
71
|
+
return undefined;
|
|
72
|
+
if (resolved.provenance?.resolution !== "namespace")
|
|
73
|
+
return undefined;
|
|
74
|
+
// A namespace binding holds a module object: the call is an error, not a call to the
|
|
75
|
+
// module's first export.
|
|
76
|
+
return { status: "not_found", reason: "No callable definition for a Python module binding" };
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
/** Rust: macro arguments stay unparsed token trees. */
|
|
80
|
+
const rustLookupPolicy = {
|
|
81
|
+
// A name preceded by `.` or `::` there is a member or path receiver the raw tokens cannot
|
|
82
|
+
// prove, so bare-name resolution would answer with an unrelated same-named free function.
|
|
83
|
+
beforeLexical(use) {
|
|
84
|
+
if (!rustTokenTreeNameFollowsSeparator(use.node))
|
|
85
|
+
return undefined;
|
|
86
|
+
return { status: "not_found", reason: "No resolvable receiver inside a Rust macro token tree" };
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const NO_POLICY = {};
|
|
90
|
+
const POLICIES = {
|
|
91
|
+
c: cLookupPolicy,
|
|
92
|
+
cpp: cppLookupPolicy,
|
|
93
|
+
csharp: csharpLookupPolicy,
|
|
94
|
+
java: jvmLookupPolicy,
|
|
95
|
+
kotlin: jvmLookupPolicy,
|
|
96
|
+
php: phpLookupPolicy,
|
|
97
|
+
python: pythonLookupPolicy,
|
|
98
|
+
rust: rustLookupPolicy,
|
|
99
|
+
swift: swiftLookupPolicy,
|
|
100
|
+
ts: typescriptLookupPolicy,
|
|
101
|
+
tsx: typescriptLookupPolicy,
|
|
102
|
+
};
|
|
103
|
+
export function nameLookupPolicyFor(languageId) {
|
|
104
|
+
return POLICIES[languageId] ?? NO_POLICY;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/php.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAgBjF,eAAO,MAAM,eAAe,EAAE,gBA0D7B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
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, inferPhpQualifiedReferenceImportType } from "../navigation-php.js";
|
|
7
|
+
import { okGoToResult } from "../navigation-provenance.js";
|
|
8
|
+
import { phpClassReferenceMatchesDefinition, phpReferenceRoleMatchesKind, resolveIndexedPhpClassReference, resolvePhpExplicitImport, 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
|
+
if (!isClassReference(use))
|
|
38
|
+
return undefined;
|
|
39
|
+
const phpClass = resolveIndexedPhpClassReference(index, parsed.source, parsed.tree, node, lookupName, mod.imports);
|
|
40
|
+
if (!phpClass)
|
|
41
|
+
return undefined;
|
|
42
|
+
return okGoToResult(index, phpClass, {
|
|
43
|
+
via: { exportedName: phpClass.localName },
|
|
44
|
+
resolution: "php-qualified",
|
|
45
|
+
confidence: "high",
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
// Scope and export fallbacks may only name this exact class, or a symbol of the use's role.
|
|
49
|
+
onLocal({ use, lookupName, closestBinding }, local) {
|
|
50
|
+
const { index, mod, node, parsed } = use;
|
|
51
|
+
if (isClassReference(use) && !classMatches(use, lookupName, local)) {
|
|
52
|
+
return { status: "not_found", reason: "No matching PHP class" };
|
|
53
|
+
}
|
|
54
|
+
if (phpReferenceRoleMatchesKind(node, local.kind))
|
|
55
|
+
return undefined;
|
|
56
|
+
const sameScope = closestBinding
|
|
57
|
+
? resolvePhpSameScopeRoleDefinition(index, mod, parsed.source, parsed.tree, node, lookupName, closestBinding)
|
|
58
|
+
: null;
|
|
59
|
+
if (sameScope)
|
|
60
|
+
return okGoToResult(index, sameScope, { resolution: "exact", confidence: "high" });
|
|
61
|
+
return { status: "not_found", reason: "No matching PHP symbol role" };
|
|
62
|
+
},
|
|
63
|
+
afterCrossModule({ use, lookupName }, resolved) {
|
|
64
|
+
if (resolved?.status !== "ok")
|
|
65
|
+
return undefined;
|
|
66
|
+
if (isClassReference(use) && !classMatches(use, lookupName, resolved.definition)) {
|
|
67
|
+
return { status: "not_found", reason: "No matching PHP class" };
|
|
68
|
+
}
|
|
69
|
+
if (!phpReferenceRoleMatchesKind(use.node, resolved.definition.kind)) {
|
|
70
|
+
return { status: "not_found", reason: "No matching PHP symbol role" };
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=php.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/php.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,kCAAkC,EAClC,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,0FAA0F;AAC1F,MAAM,gBAAgB,GAAG,CAAC,GAAgB,EAAW,EAAE,CAAC,oCAAoC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;AAEnH,MAAM,YAAY,GAAG,CAAC,GAAgB,EAAE,UAAkB,EAAE,GAAc,EAAW,EAAE,CACrF,kCAAkC,CAChC,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,MAAM,CAAC,MAAM,EACjB,GAAG,CAAC,MAAM,CAAC,IAAI,EACf,GAAG,CAAC,IAAI,EACR,UAAU,EACV,GAAG,CAAC,GAAG,CAAC,OAAO,EACf,GAAG,CACJ,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,aAAa,CAAC,GAAG,EAAE,UAAU;QAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QACjE,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;QACrE,IAAI,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3F,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChH,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;YAC7F,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,sFAAsF;QACtF,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAClG,CAAC;QACF,IAAI,WAAW;YAAE,OAAO,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACtG,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC;QAC1C,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE;gBAChC,GAAG,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE;gBAChE,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,MAAM;aACnB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7C,MAAM,QAAQ,GAAG,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACnH,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;YACnC,GAAG,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,EAAE;YACzC,UAAU,EAAE,eAAe;YAC3B,UAAU,EAAE,MAAM;SACnB,CAAC,CAAC;IACL,CAAC;IAED,4FAA4F;IAC5F,OAAO,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,KAAK;QAChD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QACzC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;QAClE,CAAC;QACD,IAAI,2BAA2B,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACpE,MAAM,SAAS,GAAG,cAAc;YAC9B,CAAC,CAAC,iCAAiC,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC;YAC7G,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,SAAS;YAAE,OAAO,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAClG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IACxE,CAAC;IAED,gBAAgB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,QAAQ;QAC5C,IAAI,QAAQ,EAAE,MAAM,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAChD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;QACxE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
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
|
+
/** Files a synchronous consumer loads before resolving names in a module of this language. */
|
|
97
|
+
preloadFiles?(index: ProjectIndex, mod: ModuleIndex): Iterable<FileId>;
|
|
98
|
+
};
|
|
99
|
+
//# 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":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-resolution-types.js","sourceRoot":"","sources":["../../src/indexer/name-resolution-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
/** PHP import role (class, function, or const) of the import that covers a 0-based position. */
|
|
16
|
+
export declare function phpImportTypeAtPosition(imports: readonly ImportBinding[], line: number, column: number): "class" | "function" | "const" | undefined;
|
|
17
|
+
export declare function createLoadingParsedFileProvider(index: ProjectIndex, current: {
|
|
18
|
+
file: FileId;
|
|
19
|
+
parsed: ParsedFileContext;
|
|
20
|
+
}): LoadingParsedFileProvider;
|
|
21
|
+
/** Runs a synchronous lookup step, parsing any file it missed and rerunning it. */
|
|
22
|
+
export declare function withParsedFiles<T>(files: LoadingParsedFileProvider, step: () => T): Promise<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Resolves a bare (unqualified or C++-qualified) name at a use site. Returns `null` when no
|
|
25
|
+
* lookup step answers; go-to-definition then tries a declaration at the position.
|
|
26
|
+
*
|
|
27
|
+
* Shared order: language pre-lexical steps, closest scope binding, its definition (with
|
|
28
|
+
* overloads chosen by arity), a local declared later in the same scope, then cross-module
|
|
29
|
+
* lookup (imports, compilation-unit peers, star imports) through {@link resolveNamedDefinition}.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveBareName(use: BareNameUse): NameResolution | null;
|
|
32
|
+
/** How a consumer settles deferred steps. */
|
|
33
|
+
export type SettleNameOptions = {
|
|
34
|
+
/** The graph records no edge when the member a call names cannot accept its argument count. */
|
|
35
|
+
requireAcceptedArity?: boolean;
|
|
36
|
+
/** Resolves included C/C++ star candidates; navigation owns this recovery. */
|
|
37
|
+
recoverIncludedStar?: (lookupName: string, cNamespace: "tag" | "ordinary" | undefined) => Promise<GoToResult | null>;
|
|
38
|
+
};
|
|
39
|
+
/** Runs the async member steps a {@link resolveBareName} result deferred. */
|
|
40
|
+
export declare function settleNameResolution(use: BareNameUse, resolution: NameResolution | null, options?: SettleNameOptions): Promise<GoToResult | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Files a synchronous consumer must load before resolving names in `mod`: the file itself, its
|
|
43
|
+
* resolved imports (TS/TSX overload checks read import targets), and for C++ the transitive
|
|
44
|
+
* include closure. A lookup that reads any other file finds it missing and skips that check.
|
|
45
|
+
*/
|
|
46
|
+
export declare function nameResolutionPreloadFiles(index: ProjectIndex, mod: ModuleIndex, languageId: string): FileId[];
|
|
47
|
+
/**
|
|
48
|
+
* The definition a resolution names without running deferred member steps: a deferred step
|
|
49
|
+
* contributes its fallback. For consumers that settle member lookups separately.
|
|
50
|
+
*/
|
|
51
|
+
export declare function definitionWithoutDeferredSteps(resolution: NameResolution | null): SymbolDef | null;
|
|
52
|
+
//# 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;AAKtH,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;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CA8CvE;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"}
|