@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
@@ -1,14 +1,15 @@
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
- import { getBindingRegistry } from "../converters/statements/declarations/registry.js";
6
7
  /**
7
8
  * Extract import declarations from source file.
8
- * Uses TypeChecker to determine if each import is a type or value.
9
+ * Uses Binding layer to determine if each import is a type or value.
9
10
  * Uses ClrBindingsResolver to detect CLR namespace imports.
10
11
  */
11
- export const extractImports = (sourceFile, checker, clrResolver) => {
12
+ export const extractImports = (sourceFile, ctx) => {
12
13
  const imports = [];
13
14
  const visitor = (node) => {
14
15
  if (ts.isImportDeclaration(node) &&
@@ -19,7 +20,7 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
19
20
  // This works for any package that provides bindings.json
20
21
  // Note: Bindings are loaded upfront by discoverAndLoadClrBindings()
21
22
  // in dependency-graph.ts before IR building starts.
22
- const clrResolution = clrResolver.resolve(source);
23
+ const clrResolution = ctx.clrResolver.resolve(source);
23
24
  const isClr = clrResolution.isClr;
24
25
  const resolvedNamespace = clrResolution.isClr
25
26
  ? clrResolution.resolvedNamespace
@@ -27,12 +28,12 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
27
28
  const clrAssembly = clrResolution.isClr
28
29
  ? clrResolution.assembly
29
30
  : undefined;
30
- const specifiers = extractImportSpecifiers(node, checker);
31
+ const specifiers = extractImportSpecifiers(node, ctx.binding, ctx.typeSystem);
31
32
  // Check for module binding (Node.js API, etc.)
32
- const binding = getBindingRegistry().getBinding(source);
33
- const hasModuleBinding = binding?.kind === "module";
33
+ const moduleBinding = ctx.bindings.getBinding(source);
34
+ const hasModuleBinding = moduleBinding?.kind === "module";
34
35
  // Assembly comes from CLR resolution (bindings.json) or module binding
35
- const resolvedAssembly = clrAssembly ?? (hasModuleBinding ? binding.assembly : undefined);
36
+ const resolvedAssembly = clrAssembly ?? (hasModuleBinding ? moduleBinding.assembly : undefined);
36
37
  imports.push({
37
38
  kind: "import",
38
39
  source,
@@ -40,7 +41,7 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
40
41
  isClr,
41
42
  specifiers,
42
43
  resolvedNamespace,
43
- resolvedClrType: hasModuleBinding ? binding.type : undefined,
44
+ resolvedClrType: hasModuleBinding ? moduleBinding.type : undefined,
44
45
  resolvedAssembly,
45
46
  });
46
47
  }
@@ -51,9 +52,9 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
51
52
  };
52
53
  /**
53
54
  * Extract import specifiers from an import declaration.
54
- * Uses TypeChecker to determine if each named import is a type or value.
55
+ * Uses Binding layer to determine if each named import is a type or value.
55
56
  */
56
- export const extractImportSpecifiers = (node, checker) => {
57
+ export const extractImportSpecifiers = (node, binding, typeSystem) => {
57
58
  const specifiers = [];
58
59
  if (node.importClause) {
59
60
  // Default import
@@ -73,7 +74,7 @@ export const extractImportSpecifiers = (node, checker) => {
73
74
  }
74
75
  else if (ts.isNamedImports(node.importClause.namedBindings)) {
75
76
  node.importClause.namedBindings.elements.forEach((spec) => {
76
- const isType = isTypeImport(spec, checker);
77
+ const isType = isTypeImport(spec, binding, typeSystem);
77
78
  specifiers.push({
78
79
  kind: "named",
79
80
  name: (spec.propertyName ?? spec.name).text,
@@ -88,33 +89,21 @@ export const extractImportSpecifiers = (node, checker) => {
88
89
  };
89
90
  /**
90
91
  * Determine if an import specifier refers to a type (interface, class, type alias, enum).
91
- * Uses TypeChecker to resolve the symbol and check its declaration kind.
92
+ * ALICE'S SPEC: Uses TypeSystem.isTypeDecl() to check declaration kind.
92
93
  */
93
- const isTypeImport = (spec, checker) => {
94
+ const isTypeImport = (spec, binding, typeSystem) => {
94
95
  try {
95
96
  // TypeScript's isTypeOnly flag on the specifier itself (for `import { type Foo }`)
96
97
  if (spec.isTypeOnly) {
97
98
  return true;
98
99
  }
99
- // Get the symbol for this import specifier
100
- const symbol = checker.getSymbolAtLocation(spec.name);
101
- if (!symbol) {
100
+ // Use Binding to resolve the import to its declaration
101
+ const declId = binding.resolveImport(spec);
102
+ if (!declId) {
102
103
  return false;
103
104
  }
104
- // Follow aliases to get the actual symbol
105
- const resolvedSymbol = symbol.flags & ts.SymbolFlags.Alias
106
- ? checker.getAliasedSymbol(symbol)
107
- : symbol;
108
- if (!resolvedSymbol) {
109
- return false;
110
- }
111
- // Check if the symbol is a type
112
- const flags = resolvedSymbol.flags;
113
- return !!(flags & ts.SymbolFlags.Interface ||
114
- flags & ts.SymbolFlags.Class ||
115
- flags & ts.SymbolFlags.TypeAlias ||
116
- flags & ts.SymbolFlags.Enum ||
117
- flags & ts.SymbolFlags.TypeParameter);
105
+ // ALICE'S SPEC: Use TypeSystem.isTypeDecl() to check if declaration is a type
106
+ return typeSystem.isTypeDecl(declId);
118
107
  }
119
108
  catch {
120
109
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,25 @@
1
1
  /**
2
2
  * IR Builder orchestration - Main module building logic
3
+ *
4
+ * Phase 5 Step 4: Uses ProgramContext instead of global singletons.
3
5
  */
4
6
  import * as ts from "typescript";
5
7
  import { IrModule } from "../types.js";
6
8
  import { TsonicProgram } from "../../program.js";
7
9
  import { Result } from "../../types/result.js";
8
10
  import { Diagnostic } from "../../types/diagnostic.js";
11
+ import { type ProgramContext } from "../program-context.js";
9
12
  import { IrBuildOptions } from "./types.js";
10
13
  /**
11
14
  * Build IR module from TypeScript source file
15
+ *
16
+ * @param sourceFile - The TypeScript source file to convert
17
+ * @param program - The Tsonic program with type checker and bindings
18
+ * @param options - Build options (sourceRoot, rootNamespace)
19
+ * @param ctx - ProgramContext for TypeSystem and other shared resources.
20
+ * Required - no global state fallback.
12
21
  */
13
- export declare const buildIrModule: (sourceFile: ts.SourceFile, program: TsonicProgram, options: IrBuildOptions) => Result<IrModule, Diagnostic>;
22
+ export declare const buildIrModule: (sourceFile: ts.SourceFile, _program: TsonicProgram, options: IrBuildOptions, ctx: ProgramContext) => Result<IrModule, Diagnostic>;
14
23
  /**
15
24
  * Build IR for all source files in the program
16
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAa,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,2BAA2B,CAAC;AAKzE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,aAAa,EACtB,SAAS,cAAc,KACtB,MAAM,CAAC,QAAQ,EAAE,UAAU,CA2H7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,aAAa,EACtB,SAAS,cAAc,KACtB,MAAM,CAAC,SAAS,QAAQ,EAAE,EAAE,SAAS,UAAU,EAAE,CAkBnD,CAAC"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,MAAM,EAAa,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,UAAU,EAGX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,EAAE,CAAC,UAAU,EACzB,UAAU,aAAa,EACvB,SAAS,cAAc,EACvB,KAAK,cAAc,KAClB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAkH7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,aAAa,EACtB,SAAS,cAAc,KACtB,MAAM,CAAC,SAAS,QAAQ,EAAE,EAAE,SAAS,UAAU,EAAE,CAgCnD,CAAC"}
@@ -1,29 +1,34 @@
1
1
  /**
2
2
  * IR Builder orchestration - Main module building logic
3
+ *
4
+ * Phase 5 Step 4: Uses ProgramContext instead of global singletons.
3
5
  */
4
6
  import { relative } from "path";
5
7
  import { getNamespaceFromPath, getClassNameFromPath } from "../../resolver.js";
8
+ import { resolveNamingPolicy } from "../../resolver/naming-policy.js";
6
9
  import { ok, error } from "../../types/result.js";
7
- import { createDiagnostic } from "../../types/diagnostic.js";
8
- import { setMetadataRegistry, setBindingRegistry, } from "../statement-converter.js";
10
+ import { createDiagnostic, isFatal, } from "../../types/diagnostic.js";
11
+ import { createProgramContext, } from "../program-context.js";
9
12
  import { extractImports } from "./imports.js";
10
- import { extractExports } from "./exports.js";
13
+ import { extractExportsWithContext } from "./exports.js";
11
14
  import { extractStatements, isExecutableStatement } from "./statements.js";
12
15
  import { validateClassImplements } from "./validation.js";
13
16
  /**
14
17
  * Build IR module from TypeScript source file
18
+ *
19
+ * @param sourceFile - The TypeScript source file to convert
20
+ * @param program - The Tsonic program with type checker and bindings
21
+ * @param options - Build options (sourceRoot, rootNamespace)
22
+ * @param ctx - ProgramContext for TypeSystem and other shared resources.
23
+ * Required - no global state fallback.
15
24
  */
16
- export const buildIrModule = (sourceFile, program, options) => {
25
+ export const buildIrModule = (sourceFile, _program, options, ctx) => {
17
26
  try {
18
- // Set the metadata registry for this compilation
19
- setMetadataRegistry(program.metadata);
20
- // Set the binding registry for this compilation
21
- setBindingRegistry(program.bindings);
22
- const namespace = getNamespaceFromPath(sourceFile.fileName, options.sourceRoot, options.rootNamespace);
23
- const className = getClassNameFromPath(sourceFile.fileName);
24
- const imports = extractImports(sourceFile, program.checker, program.clrResolver);
25
- const exports = extractExports(sourceFile, program.checker);
26
- const statements = extractStatements(sourceFile, program.checker);
27
+ const namespace = getNamespaceFromPath(sourceFile.fileName, options.sourceRoot, options.rootNamespace, resolveNamingPolicy(options.namingPolicy, "namespaces"));
28
+ const className = getClassNameFromPath(sourceFile.fileName, resolveNamingPolicy(options.namingPolicy, "classes"));
29
+ const imports = extractImports(sourceFile, ctx);
30
+ const exports = extractExportsWithContext(sourceFile, ctx);
31
+ const statements = extractStatements(sourceFile, ctx);
27
32
  // Check for file name / export name collision (Issue #4)
28
33
  // When file name matches an exported function/variable name, C# will have illegal code
29
34
  // Example: main.ts exporting function main() → class main { void main() } ❌
@@ -63,7 +68,7 @@ export const buildIrModule = (sourceFile, program, options) => {
63
68
  }
64
69
  // Validate class implements patterns
65
70
  // TypeScript interfaces are nominalized to C# classes, so "implements" is invalid
66
- const implementsDiagnostics = validateClassImplements(sourceFile, program.checker);
71
+ const implementsDiagnostics = validateClassImplements(sourceFile, ctx);
67
72
  const firstImplementsDiagnostic = implementsDiagnostics[0];
68
73
  if (firstImplementsDiagnostic) {
69
74
  return error(firstImplementsDiagnostic);
@@ -102,17 +107,29 @@ export const buildIrModule = (sourceFile, program, options) => {
102
107
  * Build IR for all source files in the program
103
108
  */
104
109
  export const buildIr = (program, options) => {
110
+ // Create ProgramContext — the single owner of all semantic state
111
+ // No global singletons are used; context is passed explicitly
112
+ const ctx = createProgramContext(program, options);
105
113
  const modules = [];
106
114
  const diagnostics = [];
107
115
  for (const sourceFile of program.sourceFiles) {
108
- const result = buildIrModule(sourceFile, program, options);
116
+ const result = buildIrModule(sourceFile, program, options, ctx);
109
117
  if (result.ok) {
110
118
  modules.push(result.value);
111
119
  }
112
120
  else {
113
121
  diagnostics.push(result.error);
122
+ // Fatal diagnostics abort immediately - no point continuing
123
+ if (isFatal(result.error)) {
124
+ return error(diagnostics);
125
+ }
114
126
  }
115
127
  }
128
+ // Merge any diagnostics emitted during IR conversion (from converters).
129
+ // These are deterministic failures where emitting code would require guessing.
130
+ if (ctx.diagnostics.length > 0) {
131
+ diagnostics.push(...ctx.diagnostics);
132
+ }
116
133
  if (diagnostics.length > 0) {
117
134
  return error(diagnostics);
118
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * Statement 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 { IrStatement } from "../types.js";
8
+ import type { ProgramContext } from "../program-context.js";
6
9
  /**
7
10
  * Extract statements from source file.
8
11
  *
@@ -11,8 +14,11 @@ import { IrStatement } from "../types.js";
11
14
  *
12
15
  * Also collects synthetic type declarations generated during conversion
13
16
  * (from anonymous object literal synthesis) and prepends them.
17
+ *
18
+ * @param sourceFile - The TypeScript source file to extract from
19
+ * @param ctx - ProgramContext for TypeSystem and binding access
14
20
  */
15
- export declare const extractStatements: (sourceFile: ts.SourceFile, checker: ts.TypeChecker) => readonly IrStatement[];
21
+ export declare const extractStatements: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly IrStatement[];
16
22
  /**
17
23
  * Check if a statement is executable (not a declaration)
18
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU1C;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,WAAW,KACtB,SAAS,WAAW,EA0BtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,WAAW,KAAG,OAiBzD,CAAC"}
1
+ {"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,WAAW,EA0BtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,WAAW,KAAG,OAiBzD,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Statement 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 { convertStatement, flattenStatementResult, } from "../statement-converter.js";
@@ -12,8 +14,11 @@ import { resetSyntheticRegistry, getSyntheticDeclarations, } from "../converters
12
14
  *
13
15
  * Also collects synthetic type declarations generated during conversion
14
16
  * (from anonymous object literal synthesis) and prepends them.
17
+ *
18
+ * @param sourceFile - The TypeScript source file to extract from
19
+ * @param ctx - ProgramContext for TypeSystem and binding access
15
20
  */
16
- export const extractStatements = (sourceFile, checker) => {
21
+ export const extractStatements = (sourceFile, ctx) => {
17
22
  // Reset synthetic registry for this file
18
23
  resetSyntheticRegistry();
19
24
  const statements = [];
@@ -22,7 +27,7 @@ export const extractStatements = (sourceFile, checker) => {
22
27
  if (!ts.isImportDeclaration(stmt) &&
23
28
  !ts.isExportDeclaration(stmt) &&
24
29
  !ts.isExportAssignment(stmt)) {
25
- const converted = convertStatement(stmt, checker);
30
+ const converted = convertStatement(stmt, ctx, undefined);
26
31
  // Flatten result (handles both single statements and arrays)
27
32
  statements.push(...flattenStatementResult(converted));
28
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"statements.js","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAyB,EACzB,OAAuB,EACC,EAAE;IAC1B,yCAAyC;IACzC,sBAAsB,EAAE,CAAC;IAEzB,MAAM,UAAU,GAAkB,EAAE,CAAC;IAErC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,gDAAgD;QAChD,IACE,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC7B,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC7B,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAC5B,CAAC;YACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,6DAA6D;YAC7D,UAAU,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kDAAkD;IAClD,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;IAClD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAiB,EAAW,EAAE;IAClE,gFAAgF;IAChF,MAAM,gBAAgB,GAAG;QACvB,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,iBAAiB;QACjB,qBAAqB,EAAE,oDAAoD;KAC5E,CAAC;IAEF,sCAAsC;IACtC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC"}
1
+ {"version":3,"file":"statements.js","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAyB,EACzB,GAAmB,EACK,EAAE;IAC1B,yCAAyC;IACzC,sBAAsB,EAAE,CAAC;IAEzB,MAAM,UAAU,GAAkB,EAAE,CAAC;IAErC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,gDAAgD;QAChD,IACE,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC7B,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC7B,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAC5B,CAAC;YACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YACzD,6DAA6D;YAC7D,UAAU,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kDAAkD;IAClD,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;IAClD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAiB,EAAW,EAAE;IAClE,gFAAgF;IAChF,MAAM,gBAAgB,GAAG;QACvB,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,iBAAiB;QACjB,qBAAqB,EAAE,oDAAoD;KAC5E,CAAC;IAEF,sCAAsC;IACtC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC"}
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * IR Builder types
3
3
  */
4
+ import type { NamingPolicyConfig } from "../../resolver/naming-policy.js";
4
5
  export type IrBuildOptions = {
5
6
  readonly sourceRoot: string;
6
7
  readonly rootNamespace: string;
8
+ readonly namingPolicy?: NamingPolicyConfig;
7
9
  };
8
10
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAC5C,CAAC"}
@@ -1,10 +1,13 @@
1
1
  /**
2
2
  * IR builder validation - checks for unsupported patterns
3
+ *
4
+ * Phase 5 Step 4: Uses ProgramContext instead of global singletons.
3
5
  */
4
6
  import * as ts from "typescript";
5
7
  import { Diagnostic } from "../../types/diagnostic.js";
8
+ import type { ProgramContext } from "../program-context.js";
6
9
  /**
7
10
  * Validate all class declarations in a source file
8
11
  */
9
- export declare const validateClassImplements: (sourceFile: ts.SourceFile, checker: ts.TypeChecker) => readonly Diagnostic[];
12
+ export declare const validateClassImplements: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly Diagnostic[];
10
13
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,UAAU,EAAoB,MAAM,2BAA2B,CAAC;AAyGzE;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,WAAW,KACtB,SAAS,UAAU,EAYrB,CAAC"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA+F5D;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,UAAU,EAYrB,CAAC"}
@@ -1,70 +1,70 @@
1
1
  /**
2
2
  * IR builder validation - checks for unsupported patterns
3
+ *
4
+ * Phase 5 Step 4: Uses ProgramContext instead of global singletons.
3
5
  */
4
6
  import * as ts from "typescript";
5
- import { createDiagnostic } from "../../types/diagnostic.js";
6
- import { getSourceLocation } from "../../program/diagnostics.js";
7
7
  /**
8
8
  * Check if a type reference is the struct marker
9
9
  * (used to mark types as C# value types)
10
+ * ALICE'S SPEC: Uses TypeSystem for symbol resolution.
10
11
  */
11
- const isStructMarker = (typeRef, checker) => {
12
- const symbol = checker.getSymbolAtLocation(typeRef.expression);
13
- return symbol?.escapedName === "struct" || symbol?.escapedName === "Struct";
12
+ const isStructMarker = (typeRef, binding, typeSystem) => {
13
+ if (!ts.isIdentifier(typeRef.expression)) {
14
+ return false;
15
+ }
16
+ const declId = binding.resolveIdentifier(typeRef.expression);
17
+ if (!declId) {
18
+ return false;
19
+ }
20
+ const fqName = typeSystem.getFQNameOfDecl(declId);
21
+ return fqName === "struct" || fqName === "Struct";
14
22
  };
15
23
  /**
16
- * Check if a symbol represents a TypeScript interface
24
+ * Check if a declaration represents a TypeScript interface
17
25
  * (which Tsonic nominalizes to a C# class)
26
+ * ALICE'S SPEC: Uses TypeSystem.isInterfaceDecl()
18
27
  */
19
- const isNominalizedInterface = (symbol, _checker) => {
20
- if (!symbol)
28
+ const isNominalizedInterface = (declId, typeSystem) => {
29
+ if (!declId)
21
30
  return false;
22
- const declarations = symbol.getDeclarations();
23
- if (!declarations || declarations.length === 0)
24
- return false;
25
- // Check if any declaration is an interface
26
- return declarations.some((decl) => ts.isInterfaceDeclaration(decl));
31
+ return typeSystem.isInterfaceDecl(declId);
27
32
  };
28
33
  /**
29
- * Check if a symbol represents a type alias for an object type
34
+ * Check if a declaration represents a type alias for an object type
30
35
  * (which Tsonic nominalizes to a C# class)
36
+ * ALICE'S SPEC: Uses TypeSystem.isTypeAliasToObjectLiteral()
31
37
  */
32
- const isNominalizedTypeAlias = (symbol, _checker) => {
33
- if (!symbol)
34
- return false;
35
- const declarations = symbol.getDeclarations();
36
- if (!declarations || declarations.length === 0)
38
+ const isNominalizedTypeAlias = (declId, typeSystem) => {
39
+ if (!declId)
37
40
  return false;
38
- // Check if declaration is a type alias with object literal type
39
- return declarations.some((decl) => {
40
- if (!ts.isTypeAliasDeclaration(decl))
41
- return false;
42
- // Type aliases for object shapes are nominalized
43
- return ts.isTypeLiteralNode(decl.type);
44
- });
41
+ return typeSystem.isTypeAliasToObjectLiteral(declId);
45
42
  };
46
43
  /**
47
44
  * Validate a class declaration for implements clause issues
48
45
  */
49
- const validateClassDeclaration = (node, checker) => {
46
+ const validateClassDeclaration = (node, ctx) => {
50
47
  const diagnostics = [];
51
48
  const implementsClause = node.heritageClauses?.find((h) => h.token === ts.SyntaxKind.ImplementsKeyword);
52
49
  if (!implementsClause)
53
50
  return [];
54
51
  for (const typeRef of implementsClause.types) {
55
52
  // Skip the struct marker - it's a special pattern for value types
56
- if (isStructMarker(typeRef, checker)) {
53
+ if (isStructMarker(typeRef, ctx.binding, ctx.typeSystem)) {
57
54
  continue;
58
55
  }
59
- // Get the symbol for the identifier (not the resolved type)
56
+ // Get the declaration ID for the identifier
60
57
  // This preserves type alias identity
61
- const identifierSymbol = checker.getSymbolAtLocation(typeRef.expression);
58
+ const identifierDeclId = ts.isIdentifier(typeRef.expression)
59
+ ? ctx.binding.resolveIdentifier(typeRef.expression)
60
+ : undefined;
62
61
  // Check if it's a nominalized interface or type alias
63
- if (isNominalizedInterface(identifierSymbol, checker) ||
64
- isNominalizedTypeAlias(identifierSymbol, checker)) {
65
- const typeName = typeRef.expression.getText();
66
- const location = getSourceLocation(node.getSourceFile(), typeRef.getStart(), typeRef.getWidth());
67
- diagnostics.push(createDiagnostic("TSN7301", "error", `Class cannot implement '${typeName}': TypeScript interfaces are nominalized to C# classes in Tsonic. Use 'extends' instead, or refactor to composition.`, location, "In Tsonic, interfaces become classes for object initializer support. C# classes cannot implement other classes."));
62
+ if (isNominalizedInterface(identifierDeclId, ctx.typeSystem) ||
63
+ isNominalizedTypeAlias(identifierDeclId, ctx.typeSystem)) {
64
+ // Tsonic supports `implements` in the TypeScript surface language even when the
65
+ // nominal type is emitted as a C# class or interface. The emitter is responsible
66
+ // for selecting a valid C# representation.
67
+ continue;
68
68
  }
69
69
  }
70
70
  return diagnostics;
@@ -72,11 +72,11 @@ const validateClassDeclaration = (node, checker) => {
72
72
  /**
73
73
  * Validate all class declarations in a source file
74
74
  */
75
- export const validateClassImplements = (sourceFile, checker) => {
75
+ export const validateClassImplements = (sourceFile, ctx) => {
76
76
  const diagnostics = [];
77
77
  const visit = (node) => {
78
78
  if (ts.isClassDeclaration(node)) {
79
- diagnostics.push(...validateClassDeclaration(node, checker));
79
+ diagnostics.push(...validateClassDeclaration(node, ctx));
80
80
  }
81
81
  ts.forEachChild(node, visit);
82
82
  };
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"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"}