@tsonic/frontend 0.0.62 → 0.0.63

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 (377) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/dependency-graph.d.ts +1 -1
  3. package/dist/dependency-graph.d.ts.map +1 -1
  4. package/dist/dependency-graph.js +1 -1
  5. package/dist/dependency-graph.js.map +1 -1
  6. package/dist/dotnet-metadata.d.ts +0 -12
  7. package/dist/dotnet-metadata.d.ts.map +1 -1
  8. package/dist/dotnet-metadata.js +0 -24
  9. package/dist/dotnet-metadata.js.map +1 -1
  10. package/dist/generic-function-values.d.ts +11 -0
  11. package/dist/generic-function-values.d.ts.map +1 -0
  12. package/dist/generic-function-values.js +243 -0
  13. package/dist/generic-function-values.js.map +1 -0
  14. package/dist/generic-function-values.test.d.ts +2 -0
  15. package/dist/generic-function-values.test.d.ts.map +1 -0
  16. package/dist/generic-function-values.test.js +256 -0
  17. package/dist/generic-function-values.test.js.map +1 -0
  18. package/dist/graph/extraction/imports.d.ts +5 -0
  19. package/dist/graph/extraction/imports.d.ts.map +1 -1
  20. package/dist/graph/extraction/imports.js +30 -0
  21. package/dist/graph/extraction/imports.js.map +1 -1
  22. package/dist/graph/extraction/index.d.ts +1 -1
  23. package/dist/graph/extraction/index.d.ts.map +1 -1
  24. package/dist/graph/extraction/index.js +1 -1
  25. package/dist/graph/extraction/index.js.map +1 -1
  26. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  27. package/dist/graph/extraction/orchestrator.js +16 -2
  28. package/dist/graph/extraction/orchestrator.js.map +1 -1
  29. package/dist/graph/extraction.d.ts +1 -1
  30. package/dist/graph/extraction.d.ts.map +1 -1
  31. package/dist/graph/extraction.js +1 -1
  32. package/dist/graph/extraction.js.map +1 -1
  33. package/dist/ir/binding/binding-factory.d.ts +17 -0
  34. package/dist/ir/binding/binding-factory.d.ts.map +1 -0
  35. package/dist/ir/binding/binding-factory.js +765 -0
  36. package/dist/ir/binding/binding-factory.js.map +1 -0
  37. package/dist/ir/binding/binding-helpers.d.ts +90 -0
  38. package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
  39. package/dist/ir/binding/binding-helpers.js +387 -0
  40. package/dist/ir/binding/binding-helpers.js.map +1 -0
  41. package/dist/ir/binding/binding-types.d.ts +203 -0
  42. package/dist/ir/binding/binding-types.d.ts.map +1 -0
  43. package/dist/ir/binding/binding-types.js +9 -0
  44. package/dist/ir/binding/binding-types.js.map +1 -0
  45. package/dist/ir/binding/index.d.ts +4 -158
  46. package/dist/ir/binding/index.d.ts.map +1 -1
  47. package/dist/ir/binding/index.js +3 -1134
  48. package/dist/ir/binding/index.js.map +1 -1
  49. package/dist/ir/builder.test.js +223 -0
  50. package/dist/ir/builder.test.js.map +1 -1
  51. package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
  52. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  53. package/dist/ir/converters/anonymous-synthesis.js +45 -8
  54. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  55. package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
  56. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
  57. package/dist/ir/converters/expressions/access/access-converter.js +141 -0
  58. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
  59. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
  60. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
  61. package/dist/ir/converters/expressions/access/binding-resolution.js +384 -0
  62. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
  63. package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
  64. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
  65. package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
  66. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
  67. package/dist/ir/converters/expressions/access.d.ts +1 -7
  68. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  69. package/dist/ir/converters/expressions/access.js +1 -720
  70. package/dist/ir/converters/expressions/access.js.map +1 -1
  71. package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
  72. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
  73. package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
  74. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
  75. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
  76. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
  77. package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
  78. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
  79. package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
  80. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
  81. package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
  82. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
  83. package/dist/ir/converters/expressions/calls.d.ts +2 -28
  84. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  85. package/dist/ir/converters/expressions/calls.js +2 -1344
  86. package/dist/ir/converters/expressions/calls.js.map +1 -1
  87. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  88. package/dist/ir/converters/expressions/collections.js +37 -6
  89. package/dist/ir/converters/expressions/collections.js.map +1 -1
  90. package/dist/ir/converters/expressions/functions.js +1 -1
  91. package/dist/ir/converters/expressions/functions.js.map +1 -1
  92. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  93. package/dist/ir/converters/expressions/helpers.js +1 -0
  94. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  95. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  96. package/dist/ir/converters/expressions/other.js +3 -2
  97. package/dist/ir/converters/expressions/other.js.map +1 -1
  98. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  99. package/dist/ir/converters/flow-narrowing.js +3 -2
  100. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  101. package/dist/ir/converters/statements/declarations/classes/methods.js +1 -1
  102. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  103. package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
  104. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  105. package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
  106. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  107. package/dist/ir/converters/statements/declarations/variables.js +289 -2
  108. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  109. package/dist/ir/expression-converter.d.ts +0 -1
  110. package/dist/ir/expression-converter.d.ts.map +1 -1
  111. package/dist/ir/expression-converter.js +0 -2
  112. package/dist/ir/expression-converter.js.map +1 -1
  113. package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
  114. package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
  115. package/dist/ir/generic-function-value-lowering.test.js +312 -0
  116. package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
  117. package/dist/ir/generic-validator.d.ts +3 -4
  118. package/dist/ir/generic-validator.d.ts.map +1 -1
  119. package/dist/ir/generic-validator.js +3 -35
  120. package/dist/ir/generic-validator.js.map +1 -1
  121. package/dist/ir/program-context.d.ts +7 -0
  122. package/dist/ir/program-context.d.ts.map +1 -1
  123. package/dist/ir/program-context.js +1 -0
  124. package/dist/ir/program-context.js.map +1 -1
  125. package/dist/ir/statement-converter.d.ts +0 -2
  126. package/dist/ir/statement-converter.d.ts.map +1 -1
  127. package/dist/ir/statement-converter.js +0 -3
  128. package/dist/ir/statement-converter.js.map +1 -1
  129. package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
  130. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  131. package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
  132. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  133. package/dist/ir/type-system/internal/nominal-env.js +2 -6
  134. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  135. package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
  136. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
  137. package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
  138. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
  139. package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
  140. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  141. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
  142. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  143. package/dist/ir/type-system/internal/type-converter/orchestrator.js +315 -23
  144. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  145. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
  146. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
  147. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
  148. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
  149. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  150. package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
  151. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  152. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  153. package/dist/ir/type-system/internal/type-converter/references.js +67 -29
  154. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  155. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  156. package/dist/ir/type-system/internal/type-converter/utility-types.js +145 -0
  157. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  158. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
  159. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  160. package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
  161. package/dist/ir/type-system/internal/type-registry.js +7 -7
  162. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  163. package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
  164. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
  165. package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
  166. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
  167. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
  168. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  169. package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1044
  170. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  171. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
  172. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
  173. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
  174. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
  175. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
  176. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
  177. package/dist/ir/type-system/internal/universe/clr-type-parser.js +415 -0
  178. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
  179. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  180. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  181. package/dist/ir/type-system/internal/universe/index.js +1 -3
  182. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  183. package/dist/ir/type-system/internal/universe/unified-universe.test.js +2 -0
  184. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
  185. package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
  186. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
  187. package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
  188. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
  189. package/dist/ir/type-system/type-system-inference.d.ts +98 -0
  190. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
  191. package/dist/ir/type-system/type-system-inference.js +1083 -0
  192. package/dist/ir/type-system/type-system-inference.js.map +1 -0
  193. package/dist/ir/type-system/type-system-relations.d.ts +15 -0
  194. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
  195. package/dist/ir/type-system/type-system-relations.js +152 -0
  196. package/dist/ir/type-system/type-system-relations.js.map +1 -0
  197. package/dist/ir/type-system/type-system-state.d.ts +436 -0
  198. package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
  199. package/dist/ir/type-system/type-system-state.js +212 -0
  200. package/dist/ir/type-system/type-system-state.js.map +1 -0
  201. package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
  202. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
  203. package/dist/ir/type-system/type-system-utilities.js +373 -0
  204. package/dist/ir/type-system/type-system-utilities.js.map +1 -0
  205. package/dist/ir/type-system/type-system.d.ts +17 -358
  206. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  207. package/dist/ir/type-system/type-system.js +67 -2945
  208. package/dist/ir/type-system/type-system.js.map +1 -1
  209. package/dist/ir/types/index.d.ts +1 -0
  210. package/dist/ir/types/index.d.ts.map +1 -1
  211. package/dist/ir/types/index.js +1 -0
  212. package/dist/ir/types/index.js.map +1 -1
  213. package/dist/ir/types/ir-substitution.js +1 -1
  214. package/dist/ir/types/ir-substitution.js.map +1 -1
  215. package/dist/ir/types/statements.d.ts +1 -1
  216. package/dist/ir/types/type-ops.d.ts +9 -0
  217. package/dist/ir/types/type-ops.d.ts.map +1 -0
  218. package/dist/ir/types/type-ops.js +134 -0
  219. package/dist/ir/types/type-ops.js.map +1 -0
  220. package/dist/ir/types/type-ops.test.d.ts +2 -0
  221. package/dist/ir/types/type-ops.test.d.ts.map +1 -0
  222. package/dist/ir/types/type-ops.test.js +73 -0
  223. package/dist/ir/types/type-ops.test.js.map +1 -0
  224. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
  225. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
  226. package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
  227. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
  228. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
  229. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
  230. package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
  231. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
  232. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
  233. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
  234. package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
  235. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
  236. package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
  237. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  238. package/dist/ir/validation/attribute-collection-pass.js +1 -961
  239. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  240. package/dist/ir/validation/attribute-collection-pass.test.js +12 -6
  241. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  242. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  243. package/dist/ir/validation/soundness-gate.js +2 -1
  244. package/dist/ir/validation/soundness-gate.js.map +1 -1
  245. package/dist/ir/validation/soundness-gate.test.js +69 -0
  246. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  247. package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
  248. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  249. package/dist/ir/validation/yield-lowering-pass.js +942 -48
  250. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  251. package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
  252. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  253. package/dist/program/binding-loader.d.ts +37 -0
  254. package/dist/program/binding-loader.d.ts.map +1 -0
  255. package/dist/program/binding-loader.js +155 -0
  256. package/dist/program/binding-loader.js.map +1 -0
  257. package/dist/program/binding-registry.d.ts +106 -0
  258. package/dist/program/binding-registry.d.ts.map +1 -0
  259. package/dist/program/binding-registry.js +590 -0
  260. package/dist/program/binding-registry.js.map +1 -0
  261. package/dist/program/binding-types.d.ts +166 -0
  262. package/dist/program/binding-types.d.ts.map +1 -0
  263. package/dist/program/binding-types.js +57 -0
  264. package/dist/program/binding-types.js.map +1 -0
  265. package/dist/program/bindings.d.ts +6 -271
  266. package/dist/program/bindings.d.ts.map +1 -1
  267. package/dist/program/bindings.js +7 -781
  268. package/dist/program/bindings.js.map +1 -1
  269. package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
  270. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  271. package/dist/resolver/clr-bindings-resolver.js +22 -32
  272. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  273. package/dist/resolver/clr-bindings-resolver.test.js +0 -27
  274. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
  275. package/dist/resolver/import-resolution.d.ts +1 -1
  276. package/dist/resolver/import-resolution.d.ts.map +1 -1
  277. package/dist/resolver/import-resolution.js +2 -7
  278. package/dist/resolver/import-resolution.js.map +1 -1
  279. package/dist/resolver/naming.d.ts.map +1 -1
  280. package/dist/resolver/naming.js +1 -0
  281. package/dist/resolver/naming.js.map +1 -1
  282. package/dist/types/diagnostic.d.ts +1 -1
  283. package/dist/types/diagnostic.d.ts.map +1 -1
  284. package/dist/types/diagnostic.js.map +1 -1
  285. package/dist/validation/features.d.ts.map +1 -1
  286. package/dist/validation/features.js +38 -13
  287. package/dist/validation/features.js.map +1 -1
  288. package/dist/validation/features.test.d.ts +2 -0
  289. package/dist/validation/features.test.d.ts.map +1 -0
  290. package/dist/validation/features.test.js +273 -0
  291. package/dist/validation/features.test.js.map +1 -0
  292. package/dist/validation/generics.d.ts +1 -1
  293. package/dist/validation/generics.d.ts.map +1 -1
  294. package/dist/validation/generics.js +2 -26
  295. package/dist/validation/generics.js.map +1 -1
  296. package/dist/validation/imports.d.ts.map +1 -1
  297. package/dist/validation/imports.js +2 -1
  298. package/dist/validation/imports.js.map +1 -1
  299. package/dist/validation/imports.test.d.ts +2 -0
  300. package/dist/validation/imports.test.d.ts.map +1 -0
  301. package/dist/validation/imports.test.js +112 -0
  302. package/dist/validation/imports.test.js.map +1 -0
  303. package/dist/validation/static-safety.d.ts +6 -6
  304. package/dist/validation/static-safety.d.ts.map +1 -1
  305. package/dist/validation/static-safety.js +163 -109
  306. package/dist/validation/static-safety.js.map +1 -1
  307. package/dist/validation/unsupported-utility-types.d.ts +3 -3
  308. package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
  309. package/dist/validation/unsupported-utility-types.js +4 -7
  310. package/dist/validation/unsupported-utility-types.js.map +1 -1
  311. package/dist/validator.maximus.test.d.ts +2 -0
  312. package/dist/validator.maximus.test.d.ts.map +1 -0
  313. package/dist/validator.maximus.test.js +1214 -0
  314. package/dist/validator.maximus.test.js.map +1 -0
  315. package/dist/validator.test.js +152 -18
  316. package/dist/validator.test.js.map +1 -1
  317. package/package.json +1 -1
  318. package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
  319. package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
  320. package/dist/ir/converters/statements/declarations/registry.js +0 -130
  321. package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
  322. package/dist/ir/this-parameter-inference.test.d.ts +0 -13
  323. package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
  324. package/dist/ir/this-parameter-inference.test.js +0 -165
  325. package/dist/ir/this-parameter-inference.test.js.map +0 -1
  326. package/dist/metadata/bindings-loader.d.ts +0 -41
  327. package/dist/metadata/bindings-loader.d.ts.map +0 -1
  328. package/dist/metadata/bindings-loader.js +0 -308
  329. package/dist/metadata/bindings-loader.js.map +0 -1
  330. package/dist/metadata/bindings-loader.test.d.ts +0 -5
  331. package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
  332. package/dist/metadata/bindings-loader.test.js +0 -117
  333. package/dist/metadata/bindings-loader.test.js.map +0 -1
  334. package/dist/metadata/index.d.ts +0 -8
  335. package/dist/metadata/index.d.ts.map +0 -1
  336. package/dist/metadata/index.js +0 -7
  337. package/dist/metadata/index.js.map +0 -1
  338. package/dist/metadata/library-loader.d.ts +0 -42
  339. package/dist/metadata/library-loader.d.ts.map +0 -1
  340. package/dist/metadata/library-loader.js +0 -126
  341. package/dist/metadata/library-loader.js.map +0 -1
  342. package/dist/metadata/loader.d.ts +0 -26
  343. package/dist/metadata/loader.d.ts.map +0 -1
  344. package/dist/metadata/loader.js +0 -333
  345. package/dist/metadata/loader.js.map +0 -1
  346. package/dist/metadata/loader.test.d.ts +0 -5
  347. package/dist/metadata/loader.test.d.ts.map +0 -1
  348. package/dist/metadata/loader.test.js +0 -119
  349. package/dist/metadata/loader.test.js.map +0 -1
  350. package/dist/resolver/naming-policy.d.ts +0 -20
  351. package/dist/resolver/naming-policy.d.ts.map +0 -1
  352. package/dist/resolver/naming-policy.js +0 -40
  353. package/dist/resolver/naming-policy.js.map +0 -1
  354. package/dist/types/bindings.d.ts +0 -153
  355. package/dist/types/bindings.d.ts.map +0 -1
  356. package/dist/types/bindings.js +0 -14
  357. package/dist/types/bindings.js.map +0 -1
  358. package/dist/types/metadata.d.ts +0 -196
  359. package/dist/types/metadata.d.ts.map +0 -1
  360. package/dist/types/metadata.js +0 -10
  361. package/dist/types/metadata.js.map +0 -1
  362. package/dist/types/nested-types.d.ts +0 -111
  363. package/dist/types/nested-types.d.ts.map +0 -1
  364. package/dist/types/nested-types.js +0 -176
  365. package/dist/types/nested-types.js.map +0 -1
  366. package/dist/types/nested-types.test.d.ts +0 -5
  367. package/dist/types/nested-types.test.d.ts.map +0 -1
  368. package/dist/types/nested-types.test.js +0 -135
  369. package/dist/types/nested-types.test.js.map +0 -1
  370. package/dist/types/ref-parameters.d.ts +0 -123
  371. package/dist/types/ref-parameters.d.ts.map +0 -1
  372. package/dist/types/ref-parameters.js +0 -203
  373. package/dist/types/ref-parameters.js.map +0 -1
  374. package/dist/types/ref-parameters.test.d.ts +0 -5
  375. package/dist/types/ref-parameters.test.d.ts.map +0 -1
  376. package/dist/types/ref-parameters.test.js +0 -147
  377. package/dist/types/ref-parameters.test.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Member access expression converter orchestrator
3
+ *
4
+ * Combines member-resolution and binding-resolution to convert
5
+ * property access and element access expressions.
6
+ */
7
+ import * as ts from "typescript";
8
+ import { IrExpression } from "../../../types.js";
9
+ import type { ProgramContext } from "../../../program-context.js";
10
+ /**
11
+ * Convert property access or element access expression
12
+ */
13
+ export declare const convertMemberExpression: (node: ts.PropertyAccessExpression | ts.ElementAccessExpression, ctx: ProgramContext) => IrExpression;
14
+ //# sourceMappingURL=access-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-converter.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/access-converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAkElE;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC,uBAAuB,EAC9D,KAAK,cAAc,KAClB,YAuGF,CAAC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Member access expression converter orchestrator
3
+ *
4
+ * Combines member-resolution and binding-resolution to convert
5
+ * property access and element access expressions.
6
+ */
7
+ import * as ts from "typescript";
8
+ import { pathToFileURL } from "node:url";
9
+ import { dirname } from "node:path";
10
+ import { getSourceSpan } from "../helpers.js";
11
+ import { convertExpression } from "../../../expression-converter.js";
12
+ import { getDeclaredPropertyType, classifyComputedAccess, deriveElementType, } from "./member-resolution.js";
13
+ import { resolveHierarchicalBinding, resolveHierarchicalBindingFromMemberId, resolveExtensionMethodsBinding, } from "./binding-resolution.js";
14
+ import { createDiagnostic } from "../../../../types/diagnostic.js";
15
+ const SUPPORTED_IMPORT_META_FIELDS = new Set(["url", "filename", "dirname"]);
16
+ const tryConvertImportMetaProperty = (node, ctx) => {
17
+ if (!ts.isMetaProperty(node.expression))
18
+ return undefined;
19
+ if (node.expression.keywordToken !== ts.SyntaxKind.ImportKeyword ||
20
+ node.expression.name.text !== "meta") {
21
+ return undefined;
22
+ }
23
+ const filePath = node.getSourceFile().fileName.replace(/\\/g, "/");
24
+ const field = node.name.text;
25
+ const sourceSpan = getSourceSpan(node);
26
+ if (!SUPPORTED_IMPORT_META_FIELDS.has(field)) {
27
+ ctx.diagnostics.push(createDiagnostic("TSN2001", "error", `import.meta.${field} is not supported in strict AOT mode`, sourceSpan, "Supported fields: import.meta.url, import.meta.filename, import.meta.dirname"));
28
+ return {
29
+ kind: "literal",
30
+ value: undefined,
31
+ raw: "undefined",
32
+ inferredType: { kind: "primitiveType", name: "undefined" },
33
+ sourceSpan,
34
+ };
35
+ }
36
+ const value = field === "url"
37
+ ? pathToFileURL(filePath).href
38
+ : field === "dirname"
39
+ ? dirname(filePath).replace(/\\/g, "/")
40
+ : filePath;
41
+ return {
42
+ kind: "literal",
43
+ value,
44
+ raw: JSON.stringify(value),
45
+ inferredType: { kind: "primitiveType", name: "string" },
46
+ sourceSpan,
47
+ };
48
+ };
49
+ /**
50
+ * Convert property access or element access expression
51
+ */
52
+ export const convertMemberExpression = (node, ctx) => {
53
+ const isOptional = node.questionDotToken !== undefined;
54
+ const sourceSpan = getSourceSpan(node);
55
+ if (ts.isPropertyAccessExpression(node)) {
56
+ const importMetaExpr = tryConvertImportMetaProperty(node, ctx);
57
+ if (importMetaExpr)
58
+ return importMetaExpr;
59
+ const object = convertExpression(node.expression, ctx, undefined);
60
+ const propertyName = node.name.text;
61
+ // Try to resolve hierarchical binding
62
+ const memberBinding = resolveExtensionMethodsBinding(node, propertyName, ctx) ??
63
+ resolveHierarchicalBindingFromMemberId(node, propertyName, ctx) ??
64
+ resolveHierarchicalBinding(object, propertyName, ctx);
65
+ // DETERMINISTIC TYPING: Property type comes from NominalEnv + TypeRegistry for
66
+ // user-defined types (including inherited members), with fallback to Binding layer
67
+ // for built-ins and CLR types.
68
+ //
69
+ // The receiver's inferredType enables NominalEnv to walk inheritance chains
70
+ // and substitute type parameters correctly for inherited generic members.
71
+ //
72
+ // Built-ins like string.length work because globals declare them with proper types.
73
+ // If getDeclaredPropertyType returns undefined, it means the property declaration
74
+ // is missing - use unknownType as poison so validation can emit TSN5203.
75
+ //
76
+ // EXCEPTION: If memberBinding exists AND declaredType is undefined, return undefined.
77
+ // This handles pure CLR-bound methods like Console.WriteLine that have no TS declaration.
78
+ const declaredType = getDeclaredPropertyType(node, object.inferredType, ctx);
79
+ // Hierarchical bindings: namespace.type is a static type reference, not a runtime
80
+ // value. When this pattern is present in the binding manifest, avoid poisoning the
81
+ // receiver with unknownType; the emitter uses "no inferredType" to classify the
82
+ // receiver as a static type, enabling global::Type.Member emission.
83
+ const isNamespaceTypeReference = object.kind === "identifier" &&
84
+ ctx.bindings
85
+ .getNamespace(object.name)
86
+ ?.types.some((t) => t.alias === propertyName) === true;
87
+ // DETERMINISTIC TYPING: Set inferredType for validation passes (like numeric proof).
88
+ // The emitter uses memberBinding separately for C# casing (e.g., length -> Length).
89
+ //
90
+ // Priority order for inferredType:
91
+ // 1. If declaredType exists, use it (covers built-ins like string.length -> int)
92
+ // 2. If memberBinding exists but no declaredType, use undefined (pure CLR-bound)
93
+ // 3. Otherwise, poison with unknownType for validation (TSN5203)
94
+ //
95
+ // Note: Both memberBinding AND inferredType can be set - they serve different purposes:
96
+ // - memberBinding: used by emitter for C# member names
97
+ // - inferredType: used by validation passes for type checking
98
+ //
99
+ // Class fields without explicit type annotations will emit TSN5203.
100
+ // Users must add explicit types like `count: int = 0` instead of `count = 0`.
101
+ const propertyInferredType = declaredType
102
+ ? declaredType
103
+ : isNamespaceTypeReference
104
+ ? undefined
105
+ : memberBinding
106
+ ? undefined
107
+ : { kind: "unknownType" };
108
+ return {
109
+ kind: "memberAccess",
110
+ object,
111
+ property: propertyName,
112
+ isComputed: false,
113
+ isOptional,
114
+ inferredType: propertyInferredType,
115
+ sourceSpan,
116
+ memberBinding,
117
+ };
118
+ }
119
+ else {
120
+ // Element access (computed): obj[expr]
121
+ const object = convertExpression(node.expression, ctx, undefined);
122
+ // DETERMINISTIC TYPING: Use object's inferredType (not getInferredType)
123
+ const objectType = object.inferredType;
124
+ // Classify the access kind for proof pass
125
+ // This determines whether Int32 proof is required for the index
126
+ const accessKind = classifyComputedAccess(objectType, ctx);
127
+ // Derive element type from object type
128
+ const elementType = deriveElementType(objectType, ctx);
129
+ return {
130
+ kind: "memberAccess",
131
+ object,
132
+ property: convertExpression(node.argumentExpression, ctx, undefined),
133
+ isComputed: true,
134
+ isOptional,
135
+ inferredType: elementType,
136
+ sourceSpan,
137
+ accessKind,
138
+ };
139
+ }
140
+ };
141
+ //# sourceMappingURL=access-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-converter.js","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/access-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Binding resolution for member access expressions
3
+ *
4
+ * Hierarchical binding lookup, extension method resolution, and
5
+ * MemberId-based fallback binding for CLR property casing.
6
+ */
7
+ import * as ts from "typescript";
8
+ import { IrMemberExpression } from "../../../types.js";
9
+ import { convertExpression } from "../../../expression-converter.js";
10
+ import type { ProgramContext } from "../../../program-context.js";
11
+ /**
12
+ * Resolve hierarchical binding for a member access
13
+ * Handles namespace.type, type.member, directType.member, and instance.member patterns
14
+ */
15
+ export declare const resolveHierarchicalBinding: (object: ReturnType<typeof convertExpression>, propertyName: string, ctx: ProgramContext) => IrMemberExpression["memberBinding"];
16
+ /**
17
+ * Resolve hierarchical binding for a member access using Binding-resolved MemberId.
18
+ *
19
+ * This is a fallback for cases where the receiver's inferredType is unavailable
20
+ * (e.g., local variable typing inferred from a complex initializer), but TS can
21
+ * still resolve the member symbol deterministically.
22
+ *
23
+ * Critical use case: CLR property casing (e.g., `.expression` → `.Expression`).
24
+ */
25
+ export declare const resolveHierarchicalBindingFromMemberId: (node: ts.PropertyAccessExpression, propertyName: string, ctx: ProgramContext) => IrMemberExpression["memberBinding"];
26
+ /**
27
+ * Resolve instance-style extension method bindings from tsbindgen's `ExtensionMethods` typing.
28
+ *
29
+ * tsbindgen emits extension methods as interface members on `__Ext_*` types, and users
30
+ * opt in via `ExtensionMethods<TShape>`. At runtime those members do not exist, so we
31
+ * must attach the underlying CLR binding so the emitter can lower the call to an
32
+ * explicit static invocation.
33
+ */
34
+ export declare const resolveExtensionMethodsBinding: (node: ts.PropertyAccessExpression, propertyName: string, ctx: ProgramContext) => IrMemberExpression["memberBinding"];
35
+ //# sourceMappingURL=binding-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-resolution.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/binding-resolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GACrC,QAAQ,UAAU,CAAC,OAAO,iBAAiB,CAAC,EAC5C,cAAc,MAAM,EACpB,KAAK,cAAc,KAClB,kBAAkB,CAAC,eAAe,CA+GpC,CAAC;AAsDF;;;;;;;;GAQG;AACH,eAAO,MAAM,sCAAsC,GACjD,MAAM,EAAE,CAAC,wBAAwB,EACjC,cAAc,MAAM,EACpB,KAAK,cAAc,KAClB,kBAAkB,CAAC,eAAe,CAgJpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GACzC,MAAM,EAAE,CAAC,wBAAwB,EACjC,cAAc,MAAM,EACpB,KAAK,cAAc,KAClB,kBAAkB,CAAC,eAAe,CA6IpC,CAAC"}
@@ -0,0 +1,384 @@
1
+ /**
2
+ * Binding resolution for member access expressions
3
+ *
4
+ * Hierarchical binding lookup, extension method resolution, and
5
+ * MemberId-based fallback binding for CLR property casing.
6
+ */
7
+ import * as ts from "typescript";
8
+ import { existsSync, readFileSync } from "node:fs";
9
+ import { dirname, join } from "node:path";
10
+ import { getSourceSpan } from "../helpers.js";
11
+ import { tsbindgenClrTypeNameToTsTypeName } from "../../../../tsbindgen/names.js";
12
+ import { createDiagnostic } from "../../../../types/diagnostic.js";
13
+ import { loadBindingsFromPath } from "../../../../program/bindings.js";
14
+ import { extractTypeName } from "./member-resolution.js";
15
+ /**
16
+ * Resolve hierarchical binding for a member access
17
+ * Handles namespace.type, type.member, directType.member, and instance.member patterns
18
+ */
19
+ export const resolveHierarchicalBinding = (object, propertyName, ctx) => {
20
+ const registry = ctx.bindings;
21
+ const toIrMemberBinding = (overloads) => {
22
+ const first = overloads[0];
23
+ if (!first)
24
+ return undefined;
25
+ const getTargetKey = (m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`;
26
+ const targetKey = getTargetKey(first);
27
+ if (overloads.some((m) => getTargetKey(m) !== targetKey)) {
28
+ // Unsafe: overloads map to different CLR targets.
29
+ return undefined;
30
+ }
31
+ const getModifiersKey = (m) => {
32
+ const mods = m.parameterModifiers ?? [];
33
+ if (mods.length === 0)
34
+ return "";
35
+ return [...mods]
36
+ .slice()
37
+ .sort((a, b) => a.index - b.index)
38
+ .map((mod) => `${mod.index}:${mod.modifier}`)
39
+ .join(",");
40
+ };
41
+ const modsKey = getModifiersKey(first);
42
+ const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
43
+ return {
44
+ assembly: first.binding.assembly,
45
+ type: first.binding.type,
46
+ member: first.binding.member,
47
+ // IMPORTANT: Only attach parameterModifiers if consistent across all overloads.
48
+ // Overloads can differ in ref/out/in, and those must be selected at call time.
49
+ parameterModifiers: modsConsistent &&
50
+ first.parameterModifiers &&
51
+ first.parameterModifiers.length > 0
52
+ ? first.parameterModifiers
53
+ : undefined,
54
+ isExtensionMethod: first.isExtensionMethod,
55
+ };
56
+ };
57
+ // Case 1: object is identifier → check if it's a namespace, then check if property is a type
58
+ if (object.kind === "identifier") {
59
+ const namespace = registry.getNamespace(object.name);
60
+ if (namespace) {
61
+ // Found namespace binding, check if property is a type within this namespace
62
+ // Note: After schema swap, we look up by alias (TS identifier)
63
+ const type = namespace.types.find((t) => t.alias === propertyName);
64
+ if (type) {
65
+ // This member access is namespace.type - we don't emit a member binding here
66
+ // because we're just accessing a type, not calling a member
67
+ return undefined;
68
+ }
69
+ }
70
+ // Case 1b: object is a direct type import (like `Console` imported directly)
71
+ // Check if the identifier is a type alias, and if so, look up the member
72
+ // First try by local name, then by original name (handles aliased imports like `import { String as ClrString }`)
73
+ const directType = registry.getType(object.name) ??
74
+ (object.originalName ? registry.getType(object.originalName) : undefined);
75
+ if (directType) {
76
+ const overloads = registry.getMemberOverloads(directType.alias, propertyName);
77
+ if (!overloads || overloads.length === 0)
78
+ return undefined;
79
+ return toIrMemberBinding(overloads);
80
+ }
81
+ }
82
+ // Case 2: object is member expression with a type reference → check if property is a member
83
+ if (object.kind === "memberAccess" && !object.isComputed) {
84
+ // Walk up the chain to find if this is a type reference
85
+ // For systemLinq.enumerable, the object is "systemLinq" and property is "enumerable"
86
+ if (object.object.kind === "identifier") {
87
+ const namespace = registry.getNamespace(object.object.name);
88
+ if (namespace && typeof object.property === "string") {
89
+ const type = namespace.types.find((t) => t.alias === object.property);
90
+ if (type) {
91
+ // The object is a type reference (namespace.type), now check if property is a member
92
+ const overloads = registry.getMemberOverloads(type.alias, propertyName);
93
+ if (!overloads || overloads.length === 0)
94
+ return undefined;
95
+ return toIrMemberBinding(overloads);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ // Case 3: Instance member access (e.g., numbers.add where numbers is List<T>)
101
+ // Use the object's inferred type to look up the member binding
102
+ const objectTypeName = extractTypeName(object.inferredType);
103
+ if (objectTypeName) {
104
+ // Look up member by type alias and property name
105
+ const overloads = registry.getMemberOverloads(objectTypeName, propertyName);
106
+ if (!overloads || overloads.length === 0)
107
+ return undefined;
108
+ return toIrMemberBinding(overloads);
109
+ }
110
+ return undefined;
111
+ };
112
+ const findNearestBindingsJson = (filePath) => {
113
+ let currentDir = dirname(filePath);
114
+ while (true) {
115
+ const candidate = join(currentDir, "bindings.json");
116
+ if (existsSync(candidate))
117
+ return candidate;
118
+ const parentDir = dirname(currentDir);
119
+ if (parentDir === currentDir)
120
+ return undefined;
121
+ currentDir = parentDir;
122
+ }
123
+ };
124
+ const disambiguateOverloadsByDeclaringType = (overloads, memberId, declaringTypeTsName, ctx) => {
125
+ const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
126
+ if (!declSourceFilePath)
127
+ return undefined;
128
+ const bindingsPath = findNearestBindingsJson(declSourceFilePath);
129
+ if (!bindingsPath)
130
+ return undefined;
131
+ const raw = (() => {
132
+ try {
133
+ return JSON.parse(readFileSync(bindingsPath, "utf8"));
134
+ }
135
+ catch {
136
+ return undefined;
137
+ }
138
+ })();
139
+ if (!raw || typeof raw !== "object")
140
+ return undefined;
141
+ const types = raw.types;
142
+ if (!Array.isArray(types))
143
+ return undefined;
144
+ const typeEntry = types.find((t) => {
145
+ if (!t || typeof t !== "object")
146
+ return false;
147
+ const clrName = t.clrName;
148
+ if (typeof clrName !== "string")
149
+ return false;
150
+ return tsbindgenClrTypeNameToTsTypeName(clrName) === declaringTypeTsName;
151
+ });
152
+ const expectedClrType = typeEntry && typeof typeEntry.clrName === "string"
153
+ ? typeEntry.clrName
154
+ : undefined;
155
+ if (!expectedClrType)
156
+ return undefined;
157
+ const filtered = overloads.filter((m) => m.binding.type === expectedClrType);
158
+ return filtered.length > 0 ? filtered : undefined;
159
+ };
160
+ /**
161
+ * Resolve hierarchical binding for a member access using Binding-resolved MemberId.
162
+ *
163
+ * This is a fallback for cases where the receiver's inferredType is unavailable
164
+ * (e.g., local variable typing inferred from a complex initializer), but TS can
165
+ * still resolve the member symbol deterministically.
166
+ *
167
+ * Critical use case: CLR property casing (e.g., `.expression` → `.Expression`).
168
+ */
169
+ export const resolveHierarchicalBindingFromMemberId = (node, propertyName, ctx) => {
170
+ const memberId = ctx.binding.resolvePropertyAccess(node);
171
+ if (!memberId)
172
+ return undefined;
173
+ const declaringTypeName = ctx.binding.getDeclaringTypeNameOfMember(memberId);
174
+ if (!declaringTypeName)
175
+ return undefined;
176
+ const normalizeDeclaringType = (name) => {
177
+ if (name.endsWith("$instance"))
178
+ return name.slice(0, -"$instance".length);
179
+ if (name.startsWith("__") && name.endsWith("$views")) {
180
+ return name.slice("__".length, -"$views".length);
181
+ }
182
+ return name;
183
+ };
184
+ const typeAlias = normalizeDeclaringType(declaringTypeName);
185
+ let overloadsAll = ctx.bindings.getMemberOverloads(typeAlias, propertyName);
186
+ if (!overloadsAll || overloadsAll.length === 0) {
187
+ const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
188
+ const bindingsPath = declSourceFilePath !== undefined
189
+ ? findNearestBindingsJson(declSourceFilePath)
190
+ : undefined;
191
+ // Airplane-grade: If we can locate the bindings.json that corresponds to the
192
+ // tsbindgen declaration, load it on-demand and retry. This avoids relying on
193
+ // "import closure" heuristics and ensures CLR binding lookup is based on the
194
+ // declaration's actual owning bindings.json.
195
+ if (bindingsPath) {
196
+ loadBindingsFromPath(ctx.bindings, bindingsPath);
197
+ overloadsAll = ctx.bindings.getMemberOverloads(typeAlias, propertyName);
198
+ }
199
+ // Airplane-grade rule: If this member resolves to a tsbindgen declaration,
200
+ // we MUST have a CLR binding; we must never guess member names via naming policy.
201
+ //
202
+ // We treat it as CLR-bound if:
203
+ // - The declaring type is a tsbindgen extension interface (`__Ext_*`), OR
204
+ // - We can locate a bindings.json near the declaration source file.
205
+ const isClrBound = declaringTypeName.startsWith("__Ext_") || bindingsPath !== undefined;
206
+ if (isClrBound && (!overloadsAll || overloadsAll.length === 0)) {
207
+ ctx.diagnostics.push(createDiagnostic("TSN4004", "error", `Missing CLR binding for '${typeAlias}.${propertyName}'.`, getSourceSpan(node), bindingsPath
208
+ ? `No matching member binding was found in the loaded bindings for this tsbindgen declaration. (bindings.json: ${bindingsPath})`
209
+ : "No matching member binding was found for this tsbindgen extension interface member."));
210
+ }
211
+ return undefined;
212
+ }
213
+ let overloads = overloadsAll;
214
+ const targetKeys = new Set(overloads.map((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`));
215
+ if (targetKeys.size > 1) {
216
+ const disambiguated = disambiguateOverloadsByDeclaringType(overloads, memberId, typeAlias, ctx);
217
+ if (disambiguated) {
218
+ overloads = disambiguated;
219
+ }
220
+ }
221
+ const first = overloads[0];
222
+ if (!first)
223
+ return undefined;
224
+ const targetKey = `${first.binding.assembly}:${first.binding.type}::${first.binding.member}`;
225
+ if (overloads.some((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}` !==
226
+ targetKey)) {
227
+ const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
228
+ const bindingsPath = declSourceFilePath !== undefined
229
+ ? findNearestBindingsJson(declSourceFilePath)
230
+ : undefined;
231
+ // Only treat this as a CLR ambiguity when we can locate a bindings.json near the
232
+ // TS declaration source (tsbindgen packages). Otherwise, fall back to "no binding"
233
+ // and let local codepaths handle naming policy.
234
+ if (bindingsPath) {
235
+ const targets = [
236
+ ...new Set(overloads.map((m) => `${m.binding.type}.${m.binding.member}`)),
237
+ ]
238
+ .sort()
239
+ .join(", ");
240
+ ctx.diagnostics.push(createDiagnostic("TSN4003", "error", `Ambiguous CLR binding for '${typeAlias}.${propertyName}'. Multiple CLR targets found: ${targets}.`, getSourceSpan(node), `This usually indicates multiple tsbindgen packages export the same TS type/member alias. Ensure the correct package is imported, or regenerate bindings to avoid collisions. (bindings.json: ${bindingsPath})`));
241
+ }
242
+ return undefined;
243
+ }
244
+ const getModifiersKey = (m) => {
245
+ const mods = m.parameterModifiers ?? [];
246
+ if (mods.length === 0)
247
+ return "";
248
+ return [...mods]
249
+ .slice()
250
+ .sort((a, b) => a.index - b.index)
251
+ .map((mod) => `${mod.index}:${mod.modifier}`)
252
+ .join(",");
253
+ };
254
+ const modsKey = getModifiersKey(first);
255
+ const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
256
+ return {
257
+ assembly: first.binding.assembly,
258
+ type: first.binding.type,
259
+ member: first.binding.member,
260
+ parameterModifiers: modsConsistent &&
261
+ first.parameterModifiers &&
262
+ first.parameterModifiers.length > 0
263
+ ? first.parameterModifiers
264
+ : undefined,
265
+ isExtensionMethod: first.isExtensionMethod,
266
+ };
267
+ };
268
+ /**
269
+ * Resolve instance-style extension method bindings from tsbindgen's `ExtensionMethods` typing.
270
+ *
271
+ * tsbindgen emits extension methods as interface members on `__Ext_*` types, and users
272
+ * opt in via `ExtensionMethods<TShape>`. At runtime those members do not exist, so we
273
+ * must attach the underlying CLR binding so the emitter can lower the call to an
274
+ * explicit static invocation.
275
+ */
276
+ export const resolveExtensionMethodsBinding = (node, propertyName, ctx) => {
277
+ const memberId = ctx.binding.resolvePropertyAccess(node);
278
+ if (!memberId)
279
+ return undefined;
280
+ const declaringTypeName = ctx.binding.getDeclaringTypeNameOfMember(memberId);
281
+ if (!declaringTypeName)
282
+ return undefined;
283
+ const callArgumentCount = (() => {
284
+ const parent = node.parent;
285
+ if (ts.isCallExpression(parent) && parent.expression === node) {
286
+ return parent.arguments.length;
287
+ }
288
+ return undefined;
289
+ })();
290
+ // Debug/diagnostic context for airplane-grade failures.
291
+ // These are populated during resolution and surfaced only if resolution fails.
292
+ let sigDeclaringTypeNameForError;
293
+ let namespaceKeyForError;
294
+ let receiverTypeNameForError;
295
+ const resolved = (() => {
296
+ const parent = node.parent;
297
+ if (!ts.isCallExpression(parent) || parent.expression !== node)
298
+ return undefined;
299
+ const sigId = ctx.binding.resolveCallSignature(parent);
300
+ if (!sigId)
301
+ return undefined;
302
+ // IMPORTANT (airplane-grade): the same TS member name can exist in multiple extension
303
+ // namespaces (e.g., BCL async LINQ and EF Core both define ToArrayAsync). When the
304
+ // receiver expression is not an identifier, `resolvePropertyAccess` can key the member
305
+ // entry off the member symbol itself, which merges declarations. Always anchor to the
306
+ // resolved signature's declaring type to choose the correct CLR extension binding.
307
+ const sigDeclaringTypeName = ctx.binding.getDeclaringTypeNameOfSignature(sigId);
308
+ sigDeclaringTypeNameForError = sigDeclaringTypeName;
309
+ if (!sigDeclaringTypeName)
310
+ return undefined;
311
+ // Extension method bucket format: methods emitted on `__Ext_*` interfaces.
312
+ if (sigDeclaringTypeName.startsWith("__Ext_")) {
313
+ return ctx.bindings.resolveExtensionMethod(sigDeclaringTypeName, propertyName, callArgumentCount);
314
+ }
315
+ // New format: extension methods emitted on method-table interfaces:
316
+ // interface __TsonicExtMethods_System_Linq { Where(this: IQueryable_1<T>, ...): ... }
317
+ if (sigDeclaringTypeName.startsWith("__TsonicExtMethods_")) {
318
+ const namespaceKey = sigDeclaringTypeName.slice("__TsonicExtMethods_".length);
319
+ namespaceKeyForError = namespaceKey;
320
+ if (!namespaceKey)
321
+ return undefined;
322
+ const thisTypeNode = ctx.binding.getThisTypeNodeOfSignature(sigId);
323
+ if (!thisTypeNode)
324
+ return undefined;
325
+ const extractReceiverTypeName = (typeNode) => {
326
+ let current = typeNode;
327
+ while (ts.isParenthesizedTypeNode(current))
328
+ current = current.type;
329
+ if (ts.isTypeReferenceNode(current)) {
330
+ const tn = current.typeName;
331
+ if (ts.isIdentifier(tn))
332
+ return tn.text;
333
+ if (ts.isQualifiedName(tn))
334
+ return tn.right.text;
335
+ }
336
+ return undefined;
337
+ };
338
+ const receiverTypeName = extractReceiverTypeName(thisTypeNode);
339
+ receiverTypeNameForError = receiverTypeName;
340
+ if (!receiverTypeName)
341
+ return undefined;
342
+ return ctx.bindings.resolveExtensionMethodByKey(namespaceKey, receiverTypeName, propertyName, callArgumentCount);
343
+ }
344
+ return undefined;
345
+ })();
346
+ if (!resolved) {
347
+ // Airplane-grade: if the TS surface indicates this member comes from an extension-method
348
+ // module, failing to attach a CLR binding would emit an instance call that cannot exist
349
+ // at runtime. Treat as a hard error rather than miscompiling.
350
+ if (declaringTypeName.startsWith("__Ext_") ||
351
+ declaringTypeName.startsWith("__TsonicExtMethods_")) {
352
+ const detail = [
353
+ sigDeclaringTypeNameForError
354
+ ? `Resolved signature declares: '${sigDeclaringTypeNameForError}'.`
355
+ : "Resolved signature declaring type: <unknown>.",
356
+ namespaceKeyForError
357
+ ? `Namespace key: '${namespaceKeyForError}'.`
358
+ : "Namespace key: <unknown>.",
359
+ receiverTypeNameForError
360
+ ? `Receiver type: '${receiverTypeNameForError}'.`
361
+ : "Receiver type: <unknown>.",
362
+ ].join(" ");
363
+ ctx.diagnostics.push(createDiagnostic("TSN4004", "error", `Failed to resolve CLR extension-method binding for '${propertyName}' on '${declaringTypeName}'. ${detail}`, getSourceSpan(node), "This indicates a mismatch between the generated .d.ts surface and bindings.json extension metadata. Regenerate bindings and ensure the correct packages are installed."));
364
+ }
365
+ return undefined;
366
+ }
367
+ // tsbindgen parameterModifiers indices include the extension receiver at index 0.
368
+ // For instance-style calls, our call-site arguments exclude the receiver, so shift by -1.
369
+ const shiftedModifiers = resolved.parameterModifiers
370
+ ? resolved.parameterModifiers
371
+ .map((m) => ({ index: m.index - 1, modifier: m.modifier }))
372
+ .filter((m) => m.index >= 0)
373
+ : undefined;
374
+ return {
375
+ assembly: resolved.binding.assembly,
376
+ type: resolved.binding.type,
377
+ member: resolved.binding.member,
378
+ parameterModifiers: shiftedModifiers && shiftedModifiers.length > 0
379
+ ? shiftedModifiers
380
+ : undefined,
381
+ isExtensionMethod: resolved.isExtensionMethod,
382
+ };
383
+ };
384
+ //# sourceMappingURL=binding-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-resolution.js","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/binding-resolution.ts"],"names":[],"mappings":"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"}