@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,607 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { supportForFileWithoutHeaderSample } from "../languages.js";
|
|
4
|
+
import { CSHARP_IDENTIFIER_SOURCE, GO_IDENTIFIER_SOURCE, JAVA_IDENTIFIER_SOURCE, KOTLIN_IDENTIFIER_SOURCE, normalizeCsharpQualifiedName, } from "../util/identifiers.js";
|
|
5
|
+
import { fileIdentityKey } from "../util/paths.js";
|
|
6
|
+
import { maskTrivia } from "../util/trivia.js";
|
|
7
|
+
import { IMPORT_RESOLUTION_ROWS } from "./import-resolution-tables.js";
|
|
8
|
+
/** Languages whose files can name each other's top-level declarations without an import. */
|
|
9
|
+
export const IMPLICIT_UNIT_LANGUAGES = Object.fromEntries(Object.entries(IMPORT_RESOLUTION_ROWS).flatMap(([languageId, row]) => row.implicitCompilationUnit ? [[languageId, true]] : []));
|
|
10
|
+
/**
|
|
11
|
+
* Languages where the file itself is the whole unit: every cross-file reference must arrive
|
|
12
|
+
* through an import/include/module edge the index already records.
|
|
13
|
+
*/
|
|
14
|
+
const SINGLE_FILE_UNIT_LANGUAGES = {
|
|
15
|
+
c: true,
|
|
16
|
+
cpp: true,
|
|
17
|
+
js: true,
|
|
18
|
+
ts: true,
|
|
19
|
+
tsx: true,
|
|
20
|
+
python: true,
|
|
21
|
+
ruby: true,
|
|
22
|
+
rust: true,
|
|
23
|
+
zig: true,
|
|
24
|
+
};
|
|
25
|
+
/** Go, Java, and Kotlin read a package clause. Other package-kind languages are not parsed here. */
|
|
26
|
+
function packageClauseLanguage(languageId) {
|
|
27
|
+
return languageId === "go" || languageId === "java" || languageId === "kotlin";
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Languages that share one unit identity namespace. Java and Kotlin share the JVM package
|
|
31
|
+
* namespace, so a Kotlin sibling in the same package is as visible as a Java one.
|
|
32
|
+
*/
|
|
33
|
+
function unitLanguageGroup(languageId) {
|
|
34
|
+
return IMPORT_RESOLUTION_ROWS[languageId]?.implicitCompilationUnitGroup ?? languageId;
|
|
35
|
+
}
|
|
36
|
+
const GO_PACKAGE_PATTERN = new RegExp(String.raw `^\s*package\s+(${GO_IDENTIFIER_SOURCE})`, "mu");
|
|
37
|
+
const JAVA_PACKAGE_NAME_PATTERN = new RegExp(String.raw `^\s*package\s+(${JAVA_IDENTIFIER_SOURCE}(?:\.${JAVA_IDENTIFIER_SOURCE})*)\s*;`, "mu");
|
|
38
|
+
const KOTLIN_PACKAGE_NAME_PATTERN = new RegExp(String.raw `^\s*package\s+(${KOTLIN_IDENTIFIER_SOURCE}(?:\.${KOTLIN_IDENTIFIER_SOURCE})*)`, "mu");
|
|
39
|
+
/** Read a JVM package clause from the same trivia-masked source used for unit peers. */
|
|
40
|
+
export function jvmPackageNameFromSource(source, languageId) {
|
|
41
|
+
const pattern = languageId === "kotlin" ? KOTLIN_PACKAGE_NAME_PATTERN : JAVA_PACKAGE_NAME_PATTERN;
|
|
42
|
+
return pattern.exec(maskTrivia(source, languageId))?.[1] ?? null;
|
|
43
|
+
}
|
|
44
|
+
// A namespace name may be qualified (`namespace A.B { }`) and either block-scoped (closing
|
|
45
|
+
// `{`) or file-scoped (closing `;`). Mirrors the composition rule in
|
|
46
|
+
// `util/resolution/csharp.ts`, extended with spans so per-declaration namespaces can be read.
|
|
47
|
+
const CSHARP_NAMESPACE_DECLARATION_PATTERN = new RegExp(String.raw `(?<![\w@.])namespace\s+(${CSHARP_IDENTIFIER_SOURCE}(?:\s*\.\s*${CSHARP_IDENTIFIER_SOURCE})*)\s*[;{]`, "gu");
|
|
48
|
+
function collectCsharpNamespaceRegions(source) {
|
|
49
|
+
const masked = maskTrivia(source, "csharp");
|
|
50
|
+
const regions = [];
|
|
51
|
+
const scopes = [];
|
|
52
|
+
let depth = 0;
|
|
53
|
+
let cursor = 0;
|
|
54
|
+
for (const match of masked.matchAll(CSHARP_NAMESPACE_DECLARATION_PATTERN)) {
|
|
55
|
+
const matchIndex = match.index ?? 0;
|
|
56
|
+
for (; cursor < matchIndex; cursor += 1) {
|
|
57
|
+
const ch = masked[cursor];
|
|
58
|
+
if (ch === "{") {
|
|
59
|
+
depth += 1;
|
|
60
|
+
}
|
|
61
|
+
else if (ch === "}") {
|
|
62
|
+
depth -= 1;
|
|
63
|
+
while (scopes.length && scopes[scopes.length - 1].openedDepth >= depth) {
|
|
64
|
+
scopes.pop().region.end = cursor;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const namespaceName = match[1];
|
|
69
|
+
if (!namespaceName)
|
|
70
|
+
continue;
|
|
71
|
+
// `namespace @P` and `namespace P` declare one namespace; compare normalized segments.
|
|
72
|
+
const normalized = normalizeCsharpQualifiedName(namespaceName);
|
|
73
|
+
const terminator = masked[matchIndex + match[0].length - 1];
|
|
74
|
+
cursor = matchIndex + match[0].length;
|
|
75
|
+
if (terminator !== "{") {
|
|
76
|
+
// A file-scoped namespace is always top level and does not open a scope.
|
|
77
|
+
regions.push({ name: normalized, start: matchIndex, end: masked.length });
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const enclosing = scopes.length ? scopes[scopes.length - 1].name : null;
|
|
81
|
+
const qualified = enclosing ? `${enclosing}.${normalized}` : normalized;
|
|
82
|
+
const region = { name: qualified, start: matchIndex, end: masked.length };
|
|
83
|
+
regions.push(region);
|
|
84
|
+
scopes.push({ openedDepth: depth, name: qualified, region });
|
|
85
|
+
depth += 1;
|
|
86
|
+
}
|
|
87
|
+
for (; cursor < masked.length; cursor += 1) {
|
|
88
|
+
if (masked[cursor] === "{") {
|
|
89
|
+
depth += 1;
|
|
90
|
+
}
|
|
91
|
+
else if (masked[cursor] === "}") {
|
|
92
|
+
depth -= 1;
|
|
93
|
+
while (scopes.length && scopes[scopes.length - 1].openedDepth >= depth) {
|
|
94
|
+
scopes.pop().region.end = cursor;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
while (scopes.length) {
|
|
99
|
+
scopes.pop().region.end = masked.length;
|
|
100
|
+
}
|
|
101
|
+
// A block-scoped namespace does not cover the whole file, so a type declared outside every
|
|
102
|
+
// region (`class Global {}` beside `namespace P { }`) lives in the global namespace. A
|
|
103
|
+
// whole-file global region keeps that fact; nested named regions still win as innermost.
|
|
104
|
+
if (regions.length && csharpHasTopLevelTypeOutside(masked, regions)) {
|
|
105
|
+
regions.unshift({ name: "", start: 0, end: masked.length });
|
|
106
|
+
}
|
|
107
|
+
return regions;
|
|
108
|
+
}
|
|
109
|
+
const CSHARP_TYPE_KEYWORD_PATTERN = /(?<![\w@])(?:class|struct|interface|enum|record|delegate)(?!\w)/u;
|
|
110
|
+
/** True when trivia-masked source outside every namespace region declares a type. */
|
|
111
|
+
function csharpHasTopLevelTypeOutside(masked, regions) {
|
|
112
|
+
let cursor = 0;
|
|
113
|
+
const outside = [];
|
|
114
|
+
for (const region of [...regions].sort((left, right) => left.start - right.start)) {
|
|
115
|
+
if (region.start > cursor)
|
|
116
|
+
outside.push(masked.slice(cursor, region.start));
|
|
117
|
+
cursor = Math.max(cursor, region.end + 1);
|
|
118
|
+
}
|
|
119
|
+
if (cursor < masked.length)
|
|
120
|
+
outside.push(masked.slice(cursor));
|
|
121
|
+
return outside.some((text) => CSHARP_TYPE_KEYWORD_PATTERN.test(text));
|
|
122
|
+
}
|
|
123
|
+
const packageNameCaches = new WeakMap();
|
|
124
|
+
function packageNameCacheFor(index) {
|
|
125
|
+
let caches = packageNameCaches.get(index);
|
|
126
|
+
if (!caches) {
|
|
127
|
+
caches = { go: new Map(), jvm: new Map() };
|
|
128
|
+
packageNameCaches.set(index, caches);
|
|
129
|
+
}
|
|
130
|
+
return caches;
|
|
131
|
+
}
|
|
132
|
+
const csharpRegionCaches = new WeakMap();
|
|
133
|
+
/**
|
|
134
|
+
* Source to read a unit declaration from: the text the index already parsed when it retained
|
|
135
|
+
* one, and otherwise the file itself. Reusing the retained text keeps the package or namespace
|
|
136
|
+
* consistent with the symbols resolved from that same snapshot.
|
|
137
|
+
*/
|
|
138
|
+
function unitDeclarationSource(index, filePath, fileKey) {
|
|
139
|
+
const retained = index.parsed?.get(fileKey)?.source;
|
|
140
|
+
if (retained !== undefined)
|
|
141
|
+
return retained;
|
|
142
|
+
try {
|
|
143
|
+
return fs.readFileSync(filePath, "utf8");
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The declared package name of a Go or JVM file, or `null` when the file declares none (or its
|
|
151
|
+
* source cannot be read). Cached per index so unit facts are read at most once per snapshot.
|
|
152
|
+
*/
|
|
153
|
+
function packageDeclarationFor(index, filePath, languageId) {
|
|
154
|
+
const fileKey = fileIdentityKey(filePath);
|
|
155
|
+
const cache = languageId === "go" ? packageNameCacheFor(index).go : packageNameCacheFor(index).jvm;
|
|
156
|
+
const cacheKey = languageId === "go" ? fileKey : `${languageId}::${fileKey}`;
|
|
157
|
+
const cached = cache.get(cacheKey);
|
|
158
|
+
if (cached)
|
|
159
|
+
return cached;
|
|
160
|
+
const source = unitDeclarationSource(index, filePath, fileKey);
|
|
161
|
+
let packageName = null;
|
|
162
|
+
if (source !== null) {
|
|
163
|
+
if (languageId === "go") {
|
|
164
|
+
packageName = GO_PACKAGE_PATTERN.exec(maskTrivia(source, "go"))?.[1] ?? null;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
packageName = jvmPackageNameFromSource(source, languageId);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const declaration = { name: packageName, readable: source !== null };
|
|
171
|
+
cache.set(cacheKey, declaration);
|
|
172
|
+
return declaration;
|
|
173
|
+
}
|
|
174
|
+
/** The declared package name, or null when absent or unreadable. */
|
|
175
|
+
export function getPackageDeclarationName(index, filePath, languageId) {
|
|
176
|
+
return packageDeclarationFor(index, filePath, languageId).name;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* The C# namespace regions of a file, or `null` when its source cannot be read. Cached per
|
|
180
|
+
* index alongside the package-clause facts.
|
|
181
|
+
*/
|
|
182
|
+
export function getCsharpNamespaceRegions(index, filePath) {
|
|
183
|
+
const fileKey = fileIdentityKey(filePath);
|
|
184
|
+
let cache = csharpRegionCaches.get(index);
|
|
185
|
+
if (!cache) {
|
|
186
|
+
cache = new Map();
|
|
187
|
+
csharpRegionCaches.set(index, cache);
|
|
188
|
+
}
|
|
189
|
+
const cached = cache.get(fileKey);
|
|
190
|
+
if (cached !== undefined)
|
|
191
|
+
return cached;
|
|
192
|
+
const source = unitDeclarationSource(index, filePath, fileKey);
|
|
193
|
+
const regions = source === null ? null : collectCsharpNamespaceRegions(source);
|
|
194
|
+
cache.set(fileKey, regions);
|
|
195
|
+
return regions;
|
|
196
|
+
}
|
|
197
|
+
const unitFactCaches = new WeakMap();
|
|
198
|
+
function unitFactFor(index, file) {
|
|
199
|
+
let cache = unitFactCaches.get(index);
|
|
200
|
+
if (!cache) {
|
|
201
|
+
cache = new Map();
|
|
202
|
+
unitFactCaches.set(index, cache);
|
|
203
|
+
}
|
|
204
|
+
const fileKey = fileIdentityKey(file);
|
|
205
|
+
const cached = cache.get(fileKey);
|
|
206
|
+
if (cached)
|
|
207
|
+
return cached;
|
|
208
|
+
const support = supportForFileWithoutHeaderSample(file, index.languageExtensions);
|
|
209
|
+
const languageId = support?.id;
|
|
210
|
+
const unitKind = languageId === undefined ? undefined : IMPORT_RESOLUTION_ROWS[languageId]?.implicitCompilationUnit;
|
|
211
|
+
let identity;
|
|
212
|
+
if (unitKind === "package" && packageClauseLanguage(languageId)) {
|
|
213
|
+
const declaration = packageDeclarationFor(index, file, languageId);
|
|
214
|
+
identity = { kind: "package", name: declaration.name, readable: declaration.readable };
|
|
215
|
+
}
|
|
216
|
+
else if (unitKind === "namespace") {
|
|
217
|
+
identity = { kind: "namespaces", regions: getCsharpNamespaceRegions(index, file) };
|
|
218
|
+
}
|
|
219
|
+
else if (unitKind === "module") {
|
|
220
|
+
identity = { kind: "directory" };
|
|
221
|
+
}
|
|
222
|
+
else if (languageId !== undefined && SINGLE_FILE_UNIT_LANGUAGES[languageId]) {
|
|
223
|
+
identity = { kind: "single-file" };
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
identity = { kind: "unsupported" };
|
|
227
|
+
}
|
|
228
|
+
const fact = {
|
|
229
|
+
file,
|
|
230
|
+
group: languageId === undefined ? "unsupported" : unitLanguageGroup(languageId),
|
|
231
|
+
dirKey: fileIdentityKey(path.dirname(file)),
|
|
232
|
+
identity,
|
|
233
|
+
};
|
|
234
|
+
cache.set(fileKey, fact);
|
|
235
|
+
return fact;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* C# namespace names are related when they are equal, one nests inside the other, or either is
|
|
239
|
+
* the global namespace. Two files are potentially visible to each other as bare names when any
|
|
240
|
+
* pair of their declared namespaces is related. A file that also declares unrelated namespaces
|
|
241
|
+
* is still not a bare-name peer of those namespaces; qualified lookup uses the same-directory
|
|
242
|
+
* set instead.
|
|
243
|
+
*/
|
|
244
|
+
function csharpNamespacesRelated(left, right) {
|
|
245
|
+
if (left === right || left === "" || right === "")
|
|
246
|
+
return true;
|
|
247
|
+
return left.startsWith(`${right}.`) || right.startsWith(`${left}.`);
|
|
248
|
+
}
|
|
249
|
+
function csharpNamespacesComparable(left, right) {
|
|
250
|
+
// A file without any namespace declaration lives entirely in the global namespace, which is
|
|
251
|
+
// an ancestor of every namespace and comparable with all of them.
|
|
252
|
+
if (!left.length || !right.length)
|
|
253
|
+
return true;
|
|
254
|
+
for (const leftRegion of left) {
|
|
255
|
+
for (const rightRegion of right) {
|
|
256
|
+
if (csharpNamespacesRelated(leftRegion.name, rightRegion.name))
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
/** The normalized C# namespace enclosing `position` in a file (`""` for global), or `null` when unreadable. */
|
|
263
|
+
export function csharpNamespaceAt(index, filePath, position) {
|
|
264
|
+
const regions = getCsharpNamespaceRegions(index, filePath);
|
|
265
|
+
return regions ? csharpNamespaceAtIndex(regions, position) : null;
|
|
266
|
+
}
|
|
267
|
+
function csharpNamespaceAtIndex(regions, position) {
|
|
268
|
+
if (position === undefined)
|
|
269
|
+
return "";
|
|
270
|
+
let innermost;
|
|
271
|
+
for (const region of regions) {
|
|
272
|
+
if (position < region.start || position >= region.end)
|
|
273
|
+
continue;
|
|
274
|
+
if (!innermost || region.start >= innermost.start)
|
|
275
|
+
innermost = region;
|
|
276
|
+
}
|
|
277
|
+
return innermost?.name ?? "";
|
|
278
|
+
}
|
|
279
|
+
function csharpNamespaceVisibleFromUseFile(declarationNamespace, useRegions, useIndex) {
|
|
280
|
+
// The global namespace is the last step of every bare-name lookup.
|
|
281
|
+
if (declarationNamespace === "")
|
|
282
|
+
return true;
|
|
283
|
+
const visibleFrom = (name) => name === declarationNamespace || name.startsWith(`${declarationNamespace}.`);
|
|
284
|
+
if (useIndex !== undefined)
|
|
285
|
+
return visibleFrom(csharpNamespaceAtIndex(useRegions, useIndex));
|
|
286
|
+
return !!useRegions.length && useRegions.every((region) => visibleFrom(region.name));
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* True when a top-level declaration at `declaration` in `declarationFile` can be named without
|
|
290
|
+
* an import from within `useFile`. Both files must already share a compilation unit (see
|
|
291
|
+
* `getCompilationUnitPeers`); this refines the file-level relation at declaration granularity,
|
|
292
|
+
* which only matters for C# files that declare several namespaces. For every other unit
|
|
293
|
+
* language the file-level identity is the full visibility rule.
|
|
294
|
+
*/
|
|
295
|
+
export function isUnitBareNameVisible(args) {
|
|
296
|
+
const declarationFact = unitFactFor(args.index, args.declarationFile);
|
|
297
|
+
if (declarationFact.identity.kind !== "namespaces")
|
|
298
|
+
return true;
|
|
299
|
+
const declarationRegions = declarationFact.identity.regions;
|
|
300
|
+
if (!declarationRegions)
|
|
301
|
+
return true;
|
|
302
|
+
const useFact = unitFactFor(args.index, args.useFile);
|
|
303
|
+
if (useFact.identity.kind !== "namespaces")
|
|
304
|
+
return true;
|
|
305
|
+
const useRegions = useFact.identity.regions;
|
|
306
|
+
if (!useRegions)
|
|
307
|
+
return false;
|
|
308
|
+
if (args.qualification !== undefined) {
|
|
309
|
+
const declared = csharpNamespaceAtIndex(declarationRegions, args.declaration.start.index);
|
|
310
|
+
const qualifier = args.qualification;
|
|
311
|
+
if (qualifier.startsWith("global::"))
|
|
312
|
+
return declared === qualifier.slice("global::".length);
|
|
313
|
+
let enclosing = csharpNamespaceAtIndex(useRegions, args.useIndex);
|
|
314
|
+
while (enclosing) {
|
|
315
|
+
if (declared === `${enclosing}.${qualifier}`)
|
|
316
|
+
return true;
|
|
317
|
+
const separator = enclosing.lastIndexOf(".");
|
|
318
|
+
enclosing = separator < 0 ? "" : enclosing.slice(0, separator);
|
|
319
|
+
}
|
|
320
|
+
return declared === qualifier;
|
|
321
|
+
}
|
|
322
|
+
return csharpNamespaceVisibleFromUseFile(csharpNamespaceAtIndex(declarationRegions, args.declaration.start.index), useRegions, args.useIndex);
|
|
323
|
+
}
|
|
324
|
+
function identityCompatible(own, other) {
|
|
325
|
+
switch (own.kind) {
|
|
326
|
+
case "package":
|
|
327
|
+
return other.kind === "package" && own.name === other.name;
|
|
328
|
+
case "namespaces":
|
|
329
|
+
return (other.kind === "namespaces" &&
|
|
330
|
+
own.regions !== null &&
|
|
331
|
+
other.regions !== null &&
|
|
332
|
+
csharpNamespacesComparable(own.regions, other.regions));
|
|
333
|
+
case "directory":
|
|
334
|
+
return other.kind === "directory";
|
|
335
|
+
default:
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
const unitFactIndexes = new WeakMap();
|
|
340
|
+
function mapEntry(map, key, create) {
|
|
341
|
+
const existing = map.get(key);
|
|
342
|
+
if (existing)
|
|
343
|
+
return existing;
|
|
344
|
+
const created = create();
|
|
345
|
+
map.set(key, created);
|
|
346
|
+
return created;
|
|
347
|
+
}
|
|
348
|
+
function recordCsharpNamespaces(namespaces, dirKey, regions) {
|
|
349
|
+
namespaces.directories.add(dirKey);
|
|
350
|
+
if (!regions.length)
|
|
351
|
+
namespaces.globalDirs.add(dirKey);
|
|
352
|
+
for (const region of regions) {
|
|
353
|
+
const name = region.name;
|
|
354
|
+
if (!name) {
|
|
355
|
+
namespaces.globalDirs.add(dirKey);
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
mapEntry(namespaces.exactDirs, name, () => new Set()).add(dirKey);
|
|
359
|
+
let dot = name.indexOf(".");
|
|
360
|
+
while (dot >= 0) {
|
|
361
|
+
mapEntry(namespaces.descendantDirs, name.slice(0, dot), () => new Set()).add(dirKey);
|
|
362
|
+
dot = name.indexOf(".", dot + 1);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
function emptyCsharpNamespaces() {
|
|
367
|
+
return {
|
|
368
|
+
directories: new Set(),
|
|
369
|
+
globalDirs: new Set(),
|
|
370
|
+
exactDirs: new Map(),
|
|
371
|
+
descendantDirs: new Map(),
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
function createUnitFactIndex() {
|
|
375
|
+
return {
|
|
376
|
+
filesByGroupDir: new Map(),
|
|
377
|
+
byGroupDir: new Map(),
|
|
378
|
+
byGroupDirPackage: new Map(),
|
|
379
|
+
packageDirs: new Map(),
|
|
380
|
+
unreadableDirs: new Map(),
|
|
381
|
+
csharpNamespaces: emptyCsharpNamespaces(),
|
|
382
|
+
extractedGroups: new Set(),
|
|
383
|
+
extractedDirs: new Set(),
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
function recordUnitFact(grouped, fact) {
|
|
387
|
+
if (fact.identity.kind === "single-file" || fact.identity.kind === "unsupported")
|
|
388
|
+
return;
|
|
389
|
+
mapEntry(mapEntry(grouped.byGroupDir, fact.group, () => new Map()), fact.dirKey, () => []).push(fact);
|
|
390
|
+
if ((fact.identity.kind === "package" && !fact.identity.readable) ||
|
|
391
|
+
(fact.identity.kind === "namespaces" && fact.identity.regions === null)) {
|
|
392
|
+
mapEntry(grouped.unreadableDirs, fact.group, () => new Set()).add(fact.dirKey);
|
|
393
|
+
}
|
|
394
|
+
if (fact.identity.kind === "package" && fact.identity.name !== null) {
|
|
395
|
+
const packageName = fact.identity.name;
|
|
396
|
+
mapEntry(mapEntry(mapEntry(grouped.byGroupDirPackage, fact.group, () => new Map()), fact.dirKey, () => new Map()), packageName, () => []).push(fact);
|
|
397
|
+
mapEntry(mapEntry(grouped.packageDirs, fact.group, () => new Map()), packageName, () => new Set()).add(fact.dirKey);
|
|
398
|
+
}
|
|
399
|
+
if (fact.group === "csharp" && fact.identity.kind === "namespaces" && fact.identity.regions) {
|
|
400
|
+
recordCsharpNamespaces(grouped.csharpNamespaces, fact.dirKey, fact.identity.regions);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
function extractedDirKey(group, dirKey) {
|
|
404
|
+
return `${group}\0${dirKey}`;
|
|
405
|
+
}
|
|
406
|
+
function extractDirFacts(index, grouped, group, dirKey) {
|
|
407
|
+
const key = extractedDirKey(group, dirKey);
|
|
408
|
+
if (grouped.extractedDirs.has(key))
|
|
409
|
+
return;
|
|
410
|
+
grouped.extractedDirs.add(key);
|
|
411
|
+
for (const file of grouped.filesByGroupDir.get(group)?.get(dirKey) ?? []) {
|
|
412
|
+
recordUnitFact(grouped, unitFactFor(index, file));
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
function extractGroupFacts(index, grouped, group) {
|
|
416
|
+
if (grouped.extractedGroups.has(group))
|
|
417
|
+
return;
|
|
418
|
+
grouped.extractedGroups.add(group);
|
|
419
|
+
const dirs = grouped.filesByGroupDir.get(group);
|
|
420
|
+
if (!dirs)
|
|
421
|
+
return;
|
|
422
|
+
for (const dirKey of dirs.keys()) {
|
|
423
|
+
extractDirFacts(index, grouped, group, dirKey);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
function ensureFactsFor(index, grouped, own) {
|
|
427
|
+
// Swift completeness is a path question; skip source reads until a package or namespace
|
|
428
|
+
// identity actually needs them.
|
|
429
|
+
if (own.identity.kind === "directory")
|
|
430
|
+
return;
|
|
431
|
+
// Go packages are directory-exact, so other Go directories are never peers and must not
|
|
432
|
+
// be opened just to build this file's set.
|
|
433
|
+
if (own.group === "go") {
|
|
434
|
+
extractDirFacts(index, grouped, own.group, own.dirKey);
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
extractGroupFacts(index, grouped, own.group);
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Group unit files once per `ProjectIndex` so each file's peer set is derived from a shared
|
|
441
|
+
* directory/package index instead of visiting every indexed module again.
|
|
442
|
+
*
|
|
443
|
+
* The grouping scan uses configured extensions and paths only. Package clauses and C# namespaces
|
|
444
|
+
* are read later, and only for the language group (and, for Go, directory) of the file whose
|
|
445
|
+
* peers were requested, so a Go lookup never opens JVM sources and a JVM lookup never opens
|
|
446
|
+
* Go sources. The cache is tied to the index's `byFile` map identity, size, and language
|
|
447
|
+
* extension mapping so a warm index that later gains, loses, or remaps files rebuilds instead
|
|
448
|
+
* of returning stale peers.
|
|
449
|
+
*/
|
|
450
|
+
function cachedUnitFactIndexFor(index) {
|
|
451
|
+
const cached = unitFactIndexes.get(index);
|
|
452
|
+
if (cached &&
|
|
453
|
+
cached.source === index.byFile &&
|
|
454
|
+
cached.size === index.byFile.size &&
|
|
455
|
+
cached.languageExtensions === index.languageExtensions) {
|
|
456
|
+
return cached;
|
|
457
|
+
}
|
|
458
|
+
if (cached && (cached.source !== index.byFile || cached.languageExtensions !== index.languageExtensions)) {
|
|
459
|
+
unitFactCaches.delete(index);
|
|
460
|
+
packageNameCaches.delete(index);
|
|
461
|
+
csharpRegionCaches.delete(index);
|
|
462
|
+
}
|
|
463
|
+
const facts = createUnitFactIndex();
|
|
464
|
+
for (const moduleEntry of index.byFile.values()) {
|
|
465
|
+
const languageId = supportForFileWithoutHeaderSample(moduleEntry.file, index.languageExtensions)?.id;
|
|
466
|
+
if (!languageId || !IMPLICIT_UNIT_LANGUAGES[languageId])
|
|
467
|
+
continue;
|
|
468
|
+
const group = unitLanguageGroup(languageId);
|
|
469
|
+
const dirKey = fileIdentityKey(path.dirname(moduleEntry.file));
|
|
470
|
+
mapEntry(mapEntry(facts.filesByGroupDir, group, () => new Map()), dirKey, () => []).push(moduleEntry.file);
|
|
471
|
+
}
|
|
472
|
+
const built = {
|
|
473
|
+
facts,
|
|
474
|
+
peers: new Map(),
|
|
475
|
+
source: index.byFile,
|
|
476
|
+
size: index.byFile.size,
|
|
477
|
+
languageExtensions: index.languageExtensions,
|
|
478
|
+
};
|
|
479
|
+
unitFactIndexes.set(index, built);
|
|
480
|
+
return built;
|
|
481
|
+
}
|
|
482
|
+
function groupHasOtherDirectory(dirs, dirKey) {
|
|
483
|
+
if (!dirs || dirs.size === 0)
|
|
484
|
+
return false;
|
|
485
|
+
return dirs.size > 1 || !dirs.has(dirKey);
|
|
486
|
+
}
|
|
487
|
+
function csharpRelatedNamespaceOutside(regions, ownDirKey, namespaces) {
|
|
488
|
+
if (!regions.length || regions.some((region) => !region.name)) {
|
|
489
|
+
return groupHasOtherDirectory(namespaces.directories, ownDirKey);
|
|
490
|
+
}
|
|
491
|
+
if (groupHasOtherDirectory(namespaces.globalDirs, ownDirKey))
|
|
492
|
+
return true;
|
|
493
|
+
for (const region of regions) {
|
|
494
|
+
let name = region.name;
|
|
495
|
+
while (name) {
|
|
496
|
+
if (groupHasOtherDirectory(namespaces.exactDirs.get(name), ownDirKey))
|
|
497
|
+
return true;
|
|
498
|
+
const dot = name.lastIndexOf(".");
|
|
499
|
+
name = dot < 0 ? "" : name.slice(0, dot);
|
|
500
|
+
}
|
|
501
|
+
if (groupHasOtherDirectory(namespaces.descendantDirs.get(region.name), ownDirKey))
|
|
502
|
+
return true;
|
|
503
|
+
}
|
|
504
|
+
return false;
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Every indexed file that shares a proven compilation unit with `file`, including `file`
|
|
508
|
+
* itself. `complete` is `false` when the unit boundary cannot be proven: the identity is
|
|
509
|
+
* unreadable, the language's unit is not file/directory derivable, or same-identity files
|
|
510
|
+
* exist outside the unit directory so the unit may extend beyond it. Consumers must retain
|
|
511
|
+
* the proven peer set and report partial coverage instead of implying that every possible
|
|
512
|
+
* peer was considered.
|
|
513
|
+
*
|
|
514
|
+
* Pass `csharpQualifiedName` for C# `Namespace.Type` / `global::Namespace.Type` lookup so
|
|
515
|
+
* same-directory files whose namespaces are not related for bare names are still searched.
|
|
516
|
+
* Qualified names can also cross otherwise unrelated namespaces outside the directory,
|
|
517
|
+
* so those files leave the qualified candidate set incomplete. Other languages ignore the flag.
|
|
518
|
+
*/
|
|
519
|
+
export function getCompilationUnitPeers(index, file, options) {
|
|
520
|
+
const cached = cachedUnitFactIndexFor(index);
|
|
521
|
+
const fileKey = fileIdentityKey(file);
|
|
522
|
+
const cacheKey = options?.csharpQualifiedName ? `${fileKey}::qualified` : fileKey;
|
|
523
|
+
const previous = cached.peers.get(cacheKey);
|
|
524
|
+
if (previous)
|
|
525
|
+
return previous;
|
|
526
|
+
const result = computeUnitPeers(index, cached.facts, unitFactFor(index, file), !!options?.csharpQualifiedName);
|
|
527
|
+
cached.peers.set(cacheKey, result);
|
|
528
|
+
return result;
|
|
529
|
+
}
|
|
530
|
+
/** Another indexed JVM file with no package clause might share the unnamed package. */
|
|
531
|
+
function jvmGroupHasOtherUnnamedFile(grouped, own) {
|
|
532
|
+
const dirs = grouped.byGroupDir.get(own.group);
|
|
533
|
+
if (!dirs)
|
|
534
|
+
return false;
|
|
535
|
+
const ownKey = fileIdentityKey(own.file);
|
|
536
|
+
for (const facts of dirs.values()) {
|
|
537
|
+
for (const fact of facts) {
|
|
538
|
+
if (fileIdentityKey(fact.file) === ownKey)
|
|
539
|
+
continue;
|
|
540
|
+
if (fact.identity.kind === "package" && fact.identity.name === null)
|
|
541
|
+
return true;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
return false;
|
|
545
|
+
}
|
|
546
|
+
function computeUnitPeers(index, grouped, own, includeUnrelatedCsharpDirectoryPeers = false) {
|
|
547
|
+
const files = new Set([own.file]);
|
|
548
|
+
if (own.identity.kind === "single-file")
|
|
549
|
+
return { files, complete: true };
|
|
550
|
+
if (own.identity.kind === "unsupported")
|
|
551
|
+
return { files, complete: false };
|
|
552
|
+
ensureFactsFor(index, grouped, own);
|
|
553
|
+
const dirFacts = grouped.byGroupDir.get(own.group)?.get(own.dirKey) ?? [];
|
|
554
|
+
const groupDirs = grouped.filesByGroupDir.get(own.group);
|
|
555
|
+
const unreadableDirs = grouped.unreadableDirs.get(own.group);
|
|
556
|
+
const hasUnreadablePeer = own.group === "go" ? !!unreadableDirs?.has(own.dirKey) : !!unreadableDirs?.size;
|
|
557
|
+
if (own.identity.kind === "package") {
|
|
558
|
+
if (own.identity.name === null) {
|
|
559
|
+
// A missing or unreadable `package` clause has no proven identity. Go keeps its
|
|
560
|
+
// historical whole-directory lookup in that case. The JVM unnamed package cannot group
|
|
561
|
+
// files, so peers stay this file; the unit is complete only when no other indexed file
|
|
562
|
+
// could still belong to that unnamed package.
|
|
563
|
+
if (own.group === "go") {
|
|
564
|
+
for (const fact of dirFacts)
|
|
565
|
+
files.add(fact.file);
|
|
566
|
+
return { files, complete: false };
|
|
567
|
+
}
|
|
568
|
+
return { files, complete: !hasUnreadablePeer && !jvmGroupHasOtherUnnamedFile(grouped, own) };
|
|
569
|
+
}
|
|
570
|
+
const packageFacts = grouped.byGroupDirPackage.get(own.group)?.get(own.dirKey)?.get(own.identity.name) ?? [];
|
|
571
|
+
for (const fact of packageFacts)
|
|
572
|
+
files.add(fact.file);
|
|
573
|
+
// Go packages are exactly one directory by language definition, so the directory is the
|
|
574
|
+
// whole unit as long as the package clause is readable. A JVM package can span
|
|
575
|
+
// directories (for example sibling source roots), so its unit is only proven while no
|
|
576
|
+
// same-package file sits outside the directory this relation enumerates.
|
|
577
|
+
const complete = !hasUnreadablePeer &&
|
|
578
|
+
(own.group === "go" ||
|
|
579
|
+
!groupHasOtherDirectory(grouped.packageDirs.get(own.group)?.get(own.identity.name), own.dirKey));
|
|
580
|
+
return { files, complete };
|
|
581
|
+
}
|
|
582
|
+
if (own.identity.kind === "namespaces") {
|
|
583
|
+
if (!own.identity.regions)
|
|
584
|
+
return { files, complete: false };
|
|
585
|
+
for (const fact of dirFacts) {
|
|
586
|
+
if (includeUnrelatedCsharpDirectoryPeers &&
|
|
587
|
+
fact.identity.kind === "namespaces" &&
|
|
588
|
+
fact.identity.regions !== null) {
|
|
589
|
+
files.add(fact.file);
|
|
590
|
+
continue;
|
|
591
|
+
}
|
|
592
|
+
if (identityCompatible(own.identity, fact.identity))
|
|
593
|
+
files.add(fact.file);
|
|
594
|
+
}
|
|
595
|
+
const complete = !hasUnreadablePeer &&
|
|
596
|
+
(includeUnrelatedCsharpDirectoryPeers
|
|
597
|
+
? !groupHasOtherDirectory(groupDirs, own.dirKey)
|
|
598
|
+
: !csharpRelatedNamespaceOutside(own.identity.regions, own.dirKey, grouped.csharpNamespaces));
|
|
599
|
+
return { files, complete };
|
|
600
|
+
}
|
|
601
|
+
for (const file of groupDirs?.get(own.dirKey) ?? [])
|
|
602
|
+
files.add(file);
|
|
603
|
+
// Swift module membership is not declared in source; a same-module file outside the
|
|
604
|
+
// directory would belong to the same implicit unit but cannot be proven to.
|
|
605
|
+
return { files, complete: !groupHasOtherDirectory(groupDirs, own.dirKey) };
|
|
606
|
+
}
|
|
607
|
+
//# sourceMappingURL=compilation-units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compilation-units.js","sourceRoot":"","sources":["../../src/indexer/compilation-units.ts"],"names":[],"mappings":"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"}
|