@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.
Files changed (596) hide show
  1. package/README.md +33 -141
  2. package/codegraph-skill/codegraph/SKILL.md +8 -6
  3. package/dist/agent/artifact.d.ts +2 -0
  4. package/dist/agent/artifact.d.ts.map +1 -1
  5. package/dist/agent/artifact.js.map +1 -1
  6. package/dist/agent/call-hierarchy.js +2 -4
  7. package/dist/agent/call-hierarchy.js.map +1 -1
  8. package/dist/agent/explore.d.ts +1 -1
  9. package/dist/agent/explore.d.ts.map +1 -1
  10. package/dist/agent/explore.js +3 -2
  11. package/dist/agent/explore.js.map +1 -1
  12. package/dist/agent/refactor-plan.js +2 -4
  13. package/dist/agent/refactor-plan.js.map +1 -1
  14. package/dist/agent/rename-preview.d.ts.map +1 -1
  15. package/dist/agent/rename-preview.js +4 -3
  16. package/dist/agent/rename-preview.js.map +1 -1
  17. package/dist/agent/search.d.ts.map +1 -1
  18. package/dist/agent/search.js +5 -3
  19. package/dist/agent/search.js.map +1 -1
  20. package/dist/agent/semantic-symbols.d.ts.map +1 -1
  21. package/dist/agent/semantic-symbols.js +2 -3
  22. package/dist/agent/semantic-symbols.js.map +1 -1
  23. package/dist/agent/session.d.ts +3 -0
  24. package/dist/agent/session.d.ts.map +1 -1
  25. package/dist/agent/session.js +10 -2
  26. package/dist/agent/session.js.map +1 -1
  27. package/dist/agent/type-hierarchy.js +2 -4
  28. package/dist/agent/type-hierarchy.js.map +1 -1
  29. package/dist/agent/workspace-symbols.d.ts.map +1 -1
  30. package/dist/agent/workspace-symbols.js +2 -3
  31. package/dist/agent/workspace-symbols.js.map +1 -1
  32. package/dist/agent-tools.d.ts +0 -4
  33. package/dist/agent-tools.d.ts.map +1 -1
  34. package/dist/agent-tools.js +3 -6
  35. package/dist/agent-tools.js.map +1 -1
  36. package/dist/analysis-summary.d.ts +8 -4
  37. package/dist/analysis-summary.d.ts.map +1 -1
  38. package/dist/analysis-summary.js +15 -66
  39. package/dist/analysis-summary.js.map +1 -1
  40. package/dist/bin/cli.js +51145 -41770
  41. package/dist/bin/query-index-worker.js +122 -82
  42. package/dist/cli/affected.d.ts.map +1 -1
  43. package/dist/cli/affected.js +4 -1
  44. package/dist/cli/affected.js.map +1 -1
  45. package/dist/cli/command-catalog.js +1 -1
  46. package/dist/cli/command-catalog.js.map +1 -1
  47. package/dist/cli/command-table.d.ts.map +1 -1
  48. package/dist/cli/command-table.js +9 -17
  49. package/dist/cli/command-table.js.map +1 -1
  50. package/dist/cli/context.js +10 -10
  51. package/dist/cli/context.js.map +1 -1
  52. package/dist/cli/drift.d.ts +0 -2
  53. package/dist/cli/drift.d.ts.map +1 -1
  54. package/dist/cli/drift.js +0 -1
  55. package/dist/cli/drift.js.map +1 -1
  56. package/dist/cli/graph-delta.d.ts +0 -2
  57. package/dist/cli/graph-delta.d.ts.map +1 -1
  58. package/dist/cli/graph-delta.js +0 -4
  59. package/dist/cli/graph-delta.js.map +1 -1
  60. package/dist/cli/graph-queries.d.ts.map +1 -1
  61. package/dist/cli/graph-queries.js +27 -1
  62. package/dist/cli/graph-queries.js.map +1 -1
  63. package/dist/cli/graph.d.ts +0 -3
  64. package/dist/cli/graph.d.ts.map +1 -1
  65. package/dist/cli/graph.js +4 -14
  66. package/dist/cli/graph.js.map +1 -1
  67. package/dist/cli/help.d.ts +34 -34
  68. package/dist/cli/help.d.ts.map +1 -1
  69. package/dist/cli/help.js +9 -14
  70. package/dist/cli/help.js.map +1 -1
  71. package/dist/cli/impact.d.ts +0 -2
  72. package/dist/cli/impact.d.ts.map +1 -1
  73. package/dist/cli/impact.js +0 -1
  74. package/dist/cli/impact.js.map +1 -1
  75. package/dist/cli/index.d.ts +0 -2
  76. package/dist/cli/index.d.ts.map +1 -1
  77. package/dist/cli/index.js +5 -6
  78. package/dist/cli/index.js.map +1 -1
  79. package/dist/cli/inspect.d.ts +0 -2
  80. package/dist/cli/inspect.d.ts.map +1 -1
  81. package/dist/cli/inspect.js +5 -8
  82. package/dist/cli/inspect.js.map +1 -1
  83. package/dist/cli/invocation-context.d.ts +0 -3
  84. package/dist/cli/invocation-context.d.ts.map +1 -1
  85. package/dist/cli/invocation-context.js +4 -16
  86. package/dist/cli/invocation-context.js.map +1 -1
  87. package/dist/cli/navigation.d.ts +0 -2
  88. package/dist/cli/navigation.d.ts.map +1 -1
  89. package/dist/cli/navigation.js +0 -1
  90. package/dist/cli/navigation.js.map +1 -1
  91. package/dist/cli/options.d.ts.map +1 -1
  92. package/dist/cli/options.js +4 -14
  93. package/dist/cli/options.js.map +1 -1
  94. package/dist/cli/review.d.ts +0 -2
  95. package/dist/cli/review.d.ts.map +1 -1
  96. package/dist/cli/review.js +0 -5
  97. package/dist/cli/review.js.map +1 -1
  98. package/dist/cli/root-policy.d.ts +0 -2
  99. package/dist/cli/root-policy.d.ts.map +1 -1
  100. package/dist/cli/root-policy.js +0 -8
  101. package/dist/cli/root-policy.js.map +1 -1
  102. package/dist/cli/server.d.ts.map +1 -1
  103. package/dist/cli/server.js +0 -2
  104. package/dist/cli/server.js.map +1 -1
  105. package/dist/drift/artifact.d.ts.map +1 -1
  106. package/dist/drift/artifact.js +15 -18
  107. package/dist/drift/artifact.js.map +1 -1
  108. package/dist/drift/compare.js +1 -1
  109. package/dist/drift/compare.js.map +1 -1
  110. package/dist/drift/git.d.ts.map +1 -1
  111. package/dist/drift/git.js +0 -1
  112. package/dist/drift/git.js.map +1 -1
  113. package/dist/drift/snapshot.d.ts.map +1 -1
  114. package/dist/drift/snapshot.js +5 -7
  115. package/dist/drift/snapshot.js.map +1 -1
  116. package/dist/drift/types.d.ts +2 -2
  117. package/dist/drift/types.d.ts.map +1 -1
  118. package/dist/drift/types.js.map +1 -1
  119. package/dist/duplicates/unit-cache.d.ts +0 -1
  120. package/dist/duplicates/unit-cache.d.ts.map +1 -1
  121. package/dist/duplicates/unit-cache.js +3 -11
  122. package/dist/duplicates/unit-cache.js.map +1 -1
  123. package/dist/duplicates/units.d.ts +5 -5
  124. package/dist/duplicates/units.d.ts.map +1 -1
  125. package/dist/duplicates/units.js +25 -88
  126. package/dist/duplicates/units.js.map +1 -1
  127. package/dist/graph-builder.d.ts +0 -6
  128. package/dist/graph-builder.d.ts.map +1 -1
  129. package/dist/graph-builder.js +6 -11
  130. package/dist/graph-builder.js.map +1 -1
  131. package/dist/graph-edge-collector.d.ts +4 -6
  132. package/dist/graph-edge-collector.d.ts.map +1 -1
  133. package/dist/graph-edge-collector.js +31 -26
  134. package/dist/graph-edge-collector.js.map +1 -1
  135. package/dist/graphs/angularjs.d.ts.map +1 -1
  136. package/dist/graphs/angularjs.js +2 -1
  137. package/dist/graphs/angularjs.js.map +1 -1
  138. package/dist/graphs/edge-resolution.d.ts +4 -1
  139. package/dist/graphs/edge-resolution.d.ts.map +1 -1
  140. package/dist/graphs/edge-resolution.js +24 -76
  141. package/dist/graphs/edge-resolution.js.map +1 -1
  142. package/dist/graphs/specifiers.d.ts +4 -13
  143. package/dist/graphs/specifiers.d.ts.map +1 -1
  144. package/dist/graphs/specifiers.js +80 -173
  145. package/dist/graphs/specifiers.js.map +1 -1
  146. package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
  147. package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
  148. package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
  149. package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
  150. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +60 -8
  151. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
  152. package/dist/graphs/symbol-graph-detailed/edge-passes.js +997 -168
  153. package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
  154. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
  155. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
  156. package/dist/graphs/symbol-graph-detailed/import-aliases.js +150 -7
  157. package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
  158. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
  159. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
  160. package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
  161. package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
  162. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +141 -25
  163. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
  164. package/dist/graphs/symbol-graph-detailed/receiver-calls.js +1015 -166
  165. package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
  166. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
  167. package/dist/graphs/symbol-graph-detailed.js +449 -46
  168. package/dist/graphs/symbol-graph-detailed.js.map +1 -1
  169. package/dist/graphs/symbol-graph.d.ts +2 -0
  170. package/dist/graphs/symbol-graph.d.ts.map +1 -1
  171. package/dist/graphs/symbol-graph.js +34 -16
  172. package/dist/graphs/symbol-graph.js.map +1 -1
  173. package/dist/graphs/types.d.ts +0 -4
  174. package/dist/graphs/types.d.ts.map +1 -1
  175. package/dist/graphs.d.ts +1 -1
  176. package/dist/graphs.d.ts.map +1 -1
  177. package/dist/impact/call-compatibility/providers/index.d.ts +4 -4
  178. package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
  179. package/dist/impact/call-compatibility/providers/index.js +6 -6
  180. package/dist/impact/call-compatibility/providers/index.js.map +1 -1
  181. package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
  182. package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
  183. package/dist/impact/call-compatibility/types.d.ts +6 -0
  184. package/dist/impact/call-compatibility/types.d.ts.map +1 -1
  185. package/dist/impact/call-compatibility.d.ts.map +1 -1
  186. package/dist/impact/call-compatibility.js +316 -526
  187. package/dist/impact/call-compatibility.js.map +1 -1
  188. package/dist/impact/map.js +1 -0
  189. package/dist/impact/map.js.map +1 -1
  190. package/dist/impact/reference-cache.d.ts.map +1 -1
  191. package/dist/impact/reference-cache.js +2 -2
  192. package/dist/impact/reference-cache.js.map +1 -1
  193. package/dist/index.d.ts +2 -2
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +1 -1
  196. package/dist/index.js.map +1 -1
  197. package/dist/indexer/ambiguous-resolution.d.ts +11 -0
  198. package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
  199. package/dist/indexer/ambiguous-resolution.js +19 -0
  200. package/dist/indexer/ambiguous-resolution.js.map +1 -0
  201. package/dist/indexer/build-cache/module-cache.d.ts +39 -1
  202. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
  203. package/dist/indexer/build-cache/module-cache.js +218 -21
  204. package/dist/indexer/build-cache/module-cache.js.map +1 -1
  205. package/dist/indexer/build-cache/options.d.ts +30 -44
  206. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  207. package/dist/indexer/build-cache/options.js +32 -71
  208. package/dist/indexer/build-cache/options.js.map +1 -1
  209. package/dist/indexer/build-cache/project-snapshot.d.ts +3 -3
  210. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  211. package/dist/indexer/build-cache/project-snapshot.js +164 -84
  212. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  213. package/dist/indexer/build-cache/reports.d.ts +0 -2
  214. package/dist/indexer/build-cache/reports.d.ts.map +1 -1
  215. package/dist/indexer/build-cache/reports.js +0 -97
  216. package/dist/indexer/build-cache/reports.js.map +1 -1
  217. package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
  218. package/dist/indexer/build-cache/resolver-environment.js +32 -2
  219. package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
  220. package/dist/indexer/build-cache.d.ts +2 -2
  221. package/dist/indexer/build-cache.d.ts.map +1 -1
  222. package/dist/indexer/build-cache.js +2 -2
  223. package/dist/indexer/build-cache.js.map +1 -1
  224. package/dist/indexer/build-index.d.ts.map +1 -1
  225. package/dist/indexer/build-index.js +656 -71
  226. package/dist/indexer/build-index.js.map +1 -1
  227. package/dist/indexer/build-workers.d.ts.map +1 -1
  228. package/dist/indexer/build-workers.js +9 -9
  229. package/dist/indexer/build-workers.js.map +1 -1
  230. package/dist/indexer/call-hierarchy.js +1 -1
  231. package/dist/indexer/call-hierarchy.js.map +1 -1
  232. package/dist/indexer/callable-identity.d.ts +24 -0
  233. package/dist/indexer/callable-identity.d.ts.map +1 -0
  234. package/dist/indexer/callable-identity.js +111 -0
  235. package/dist/indexer/callable-identity.js.map +1 -0
  236. package/dist/indexer/compilation-units.d.ts +103 -0
  237. package/dist/indexer/compilation-units.d.ts.map +1 -0
  238. package/dist/indexer/compilation-units.js +607 -0
  239. package/dist/indexer/compilation-units.js.map +1 -0
  240. package/dist/indexer/cpp-callables.d.ts +25 -0
  241. package/dist/indexer/cpp-callables.d.ts.map +1 -0
  242. package/dist/indexer/cpp-callables.js +562 -0
  243. package/dist/indexer/cpp-callables.js.map +1 -0
  244. package/dist/indexer/declaration-visibility.d.ts +43 -2
  245. package/dist/indexer/declaration-visibility.d.ts.map +1 -1
  246. package/dist/indexer/declaration-visibility.js +158 -2
  247. package/dist/indexer/declaration-visibility.js.map +1 -1
  248. package/dist/indexer/expand-star-imports.d.ts +6 -1
  249. package/dist/indexer/expand-star-imports.d.ts.map +1 -1
  250. package/dist/indexer/expand-star-imports.js +131 -37
  251. package/dist/indexer/expand-star-imports.js.map +1 -1
  252. package/dist/indexer/finalize.d.ts.map +1 -1
  253. package/dist/indexer/finalize.js +0 -1
  254. package/dist/indexer/finalize.js.map +1 -1
  255. package/dist/indexer/import-resolution-tables.d.ts +72 -0
  256. package/dist/indexer/import-resolution-tables.d.ts.map +1 -0
  257. package/dist/indexer/import-resolution-tables.js +137 -0
  258. package/dist/indexer/import-resolution-tables.js.map +1 -0
  259. package/dist/indexer/import-types.d.ts +54 -0
  260. package/dist/indexer/import-types.d.ts.map +1 -1
  261. package/dist/indexer/import-types.js +24 -1
  262. package/dist/indexer/import-types.js.map +1 -1
  263. package/dist/indexer/imports/context.d.ts +16 -1
  264. package/dist/indexer/imports/context.d.ts.map +1 -1
  265. package/dist/indexer/imports/import-binding-tables.d.ts +13 -1
  266. package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -1
  267. package/dist/indexer/imports/import-binding-tables.js +149 -30
  268. package/dist/indexer/imports/import-binding-tables.js.map +1 -1
  269. package/dist/indexer/imports/js-text-imports.js +4 -4
  270. package/dist/indexer/imports/js-text-imports.js.map +1 -1
  271. package/dist/indexer/imports/native-captures.d.ts.map +1 -1
  272. package/dist/indexer/imports/native-captures.js +24 -6
  273. package/dist/indexer/imports/native-captures.js.map +1 -1
  274. package/dist/indexer/imports/python.d.ts +10 -2
  275. package/dist/indexer/imports/python.d.ts.map +1 -1
  276. package/dist/indexer/imports/python.js +128 -112
  277. package/dist/indexer/imports/python.js.map +1 -1
  278. package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
  279. package/dist/indexer/imports/text-import-extractors.js +68 -19
  280. package/dist/indexer/imports/text-import-extractors.js.map +1 -1
  281. package/dist/indexer/imports.d.ts +3 -4
  282. package/dist/indexer/imports.d.ts.map +1 -1
  283. package/dist/indexer/imports.js +116 -72
  284. package/dist/indexer/imports.js.map +1 -1
  285. package/dist/indexer/incremental-plan.d.ts +33 -0
  286. package/dist/indexer/incremental-plan.d.ts.map +1 -1
  287. package/dist/indexer/incremental-plan.js +203 -1
  288. package/dist/indexer/incremental-plan.js.map +1 -1
  289. package/dist/indexer/locals-and-exports.d.ts +3 -2
  290. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  291. package/dist/indexer/locals-and-exports.js +659 -78
  292. package/dist/indexer/locals-and-exports.js.map +1 -1
  293. package/dist/indexer/member-selection.d.ts +46 -0
  294. package/dist/indexer/member-selection.d.ts.map +1 -0
  295. package/dist/indexer/member-selection.js +169 -0
  296. package/dist/indexer/member-selection.js.map +1 -0
  297. package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
  298. package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
  299. package/dist/indexer/name-lookup-policies/c-family.js +137 -0
  300. package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
  301. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
  302. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
  303. package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
  304. package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
  305. package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
  306. package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
  307. package/dist/indexer/name-lookup-policies/implicit-self.js +119 -0
  308. package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
  309. package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
  310. package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
  311. package/dist/indexer/name-lookup-policies/index.js +132 -0
  312. package/dist/indexer/name-lookup-policies/index.js.map +1 -0
  313. package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
  314. package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
  315. package/dist/indexer/name-lookup-policies/php.js +82 -0
  316. package/dist/indexer/name-lookup-policies/php.js.map +1 -0
  317. package/dist/indexer/name-resolution-types.d.ts +101 -0
  318. package/dist/indexer/name-resolution-types.d.ts.map +1 -0
  319. package/dist/indexer/name-resolution-types.js +2 -0
  320. package/dist/indexer/name-resolution-types.js.map +1 -0
  321. package/dist/indexer/name-resolution.d.ts +57 -0
  322. package/dist/indexer/name-resolution.d.ts.map +1 -0
  323. package/dist/indexer/name-resolution.js +204 -0
  324. package/dist/indexer/name-resolution.js.map +1 -0
  325. package/dist/indexer/navigation-cpp.d.ts +58 -0
  326. package/dist/indexer/navigation-cpp.d.ts.map +1 -0
  327. package/dist/indexer/navigation-cpp.js +935 -0
  328. package/dist/indexer/navigation-cpp.js.map +1 -0
  329. package/dist/indexer/navigation-goto.d.ts +115 -3
  330. package/dist/indexer/navigation-goto.d.ts.map +1 -1
  331. package/dist/indexer/navigation-goto.js +2469 -190
  332. package/dist/indexer/navigation-goto.js.map +1 -1
  333. package/dist/indexer/navigation-local.d.ts +21 -2
  334. package/dist/indexer/navigation-local.d.ts.map +1 -1
  335. package/dist/indexer/navigation-local.js +520 -63
  336. package/dist/indexer/navigation-local.js.map +1 -1
  337. package/dist/indexer/navigation-php.d.ts +66 -0
  338. package/dist/indexer/navigation-php.d.ts.map +1 -1
  339. package/dist/indexer/navigation-php.js +287 -4
  340. package/dist/indexer/navigation-php.js.map +1 -1
  341. package/dist/indexer/navigation-provenance.d.ts +1 -1
  342. package/dist/indexer/navigation-provenance.d.ts.map +1 -1
  343. package/dist/indexer/navigation-provenance.js +4 -13
  344. package/dist/indexer/navigation-provenance.js.map +1 -1
  345. package/dist/indexer/navigation-references.d.ts +73 -6
  346. package/dist/indexer/navigation-references.d.ts.map +1 -1
  347. package/dist/indexer/navigation-references.js +661 -67
  348. package/dist/indexer/navigation-references.js.map +1 -1
  349. package/dist/indexer/navigation-resolve.d.ts +46 -2
  350. package/dist/indexer/navigation-resolve.d.ts.map +1 -1
  351. package/dist/indexer/navigation-resolve.js +599 -193
  352. package/dist/indexer/navigation-resolve.js.map +1 -1
  353. package/dist/indexer/navigation.d.ts +29 -2
  354. package/dist/indexer/navigation.d.ts.map +1 -1
  355. package/dist/indexer/navigation.js +1092 -153
  356. package/dist/indexer/navigation.js.map +1 -1
  357. package/dist/indexer/parse-context.d.ts +2 -3
  358. package/dist/indexer/parse-context.d.ts.map +1 -1
  359. package/dist/indexer/parse-context.js +8 -21
  360. package/dist/indexer/parse-context.js.map +1 -1
  361. package/dist/indexer/php-namespace-symbols.d.ts +66 -0
  362. package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
  363. package/dist/indexer/php-namespace-symbols.js +342 -0
  364. package/dist/indexer/php-namespace-symbols.js.map +1 -0
  365. package/dist/indexer/reference-candidates.d.ts.map +1 -1
  366. package/dist/indexer/reference-candidates.js +13 -7
  367. package/dist/indexer/reference-candidates.js.map +1 -1
  368. package/dist/indexer/reference-context.d.ts +2 -0
  369. package/dist/indexer/reference-context.d.ts.map +1 -1
  370. package/dist/indexer/reference-context.js +4 -0
  371. package/dist/indexer/reference-context.js.map +1 -1
  372. package/dist/indexer/scope-nodes.d.ts +92 -13
  373. package/dist/indexer/scope-nodes.d.ts.map +1 -1
  374. package/dist/indexer/scope-nodes.js +212 -20
  375. package/dist/indexer/scope-nodes.js.map +1 -1
  376. package/dist/indexer/scope-types.d.ts +29 -1
  377. package/dist/indexer/scope-types.d.ts.map +1 -1
  378. package/dist/indexer/scope.d.ts +2 -3
  379. package/dist/indexer/scope.d.ts.map +1 -1
  380. package/dist/indexer/scope.js +968 -47
  381. package/dist/indexer/scope.js.map +1 -1
  382. package/dist/indexer/shared-owner-identity.d.ts +53 -0
  383. package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
  384. package/dist/indexer/shared-owner-identity.js +460 -0
  385. package/dist/indexer/shared-owner-identity.js.map +1 -0
  386. package/dist/indexer/shared.d.ts +1 -1
  387. package/dist/indexer/shared.d.ts.map +1 -1
  388. package/dist/indexer/shared.js +1 -1
  389. package/dist/indexer/shared.js.map +1 -1
  390. package/dist/indexer/star-import-precedence.d.ts +113 -0
  391. package/dist/indexer/star-import-precedence.d.ts.map +1 -0
  392. package/dist/indexer/star-import-precedence.js +402 -0
  393. package/dist/indexer/star-import-precedence.js.map +1 -0
  394. package/dist/indexer/symbols.d.ts +3 -1
  395. package/dist/indexer/symbols.d.ts.map +1 -1
  396. package/dist/indexer/symbols.js +58 -18
  397. package/dist/indexer/symbols.js.map +1 -1
  398. package/dist/indexer/ts-callables.d.ts +42 -0
  399. package/dist/indexer/ts-callables.d.ts.map +1 -0
  400. package/dist/indexer/ts-callables.js +233 -0
  401. package/dist/indexer/ts-callables.js.map +1 -0
  402. package/dist/indexer/types.d.ts +41 -26
  403. package/dist/indexer/types.d.ts.map +1 -1
  404. package/dist/indexer/unused-exports.d.ts +13 -0
  405. package/dist/indexer/unused-exports.d.ts.map +1 -0
  406. package/dist/indexer/unused-exports.js +159 -0
  407. package/dist/indexer/unused-exports.js.map +1 -0
  408. package/dist/indexer/workspace-symbols.d.ts.map +1 -1
  409. package/dist/indexer/workspace-symbols.js +3 -2
  410. package/dist/indexer/workspace-symbols.js.map +1 -1
  411. package/dist/indexer.d.ts +3 -8
  412. package/dist/indexer.d.ts.map +1 -1
  413. package/dist/indexer.js +1 -1
  414. package/dist/indexer.js.map +1 -1
  415. package/dist/languages/callable-arity.d.ts +223 -0
  416. package/dist/languages/callable-arity.d.ts.map +1 -0
  417. package/dist/languages/callable-arity.js +1199 -0
  418. package/dist/languages/callable-arity.js.map +1 -0
  419. package/dist/languages/definitions/c-family.d.ts.map +1 -1
  420. package/dist/languages/definitions/c-family.js +30 -1
  421. package/dist/languages/definitions/c-family.js.map +1 -1
  422. package/dist/languages/definitions/c.d.ts +4 -0
  423. package/dist/languages/definitions/c.d.ts.map +1 -1
  424. package/dist/languages/definitions/c.js +19 -0
  425. package/dist/languages/definitions/c.js.map +1 -1
  426. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  427. package/dist/languages/definitions/cpp.js +12 -0
  428. package/dist/languages/definitions/cpp.js.map +1 -1
  429. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  430. package/dist/languages/definitions/csharp.js +2 -8
  431. package/dist/languages/definitions/csharp.js.map +1 -1
  432. package/dist/languages/definitions/go.d.ts.map +1 -1
  433. package/dist/languages/definitions/go.js +3 -0
  434. package/dist/languages/definitions/go.js.map +1 -1
  435. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  436. package/dist/languages/definitions/javascript.js +10 -1
  437. package/dist/languages/definitions/javascript.js.map +1 -1
  438. package/dist/languages/definitions/js-family.d.ts +1 -1
  439. package/dist/languages/definitions/js-family.d.ts.map +1 -1
  440. package/dist/languages/definitions/js-family.js +7 -1
  441. package/dist/languages/definitions/js-family.js.map +1 -1
  442. package/dist/languages/definitions/php.d.ts.map +1 -1
  443. package/dist/languages/definitions/php.js +5 -1
  444. package/dist/languages/definitions/php.js.map +1 -1
  445. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  446. package/dist/languages/definitions/typescript.js +8 -1
  447. package/dist/languages/definitions/typescript.js.map +1 -1
  448. package/dist/languages/definitions/zig.d.ts.map +1 -1
  449. package/dist/languages/definitions/zig.js +8 -0
  450. package/dist/languages/definitions/zig.js.map +1 -1
  451. package/dist/lifecycle/manifest.d.ts.map +1 -1
  452. package/dist/lifecycle/manifest.js +0 -1
  453. package/dist/lifecycle/manifest.js.map +1 -1
  454. package/dist/mcp/handlers.js +14 -7
  455. package/dist/mcp/handlers.js.map +1 -1
  456. package/dist/native/byte-index.d.ts +6 -0
  457. package/dist/native/byte-index.d.ts.map +1 -1
  458. package/dist/native/byte-index.js +11 -6
  459. package/dist/native/byte-index.js.map +1 -1
  460. package/dist/native/contracts.d.ts +2 -3
  461. package/dist/native/contracts.d.ts.map +1 -1
  462. package/dist/native/execution.d.ts +9 -9
  463. package/dist/native/execution.d.ts.map +1 -1
  464. package/dist/native/execution.js +37 -77
  465. package/dist/native/execution.js.map +1 -1
  466. package/dist/native/js-bridge.d.ts +2 -15
  467. package/dist/native/js-bridge.d.ts.map +1 -1
  468. package/dist/native/js-bridge.js +2 -15
  469. package/dist/native/js-bridge.js.map +1 -1
  470. package/dist/native/query-results.js +2 -2
  471. package/dist/native/query-results.js.map +1 -1
  472. package/dist/native/runtime.d.ts +12 -12
  473. package/dist/native/runtime.d.ts.map +1 -1
  474. package/dist/native/runtime.js +24 -69
  475. package/dist/native/runtime.js.map +1 -1
  476. package/dist/native/tree-sitter-native.d.ts +3 -3
  477. package/dist/native/tree-sitter-native.d.ts.map +1 -1
  478. package/dist/native/tree-sitter-native.js +2 -2
  479. package/dist/native/tree-sitter-native.js.map +1 -1
  480. package/dist/presets.d.ts.map +1 -1
  481. package/dist/presets.js +0 -4
  482. package/dist/presets.js.map +1 -1
  483. package/dist/review/candidates.d.ts.map +1 -1
  484. package/dist/review/candidates.js +1 -1
  485. package/dist/review/candidates.js.map +1 -1
  486. package/dist/review/deleted.d.ts +3 -3
  487. package/dist/review/deleted.d.ts.map +1 -1
  488. package/dist/review/deleted.js +82 -32
  489. package/dist/review/deleted.js.map +1 -1
  490. package/dist/review/report.d.ts +1 -0
  491. package/dist/review/report.d.ts.map +1 -1
  492. package/dist/review/report.js +1 -1
  493. package/dist/review/report.js.map +1 -1
  494. package/dist/review.d.ts.map +1 -1
  495. package/dist/review.js +3 -20
  496. package/dist/review.js.map +1 -1
  497. package/dist/session.d.ts.map +1 -1
  498. package/dist/session.js +0 -5
  499. package/dist/session.js.map +1 -1
  500. package/dist/sql/navigation.d.ts.map +1 -1
  501. package/dist/sql/navigation.js +2 -1
  502. package/dist/sql/navigation.js.map +1 -1
  503. package/dist/sql/source-graph.d.ts.map +1 -1
  504. package/dist/sql/source-graph.js +2 -2
  505. package/dist/sql/source-graph.js.map +1 -1
  506. package/dist/sqlite/schema.d.ts +1 -1
  507. package/dist/sqlite/schema.d.ts.map +1 -1
  508. package/dist/sqlite/schema.js +8 -2
  509. package/dist/sqlite/schema.js.map +1 -1
  510. package/dist/sqlite/write.js +2 -2
  511. package/dist/sqlite/write.js.map +1 -1
  512. package/dist/types.d.ts +2 -0
  513. package/dist/types.d.ts.map +1 -1
  514. package/dist/util/bloom-filter.d.ts +8 -1
  515. package/dist/util/bloom-filter.d.ts.map +1 -1
  516. package/dist/util/bloom-filter.js +15 -2
  517. package/dist/util/bloom-filter.js.map +1 -1
  518. package/dist/util/glob.d.ts +32 -0
  519. package/dist/util/glob.d.ts.map +1 -0
  520. package/dist/util/glob.js +137 -0
  521. package/dist/util/glob.js.map +1 -0
  522. package/dist/util/graph-edges.d.ts +19 -1
  523. package/dist/util/graph-edges.d.ts.map +1 -1
  524. package/dist/util/graph-edges.js +30 -4
  525. package/dist/util/graph-edges.js.map +1 -1
  526. package/dist/util/identifiers.d.ts +15 -0
  527. package/dist/util/identifiers.d.ts.map +1 -1
  528. package/dist/util/identifiers.js +35 -0
  529. package/dist/util/identifiers.js.map +1 -1
  530. package/dist/util/member-access-tables.d.ts +61 -4
  531. package/dist/util/member-access-tables.d.ts.map +1 -1
  532. package/dist/util/member-access-tables.js +139 -19
  533. package/dist/util/member-access-tables.js.map +1 -1
  534. package/dist/util/member-access.d.ts +17 -0
  535. package/dist/util/member-access.d.ts.map +1 -1
  536. package/dist/util/member-access.js +98 -3
  537. package/dist/util/member-access.js.map +1 -1
  538. package/dist/util/project-files.d.ts +2 -10
  539. package/dist/util/project-files.d.ts.map +1 -1
  540. package/dist/util/project-files.js +29 -51
  541. package/dist/util/project-files.js.map +1 -1
  542. package/dist/util/python-type-checking.d.ts +18 -0
  543. package/dist/util/python-type-checking.d.ts.map +1 -0
  544. package/dist/util/python-type-checking.js +160 -0
  545. package/dist/util/python-type-checking.js.map +1 -0
  546. package/dist/util/resolution/cargo-targets.d.ts +11 -0
  547. package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
  548. package/dist/util/resolution/cargo-targets.js +174 -13
  549. package/dist/util/resolution/cargo-targets.js.map +1 -1
  550. package/dist/util/resolution/csharp.d.ts +33 -1
  551. package/dist/util/resolution/csharp.d.ts.map +1 -1
  552. package/dist/util/resolution/csharp.js +145 -30
  553. package/dist/util/resolution/csharp.js.map +1 -1
  554. package/dist/util/resolution/jvm.d.ts +7 -3
  555. package/dist/util/resolution/jvm.d.ts.map +1 -1
  556. package/dist/util/resolution/jvm.js +56 -38
  557. package/dist/util/resolution/jvm.js.map +1 -1
  558. package/dist/util/resolution/php.d.ts.map +1 -1
  559. package/dist/util/resolution/php.js +35 -8
  560. package/dist/util/resolution/php.js.map +1 -1
  561. package/dist/util/resolution/python.d.ts +9 -0
  562. package/dist/util/resolution/python.d.ts.map +1 -1
  563. package/dist/util/resolution/python.js +46 -0
  564. package/dist/util/resolution/python.js.map +1 -1
  565. package/dist/util/resolution/rust.d.ts +0 -1
  566. package/dist/util/resolution/rust.d.ts.map +1 -1
  567. package/dist/util/resolution/rust.js +95 -35
  568. package/dist/util/resolution/rust.js.map +1 -1
  569. package/dist/util/resolution/specifier-targets.d.ts +44 -0
  570. package/dist/util/resolution/specifier-targets.d.ts.map +1 -0
  571. package/dist/util/resolution/specifier-targets.js +152 -0
  572. package/dist/util/resolution/specifier-targets.js.map +1 -0
  573. package/dist/util/resolution-candidates.d.ts +5 -0
  574. package/dist/util/resolution-candidates.d.ts.map +1 -1
  575. package/dist/util/resolution-candidates.js +16 -3
  576. package/dist/util/resolution-candidates.js.map +1 -1
  577. package/dist/util/resolution.d.ts +2 -1
  578. package/dist/util/resolution.d.ts.map +1 -1
  579. package/dist/util/resolution.js +101 -15
  580. package/dist/util/resolution.js.map +1 -1
  581. package/dist/util/specifiers.d.ts +29 -1
  582. package/dist/util/specifiers.d.ts.map +1 -1
  583. package/dist/util/specifiers.js +56 -8
  584. package/dist/util/specifiers.js.map +1 -1
  585. package/dist/util/trivia.d.ts.map +1 -1
  586. package/dist/util/trivia.js +49 -30
  587. package/dist/util/trivia.js.map +1 -1
  588. package/dist/util/workspace.d.ts.map +1 -1
  589. package/dist/util/workspace.js +32 -4
  590. package/dist/util/workspace.js.map +1 -1
  591. package/docs/mcp.md +3 -2
  592. package/package.json +5 -7
  593. package/dist/impact/call-compatibility/providers/profiles.d.ts +0 -80
  594. package/dist/impact/call-compatibility/providers/profiles.d.ts.map +0 -1
  595. package/dist/impact/call-compatibility/providers/profiles.js +0 -164
  596. package/dist/impact/call-compatibility/providers/profiles.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ /** C and C++ additions to the shared name lookup order. */
2
+ import { cTagRole } from "../../languages/definitions/c.js";
3
+ import { AMBIGUOUS_CPP_OVERLOAD_REASON, AMBIGUOUS_CPP_USING_DECLARATION_REASON, AMBIGUOUS_CPP_USING_DIRECTIVE_REASON, AMBIGUOUS_STAR_IMPORT_REASON, } from "../ambiguous-resolution.js";
4
+ import { cppOutOfLineOwnerPath } from "../../graphs/symbol-graph-detailed/receiver-calls.js";
5
+ import { cppQualifiedNameThroughVisiblePrefix, cppStarImportClosure, cppUsingDeclarationTarget, resolveCppCallableBindings, resolveCppCollidingBinding, resolveCppUsingDirectiveName, resolveVisibleCppCallableName, resolveCppVisibleStaticCallableName, } from "../navigation-cpp.js";
6
+ import { resolveNamedDefinition } from "../navigation-local.js";
7
+ import { okGoToResult } from "../navigation-provenance.js";
8
+ const loadParsed = (use) => (file) => use.files.get(file);
9
+ /** Several included declarations of one name may be one callable; navigation recovers that. */
10
+ function deferIncludedStarRecovery(state, resolved, cNamespace) {
11
+ if (resolved?.status !== "not_found" || resolved.reason !== AMBIGUOUS_STAR_IMPORT_REASON)
12
+ return undefined;
13
+ return {
14
+ status: "deferred",
15
+ request: { kind: "c-included-star", lookupName: state.lookupName, cNamespace },
16
+ fallback: resolved,
17
+ };
18
+ }
19
+ const cNamespaceOf = (node) => cTagRole(node) ? "tag" : "ordinary";
20
+ export const cLookupPolicy = {
21
+ cNamespace: cNamespaceOf,
22
+ afterCrossModule: (state, resolved) => deferIncludedStarRecovery(state, resolved, cNamespaceOf(state.use.node)),
23
+ };
24
+ const AMBIGUOUS_CPP_NAMESPACE_ALIAS_REASON = "Ambiguous C++ namespace alias";
25
+ /** A qualified name (`ns::f`, `Box::make`) names a namespace or static member directly. */
26
+ function lookupCppQualifiedName(use, qualifiedName) {
27
+ const { index, mod, file, node, scopeIndex, parsed } = use;
28
+ const qualifiedBindings = scopeIndex.cppQualifiedFunctionBindings.get(qualifiedName);
29
+ if (qualifiedBindings) {
30
+ const selected = resolveCppCallableBindings(file, qualifiedBindings, node, parsed.source);
31
+ if (!selected)
32
+ return { status: "not_found", reason: AMBIGUOUS_CPP_OVERLOAD_REASON };
33
+ return okGoToResult(index, selected, { resolution: "exact", confidence: "high" });
34
+ }
35
+ const visible = resolveVisibleCppCallableName(index, mod, qualifiedName, node, parsed.source, loadParsed(use));
36
+ if (visible !== undefined) {
37
+ if (!visible)
38
+ return { status: "not_found", reason: AMBIGUOUS_CPP_OVERLOAD_REASON };
39
+ return okGoToResult(index, visible, { resolution: "exact", confidence: "high" });
40
+ }
41
+ const staticMember = resolveCppVisibleStaticCallableName(index, mod, qualifiedName, node, parsed.source, loadParsed(use));
42
+ if (staticMember !== undefined) {
43
+ if (!staticMember)
44
+ return { status: "not_found", reason: AMBIGUOUS_CPP_OVERLOAD_REASON };
45
+ return okGoToResult(index, staticMember, { resolution: "exact", confidence: "high" });
46
+ }
47
+ return resolveNamedDefinition(index, mod, file, parsed.sup, qualifiedName) ?? undefined;
48
+ }
49
+ /** Qualifier lookup is lexical before the direct textual path can name a global declaration. */
50
+ export function resolveCppQualifiedName(use) {
51
+ const { name } = use;
52
+ if (!name.includes("::"))
53
+ return undefined;
54
+ const rewritten = cppQualifiedNameThroughVisiblePrefix(use.index, use.mod, name, use.node, use.parsed.source, use.parsed.tree, loadParsed(use));
55
+ if (rewritten === null)
56
+ return { status: "not_found", reason: AMBIGUOUS_CPP_NAMESPACE_ALIAS_REASON };
57
+ if (rewritten !== undefined) {
58
+ return (lookupCppQualifiedName(use, rewritten) ?? {
59
+ status: "not_found",
60
+ reason: "No matching C++ declaration in the visible qualifier",
61
+ });
62
+ }
63
+ return lookupCppQualifiedName(use, name);
64
+ }
65
+ export const cppLookupPolicy = {
66
+ beforeLexical: resolveCppQualifiedName,
67
+ // `using ns::f;` binds the name to that namespace member.
68
+ fromClosestBinding({ use, closestBinding }) {
69
+ const { index, mod, file, node, parsed } = use;
70
+ const target = closestBinding ? cppUsingDeclarationTarget(closestBinding, parsed.source) : undefined;
71
+ if (!target)
72
+ return undefined;
73
+ const visible = resolveVisibleCppCallableName(index, mod, target, node, parsed.source, loadParsed(use));
74
+ if (visible)
75
+ return okGoToResult(index, visible, { resolution: "import", confidence: "high" });
76
+ if (visible === undefined) {
77
+ const resolved = resolveNamedDefinition(index, mod, file, parsed.sup, target);
78
+ if (resolved)
79
+ return resolved;
80
+ }
81
+ return { status: "not_found", reason: AMBIGUOUS_CPP_USING_DECLARATION_REASON };
82
+ },
83
+ // Inside an out-of-line member definition, a member of the owner class (or its bases) hides a
84
+ // same-named file-scope name; parameters and function locals still win.
85
+ wrapRest({ use, closestBinding }, rest) {
86
+ const { node, scopeIndex } = use;
87
+ const fileScopeOrUnbound = !closestBinding || scopeIndex.allScopes[0]?.map.get(closestBinding.canonicalName) === closestBinding;
88
+ const outOfLineBody = !!cppOutOfLineOwnerPath(node, use.parsed.source, use.parsed.sup);
89
+ if (!fileScopeOrUnbound || !outOfLineBody || node.parent?.type !== "call_expression")
90
+ return rest();
91
+ return {
92
+ status: "deferred",
93
+ request: { kind: "cpp-out-of-line-member" },
94
+ fallback: rest(),
95
+ hidden: { status: "not_found", reason: "No matching C++ static member definition" },
96
+ };
97
+ },
98
+ // Same-scope declarations with one name are one callable or an overload set chosen by arity.
99
+ beforeLocal({ use, closestBinding }) {
100
+ if (!closestBinding)
101
+ return undefined;
102
+ const collision = resolveCppCollidingBinding(use.file, closestBinding, use.node, use.parsed.source);
103
+ if (collision === undefined)
104
+ return undefined;
105
+ if (!collision)
106
+ return { status: "not_found", reason: AMBIGUOUS_CPP_OVERLOAD_REASON };
107
+ return okGoToResult(use.index, collision, { resolution: "exact", confidence: "high" });
108
+ },
109
+ beforeCrossModule({ use, closestBinding }) {
110
+ const { index, mod, node, name, parsed } = use;
111
+ if (closestBinding?.kind === "function" && closestBinding.callable?.signature) {
112
+ return { status: "not_found", reason: AMBIGUOUS_CPP_OVERLOAD_REASON };
113
+ }
114
+ const visible = resolveVisibleCppCallableName(index, mod, name, node, parsed.source, loadParsed(use));
115
+ if (visible !== undefined) {
116
+ if (!visible)
117
+ return { status: "not_found", reason: AMBIGUOUS_CPP_OVERLOAD_REASON };
118
+ return okGoToResult(index, visible, { resolution: "exact", confidence: "high" });
119
+ }
120
+ const directed = resolveCppUsingDirectiveName(index, mod, name, node, parsed.source, loadParsed(use));
121
+ if (directed === undefined)
122
+ return undefined;
123
+ if (!directed)
124
+ return { status: "not_found", reason: AMBIGUOUS_CPP_USING_DIRECTIVE_REASON };
125
+ return okGoToResult(index, directed, { resolution: "import", confidence: "high" });
126
+ },
127
+ afterCrossModule: (state, resolved) => deferIncludedStarRecovery(state, resolved, undefined),
128
+ // Visible callables and `using` directives read every file the includes reach.
129
+ *preloadFiles(index, mod) {
130
+ for (const imp of mod.imports)
131
+ if (typeof imp.resolved === "string")
132
+ yield imp.resolved;
133
+ for (const reachable of cppStarImportClosure(index, mod))
134
+ yield reachable.file;
135
+ },
136
+ };
137
+ //# sourceMappingURL=c-family.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c-family.js","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/c-family.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { BareNameUse, NameResolution } from "../name-resolution-types.js";
2
+ import type { FileId } from "../../types.js";
3
+ import type { GoToResult, ModuleIndex } from "../types.js";
4
+ /** Files the lookup reads: the declaring file of every `using static` type. */
5
+ export declare function csharpUsingStaticFiles(mod: ModuleIndex): FileId[];
6
+ /**
7
+ * Combines the cross-module answer with `using static` members. A name that both a namespace
8
+ * lookup and a `using static` member provide is ambiguous: this lookup does not rank them.
9
+ */
10
+ export declare function withCsharpUsingStatic(use: BareNameUse, lookupName: string, resolved: GoToResult | null): NameResolution | null;
11
+ //# sourceMappingURL=csharp-using-static.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp-using-static.d.ts","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/csharp-using-static.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAmBtE,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,EAAE,CAEjE;AAgGD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,UAAU,GAAG,IAAI,GAC1B,cAAc,GAAG,IAAI,CAUvB"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * C# `using static N.T;` (C# spec, "Using static directives"): a simple name that no enclosing
3
+ * type or namespace member binds can name an accessible static member or nested type of `T`.
4
+ * Extension methods are excluded because they are reached only through a receiver. Member
5
+ * groups from several directives merge, and overloads are chosen by argument count only.
6
+ */
7
+ import { callArgumentCount, declarationNodeIsStatic, nearestMemberContainer, } from "../../graphs/symbol-graph-detailed/receiver-calls.js";
8
+ import { getCallableArity } from "../../languages/callable-arity.js";
9
+ import { normalizeCsharpIdentifier } from "../../util/identifiers.js";
10
+ import { fileIdentityKey } from "../../util/paths.js";
11
+ import { csharpNamespaceAt } from "../compilation-units.js";
12
+ import { isCsharpAccessibleOutsideType } from "../declaration-visibility.js";
13
+ import { okGoToResult } from "../navigation-provenance.js";
14
+ function usingStaticImports(mod) {
15
+ const imports = [];
16
+ for (const imp of mod.imports) {
17
+ if (imp.kind !== "star" || !imp.staticMembersOf || typeof imp.resolved !== "string")
18
+ continue;
19
+ const separator = imp.staticMembersOf.lastIndexOf(".");
20
+ imports.push({
21
+ file: imp.resolved,
22
+ namespace: imp.staticMembersOf.slice(0, separator),
23
+ typeName: imp.staticMembersOf.slice(separator + 1),
24
+ });
25
+ }
26
+ return imports;
27
+ }
28
+ /** Files the lookup reads: the declaring file of every `using static` type. */
29
+ export function csharpUsingStaticFiles(mod) {
30
+ return usingStaticImports(mod).map((imp) => imp.file);
31
+ }
32
+ const NESTED_TYPE_DECLARATIONS = new Set([
33
+ "class_declaration",
34
+ "struct_declaration",
35
+ "record_declaration",
36
+ "interface_declaration",
37
+ "enum_declaration",
38
+ "delegate_declaration",
39
+ ]);
40
+ /** The member declaration a definition names; a field's name sits in a variable declarator. */
41
+ function declarationOf(parsed, def) {
42
+ const start = def.range.start.index;
43
+ if (start === undefined)
44
+ return null;
45
+ const named = parsed.tree.rootNode.descendantForIndex(start, def.range.end.index ?? start).parent;
46
+ return named?.type === "variable_declarator" ? (named.parent?.parent ?? null) : named;
47
+ }
48
+ /** The first parameter carries `this`: an extension method, not importable as a simple name. */
49
+ function isExtensionMethod(declaration) {
50
+ const first = declaration.childForFieldName("parameters")?.namedChildren[0];
51
+ return !!first?.namedChildren.some((child) => child.type === "modifier" && child.text === "this");
52
+ }
53
+ /**
54
+ * Whether `declaration` is a member `using static` imports from the top-level type the directive
55
+ * names. One file can declare `P.Util` and `Q.Util`, so the owner's namespace must match too.
56
+ */
57
+ function importsMember(use, parsed, declaration, imp) {
58
+ const container = nearestMemberContainer(declaration);
59
+ if (!container || nearestMemberContainer(container))
60
+ return false;
61
+ const ownerName = container.childForFieldName("name")?.text;
62
+ if (!ownerName || normalizeCsharpIdentifier(ownerName) !== imp.typeName)
63
+ return false;
64
+ if (csharpNamespaceAt(use.index, imp.file, container.startIndex) !== imp.namespace)
65
+ return false;
66
+ if (!isCsharpAccessibleOutsideType(declaration))
67
+ return false;
68
+ if (NESTED_TYPE_DECLARATIONS.has(declaration.type) || container.type === "enum_declaration")
69
+ return true;
70
+ if (isExtensionMethod(declaration))
71
+ return false;
72
+ return (declarationNodeIsStatic(declaration, parsed.source) ||
73
+ declaration.namedChildren.some((child) => child.type === "modifier" && child.text === "const"));
74
+ }
75
+ /**
76
+ * Members named `name` imported by the module's `using static` directives, or `null` when a
77
+ * declaring file is not parsed yet (the provider records the miss for a retry).
78
+ */
79
+ function usingStaticCandidates(use, name) {
80
+ const candidates = [];
81
+ let complete = true;
82
+ for (const imp of usingStaticImports(use.mod)) {
83
+ const target = use.index.byFile.get(fileIdentityKey(imp.file));
84
+ const matches = target?.locals.filter((local) => local.localName === name) ?? [];
85
+ if (!matches.length)
86
+ continue;
87
+ const parsed = use.files.get(imp.file);
88
+ if (!parsed) {
89
+ complete = false;
90
+ continue;
91
+ }
92
+ for (const def of matches) {
93
+ const declaration = declarationOf(parsed, def);
94
+ if (declaration && importsMember(use, parsed, declaration, imp)) {
95
+ candidates.push({ def, declaration, source: parsed.source });
96
+ }
97
+ }
98
+ }
99
+ return complete ? candidates : null;
100
+ }
101
+ /** One candidate, or the unique one whose parameters accept the call's argument count. */
102
+ function selectCandidate(use, candidates) {
103
+ if (candidates.length === 1)
104
+ return candidates[0].def;
105
+ const call = use.node.parent;
106
+ const argumentCount = call?.type === "invocation_expression" && call.childForFieldName("function")?.id === use.node.id
107
+ ? callArgumentCount(call, use.parsed.source)
108
+ : null;
109
+ if (argumentCount === null)
110
+ return null;
111
+ const accepting = candidates.filter(({ declaration, source }) => {
112
+ const arity = getCallableArity({ languageId: "csharp", source, declaration });
113
+ return !!arity && argumentCount >= arity.minArgs && (arity.maxArgs === null || argumentCount <= arity.maxArgs);
114
+ });
115
+ return accepting.length === 1 ? accepting[0].def : null;
116
+ }
117
+ const sameDefinition = (left, right) => fileIdentityKey(left.file) === fileIdentityKey(right.file) && left.range.start.index === right.range.start.index;
118
+ /**
119
+ * Combines the cross-module answer with `using static` members. A name that both a namespace
120
+ * lookup and a `using static` member provide is ambiguous: this lookup does not rank them.
121
+ */
122
+ export function withCsharpUsingStatic(use, lookupName, resolved) {
123
+ const candidates = usingStaticCandidates(use, lookupName);
124
+ if (!candidates?.length)
125
+ return resolved;
126
+ const selected = selectCandidate(use, candidates);
127
+ if (resolved?.status === "ok") {
128
+ if (selected && sameDefinition(selected, resolved.definition))
129
+ return resolved;
130
+ return { status: "not_found", reason: "Ambiguous name: a namespace member and a using static member" };
131
+ }
132
+ if (!selected)
133
+ return { status: "not_found", reason: "No unique using static member" };
134
+ return okGoToResult(use.index, selected, { resolution: "import", confidence: "high" });
135
+ }
136
+ //# sourceMappingURL=csharp-using-static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp-using-static.js","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/csharp-using-static.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAS3D,SAAS,kBAAkB,CAAC,GAAgB;IAC1C,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAAE,SAAS;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YAClD,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CAAC,GAAgB;IACrD,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,sBAAsB;CACvB,CAAC,CAAC;AAEH,+FAA+F;AAC/F,SAAS,aAAa,CAAC,MAAyB,EAAE,GAAc;IAC9D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC;IAClG,OAAO,KAAK,EAAE,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxF,CAAC;AAED,gGAAgG;AAChG,SAAS,iBAAiB,CAAC,WAA2B;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AACpG,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CACpB,GAAgB,EAChB,MAAyB,EACzB,WAA2B,EAC3B,GAAsB;IAEtB,MAAM,SAAS,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,SAAS,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IAC5D,IAAI,CAAC,SAAS,IAAI,yBAAyB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtF,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACjG,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACzG,IAAI,iBAAiB,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,OAAO,CACL,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;QACnD,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAC/F,CAAC;AACJ,CAAC;AAID;;;GAGG;AACH,SAAS,qBAAqB,CAAC,GAAgB,EAAE,IAAY;IAC3D,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,SAAS;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,GAAG,KAAK,CAAC;YACjB,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/C,IAAI,WAAW,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;gBAChE,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAED,0FAA0F;AAC1F,SAAS,eAAe,CAAC,GAAgB,EAAE,UAAgC;IACzE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B,MAAM,aAAa,GACjB,IAAI,EAAE,IAAI,KAAK,uBAAuB,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9F,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC,KAAK,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,IAAe,EAAE,KAAgB,EAAW,EAAE,CACpE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAEnH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAgB,EAChB,UAAkB,EAClB,QAA2B;IAE3B,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,EAAE,MAAM;QAAE,OAAO,QAAQ,CAAC;IACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,QAAQ,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,QAAQ,IAAI,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC/E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,8DAA8D,EAAE,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IACvF,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACzF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { NameLookupPolicy } from "../name-resolution-types.js";
2
+ export declare const swiftLookupPolicy: NameLookupPolicy;
3
+ export declare const csharpLookupPolicy: NameLookupPolicy;
4
+ /**
5
+ * Java and Kotlin: a type method bound lexically still needs static-scope and overload checks,
6
+ * and an inherited member beats a same-file top-level (Kotlin) function, a same-package
7
+ * declaration, or an import.
8
+ */
9
+ export declare const jvmLookupPolicy: NameLookupPolicy;
10
+ //# sourceMappingURL=implicit-self.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implicit-self.d.ts","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/implicit-self.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAmC,MAAM,6BAA6B,CAAC;AAiDrG,eAAO,MAAM,iBAAiB,EAAE,gBAiB/B,CAAC;AAcF,eAAO,MAAM,kBAAkB,EAAE,gBAwBhC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,gBAc7B,CAAC"}
@@ -0,0 +1,119 @@
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 { declaresMembers, nearestMemberContainer, nodeInStaticMemberContext, } from "../../graphs/symbol-graph-detailed/receiver-calls.js";
8
+ import { sliceText } from "../../util/ast.js";
9
+ import { csharpAliasQualifiedLookupName, implicitSelfCallee, isDirectKeywordMemberDeclaration, } from "../navigation-goto.js";
10
+ import { csharpLookupName, definitionForBinding } from "../navigation-local.js";
11
+ import { csharpUsingStaticFiles, withCsharpUsingStatic } from "./csharp-using-static.js";
12
+ import { okGoToResult } from "../navigation-provenance.js";
13
+ import { resolveCsharpQualifiedName } from "../navigation-resolve.js";
14
+ const implicitSelf = (state, fallback) => ({
15
+ status: "deferred",
16
+ request: { kind: "implicit-self-member", lookupName: state.lookupName },
17
+ fallback,
18
+ });
19
+ const lexical = (state, local) => okGoToResult(state.use.index, local, { resolution: "exact", confidence: "high" });
20
+ /** The closest binding is declared in the file's top scope (module-level function or type). */
21
+ const bindsAtFileScope = ({ use, closestBinding }) => !!closestBinding && use.scopeIndex.allScopes[0]?.map.get(closestBinding.canonicalName) === closestBinding;
22
+ /**
23
+ * The closest binding is a method declared directly in a type body. Overloads bound this way are
24
+ * not grouped by the scope lookup, so the member lookup chooses among them; a function declared
25
+ * inside a method body is not a member and keeps its lexical binding.
26
+ */
27
+ function bindsTypeMethod({ closestBinding }) {
28
+ const declaration = closestBinding?.kind === "function" ? closestBinding.node?.parent : undefined;
29
+ const container = declaration ? nearestMemberContainer(declaration) : null;
30
+ return !!declaration && !!container && isDirectKeywordMemberDeclaration(declaration, container);
31
+ }
32
+ /** An overload name at its declaration resolves to itself, not a later same-scope declaration. */
33
+ function ownOverloadDeclaration({ use, closestBinding }) {
34
+ const { node, file, parsed } = use;
35
+ for (let binding = closestBinding; binding; binding = binding.earlierSameScope ?? null) {
36
+ if (binding.node?.startIndex !== node.startIndex || binding.node.endIndex !== node.endIndex)
37
+ continue;
38
+ const own = definitionForBinding(binding, file, node, parsed.sup, parsed.source, parsed.tree);
39
+ return own ? okGoToResult(use.index, own, { resolution: "exact", confidence: "high" }) : undefined;
40
+ }
41
+ return undefined;
42
+ }
43
+ /** The use is the callee of a receiverless call (`f()`). */
44
+ const isImplicitSelfCall = ({ use }) => implicitSelfCallee(use.parsed.sup.id, use.node.parent ?? use.node)?.id === use.node.id;
45
+ /** A nominal type is not a member of its own declaration or extension. */
46
+ function namesEnclosingSwiftType(state, def) {
47
+ if (!declaresMembers(def))
48
+ return false;
49
+ const owner = nearestMemberContainer(state.use.node);
50
+ return sliceText(owner?.childForFieldName("name"), state.use.parsed.source) === state.lookupName;
51
+ }
52
+ export const swiftLookupPolicy = {
53
+ fromClosestBinding: ownOverloadDeclaration,
54
+ // Swift checks every bare name through `self`; method-local bindings still win.
55
+ onLocal(state, local) {
56
+ if (namesEnclosingSwiftType(state, local) || (!bindsAtFileScope(state) && !bindsTypeMethod(state)))
57
+ return undefined;
58
+ return implicitSelf(state, lexical(state, local));
59
+ },
60
+ afterCrossModule(state, resolved) {
61
+ if (resolved?.status === "ok" && namesEnclosingSwiftType(state, resolved.definition))
62
+ return resolved;
63
+ // A member reached only by name, not through `self`, is not a module-level target.
64
+ const memberOnly = resolved?.status === "ok" && !!resolved.definition.isMember;
65
+ return implicitSelf(state, memberOnly ? { status: "not_found", reason: "No matching Swift member definition" } : resolved);
66
+ },
67
+ };
68
+ /**
69
+ * A qualified C# type name (`P.Mix`) the directory-scoped lookup missed, resolved through the
70
+ * file's `using P;` across every directory that declares `P`.
71
+ */
72
+ function csharpQualifiedThroughUsing({ use, lookupName }) {
73
+ if (!lookupName.includes("."))
74
+ return null;
75
+ const hit = resolveCsharpQualifiedName(use.index, use.mod, lookupName, use.node.startIndex);
76
+ return hit?.kind === "resolved"
77
+ ? okGoToResult(use.index, hit.def, { resolution: "import", confidence: "high" })
78
+ : null;
79
+ }
80
+ export const csharpLookupPolicy = {
81
+ lookupName: (use) => csharpLookupName(use.node, use.parsed.source, use.name),
82
+ fromClosestBinding: ownOverloadDeclaration,
83
+ crossModuleName: ({ use, lookupName }) => csharpAliasQualifiedLookupName(use.node, use.parsed.source, lookupName, use.mod.imports),
84
+ // A static member function reaches only static members of its type.
85
+ onLocal(state, local) {
86
+ if (!bindsTypeMethod(state) || !isImplicitSelfCall(state))
87
+ return undefined;
88
+ const staticContext = nodeInStaticMemberContext(state.use.node, state.use.parsed.source);
89
+ return implicitSelf(state, staticContext
90
+ ? { status: "not_found", reason: "No matching C# static member definition" }
91
+ : lexical(state, local));
92
+ },
93
+ // Partial members declared in another file reach this path only as invocation callees.
94
+ // Without a member, `using static` members join the namespace-level answer.
95
+ afterCrossModule: (state, resolved) => implicitSelf(state, withCsharpUsingStatic(state.use, state.lookupName, resolved ?? csharpQualifiedThroughUsing(state))),
96
+ preloadFiles: (_index, mod) => csharpUsingStaticFiles(mod),
97
+ };
98
+ /**
99
+ * Java and Kotlin: a type method bound lexically still needs static-scope and overload checks,
100
+ * and an inherited member beats a same-file top-level (Kotlin) function, a same-package
101
+ * declaration, or an import.
102
+ */
103
+ export const jvmLookupPolicy = {
104
+ // Java methods and variables are separate namespaces: `int hit = 0; hit();` still calls the
105
+ // method. A Kotlin local holding a function is callable, so Kotlin keeps the binding.
106
+ ignoresBinding: (use, binding) => use.parsed.sup.id === "java" &&
107
+ binding.kind !== "function" &&
108
+ implicitSelfCallee("java", use.node.parent ?? use.node)?.id === use.node.id,
109
+ fromClosestBinding: ownOverloadDeclaration,
110
+ onLocal(state, local) {
111
+ if (state.closestBinding?.kind !== "function" || !isImplicitSelfCall(state))
112
+ return undefined;
113
+ if (!bindsAtFileScope(state) && !bindsTypeMethod(state))
114
+ return undefined;
115
+ return implicitSelf(state, lexical(state, local));
116
+ },
117
+ afterCrossModule: (state, resolved) => implicitSelf(state, resolved),
118
+ };
119
+ //# 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,3 @@
1
+ import type { NameLookupPolicy } from "../name-resolution-types.js";
2
+ export declare function nameLookupPolicyFor(languageId: string): NameLookupPolicy;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAsHpE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAExE"}
@@ -0,0 +1,132 @@
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 { okGoToResult } from "../navigation-provenance.js";
10
+ import { resolveImported } from "../navigation-resolve.js";
11
+ import { typescriptOverloadImplementationAcceptsCount } from "../ts-callables.js";
12
+ import { SymbolKind } from "../types.js";
13
+ import { cLookupPolicy, cppLookupPolicy } from "./c-family.js";
14
+ import { csharpLookupPolicy, jvmLookupPolicy, swiftLookupPolicy } from "./implicit-self.js";
15
+ import { phpLookupPolicy } from "./php.js";
16
+ /** Whether a function shares its name with another function in its file (an overload set). */
17
+ function hasSameNameSiblings(module, def) {
18
+ return module.locals.some((candidate) => candidate.kind === def.kind &&
19
+ candidate.localName === def.localName &&
20
+ candidate.range.start.index !== def.range.start.index);
21
+ }
22
+ /** TypeScript overloads: a call must match a signature of the implementation it names. */
23
+ const typescriptLookupPolicy = {
24
+ onUnboundLocal({ use, closestBinding }) {
25
+ if (closestBinding?.kind !== "function" || use.node.parent?.type !== "call_expression")
26
+ return undefined;
27
+ return { status: "not_found", reason: "No matching TypeScript overload signature" };
28
+ },
29
+ afterCrossModule({ use }, resolved) {
30
+ const call = use.node.parent;
31
+ if (call?.type !== "call_expression" || resolved?.status !== "ok")
32
+ return undefined;
33
+ const target = resolved.definition;
34
+ if (target.kind !== SymbolKind.Function)
35
+ return undefined;
36
+ const argumentCount = getCallArgumentCount({ languageId: use.parsed.sup.id, source: use.parsed.source, call });
37
+ const targetModule = use.index.byFile.get(fileIdentityKey(target.file));
38
+ // Only an overload set needs the target's syntax; a single implementation accepts any count.
39
+ if (argumentCount === null || !targetModule || !hasSameNameSiblings(targetModule, target))
40
+ return undefined;
41
+ const targetContext = use.files.get(target.file);
42
+ if (!targetContext || (targetContext.sup.id !== "ts" && targetContext.sup.id !== "tsx"))
43
+ return undefined;
44
+ const accepted = typescriptOverloadImplementationAcceptsCount({
45
+ implementation: target,
46
+ locals: targetModule.locals,
47
+ argumentCount,
48
+ });
49
+ return accepted ? undefined : { status: "not_found", reason: "No matching TypeScript overload signature" };
50
+ },
51
+ // A re-exported overload set lives in another file than the module the import names.
52
+ *preloadFiles(index, mod) {
53
+ for (const imp of mod.imports) {
54
+ if (imp.kind !== "named" && imp.kind !== "default")
55
+ continue;
56
+ const target = resolveImported(index, imp, imp.kind === "default" ? "default" : imp.imported);
57
+ if (!target || "namespace" in target)
58
+ continue;
59
+ const targetModule = index.byFile.get(fileIdentityKey(target.file));
60
+ if (targetModule && hasSameNameSiblings(targetModule, target))
61
+ yield target.file;
62
+ }
63
+ },
64
+ };
65
+ /** Python: a module object is not callable. */
66
+ const pythonLookupPolicy = {
67
+ afterCrossModule({ use }, resolved) {
68
+ if (use.node.parent?.type !== "call" || resolved?.status !== "ok")
69
+ return undefined;
70
+ if (resolved.provenance?.resolution !== "namespace")
71
+ return undefined;
72
+ // A namespace binding holds a module object: the call is an error, not a call to the
73
+ // module's first export.
74
+ return { status: "not_found", reason: "No callable definition for a Python module binding" };
75
+ },
76
+ };
77
+ /** Rust: macro arguments stay unparsed token trees. */
78
+ const rustLookupPolicy = {
79
+ // A name preceded by `.` or `::` there is a member or path receiver the raw tokens cannot
80
+ // prove, so bare-name resolution would answer with an unrelated same-named free function.
81
+ beforeLexical(use) {
82
+ if (!rustTokenTreeNameFollowsSeparator(use.node))
83
+ return undefined;
84
+ return { status: "not_found", reason: "No resolvable receiver inside a Rust macro token tree" };
85
+ },
86
+ };
87
+ /** Go package aliases yield to closer local bindings. */
88
+ const goLookupPolicy = {
89
+ moduleAliasIsUnshadowed: ({ use, closestBinding }) => !closestBinding || use.scopeIndex.allScopes[0]?.map.get(closestBinding.canonicalName) === closestBinding,
90
+ };
91
+ /** A Zig declaration initialized from an imported member names the source symbol. */
92
+ const zigLookupPolicy = {
93
+ onLocal({ use, lookupName }, local) {
94
+ const binding = use.mod.imports.find((candidate) => candidate.kind === "named" &&
95
+ candidate.local === lookupName &&
96
+ candidate.localRange?.start.index === local.range.start.index &&
97
+ fileIdentityKey(local.file) === fileIdentityKey(use.file));
98
+ if (!binding || binding.kind !== "named")
99
+ return undefined;
100
+ const target = resolveImported(use.index, binding, binding.imported);
101
+ if (!target || "namespace" in target)
102
+ return { status: "not_found", reason: "Unresolved Zig symbol import" };
103
+ return okGoToResult(use.index, target, {
104
+ via: {
105
+ ...(typeof binding.resolved === "string" ? { importedFrom: binding.resolved } : {}),
106
+ exportedName: binding.imported,
107
+ },
108
+ resolution: "import",
109
+ confidence: "high",
110
+ });
111
+ },
112
+ };
113
+ const NO_POLICY = {};
114
+ const POLICIES = {
115
+ c: cLookupPolicy,
116
+ cpp: cppLookupPolicy,
117
+ csharp: csharpLookupPolicy,
118
+ java: jvmLookupPolicy,
119
+ go: goLookupPolicy,
120
+ kotlin: jvmLookupPolicy,
121
+ php: phpLookupPolicy,
122
+ python: pythonLookupPolicy,
123
+ rust: rustLookupPolicy,
124
+ swift: swiftLookupPolicy,
125
+ ts: typescriptLookupPolicy,
126
+ tsx: typescriptLookupPolicy,
127
+ zig: zigLookupPolicy,
128
+ };
129
+ export function nameLookupPolicyFor(languageId) {
130
+ return POLICIES[languageId] ?? NO_POLICY;
131
+ }
132
+ //# 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,3 @@
1
+ import type { NameLookupPolicy } from "../name-resolution-types.js";
2
+ export declare const phpLookupPolicy: NameLookupPolicy;
3
+ //# sourceMappingURL=php.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/indexer/name-lookup-policies/php.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAgBjF,eAAO,MAAM,eAAe,EAAE,gBAwE7B,CAAC"}