@tsonic/frontend 0.0.14 → 0.0.16

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 (507) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/graph/builder.js +2 -2
  3. package/dist/graph/builder.js.map +1 -1
  4. package/dist/graph/extraction/imports.js +1 -1
  5. package/dist/graph/extraction/imports.js.map +1 -1
  6. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  7. package/dist/graph/extraction/orchestrator.js +3 -2
  8. package/dist/graph/extraction/orchestrator.js.map +1 -1
  9. package/dist/ir/binding/index.d.ts +155 -0
  10. package/dist/ir/binding/index.d.ts.map +1 -0
  11. package/dist/ir/binding/index.js +1035 -0
  12. package/dist/ir/binding/index.js.map +1 -0
  13. package/dist/ir/binding-resolution.test.js +193 -52
  14. package/dist/ir/binding-resolution.test.js.map +1 -1
  15. package/dist/ir/bindings-disambiguation.test.d.ts +11 -0
  16. package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -0
  17. package/dist/ir/bindings-disambiguation.test.js +416 -0
  18. package/dist/ir/bindings-disambiguation.test.js.map +1 -0
  19. package/dist/ir/builder/exports.d.ts +20 -2
  20. package/dist/ir/builder/exports.d.ts.map +1 -1
  21. package/dist/ir/builder/exports.js +65 -6
  22. package/dist/ir/builder/exports.js.map +1 -1
  23. package/dist/ir/builder/imports.d.ts +9 -5
  24. package/dist/ir/builder/imports.d.ts.map +1 -1
  25. package/dist/ir/builder/imports.js +20 -31
  26. package/dist/ir/builder/imports.js.map +1 -1
  27. package/dist/ir/builder/orchestrator.d.ts +10 -1
  28. package/dist/ir/builder/orchestrator.d.ts.map +1 -1
  29. package/dist/ir/builder/orchestrator.js +32 -15
  30. package/dist/ir/builder/orchestrator.js.map +1 -1
  31. package/dist/ir/builder/statements.d.ts +7 -1
  32. package/dist/ir/builder/statements.d.ts.map +1 -1
  33. package/dist/ir/builder/statements.js +7 -2
  34. package/dist/ir/builder/statements.js.map +1 -1
  35. package/dist/ir/builder/types.d.ts +2 -0
  36. package/dist/ir/builder/types.d.ts.map +1 -1
  37. package/dist/ir/builder/validation.d.ts +4 -1
  38. package/dist/ir/builder/validation.d.ts.map +1 -1
  39. package/dist/ir/builder/validation.js +37 -37
  40. package/dist/ir/builder/validation.js.map +1 -1
  41. package/dist/ir/builder.test.js +55 -112
  42. package/dist/ir/builder.test.js.map +1 -1
  43. package/dist/ir/converters/anonymous-synthesis.d.ts +30 -8
  44. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  45. package/dist/ir/converters/anonymous-synthesis.js +46 -55
  46. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  47. package/dist/ir/converters/context.d.ts +40 -0
  48. package/dist/ir/converters/context.d.ts.map +1 -0
  49. package/dist/ir/converters/context.js +25 -0
  50. package/dist/ir/converters/context.js.map +1 -0
  51. package/dist/ir/converters/expressions/access.d.ts +6 -1
  52. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  53. package/dist/ir/converters/expressions/access.js +389 -43
  54. package/dist/ir/converters/expressions/access.js.map +1 -1
  55. package/dist/ir/converters/expressions/calls.d.ts +24 -3
  56. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  57. package/dist/ir/converters/expressions/calls.js +674 -397
  58. package/dist/ir/converters/expressions/calls.js.map +1 -1
  59. package/dist/ir/converters/expressions/collections.d.ts +16 -3
  60. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  61. package/dist/ir/converters/expressions/collections.js +300 -46
  62. package/dist/ir/converters/expressions/collections.js.map +1 -1
  63. package/dist/ir/converters/expressions/functions.d.ts +10 -3
  64. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  65. package/dist/ir/converters/expressions/functions.js +158 -32
  66. package/dist/ir/converters/expressions/functions.js.map +1 -1
  67. package/dist/ir/converters/expressions/helpers.d.ts +22 -23
  68. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  69. package/dist/ir/converters/expressions/helpers.js +242 -239
  70. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  71. package/dist/ir/converters/expressions/index.d.ts +1 -1
  72. package/dist/ir/converters/expressions/index.d.ts.map +1 -1
  73. package/dist/ir/converters/expressions/index.js +1 -1
  74. package/dist/ir/converters/expressions/index.js.map +1 -1
  75. package/dist/ir/converters/expressions/literals.d.ts +12 -12
  76. package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
  77. package/dist/ir/converters/expressions/literals.js +62 -17
  78. package/dist/ir/converters/expressions/literals.js.map +1 -1
  79. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +5 -2
  80. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
  81. package/dist/ir/converters/expressions/numeric-recovery.test.js +62 -49
  82. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
  83. package/dist/ir/converters/expressions/operators.d.ts +13 -4
  84. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  85. package/dist/ir/converters/expressions/operators.js +183 -33
  86. package/dist/ir/converters/expressions/operators.js.map +1 -1
  87. package/dist/ir/converters/expressions/other.d.ts +11 -3
  88. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  89. package/dist/ir/converters/expressions/other.js +26 -10
  90. package/dist/ir/converters/expressions/other.js.map +1 -1
  91. package/dist/ir/converters/flow-narrowing.d.ts +27 -0
  92. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -0
  93. package/dist/ir/converters/flow-narrowing.js +73 -0
  94. package/dist/ir/converters/flow-narrowing.js.map +1 -0
  95. package/dist/ir/converters/statements/control/blocks.d.ts +8 -2
  96. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
  97. package/dist/ir/converters/statements/control/blocks.js +7 -2
  98. package/dist/ir/converters/statements/control/blocks.js.map +1 -1
  99. package/dist/ir/converters/statements/control/conditionals.d.ts +14 -4
  100. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  101. package/dist/ir/converters/statements/control/conditionals.js +36 -10
  102. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  103. package/dist/ir/converters/statements/control/exceptions.d.ts +10 -3
  104. package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -1
  105. package/dist/ir/converters/statements/control/exceptions.js +13 -7
  106. package/dist/ir/converters/statements/control/exceptions.js.map +1 -1
  107. package/dist/ir/converters/statements/control/loops.d.ts +16 -5
  108. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  109. package/dist/ir/converters/statements/control/loops.js +25 -15
  110. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  111. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +3 -2
  112. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
  113. package/dist/ir/converters/statements/declarations/classes/constructors.js +11 -7
  114. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
  115. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -1
  116. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
  117. package/dist/ir/converters/statements/declarations/classes/methods.js +63 -11
  118. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  119. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +2 -1
  120. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
  121. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +60 -40
  122. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
  123. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +6 -2
  124. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
  125. package/dist/ir/converters/statements/declarations/classes/override-detection.js +49 -50
  126. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
  127. package/dist/ir/converters/statements/declarations/classes/properties.d.ts +9 -1
  128. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
  129. package/dist/ir/converters/statements/declarations/classes/properties.js +119 -16
  130. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
  131. package/dist/ir/converters/statements/declarations/enums.d.ts +2 -1
  132. package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -1
  133. package/dist/ir/converters/statements/declarations/enums.js +8 -2
  134. package/dist/ir/converters/statements/declarations/enums.js.map +1 -1
  135. package/dist/ir/converters/statements/declarations/functions.d.ts +2 -1
  136. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
  137. package/dist/ir/converters/statements/declarations/functions.js +11 -6
  138. package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
  139. package/dist/ir/converters/statements/declarations/index.d.ts +3 -1
  140. package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -1
  141. package/dist/ir/converters/statements/declarations/index.js +3 -1
  142. package/dist/ir/converters/statements/declarations/index.js.map +1 -1
  143. package/dist/ir/converters/statements/declarations/interfaces.d.ts +3 -2
  144. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  145. package/dist/ir/converters/statements/declarations/interfaces.js +26 -20
  146. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  147. package/dist/ir/converters/statements/declarations/registry.d.ts +72 -0
  148. package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -1
  149. package/dist/ir/converters/statements/declarations/registry.js +92 -0
  150. package/dist/ir/converters/statements/declarations/registry.js.map +1 -1
  151. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +2 -1
  152. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  153. package/dist/ir/converters/statements/declarations/type-aliases.js +6 -4
  154. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  155. package/dist/ir/converters/statements/declarations/variables.d.ts +11 -1
  156. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  157. package/dist/ir/converters/statements/declarations/variables.js +123 -19
  158. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  159. package/dist/ir/converters/statements/declarations.d.ts +4 -1
  160. package/dist/ir/converters/statements/declarations.d.ts.map +1 -1
  161. package/dist/ir/converters/statements/declarations.js +4 -1
  162. package/dist/ir/converters/statements/declarations.js.map +1 -1
  163. package/dist/ir/converters/statements/helpers.d.ts +4 -3
  164. package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
  165. package/dist/ir/converters/statements/helpers.js +55 -31
  166. package/dist/ir/converters/statements/helpers.js.map +1 -1
  167. package/dist/ir/converters/statements/index.d.ts +1 -1
  168. package/dist/ir/converters/statements/index.d.ts.map +1 -1
  169. package/dist/ir/converters/statements/index.js +2 -1
  170. package/dist/ir/converters/statements/index.js.map +1 -1
  171. package/dist/ir/expression-converter.d.ts +10 -3
  172. package/dist/ir/expression-converter.d.ts.map +1 -1
  173. package/dist/ir/expression-converter.js +139 -57
  174. package/dist/ir/expression-converter.js.map +1 -1
  175. package/dist/ir/hierarchical-bindings-e2e.test.js +10 -6
  176. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
  177. package/dist/ir/index.d.ts +5 -0
  178. package/dist/ir/index.d.ts.map +1 -1
  179. package/dist/ir/index.js +5 -0
  180. package/dist/ir/index.js.map +1 -1
  181. package/dist/ir/no-ts-type-inference.test.d.ts +17 -0
  182. package/dist/ir/no-ts-type-inference.test.d.ts.map +1 -0
  183. package/dist/ir/no-ts-type-inference.test.js +171 -0
  184. package/dist/ir/no-ts-type-inference.test.js.map +1 -0
  185. package/dist/ir/program-context.d.ts +87 -0
  186. package/dist/ir/program-context.d.ts.map +1 -0
  187. package/dist/ir/program-context.js +289 -0
  188. package/dist/ir/program-context.js.map +1 -0
  189. package/dist/ir/statement-converter.d.ts +14 -4
  190. package/dist/ir/statement-converter.d.ts.map +1 -1
  191. package/dist/ir/statement-converter.js +31 -21
  192. package/dist/ir/statement-converter.js.map +1 -1
  193. package/dist/ir/syntax/binding-patterns.d.ts +22 -0
  194. package/dist/ir/syntax/binding-patterns.d.ts.map +1 -0
  195. package/dist/ir/{type-converter/patterns.js → syntax/binding-patterns.js} +34 -8
  196. package/dist/ir/syntax/binding-patterns.js.map +1 -0
  197. package/dist/ir/thisarg-inference.test.d.ts +8 -0
  198. package/dist/ir/thisarg-inference.test.d.ts.map +1 -0
  199. package/dist/ir/thisarg-inference.test.js +94 -0
  200. package/dist/ir/thisarg-inference.test.js.map +1 -0
  201. package/dist/ir/type-system/index.d.ts +21 -0
  202. package/dist/ir/type-system/index.d.ts.map +1 -0
  203. package/dist/ir/type-system/index.js +43 -0
  204. package/dist/ir/type-system/index.js.map +1 -0
  205. package/dist/ir/type-system/internal/handle-types.d.ts +105 -0
  206. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -0
  207. package/dist/ir/type-system/internal/handle-types.js +13 -0
  208. package/dist/ir/type-system/internal/handle-types.js.map +1 -0
  209. package/dist/ir/type-system/internal/nominal-env.d.ts +66 -0
  210. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -0
  211. package/dist/ir/type-system/internal/nominal-env.js +301 -0
  212. package/dist/ir/type-system/internal/nominal-env.js.map +1 -0
  213. package/dist/ir/type-system/internal/type-converter/arrays.d.ts +11 -0
  214. package/dist/ir/type-system/internal/type-converter/arrays.d.ts.map +1 -0
  215. package/dist/ir/{type-converter → type-system/internal/type-converter}/arrays.js +2 -2
  216. package/dist/ir/type-system/internal/type-converter/arrays.js.map +1 -0
  217. package/dist/ir/type-system/internal/type-converter/converter.d.ts +17 -0
  218. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -0
  219. package/dist/ir/type-system/internal/type-converter/converter.js +16 -0
  220. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -0
  221. package/dist/ir/type-system/internal/type-converter/functions.d.ts +14 -0
  222. package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -0
  223. package/dist/ir/type-system/internal/type-converter/functions.js +66 -0
  224. package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -0
  225. package/dist/ir/type-system/internal/type-converter/index.d.ts +11 -0
  226. package/dist/ir/type-system/internal/type-converter/index.d.ts.map +1 -0
  227. package/dist/ir/type-system/internal/type-converter/index.js +11 -0
  228. package/dist/ir/type-system/internal/type-converter/index.js.map +1 -0
  229. package/dist/ir/type-system/internal/type-converter/inference.d.ts +37 -0
  230. package/dist/ir/type-system/internal/type-converter/inference.d.ts.map +1 -0
  231. package/dist/ir/type-system/internal/type-converter/inference.js +32 -0
  232. package/dist/ir/type-system/internal/type-converter/inference.js.map +1 -0
  233. package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.d.ts +1 -1
  234. package/dist/ir/type-system/internal/type-converter/literals.d.ts.map +1 -0
  235. package/dist/ir/type-system/internal/type-converter/literals.js.map +1 -0
  236. package/dist/ir/type-system/internal/type-converter/objects.d.ts +20 -0
  237. package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -0
  238. package/dist/ir/{type-converter → type-system/internal/type-converter}/objects.js +56 -6
  239. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -0
  240. package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.d.ts +3 -2
  241. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -0
  242. package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.js +63 -21
  243. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -0
  244. package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.d.ts +4 -4
  245. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
  246. package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +2 -2
  247. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -0
  248. package/dist/ir/{type-converter → type-system/internal/type-converter}/references.d.ts +3 -2
  249. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -0
  250. package/dist/ir/type-system/internal/type-converter/references.js +545 -0
  251. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -0
  252. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts +15 -0
  253. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -0
  254. package/dist/ir/type-system/internal/type-converter/unions-intersections.js +22 -0
  255. package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -0
  256. package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.d.ts +23 -36
  257. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -0
  258. package/dist/ir/type-system/internal/type-converter/utility-types.js +879 -0
  259. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -0
  260. package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -0
  261. package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.js +398 -120
  262. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -0
  263. package/dist/ir/type-system/internal/type-converter.d.ts +9 -0
  264. package/dist/ir/type-system/internal/type-converter.d.ts.map +1 -0
  265. package/dist/ir/type-system/internal/type-converter.js +9 -0
  266. package/dist/ir/type-system/internal/type-converter.js.map +1 -0
  267. package/dist/ir/type-system/internal/type-registry.d.ts +112 -0
  268. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
  269. package/dist/ir/type-system/internal/type-registry.js +535 -0
  270. package/dist/ir/type-system/internal/type-registry.js.map +1 -0
  271. package/dist/ir/type-system/internal/universe/alias-table.d.ts +92 -0
  272. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -0
  273. package/dist/ir/type-system/internal/universe/alias-table.js +222 -0
  274. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -0
  275. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +44 -0
  276. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -0
  277. package/dist/ir/type-system/internal/universe/clr-catalog.js +1192 -0
  278. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -0
  279. package/dist/ir/type-system/internal/universe/index.d.ts +26 -0
  280. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -0
  281. package/dist/ir/type-system/internal/universe/index.js +30 -0
  282. package/dist/ir/type-system/internal/universe/index.js.map +1 -0
  283. package/dist/ir/type-system/internal/universe/resolution.d.ts +115 -0
  284. package/dist/ir/type-system/internal/universe/resolution.d.ts.map +1 -0
  285. package/dist/ir/type-system/internal/universe/resolution.js +181 -0
  286. package/dist/ir/type-system/internal/universe/resolution.js.map +1 -0
  287. package/dist/ir/type-system/internal/universe/source-catalog.d.ts +64 -0
  288. package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -0
  289. package/dist/ir/type-system/internal/universe/source-catalog.js +96 -0
  290. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -0
  291. package/dist/ir/type-system/internal/universe/types.d.ts +436 -0
  292. package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -0
  293. package/dist/ir/type-system/internal/universe/types.js +69 -0
  294. package/dist/ir/type-system/internal/universe/types.js.map +1 -0
  295. package/dist/ir/type-system/internal/universe/unified-universe.d.ts +70 -0
  296. package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -0
  297. package/dist/ir/type-system/internal/universe/unified-universe.js +319 -0
  298. package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -0
  299. package/dist/ir/type-system/type-system.d.ts +617 -0
  300. package/dist/ir/type-system/type-system.d.ts.map +1 -0
  301. package/dist/ir/type-system/type-system.js +2579 -0
  302. package/dist/ir/type-system/type-system.js.map +1 -0
  303. package/dist/ir/type-system/types.d.ts +176 -0
  304. package/dist/ir/type-system/types.d.ts.map +1 -0
  305. package/dist/ir/type-system/types.js +80 -0
  306. package/dist/ir/type-system/types.js.map +1 -0
  307. package/dist/ir/types/expressions.d.ts +35 -7
  308. package/dist/ir/types/expressions.d.ts.map +1 -1
  309. package/dist/ir/types/helpers.d.ts +22 -2
  310. package/dist/ir/types/helpers.d.ts.map +1 -1
  311. package/dist/ir/types/index.d.ts +4 -2
  312. package/dist/ir/types/index.d.ts.map +1 -1
  313. package/dist/ir/types/index.js +1 -0
  314. package/dist/ir/types/index.js.map +1 -1
  315. package/dist/ir/types/ir-substitution.d.ts +144 -0
  316. package/dist/ir/types/ir-substitution.d.ts.map +1 -0
  317. package/dist/ir/types/ir-substitution.js +569 -0
  318. package/dist/ir/types/ir-substitution.js.map +1 -0
  319. package/dist/ir/types/ir-types.d.ts +10 -4
  320. package/dist/ir/types/ir-types.d.ts.map +1 -1
  321. package/dist/ir/types/numeric-helpers.d.ts +2 -1
  322. package/dist/ir/types/numeric-helpers.d.ts.map +1 -1
  323. package/dist/ir/types/numeric-helpers.js +9 -3
  324. package/dist/ir/types/numeric-helpers.js.map +1 -1
  325. package/dist/ir/types/statements.d.ts +22 -1
  326. package/dist/ir/types/statements.d.ts.map +1 -1
  327. package/dist/ir/types.d.ts +1 -1
  328. package/dist/ir/types.d.ts.map +1 -1
  329. package/dist/ir/types.js.map +1 -1
  330. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  331. package/dist/ir/validation/anonymous-type-lowering-pass.js +153 -8
  332. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  333. package/dist/ir/validation/arrow-return-finalization-pass.d.ts +28 -0
  334. package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -0
  335. package/dist/ir/validation/arrow-return-finalization-pass.js +416 -0
  336. package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -0
  337. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  338. package/dist/ir/validation/attribute-collection-pass.js +40 -6
  339. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  340. package/dist/ir/validation/attribute-collection-pass.test.js +43 -36
  341. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  342. package/dist/ir/validation/char-validation-pass.d.ts +26 -0
  343. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -0
  344. package/dist/ir/validation/char-validation-pass.js +495 -0
  345. package/dist/ir/validation/char-validation-pass.js.map +1 -0
  346. package/dist/ir/validation/index.d.ts +3 -0
  347. package/dist/ir/validation/index.d.ts.map +1 -1
  348. package/dist/ir/validation/index.js +3 -0
  349. package/dist/ir/validation/index.js.map +1 -1
  350. package/dist/ir/validation/numeric-coercion-pass.d.ts +22 -16
  351. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
  352. package/dist/ir/validation/numeric-coercion-pass.js +159 -51
  353. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
  354. package/dist/ir/validation/numeric-invariants.test.js +72 -108
  355. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  356. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  357. package/dist/ir/validation/numeric-proof-pass.js +71 -23
  358. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  359. package/dist/ir/validation/rest-type-synthesis-pass.d.ts +24 -0
  360. package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -0
  361. package/dist/ir/validation/rest-type-synthesis-pass.js +417 -0
  362. package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -0
  363. package/dist/ir/validation/soundness-gate.d.ts +11 -1
  364. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  365. package/dist/ir/validation/soundness-gate.js +42 -10
  366. package/dist/ir/validation/soundness-gate.js.map +1 -1
  367. package/dist/ir/validation/soundness-gate.test.js +19 -2
  368. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  369. package/dist/ir/validation/virtual-marking-pass.d.ts +16 -0
  370. package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -0
  371. package/dist/ir/validation/virtual-marking-pass.js +77 -0
  372. package/dist/ir/validation/virtual-marking-pass.js.map +1 -0
  373. package/dist/ir/validation/yield-lowering-pass.test.js +2 -2
  374. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  375. package/dist/program/bindings.d.ts +44 -0
  376. package/dist/program/bindings.d.ts.map +1 -1
  377. package/dist/program/bindings.js +248 -2
  378. package/dist/program/bindings.js.map +1 -1
  379. package/dist/program/bindings.test.js +30 -0
  380. package/dist/program/bindings.test.js.map +1 -1
  381. package/dist/program/creation.d.ts.map +1 -1
  382. package/dist/program/creation.js +158 -4
  383. package/dist/program/creation.js.map +1 -1
  384. package/dist/program/dependency-graph.d.ts.map +1 -1
  385. package/dist/program/dependency-graph.js +33 -26
  386. package/dist/program/dependency-graph.js.map +1 -1
  387. package/dist/program/index.d.ts +1 -1
  388. package/dist/program/index.d.ts.map +1 -1
  389. package/dist/program/types.d.ts +7 -8
  390. package/dist/program/types.d.ts.map +1 -1
  391. package/dist/resolver/clr-bindings-resolver.d.ts +6 -0
  392. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  393. package/dist/resolver/clr-bindings-resolver.js +185 -39
  394. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  395. package/dist/resolver/clr-bindings-resolver.test.d.ts +2 -0
  396. package/dist/resolver/clr-bindings-resolver.test.d.ts.map +1 -0
  397. package/dist/resolver/clr-bindings-resolver.test.js +161 -0
  398. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -0
  399. package/dist/resolver/import-resolution.d.ts +16 -1
  400. package/dist/resolver/import-resolution.d.ts.map +1 -1
  401. package/dist/resolver/import-resolution.js +29 -12
  402. package/dist/resolver/import-resolution.js.map +1 -1
  403. package/dist/resolver/namespace.d.ts +2 -1
  404. package/dist/resolver/namespace.d.ts.map +1 -1
  405. package/dist/resolver/namespace.js +5 -2
  406. package/dist/resolver/namespace.js.map +1 -1
  407. package/dist/resolver/namespace.test.js +6 -6
  408. package/dist/resolver/naming-policy.d.ts +20 -0
  409. package/dist/resolver/naming-policy.d.ts.map +1 -0
  410. package/dist/resolver/naming-policy.js +40 -0
  411. package/dist/resolver/naming-policy.js.map +1 -0
  412. package/dist/resolver/naming.d.ts +2 -5
  413. package/dist/resolver/naming.d.ts.map +1 -1
  414. package/dist/resolver/naming.js +3 -20
  415. package/dist/resolver/naming.js.map +1 -1
  416. package/dist/resolver.d.ts +2 -0
  417. package/dist/resolver.d.ts.map +1 -1
  418. package/dist/resolver.js +1 -0
  419. package/dist/resolver.js.map +1 -1
  420. package/dist/resolver.test.js +8 -3
  421. package/dist/resolver.test.js.map +1 -1
  422. package/dist/symbol-table/builder.d.ts +3 -1
  423. package/dist/symbol-table/builder.d.ts.map +1 -1
  424. package/dist/symbol-table/builder.js +9 -8
  425. package/dist/symbol-table/builder.js.map +1 -1
  426. package/dist/symbol-table/types.d.ts +2 -2
  427. package/dist/symbol-table/types.d.ts.map +1 -1
  428. package/dist/types/diagnostic.d.ts +12 -2
  429. package/dist/types/diagnostic.d.ts.map +1 -1
  430. package/dist/types/diagnostic.js +5 -1
  431. package/dist/types/diagnostic.js.map +1 -1
  432. package/dist/validation/core-intrinsics.d.ts +18 -0
  433. package/dist/validation/core-intrinsics.d.ts.map +1 -0
  434. package/dist/validation/core-intrinsics.js +186 -0
  435. package/dist/validation/core-intrinsics.js.map +1 -0
  436. package/dist/validation/extension-methods.d.ts +17 -0
  437. package/dist/validation/extension-methods.d.ts.map +1 -0
  438. package/dist/validation/extension-methods.js +133 -0
  439. package/dist/validation/extension-methods.js.map +1 -0
  440. package/dist/validation/generics.d.ts.map +1 -1
  441. package/dist/validation/generics.js +1 -129
  442. package/dist/validation/generics.js.map +1 -1
  443. package/dist/validation/imports.js +1 -1
  444. package/dist/validation/imports.js.map +1 -1
  445. package/dist/validation/index.d.ts +2 -0
  446. package/dist/validation/index.d.ts.map +1 -1
  447. package/dist/validation/index.js +2 -0
  448. package/dist/validation/index.js.map +1 -1
  449. package/dist/validation/orchestrator.d.ts.map +1 -1
  450. package/dist/validation/orchestrator.js +4 -0
  451. package/dist/validation/orchestrator.js.map +1 -1
  452. package/dist/validation/static-safety.d.ts +1 -0
  453. package/dist/validation/static-safety.d.ts.map +1 -1
  454. package/dist/validation/static-safety.js +366 -96
  455. package/dist/validation/static-safety.js.map +1 -1
  456. package/dist/validator.test.js +123 -1
  457. package/dist/validator.test.js.map +1 -1
  458. package/package.json +2 -2
  459. package/dist/ir/type-converter/arrays.d.ts +0 -10
  460. package/dist/ir/type-converter/arrays.d.ts.map +0 -1
  461. package/dist/ir/type-converter/arrays.js.map +0 -1
  462. package/dist/ir/type-converter/converter.d.ts +0 -6
  463. package/dist/ir/type-converter/converter.d.ts.map +0 -1
  464. package/dist/ir/type-converter/converter.js +0 -6
  465. package/dist/ir/type-converter/converter.js.map +0 -1
  466. package/dist/ir/type-converter/functions.d.ts +0 -10
  467. package/dist/ir/type-converter/functions.d.ts.map +0 -1
  468. package/dist/ir/type-converter/functions.js +0 -15
  469. package/dist/ir/type-converter/functions.js.map +0 -1
  470. package/dist/ir/type-converter/index.d.ts +0 -7
  471. package/dist/ir/type-converter/index.d.ts.map +0 -1
  472. package/dist/ir/type-converter/index.js +0 -7
  473. package/dist/ir/type-converter/index.js.map +0 -1
  474. package/dist/ir/type-converter/inference.d.ts +0 -32
  475. package/dist/ir/type-converter/inference.d.ts.map +0 -1
  476. package/dist/ir/type-converter/inference.js +0 -297
  477. package/dist/ir/type-converter/inference.js.map +0 -1
  478. package/dist/ir/type-converter/literals.d.ts.map +0 -1
  479. package/dist/ir/type-converter/literals.js.map +0 -1
  480. package/dist/ir/type-converter/objects.d.ts +0 -16
  481. package/dist/ir/type-converter/objects.d.ts.map +0 -1
  482. package/dist/ir/type-converter/objects.js.map +0 -1
  483. package/dist/ir/type-converter/orchestrator.d.ts.map +0 -1
  484. package/dist/ir/type-converter/orchestrator.js.map +0 -1
  485. package/dist/ir/type-converter/patterns.d.ts +0 -10
  486. package/dist/ir/type-converter/patterns.d.ts.map +0 -1
  487. package/dist/ir/type-converter/patterns.js.map +0 -1
  488. package/dist/ir/type-converter/primitives.d.ts.map +0 -1
  489. package/dist/ir/type-converter/primitives.js.map +0 -1
  490. package/dist/ir/type-converter/references.d.ts.map +0 -1
  491. package/dist/ir/type-converter/references.js +0 -371
  492. package/dist/ir/type-converter/references.js.map +0 -1
  493. package/dist/ir/type-converter/unions-intersections.d.ts +0 -14
  494. package/dist/ir/type-converter/unions-intersections.d.ts.map +0 -1
  495. package/dist/ir/type-converter/unions-intersections.js +0 -22
  496. package/dist/ir/type-converter/unions-intersections.js.map +0 -1
  497. package/dist/ir/type-converter/utility-types.d.ts.map +0 -1
  498. package/dist/ir/type-converter/utility-types.js +0 -528
  499. package/dist/ir/type-converter/utility-types.js.map +0 -1
  500. package/dist/ir/type-converter/utility-types.test.d.ts.map +0 -1
  501. package/dist/ir/type-converter/utility-types.test.js.map +0 -1
  502. package/dist/ir/type-converter.d.ts +0 -6
  503. package/dist/ir/type-converter.d.ts.map +0 -1
  504. package/dist/ir/type-converter.js +0 -6
  505. package/dist/ir/type-converter.js.map +0 -1
  506. /package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.js +0 -0
  507. /package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.d.ts +0 -0
@@ -0,0 +1,416 @@
1
+ /**
2
+ * Regression tests for CLR member binding disambiguation.
3
+ *
4
+ * Critical case: multiple tsbindgen namespaces can export the same TS type alias
5
+ * (e.g., `Server`), but with different CLR declaring types and member casing.
6
+ *
7
+ * Tsonic must not guess CLR member names via naming policy in these cases.
8
+ * It must use the correct tsbindgen bindings determined by the TS declaration source.
9
+ */
10
+ import { describe, it } from "mocha";
11
+ import { expect } from "chai";
12
+ import * as ts from "typescript";
13
+ import * as fs from "node:fs";
14
+ import * as os from "node:os";
15
+ import * as path from "node:path";
16
+ import { buildIr, buildIrModule } from "./builder.js";
17
+ import { createProgramContext } from "./program-context.js";
18
+ import { DotnetMetadataRegistry } from "../dotnet-metadata.js";
19
+ import { BindingRegistry } from "../program/bindings.js";
20
+ import { createClrBindingsResolver } from "../resolver/clr-bindings-resolver.js";
21
+ import { createBinding } from "./binding/index.js";
22
+ describe("CLR member binding disambiguation", () => {
23
+ it("should disambiguate collisions by nearest bindings.json (Server.listen)", () => {
24
+ const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-bindings-disambiguation-"));
25
+ const dtsDir = path.join(tmpRoot, "nodejs.Http", "internal");
26
+ fs.mkdirSync(dtsDir, { recursive: true });
27
+ const bindingsJsonPath = path.join(tmpRoot, "nodejs.Http", "bindings.json");
28
+ fs.writeFileSync(bindingsJsonPath, JSON.stringify({
29
+ namespace: "nodejs.Http",
30
+ types: [
31
+ {
32
+ tsEmitName: "Server",
33
+ clrName: "nodejs.Http.Server",
34
+ },
35
+ ],
36
+ }, null, 2), "utf8");
37
+ const dtsFileName = path.join(dtsDir, "index.d.ts");
38
+ const dtsSource = `
39
+ declare interface Server$instance {
40
+ listen(port: number, callback: () => void): void;
41
+ }
42
+ declare type Server = Server$instance;
43
+ `;
44
+ const fileName = path.join(tmpRoot, "sample.ts");
45
+ const source = `
46
+ export function test(server: Server): void {
47
+ server.listen(3000, () => {});
48
+ }
49
+ `;
50
+ const libFileName = path.join(tmpRoot, "lib.d.ts");
51
+ const libSource = `
52
+ interface Function {}
53
+ interface Object {}
54
+ interface String {}
55
+ interface Boolean {}
56
+ interface Number {}
57
+ interface IArguments {}
58
+ type PropertyKey = string | number | symbol;
59
+ `;
60
+ const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
61
+ const dtsFile = ts.createSourceFile(dtsFileName, dtsSource, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
62
+ const libFile = ts.createSourceFile(libFileName, libSource, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
63
+ const fileMap = new Map([
64
+ [fileName, sourceFile],
65
+ [dtsFileName, dtsFile],
66
+ [libFileName, libFile],
67
+ ]);
68
+ const program = ts.createProgram([fileName, dtsFileName], {
69
+ target: ts.ScriptTarget.ES2022,
70
+ module: ts.ModuleKind.ES2022,
71
+ }, {
72
+ getSourceFile: (name) => fileMap.get(name),
73
+ writeFile: () => { },
74
+ getCurrentDirectory: () => tmpRoot,
75
+ getDirectories: () => [],
76
+ fileExists: (name) => fileMap.has(name),
77
+ readFile: (name) => fileMap.get(name)?.text,
78
+ getCanonicalFileName: (f) => f,
79
+ useCaseSensitiveFileNames: () => true,
80
+ getNewLine: () => "\n",
81
+ getDefaultLibFileName: () => libFileName,
82
+ });
83
+ const checker = program.getTypeChecker();
84
+ const bindings = new BindingRegistry();
85
+ bindings.addBindings("/test/nodejs-http.json", {
86
+ namespace: "nodejs.Http",
87
+ types: [
88
+ {
89
+ clrName: "nodejs.Http.Server",
90
+ tsEmitName: "Server",
91
+ assemblyName: "nodejs",
92
+ methods: [
93
+ {
94
+ clrName: "listen",
95
+ tsEmitName: "listen",
96
+ normalizedSignature: "listen|(System.Int32,System.Action):nodejs.Http.Server|static=false",
97
+ parameterCount: 2,
98
+ declaringClrType: "nodejs.Http.Server",
99
+ declaringAssemblyName: "nodejs",
100
+ },
101
+ ],
102
+ properties: [],
103
+ fields: [],
104
+ },
105
+ ],
106
+ });
107
+ // Collision: another namespace also exports a `Server.listen`, but the CLR member
108
+ // name casing differs (Listen vs listen). Tsonic must select the correct one
109
+ // using the declaration source file's nearest bindings.json.
110
+ bindings.addBindings("/test/nodejs.json", {
111
+ namespace: "nodejs",
112
+ types: [
113
+ {
114
+ clrName: "nodejs.Server",
115
+ tsEmitName: "Server",
116
+ assemblyName: "nodejs",
117
+ methods: [
118
+ {
119
+ clrName: "Listen",
120
+ tsEmitName: "listen",
121
+ normalizedSignature: "Listen|(System.Int32,System.Action):nodejs.Server|static=false",
122
+ parameterCount: 2,
123
+ declaringClrType: "nodejs.Server",
124
+ declaringAssemblyName: "nodejs",
125
+ },
126
+ ],
127
+ properties: [],
128
+ fields: [],
129
+ },
130
+ ],
131
+ });
132
+ const testProgram = {
133
+ program,
134
+ checker,
135
+ options: {
136
+ projectRoot: tmpRoot,
137
+ sourceRoot: tmpRoot,
138
+ rootNamespace: "TestApp",
139
+ strict: true,
140
+ },
141
+ sourceFiles: [sourceFile],
142
+ declarationSourceFiles: [dtsFile],
143
+ metadata: new DotnetMetadataRegistry(),
144
+ bindings,
145
+ clrResolver: createClrBindingsResolver(tmpRoot),
146
+ binding: createBinding(checker),
147
+ };
148
+ const ctx = createProgramContext(testProgram, {
149
+ sourceRoot: tmpRoot,
150
+ rootNamespace: "TestApp",
151
+ });
152
+ const irResult = buildIrModule(sourceFile, testProgram, testProgram.options, ctx);
153
+ if (!irResult.ok) {
154
+ console.error("IR build failed:", irResult.error);
155
+ throw new Error(`IR build MUST succeed for disambiguation test, got: ${JSON.stringify(irResult.error)}`);
156
+ }
157
+ const overloads = bindings.getMemberOverloads("Server", "listen");
158
+ expect(overloads?.length).to.equal(2, "Test setup must have two Server.listen overload targets");
159
+ const funcDecl = irResult.value.body[0];
160
+ if (funcDecl?.kind !== "functionDeclaration") {
161
+ throw new Error("Expected function declaration");
162
+ }
163
+ const exprStmt = funcDecl.body.statements[0];
164
+ if (exprStmt?.kind !== "expressionStatement") {
165
+ throw new Error("Expected expression statement");
166
+ }
167
+ const callExpr = exprStmt.expression;
168
+ if (callExpr.kind !== "call") {
169
+ throw new Error("Expected call expression");
170
+ }
171
+ const callee = callExpr.callee;
172
+ if (callee.kind !== "memberAccess") {
173
+ throw new Error("Expected member access callee");
174
+ }
175
+ expect(callee.memberBinding, "Member binding must be resolved").to.not.equal(undefined);
176
+ expect(callee.memberBinding?.type).to.equal("nodejs.Http.Server");
177
+ expect(callee.memberBinding?.member).to.equal("listen");
178
+ });
179
+ it("should fail compilation when collisions cannot be disambiguated (airplane-grade)", () => {
180
+ const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-bindings-disambiguation-"));
181
+ const dtsDir = path.join(tmpRoot, "nodejs.Http", "internal");
182
+ fs.mkdirSync(dtsDir, { recursive: true });
183
+ // Intentionally incorrect bindings.json: the declaring type ("Server") is missing.
184
+ // This makes overload disambiguation impossible.
185
+ const bindingsJsonPath = path.join(tmpRoot, "nodejs.Http", "bindings.json");
186
+ fs.writeFileSync(bindingsJsonPath, JSON.stringify({
187
+ namespace: "nodejs.Http",
188
+ types: [
189
+ {
190
+ tsEmitName: "NotServer",
191
+ clrName: "nodejs.Http.NotServer",
192
+ },
193
+ ],
194
+ }, null, 2), "utf8");
195
+ const dtsFileName = path.join(dtsDir, "index.d.ts");
196
+ const dtsSource = `
197
+ declare interface Server$instance {
198
+ listen(port: number, callback: () => void): void;
199
+ }
200
+ declare type Server = Server$instance;
201
+ `;
202
+ const fileName = path.join(tmpRoot, "sample.ts");
203
+ const source = `
204
+ export function test(server: Server): void {
205
+ server.listen(3000, () => {});
206
+ }
207
+ `;
208
+ const libFileName = path.join(tmpRoot, "lib.d.ts");
209
+ const libSource = `
210
+ interface Function {}
211
+ interface Object {}
212
+ interface String {}
213
+ interface Boolean {}
214
+ interface Number {}
215
+ interface IArguments {}
216
+ type PropertyKey = string | number | symbol;
217
+ `;
218
+ const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
219
+ const dtsFile = ts.createSourceFile(dtsFileName, dtsSource, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
220
+ const libFile = ts.createSourceFile(libFileName, libSource, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
221
+ const fileMap = new Map([
222
+ [fileName, sourceFile],
223
+ [dtsFileName, dtsFile],
224
+ [libFileName, libFile],
225
+ ]);
226
+ const program = ts.createProgram([fileName, dtsFileName], {
227
+ target: ts.ScriptTarget.ES2022,
228
+ module: ts.ModuleKind.ES2022,
229
+ }, {
230
+ getSourceFile: (name) => fileMap.get(name),
231
+ writeFile: () => { },
232
+ getCurrentDirectory: () => tmpRoot,
233
+ getDirectories: () => [],
234
+ fileExists: (name) => fileMap.has(name),
235
+ readFile: (name) => fileMap.get(name)?.text,
236
+ getCanonicalFileName: (f) => f,
237
+ useCaseSensitiveFileNames: () => true,
238
+ getNewLine: () => "\n",
239
+ getDefaultLibFileName: () => libFileName,
240
+ });
241
+ const checker = program.getTypeChecker();
242
+ const bindings = new BindingRegistry();
243
+ bindings.addBindings("/test/nodejs-http.json", {
244
+ namespace: "nodejs.Http",
245
+ types: [
246
+ {
247
+ clrName: "nodejs.Http.Server",
248
+ tsEmitName: "Server",
249
+ assemblyName: "nodejs",
250
+ methods: [
251
+ {
252
+ clrName: "listen",
253
+ tsEmitName: "listen",
254
+ normalizedSignature: "listen|(System.Int32,System.Action):nodejs.Http.Server|static=false",
255
+ parameterCount: 2,
256
+ declaringClrType: "nodejs.Http.Server",
257
+ declaringAssemblyName: "nodejs",
258
+ },
259
+ ],
260
+ properties: [],
261
+ fields: [],
262
+ },
263
+ ],
264
+ });
265
+ bindings.addBindings("/test/nodejs.json", {
266
+ namespace: "nodejs",
267
+ types: [
268
+ {
269
+ clrName: "nodejs.Server",
270
+ tsEmitName: "Server",
271
+ assemblyName: "nodejs",
272
+ methods: [
273
+ {
274
+ clrName: "Listen",
275
+ tsEmitName: "listen",
276
+ normalizedSignature: "Listen|(System.Int32,System.Action):nodejs.Server|static=false",
277
+ parameterCount: 2,
278
+ declaringClrType: "nodejs.Server",
279
+ declaringAssemblyName: "nodejs",
280
+ },
281
+ ],
282
+ properties: [],
283
+ fields: [],
284
+ },
285
+ ],
286
+ });
287
+ const testProgram = {
288
+ program,
289
+ checker,
290
+ options: {
291
+ projectRoot: tmpRoot,
292
+ sourceRoot: tmpRoot,
293
+ rootNamespace: "TestApp",
294
+ strict: true,
295
+ },
296
+ sourceFiles: [sourceFile],
297
+ declarationSourceFiles: [dtsFile],
298
+ metadata: new DotnetMetadataRegistry(),
299
+ bindings,
300
+ clrResolver: createClrBindingsResolver(tmpRoot),
301
+ binding: createBinding(checker),
302
+ };
303
+ const irResult = buildIr(testProgram, {
304
+ sourceRoot: tmpRoot,
305
+ rootNamespace: "TestApp",
306
+ });
307
+ expect(irResult.ok, "IR build must fail on ambiguous CLR bindings").to.equal(false);
308
+ if (irResult.ok)
309
+ return;
310
+ const codes = irResult.error.map((d) => d.code);
311
+ expect(codes).to.include("TSN4003");
312
+ });
313
+ it("should fail compilation when a CLR-declared member has no binding (airplane-grade)", () => {
314
+ const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-bindings-disambiguation-"));
315
+ const dtsDir = path.join(tmpRoot, "nodejs.Http", "internal");
316
+ fs.mkdirSync(dtsDir, { recursive: true });
317
+ const bindingsJsonPath = path.join(tmpRoot, "nodejs.Http", "bindings.json");
318
+ fs.writeFileSync(bindingsJsonPath, JSON.stringify({
319
+ namespace: "nodejs.Http",
320
+ types: [
321
+ {
322
+ tsEmitName: "Server",
323
+ clrName: "nodejs.Http.Server",
324
+ },
325
+ ],
326
+ }, null, 2), "utf8");
327
+ const dtsFileName = path.join(dtsDir, "index.d.ts");
328
+ const dtsSource = `
329
+ declare interface Server$instance {
330
+ listen(port: number, callback: () => void): void;
331
+ }
332
+ declare type Server = Server$instance;
333
+ `;
334
+ const fileName = path.join(tmpRoot, "sample.ts");
335
+ const source = `
336
+ export function test(server: Server): void {
337
+ server.listen(3000, () => {});
338
+ }
339
+ `;
340
+ const libFileName = path.join(tmpRoot, "lib.d.ts");
341
+ const libSource = `
342
+ interface Function {}
343
+ interface Object {}
344
+ interface String {}
345
+ interface Boolean {}
346
+ interface Number {}
347
+ interface IArguments {}
348
+ type PropertyKey = string | number | symbol;
349
+ `;
350
+ const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
351
+ const dtsFile = ts.createSourceFile(dtsFileName, dtsSource, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
352
+ const libFile = ts.createSourceFile(libFileName, libSource, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
353
+ const fileMap = new Map([
354
+ [fileName, sourceFile],
355
+ [dtsFileName, dtsFile],
356
+ [libFileName, libFile],
357
+ ]);
358
+ const program = ts.createProgram([fileName, dtsFileName], {
359
+ target: ts.ScriptTarget.ES2022,
360
+ module: ts.ModuleKind.ES2022,
361
+ }, {
362
+ getSourceFile: (name) => fileMap.get(name),
363
+ writeFile: () => { },
364
+ getCurrentDirectory: () => tmpRoot,
365
+ getDirectories: () => [],
366
+ fileExists: (name) => fileMap.has(name),
367
+ readFile: (name) => fileMap.get(name)?.text,
368
+ getCanonicalFileName: (f) => f,
369
+ useCaseSensitiveFileNames: () => true,
370
+ getNewLine: () => "\n",
371
+ getDefaultLibFileName: () => libFileName,
372
+ });
373
+ const checker = program.getTypeChecker();
374
+ const bindings = new BindingRegistry();
375
+ // NOTE: Intentionally omit the `listen` member from bindings to simulate missing bindings.
376
+ bindings.addBindings("/test/nodejs-http.json", {
377
+ namespace: "nodejs.Http",
378
+ types: [
379
+ {
380
+ clrName: "nodejs.Http.Server",
381
+ tsEmitName: "Server",
382
+ assemblyName: "nodejs",
383
+ methods: [],
384
+ properties: [],
385
+ fields: [],
386
+ },
387
+ ],
388
+ });
389
+ const testProgram = {
390
+ program,
391
+ checker,
392
+ options: {
393
+ projectRoot: tmpRoot,
394
+ sourceRoot: tmpRoot,
395
+ rootNamespace: "TestApp",
396
+ strict: true,
397
+ },
398
+ sourceFiles: [sourceFile],
399
+ declarationSourceFiles: [dtsFile],
400
+ metadata: new DotnetMetadataRegistry(),
401
+ bindings,
402
+ clrResolver: createClrBindingsResolver(tmpRoot),
403
+ binding: createBinding(checker),
404
+ };
405
+ const irResult = buildIr(testProgram, {
406
+ sourceRoot: tmpRoot,
407
+ rootNamespace: "TestApp",
408
+ });
409
+ expect(irResult.ok, "IR build must fail on missing CLR bindings").to.equal(false);
410
+ if (irResult.ok)
411
+ return;
412
+ const codes = irResult.error.map((d) => d.code);
413
+ expect(codes).to.include("TSN4004");
414
+ });
415
+ });
416
+ //# sourceMappingURL=bindings-disambiguation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings-disambiguation.test.js","sourceRoot":"","sources":["../../src/ir/bindings-disambiguation.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iCAAiC,CAAC,CAC1D,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAC7D,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC5E,EAAE,CAAC,aAAa,CACd,gBAAgB,EAChB,IAAI,CAAC,SAAS,CACZ;YACE,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE;gBACL;oBACE,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,oBAAoB;iBAC9B;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF,EACD,MAAM,CACP,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG;;;;;KAKjB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG;;;;KAId,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG;;;;;;;;KAQjB,CAAC;QAEF,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,MAAM,EACN,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CACjC,WAAW,EACX,SAAS,EACT,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CACjC,WAAW,EACX,SAAS,EACT,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAwB;YAC7C,CAAC,QAAQ,EAAE,UAAU,CAAC;YACtB,CAAC,WAAW,EAAE,OAAO,CAAC;YACtB,CAAC,WAAW,EAAE,OAAO,CAAC;SACvB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAC9B,CAAC,QAAQ,EAAE,WAAW,CAAC,EACvB;YACE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;SAC7B,EACD;YACE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1C,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO;YAClC,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;YACxB,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI;YAC3C,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI;YACrC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,qBAAqB,EAAE,GAAG,EAAE,CAAC,WAAW;SACzC,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAEzC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,QAAQ,CAAC,WAAW,CAAC,wBAAwB,EAAE;YAC7C,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,oBAAoB;oBAC7B,UAAU,EAAE,QAAQ;oBACpB,YAAY,EAAE,QAAQ;oBACtB,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,QAAQ;4BACjB,UAAU,EAAE,QAAQ;4BACpB,mBAAmB,EAAE,qEAAqE;4BAC1F,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,oBAAoB;4BACtC,qBAAqB,EAAE,QAAQ;yBAChC;qBACF;oBACD,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,EAAE;iBACX;aACF;SACF,CAAC,CAAC;QAEH,kFAAkF;QAClF,6EAA6E;QAC7E,6DAA6D;QAC7D,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE;YACxC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,eAAe;oBACxB,UAAU,EAAE,QAAQ;oBACpB,YAAY,EAAE,QAAQ;oBACtB,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,QAAQ;4BACjB,UAAU,EAAE,QAAQ;4BACpB,mBAAmB,EAAE,gEAAgE;4BACrF,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,eAAe;4BACjC,qBAAqB,EAAE,QAAQ;yBAChC;qBACF;oBACD,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,EAAE;iBACX;aACF;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,OAAO;YACP,OAAO,EAAE;gBACP,WAAW,EAAE,OAAO;gBACpB,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,SAAS;gBACxB,MAAM,EAAE,IAAI;aACb;YACD,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,sBAAsB,EAAE,CAAC,OAAO,CAAC;YACjC,QAAQ,EAAE,IAAI,sBAAsB,EAAE;YACtC,QAAQ;YACR,WAAW,EAAE,yBAAyB,CAAC,OAAO,CAAC;YAC/C,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;SAChC,CAAC;QAEF,MAAM,GAAG,GAAG,oBAAoB,CAAC,WAAW,EAAE;YAC5C,UAAU,EAAE,OAAO;YACnB,aAAa,EAAE,SAAS;SACzB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAChC,CAAC,EACD,yDAAyD,CAC1D,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC;QACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,iCAAiC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAC1E,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iCAAiC,CAAC,CAC1D,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAC7D,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,mFAAmF;QACnF,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC5E,EAAE,CAAC,aAAa,CACd,gBAAgB,EAChB,IAAI,CAAC,SAAS,CACZ;YACE,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE;gBACL;oBACE,UAAU,EAAE,WAAW;oBACvB,OAAO,EAAE,uBAAuB;iBACjC;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF,EACD,MAAM,CACP,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG;;;;;KAKjB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG;;;;KAId,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG;;;;;;;;KAQjB,CAAC;QAEF,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,MAAM,EACN,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CACjC,WAAW,EACX,SAAS,EACT,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CACjC,WAAW,EACX,SAAS,EACT,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAwB;YAC7C,CAAC,QAAQ,EAAE,UAAU,CAAC;YACtB,CAAC,WAAW,EAAE,OAAO,CAAC;YACtB,CAAC,WAAW,EAAE,OAAO,CAAC;SACvB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAC9B,CAAC,QAAQ,EAAE,WAAW,CAAC,EACvB;YACE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;SAC7B,EACD;YACE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1C,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO;YAClC,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;YACxB,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI;YAC3C,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI;YACrC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,qBAAqB,EAAE,GAAG,EAAE,CAAC,WAAW;SACzC,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAEzC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,QAAQ,CAAC,WAAW,CAAC,wBAAwB,EAAE;YAC7C,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,oBAAoB;oBAC7B,UAAU,EAAE,QAAQ;oBACpB,YAAY,EAAE,QAAQ;oBACtB,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,QAAQ;4BACjB,UAAU,EAAE,QAAQ;4BACpB,mBAAmB,EAAE,qEAAqE;4BAC1F,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,oBAAoB;4BACtC,qBAAqB,EAAE,QAAQ;yBAChC;qBACF;oBACD,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,EAAE;iBACX;aACF;SACF,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE;YACxC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,eAAe;oBACxB,UAAU,EAAE,QAAQ;oBACpB,YAAY,EAAE,QAAQ;oBACtB,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,QAAQ;4BACjB,UAAU,EAAE,QAAQ;4BACpB,mBAAmB,EAAE,gEAAgE;4BACrF,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,eAAe;4BACjC,qBAAqB,EAAE,QAAQ;yBAChC;qBACF;oBACD,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,EAAE;iBACX;aACF;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,OAAO;YACP,OAAO,EAAE;gBACP,WAAW,EAAE,OAAO;gBACpB,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,SAAS;gBACxB,MAAM,EAAE,IAAI;aACb;YACD,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,sBAAsB,EAAE,CAAC,OAAO,CAAC;YACjC,QAAQ,EAAE,IAAI,sBAAsB,EAAE;YACtC,QAAQ;YACR,WAAW,EAAE,yBAAyB,CAAC,OAAO,CAAC;YAC/C,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;SAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,OAAO;YACnB,aAAa,EAAE,SAAS;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,8CAA8C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEpF,IAAI,QAAQ,CAAC,EAAE;YAAE,OAAO;QAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iCAAiC,CAAC,CAC1D,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAC7D,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC5E,EAAE,CAAC,aAAa,CACd,gBAAgB,EAChB,IAAI,CAAC,SAAS,CACZ;YACE,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE;gBACL;oBACE,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,oBAAoB;iBAC9B;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF,EACD,MAAM,CACP,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG;;;;;KAKjB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG;;;;KAId,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG;;;;;;;;KAQjB,CAAC;QAEF,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,MAAM,EACN,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CACjC,WAAW,EACX,SAAS,EACT,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CACjC,WAAW,EACX,SAAS,EACT,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAwB;YAC7C,CAAC,QAAQ,EAAE,UAAU,CAAC;YACtB,CAAC,WAAW,EAAE,OAAO,CAAC;YACtB,CAAC,WAAW,EAAE,OAAO,CAAC;SACvB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAC9B,CAAC,QAAQ,EAAE,WAAW,CAAC,EACvB;YACE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;SAC7B,EACD;YACE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1C,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO;YAClC,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;YACxB,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI;YAC3C,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI;YACrC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,qBAAqB,EAAE,GAAG,EAAE,CAAC,WAAW;SACzC,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAEzC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,2FAA2F;QAC3F,QAAQ,CAAC,WAAW,CAAC,wBAAwB,EAAE;YAC7C,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE;gBACL;oBACE,OAAO,EAAE,oBAAoB;oBAC7B,UAAU,EAAE,QAAQ;oBACpB,YAAY,EAAE,QAAQ;oBACtB,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,EAAE;iBACX;aACF;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,OAAO;YACP,OAAO,EAAE;gBACP,WAAW,EAAE,OAAO;gBACpB,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,SAAS;gBACxB,MAAM,EAAE,IAAI;aACb;YACD,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,sBAAsB,EAAE,CAAC,OAAO,CAAC;YACjC,QAAQ,EAAE,IAAI,sBAAsB,EAAE;YACtC,QAAQ;YACR,WAAW,EAAE,yBAAyB,CAAC,OAAO,CAAC;YAC/C,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;SAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,OAAO;YACnB,aAAa,EAAE,SAAS;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,4CAA4C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAElF,IAAI,QAAQ,CAAC,EAAE;YAAE,OAAO;QAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,10 +1,28 @@
1
1
  /**
2
2
  * Export extraction from TypeScript source
3
+ *
4
+ * Phase 5 Step 4: Uses ProgramContext for statement/expression conversion.
3
5
  */
4
6
  import * as ts from "typescript";
5
7
  import { IrExport } from "../types.js";
8
+ import type { Binding } from "../binding/index.js";
9
+ import type { ProgramContext } from "../program-context.js";
6
10
  /**
7
- * Extract export declarations from source file
11
+ * Extract export declarations from source file.
12
+ *
13
+ * This function has two signatures:
14
+ * - With just Binding: Used when only export metadata is needed (no statement conversion)
15
+ * - With ProgramContext: Used when exported declarations need to be converted
16
+ *
17
+ * @param sourceFile - The TypeScript source file
18
+ * @param binding - The binding layer (for simple export extraction without conversion)
8
19
  */
9
- export declare const extractExports: (sourceFile: ts.SourceFile, checker: ts.TypeChecker) => readonly IrExport[];
20
+ export declare const extractExports: (sourceFile: ts.SourceFile, _binding: Binding) => readonly IrExport[];
21
+ /**
22
+ * Extract export declarations from source file with full conversion.
23
+ *
24
+ * @param sourceFile - The TypeScript source file
25
+ * @param ctx - ProgramContext for full statement/expression conversion
26
+ */
27
+ export declare const extractExportsWithContext: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly IrExport[];
10
28
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/exports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,WAAW,KACtB,SAAS,QAAQ,EA+DnB,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/exports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,EACzB,UAAU,OAAO,KAChB,SAAS,QAAQ,EAwCnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,QAAQ,EAkEnB,CAAC"}
@@ -1,14 +1,70 @@
1
1
  /**
2
2
  * Export extraction from TypeScript source
3
+ *
4
+ * Phase 5 Step 4: Uses ProgramContext for statement/expression conversion.
3
5
  */
4
6
  import * as ts from "typescript";
5
7
  import { convertStatement, flattenStatementResult, } from "../statement-converter.js";
6
8
  import { convertExpression } from "../expression-converter.js";
7
9
  import { hasExportModifier, hasDefaultModifier } from "./helpers.js";
8
10
  /**
9
- * Extract export declarations from source file
11
+ * Extract export declarations from source file.
12
+ *
13
+ * This function has two signatures:
14
+ * - With just Binding: Used when only export metadata is needed (no statement conversion)
15
+ * - With ProgramContext: Used when exported declarations need to be converted
16
+ *
17
+ * @param sourceFile - The TypeScript source file
18
+ * @param binding - The binding layer (for simple export extraction without conversion)
10
19
  */
11
- export const extractExports = (sourceFile, checker) => {
20
+ export const extractExports = (sourceFile, _binding) => {
21
+ const exports = [];
22
+ const visitor = (node) => {
23
+ if (ts.isExportDeclaration(node)) {
24
+ if (node.exportClause && ts.isNamedExports(node.exportClause)) {
25
+ // Check if this is a re-export (has moduleSpecifier)
26
+ if (node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
27
+ // Re-export: export { x } from "./other.ts"
28
+ const fromModule = node.moduleSpecifier.text;
29
+ node.exportClause.elements.forEach((spec) => {
30
+ exports.push({
31
+ kind: "reexport",
32
+ name: spec.name.text, // Exported name
33
+ originalName: (spec.propertyName ?? spec.name).text, // Name in source module
34
+ fromModule,
35
+ });
36
+ });
37
+ }
38
+ else {
39
+ // Regular named export: export { x }
40
+ node.exportClause.elements.forEach((spec) => {
41
+ exports.push({
42
+ kind: "named",
43
+ name: spec.name.text,
44
+ localName: (spec.propertyName ?? spec.name).text,
45
+ });
46
+ });
47
+ }
48
+ }
49
+ }
50
+ else if (hasExportModifier(node)) {
51
+ // For exported declarations, we need the full context to convert them
52
+ // This is handled by extractExportsWithContext
53
+ // Here we just record that there's an export, but don't convert
54
+ // The actual conversion is done in extractStatements
55
+ }
56
+ ts.forEachChild(node, visitor);
57
+ };
58
+ visitor(sourceFile);
59
+ return exports;
60
+ };
61
+ /**
62
+ * Extract export declarations from source file with full conversion.
63
+ *
64
+ * @param sourceFile - The TypeScript source file
65
+ * @param ctx - ProgramContext for full statement/expression conversion
66
+ */
67
+ export const extractExportsWithContext = (sourceFile, ctx) => {
12
68
  const exports = [];
13
69
  const visitor = (node) => {
14
70
  if (ts.isExportDeclaration(node)) {
@@ -41,25 +97,28 @@ export const extractExports = (sourceFile, checker) => {
41
97
  else if (ts.isExportAssignment(node)) {
42
98
  exports.push({
43
99
  kind: "default",
44
- expression: convertExpression(node.expression, checker),
100
+ expression: convertExpression(node.expression, ctx, undefined),
45
101
  });
46
102
  }
47
103
  else if (hasExportModifier(node)) {
48
104
  const hasDefault = hasDefaultModifier(node);
49
105
  if (hasDefault) {
50
106
  // export default function/class/etc
51
- const result = convertStatement(node, checker);
107
+ const result = convertStatement(node, ctx, undefined);
52
108
  const statements = flattenStatementResult(result);
53
109
  if (statements.length > 0) {
54
110
  exports.push({
55
111
  kind: "default",
56
- expression: { kind: "identifier", name: "_default" }, // placeholder for now
112
+ expression: {
113
+ kind: "identifier",
114
+ name: "_default",
115
+ }, // placeholder for now
57
116
  });
58
117
  }
59
118
  }
60
119
  else {
61
120
  // regular export - may produce multiple statements (e.g., type aliases with synthetics)
62
- const result = convertStatement(node, checker);
121
+ const result = convertStatement(node, ctx, undefined);
63
122
  const statements = flattenStatementResult(result);
64
123
  for (const stmt of statements) {
65
124
  exports.push({
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/ir/builder/exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/ir/builder/exports.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,22 @@
1
1
  /**
2
2
  * Import extraction from TypeScript source
3
+ *
4
+ * Phase 5 Step 4: Uses ProgramContext instead of global singletons.
3
5
  */
4
6
  import * as ts from "typescript";
5
7
  import { IrImport, IrImportSpecifier } from "../types.js";
6
- import { ClrBindingsResolver } from "../../resolver/clr-bindings-resolver.js";
8
+ import type { ProgramContext } from "../program-context.js";
9
+ import type { Binding } from "../binding/index.js";
10
+ import type { TypeAuthority } from "../type-system/type-system.js";
7
11
  /**
8
12
  * Extract import declarations from source file.
9
- * Uses TypeChecker to determine if each import is a type or value.
13
+ * Uses Binding layer to determine if each import is a type or value.
10
14
  * Uses ClrBindingsResolver to detect CLR namespace imports.
11
15
  */
12
- export declare const extractImports: (sourceFile: ts.SourceFile, checker: ts.TypeChecker, clrResolver: ClrBindingsResolver) => readonly IrImport[];
16
+ export declare const extractImports: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly IrImport[];
13
17
  /**
14
18
  * Extract import specifiers from an import declaration.
15
- * Uses TypeChecker to determine if each named import is a type or value.
19
+ * Uses Binding layer to determine if each named import is a type or value.
16
20
  */
17
- export declare const extractImportSpecifiers: (node: ts.ImportDeclaration, checker: ts.TypeChecker) => readonly IrImportSpecifier[];
21
+ export declare const extractImportSpecifiers: (node: ts.ImportDeclaration, binding: Binding, typeSystem: TypeAuthority) => readonly IrImportSpecifier[];
18
22
  //# sourceMappingURL=imports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,WAAW,EACvB,aAAa,mBAAmB,KAC/B,SAAS,QAAQ,EAkDnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,iBAAiB,EAC1B,SAAS,EAAE,CAAC,WAAW,KACtB,SAAS,iBAAiB,EAkC5B,CAAC"}
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,QAAQ,EAsDnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,iBAAiB,EAC1B,SAAS,OAAO,EAChB,YAAY,aAAa,KACxB,SAAS,iBAAiB,EAkC5B,CAAC"}