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