@tsonic/frontend 0.0.13 → 0.0.15

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 (513) 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 +1 -1
  8. package/dist/graph/extraction/orchestrator.js.map +1 -1
  9. package/dist/ir/binding/index.d.ts +134 -0
  10. package/dist/ir/binding/index.d.ts.map +1 -0
  11. package/dist/ir/binding/index.js +725 -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/builder/exports.d.ts +20 -2
  16. package/dist/ir/builder/exports.d.ts.map +1 -1
  17. package/dist/ir/builder/exports.js +65 -6
  18. package/dist/ir/builder/exports.js.map +1 -1
  19. package/dist/ir/builder/imports.d.ts +9 -5
  20. package/dist/ir/builder/imports.d.ts.map +1 -1
  21. package/dist/ir/builder/imports.js +20 -31
  22. package/dist/ir/builder/imports.js.map +1 -1
  23. package/dist/ir/builder/orchestrator.d.ts +10 -1
  24. package/dist/ir/builder/orchestrator.d.ts.map +1 -1
  25. package/dist/ir/builder/orchestrator.js +25 -14
  26. package/dist/ir/builder/orchestrator.js.map +1 -1
  27. package/dist/ir/builder/statements.d.ts +7 -1
  28. package/dist/ir/builder/statements.d.ts.map +1 -1
  29. package/dist/ir/builder/statements.js +7 -2
  30. package/dist/ir/builder/statements.js.map +1 -1
  31. package/dist/ir/builder/types.d.ts +3 -0
  32. package/dist/ir/builder/types.d.ts.map +1 -1
  33. package/dist/ir/builder/validation.d.ts +4 -1
  34. package/dist/ir/builder/validation.d.ts.map +1 -1
  35. package/dist/ir/builder/validation.js +37 -37
  36. package/dist/ir/builder/validation.js.map +1 -1
  37. package/dist/ir/builder.test.js +54 -111
  38. package/dist/ir/builder.test.js.map +1 -1
  39. package/dist/ir/clr-type-mappings.d.ts +42 -0
  40. package/dist/ir/clr-type-mappings.d.ts.map +1 -0
  41. package/dist/ir/clr-type-mappings.js +139 -0
  42. package/dist/ir/clr-type-mappings.js.map +1 -0
  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 +24 -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 +239 -15
  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 +450 -385
  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 +140 -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 +179 -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/statements/control/blocks.d.ts +8 -2
  92. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
  93. package/dist/ir/converters/statements/control/blocks.js +7 -2
  94. package/dist/ir/converters/statements/control/blocks.js.map +1 -1
  95. package/dist/ir/converters/statements/control/conditionals.d.ts +14 -4
  96. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  97. package/dist/ir/converters/statements/control/conditionals.js +19 -10
  98. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  99. package/dist/ir/converters/statements/control/exceptions.d.ts +10 -3
  100. package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -1
  101. package/dist/ir/converters/statements/control/exceptions.js +13 -7
  102. package/dist/ir/converters/statements/control/exceptions.js.map +1 -1
  103. package/dist/ir/converters/statements/control/loops.d.ts +16 -5
  104. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  105. package/dist/ir/converters/statements/control/loops.js +25 -15
  106. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  107. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +3 -2
  108. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
  109. package/dist/ir/converters/statements/declarations/classes/constructors.js +11 -7
  110. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
  111. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -1
  112. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
  113. package/dist/ir/converters/statements/declarations/classes/methods.js +63 -11
  114. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  115. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +2 -1
  116. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
  117. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +60 -40
  118. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
  119. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +6 -2
  120. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
  121. package/dist/ir/converters/statements/declarations/classes/override-detection.js +49 -50
  122. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
  123. package/dist/ir/converters/statements/declarations/classes/properties.d.ts +9 -1
  124. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
  125. package/dist/ir/converters/statements/declarations/classes/properties.js +119 -16
  126. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
  127. package/dist/ir/converters/statements/declarations/enums.d.ts +2 -1
  128. package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -1
  129. package/dist/ir/converters/statements/declarations/enums.js +8 -2
  130. package/dist/ir/converters/statements/declarations/enums.js.map +1 -1
  131. package/dist/ir/converters/statements/declarations/functions.d.ts +2 -1
  132. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
  133. package/dist/ir/converters/statements/declarations/functions.js +11 -6
  134. package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
  135. package/dist/ir/converters/statements/declarations/index.d.ts +3 -1
  136. package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -1
  137. package/dist/ir/converters/statements/declarations/index.js +3 -1
  138. package/dist/ir/converters/statements/declarations/index.js.map +1 -1
  139. package/dist/ir/converters/statements/declarations/interfaces.d.ts +3 -2
  140. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  141. package/dist/ir/converters/statements/declarations/interfaces.js +26 -20
  142. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  143. package/dist/ir/converters/statements/declarations/registry.d.ts +72 -0
  144. package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -1
  145. package/dist/ir/converters/statements/declarations/registry.js +92 -0
  146. package/dist/ir/converters/statements/declarations/registry.js.map +1 -1
  147. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +2 -1
  148. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  149. package/dist/ir/converters/statements/declarations/type-aliases.js +6 -4
  150. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  151. package/dist/ir/converters/statements/declarations/variables.d.ts +11 -1
  152. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  153. package/dist/ir/converters/statements/declarations/variables.js +123 -19
  154. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  155. package/dist/ir/converters/statements/declarations.d.ts +4 -1
  156. package/dist/ir/converters/statements/declarations.d.ts.map +1 -1
  157. package/dist/ir/converters/statements/declarations.js +4 -1
  158. package/dist/ir/converters/statements/declarations.js.map +1 -1
  159. package/dist/ir/converters/statements/helpers.d.ts +4 -3
  160. package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
  161. package/dist/ir/converters/statements/helpers.js +55 -31
  162. package/dist/ir/converters/statements/helpers.js.map +1 -1
  163. package/dist/ir/converters/statements/index.d.ts +1 -1
  164. package/dist/ir/converters/statements/index.d.ts.map +1 -1
  165. package/dist/ir/converters/statements/index.js +2 -1
  166. package/dist/ir/converters/statements/index.js.map +1 -1
  167. package/dist/ir/expression-converter.d.ts +10 -3
  168. package/dist/ir/expression-converter.d.ts.map +1 -1
  169. package/dist/ir/expression-converter.js +150 -56
  170. package/dist/ir/expression-converter.js.map +1 -1
  171. package/dist/ir/hierarchical-bindings-e2e.test.js +10 -6
  172. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
  173. package/dist/ir/index.d.ts +5 -0
  174. package/dist/ir/index.d.ts.map +1 -1
  175. package/dist/ir/index.js +5 -0
  176. package/dist/ir/index.js.map +1 -1
  177. package/dist/ir/no-ts-type-inference.test.d.ts +17 -0
  178. package/dist/ir/no-ts-type-inference.test.d.ts.map +1 -0
  179. package/dist/ir/no-ts-type-inference.test.js +171 -0
  180. package/dist/ir/no-ts-type-inference.test.js.map +1 -0
  181. package/dist/ir/program-context.d.ts +74 -0
  182. package/dist/ir/program-context.d.ts.map +1 -0
  183. package/dist/ir/program-context.js +286 -0
  184. package/dist/ir/program-context.js.map +1 -0
  185. package/dist/ir/statement-converter.d.ts +14 -4
  186. package/dist/ir/statement-converter.d.ts.map +1 -1
  187. package/dist/ir/statement-converter.js +31 -21
  188. package/dist/ir/statement-converter.js.map +1 -1
  189. package/dist/ir/syntax/binding-patterns.d.ts +22 -0
  190. package/dist/ir/syntax/binding-patterns.d.ts.map +1 -0
  191. package/dist/ir/syntax/binding-patterns.js +92 -0
  192. package/dist/ir/syntax/binding-patterns.js.map +1 -0
  193. package/dist/ir/thisarg-inference.test.d.ts +8 -0
  194. package/dist/ir/thisarg-inference.test.d.ts.map +1 -0
  195. package/dist/ir/thisarg-inference.test.js +94 -0
  196. package/dist/ir/thisarg-inference.test.js.map +1 -0
  197. package/dist/ir/type-converter.d.ts +5 -2
  198. package/dist/ir/type-converter.d.ts.map +1 -1
  199. package/dist/ir/type-converter.js +5 -2
  200. package/dist/ir/type-converter.js.map +1 -1
  201. package/dist/ir/type-system/core.d.ts +29 -0
  202. package/dist/ir/type-system/core.d.ts.map +1 -0
  203. package/dist/ir/type-system/core.js +456 -0
  204. package/dist/ir/type-system/core.js.map +1 -0
  205. package/dist/ir/type-system/index.d.ts +21 -0
  206. package/dist/ir/type-system/index.d.ts.map +1 -0
  207. package/dist/ir/type-system/index.js +43 -0
  208. package/dist/ir/type-system/index.js.map +1 -0
  209. package/dist/ir/type-system/internal/handle-types.d.ts +98 -0
  210. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -0
  211. package/dist/ir/type-system/internal/handle-types.js +13 -0
  212. package/dist/ir/type-system/internal/handle-types.js.map +1 -0
  213. package/dist/ir/type-system/internal/nominal-env.d.ts +66 -0
  214. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -0
  215. package/dist/ir/type-system/internal/nominal-env.js +301 -0
  216. package/dist/ir/type-system/internal/nominal-env.js.map +1 -0
  217. package/dist/ir/type-system/internal/type-converter/arrays.d.ts +11 -0
  218. package/dist/ir/type-system/internal/type-converter/arrays.d.ts.map +1 -0
  219. package/dist/ir/{type-converter → type-system/internal/type-converter}/arrays.js +2 -2
  220. package/dist/ir/type-system/internal/type-converter/arrays.js.map +1 -0
  221. package/dist/ir/type-system/internal/type-converter/converter.d.ts +17 -0
  222. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -0
  223. package/dist/ir/type-system/internal/type-converter/converter.js +16 -0
  224. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -0
  225. package/dist/ir/type-system/internal/type-converter/functions.d.ts +14 -0
  226. package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -0
  227. package/dist/ir/type-system/internal/type-converter/functions.js +66 -0
  228. package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -0
  229. package/dist/ir/type-system/internal/type-converter/index.d.ts +11 -0
  230. package/dist/ir/type-system/internal/type-converter/index.d.ts.map +1 -0
  231. package/dist/ir/type-system/internal/type-converter/index.js +11 -0
  232. package/dist/ir/type-system/internal/type-converter/index.js.map +1 -0
  233. package/dist/ir/type-system/internal/type-converter/inference.d.ts +37 -0
  234. package/dist/ir/type-system/internal/type-converter/inference.d.ts.map +1 -0
  235. package/dist/ir/type-system/internal/type-converter/inference.js +32 -0
  236. package/dist/ir/type-system/internal/type-converter/inference.js.map +1 -0
  237. package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.d.ts +1 -1
  238. package/dist/ir/type-system/internal/type-converter/literals.d.ts.map +1 -0
  239. package/dist/ir/type-system/internal/type-converter/literals.js.map +1 -0
  240. package/dist/ir/type-system/internal/type-converter/objects.d.ts +20 -0
  241. package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -0
  242. package/dist/ir/{type-converter → type-system/internal/type-converter}/objects.js +56 -6
  243. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -0
  244. package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.d.ts +3 -2
  245. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -0
  246. package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.js +63 -21
  247. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -0
  248. package/dist/ir/type-system/internal/type-converter/patterns.d.ts +12 -0
  249. package/dist/ir/type-system/internal/type-converter/patterns.d.ts.map +1 -0
  250. package/dist/ir/{type-converter → type-system/internal/type-converter}/patterns.js +22 -6
  251. package/dist/ir/type-system/internal/type-converter/patterns.js.map +1 -0
  252. package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.d.ts +1 -1
  253. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
  254. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -0
  255. package/dist/ir/{type-converter → type-system/internal/type-converter}/references.d.ts +3 -2
  256. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -0
  257. package/dist/ir/type-system/internal/type-converter/references.js +551 -0
  258. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -0
  259. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts +15 -0
  260. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -0
  261. package/dist/ir/type-system/internal/type-converter/unions-intersections.js +22 -0
  262. package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -0
  263. package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.d.ts +23 -36
  264. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -0
  265. package/dist/ir/type-system/internal/type-converter/utility-types.js +879 -0
  266. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -0
  267. package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -0
  268. package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.js +398 -120
  269. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -0
  270. package/dist/ir/type-system/internal/type-converter.d.ts +9 -0
  271. package/dist/ir/type-system/internal/type-converter.d.ts.map +1 -0
  272. package/dist/ir/type-system/internal/type-converter.js +9 -0
  273. package/dist/ir/type-system/internal/type-converter.js.map +1 -0
  274. package/dist/ir/type-system/internal/type-registry.d.ts +107 -0
  275. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
  276. package/dist/ir/type-system/internal/type-registry.js +534 -0
  277. package/dist/ir/type-system/internal/type-registry.js.map +1 -0
  278. package/dist/ir/type-system/internal/universe/alias-table.d.ts +92 -0
  279. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -0
  280. package/dist/ir/type-system/internal/universe/alias-table.js +222 -0
  281. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -0
  282. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +44 -0
  283. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -0
  284. package/dist/ir/type-system/internal/universe/clr-catalog.js +1176 -0
  285. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -0
  286. package/dist/ir/type-system/internal/universe/index.d.ts +26 -0
  287. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -0
  288. package/dist/ir/type-system/internal/universe/index.js +30 -0
  289. package/dist/ir/type-system/internal/universe/index.js.map +1 -0
  290. package/dist/ir/type-system/internal/universe/resolution.d.ts +115 -0
  291. package/dist/ir/type-system/internal/universe/resolution.d.ts.map +1 -0
  292. package/dist/ir/type-system/internal/universe/resolution.js +181 -0
  293. package/dist/ir/type-system/internal/universe/resolution.js.map +1 -0
  294. package/dist/ir/type-system/internal/universe/source-catalog.d.ts +62 -0
  295. package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -0
  296. package/dist/ir/type-system/internal/universe/source-catalog.js +91 -0
  297. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -0
  298. package/dist/ir/type-system/internal/universe/types.d.ts +436 -0
  299. package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -0
  300. package/dist/ir/type-system/internal/universe/types.js +69 -0
  301. package/dist/ir/type-system/internal/universe/types.js.map +1 -0
  302. package/dist/ir/type-system/internal/universe/unified-universe.d.ts +70 -0
  303. package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -0
  304. package/dist/ir/type-system/internal/universe/unified-universe.js +319 -0
  305. package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -0
  306. package/dist/ir/type-system/type-system.d.ts +617 -0
  307. package/dist/ir/type-system/type-system.d.ts.map +1 -0
  308. package/dist/ir/type-system/type-system.js +2420 -0
  309. package/dist/ir/type-system/type-system.js.map +1 -0
  310. package/dist/ir/type-system/types.d.ts +176 -0
  311. package/dist/ir/type-system/types.d.ts.map +1 -0
  312. package/dist/ir/type-system/types.js +80 -0
  313. package/dist/ir/type-system/types.js.map +1 -0
  314. package/dist/ir/type-universe/assembly-catalog.d.ts +44 -0
  315. package/dist/ir/type-universe/assembly-catalog.d.ts.map +1 -0
  316. package/dist/ir/type-universe/assembly-catalog.js +532 -0
  317. package/dist/ir/type-universe/assembly-catalog.js.map +1 -0
  318. package/dist/ir/type-universe/assembly-catalog.test.d.ts +7 -0
  319. package/dist/ir/type-universe/assembly-catalog.test.d.ts.map +1 -0
  320. package/dist/ir/type-universe/assembly-catalog.test.js +105 -0
  321. package/dist/ir/type-universe/assembly-catalog.test.js.map +1 -0
  322. package/dist/ir/type-universe/index.d.ts +19 -0
  323. package/dist/ir/type-universe/index.d.ts.map +1 -0
  324. package/dist/ir/type-universe/index.js +21 -0
  325. package/dist/ir/type-universe/index.js.map +1 -0
  326. package/dist/ir/type-universe/types.d.ts +436 -0
  327. package/dist/ir/type-universe/types.d.ts.map +1 -0
  328. package/dist/ir/type-universe/types.js +69 -0
  329. package/dist/ir/type-universe/types.js.map +1 -0
  330. package/dist/ir/type-universe/unified-catalog.d.ts +70 -0
  331. package/dist/ir/type-universe/unified-catalog.d.ts.map +1 -0
  332. package/dist/ir/type-universe/unified-catalog.js +319 -0
  333. package/dist/ir/type-universe/unified-catalog.js.map +1 -0
  334. package/dist/ir/type-universe/unified-catalog.test.d.ts +7 -0
  335. package/dist/ir/type-universe/unified-catalog.test.d.ts.map +1 -0
  336. package/dist/ir/type-universe/unified-catalog.test.js +135 -0
  337. package/dist/ir/type-universe/unified-catalog.test.js.map +1 -0
  338. package/dist/ir/types/expressions.d.ts +74 -2
  339. package/dist/ir/types/expressions.d.ts.map +1 -1
  340. package/dist/ir/types/helpers.d.ts +22 -2
  341. package/dist/ir/types/helpers.d.ts.map +1 -1
  342. package/dist/ir/types/index.d.ts +4 -2
  343. package/dist/ir/types/index.d.ts.map +1 -1
  344. package/dist/ir/types/index.js +1 -0
  345. package/dist/ir/types/index.js.map +1 -1
  346. package/dist/ir/types/ir-substitution.d.ts +144 -0
  347. package/dist/ir/types/ir-substitution.d.ts.map +1 -0
  348. package/dist/ir/types/ir-substitution.js +569 -0
  349. package/dist/ir/types/ir-substitution.js.map +1 -0
  350. package/dist/ir/types/ir-types.d.ts +9 -3
  351. package/dist/ir/types/ir-types.d.ts.map +1 -1
  352. package/dist/ir/types/numeric-helpers.d.ts +2 -1
  353. package/dist/ir/types/numeric-helpers.d.ts.map +1 -1
  354. package/dist/ir/types/numeric-helpers.js +9 -3
  355. package/dist/ir/types/numeric-helpers.js.map +1 -1
  356. package/dist/ir/types/statements.d.ts +13 -1
  357. package/dist/ir/types/statements.d.ts.map +1 -1
  358. package/dist/ir/types.d.ts +1 -1
  359. package/dist/ir/types.d.ts.map +1 -1
  360. package/dist/ir/types.js.map +1 -1
  361. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  362. package/dist/ir/validation/anonymous-type-lowering-pass.js +165 -7
  363. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  364. package/dist/ir/validation/arrow-return-finalization-pass.d.ts +28 -0
  365. package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -0
  366. package/dist/ir/validation/arrow-return-finalization-pass.js +416 -0
  367. package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -0
  368. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  369. package/dist/ir/validation/attribute-collection-pass.js +40 -6
  370. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  371. package/dist/ir/validation/attribute-collection-pass.test.js +43 -36
  372. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  373. package/dist/ir/validation/index.d.ts +3 -0
  374. package/dist/ir/validation/index.d.ts.map +1 -1
  375. package/dist/ir/validation/index.js +3 -0
  376. package/dist/ir/validation/index.js.map +1 -1
  377. package/dist/ir/validation/numeric-coercion-pass.d.ts +22 -16
  378. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
  379. package/dist/ir/validation/numeric-coercion-pass.js +159 -51
  380. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
  381. package/dist/ir/validation/numeric-invariants.test.js +72 -108
  382. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  383. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  384. package/dist/ir/validation/numeric-proof-pass.js +71 -23
  385. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  386. package/dist/ir/validation/rest-type-synthesis-pass.d.ts +24 -0
  387. package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -0
  388. package/dist/ir/validation/rest-type-synthesis-pass.js +417 -0
  389. package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -0
  390. package/dist/ir/validation/soundness-gate.d.ts +11 -1
  391. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  392. package/dist/ir/validation/soundness-gate.js +42 -10
  393. package/dist/ir/validation/soundness-gate.js.map +1 -1
  394. package/dist/ir/validation/soundness-gate.test.js +19 -2
  395. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  396. package/dist/ir/validation/virtual-marking-pass.d.ts +16 -0
  397. package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -0
  398. package/dist/ir/validation/virtual-marking-pass.js +77 -0
  399. package/dist/ir/validation/virtual-marking-pass.js.map +1 -0
  400. package/dist/ir/validation/yield-lowering-pass.test.js +2 -2
  401. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  402. package/dist/program/bindings.d.ts +28 -0
  403. package/dist/program/bindings.d.ts.map +1 -1
  404. package/dist/program/bindings.js +204 -2
  405. package/dist/program/bindings.js.map +1 -1
  406. package/dist/program/bindings.test.js +30 -0
  407. package/dist/program/bindings.test.js.map +1 -1
  408. package/dist/program/creation.d.ts.map +1 -1
  409. package/dist/program/creation.js +251 -4
  410. package/dist/program/creation.js.map +1 -1
  411. package/dist/program/dependency-graph.d.ts.map +1 -1
  412. package/dist/program/dependency-graph.js +25 -25
  413. package/dist/program/dependency-graph.js.map +1 -1
  414. package/dist/program/diagnostics.d.ts.map +1 -1
  415. package/dist/program/diagnostics.js +6 -0
  416. package/dist/program/diagnostics.js.map +1 -1
  417. package/dist/program/index.d.ts +1 -1
  418. package/dist/program/index.d.ts.map +1 -1
  419. package/dist/program/types.d.ts +8 -8
  420. package/dist/program/types.d.ts.map +1 -1
  421. package/dist/resolver/clr-bindings-resolver.d.ts +1 -0
  422. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  423. package/dist/resolver/clr-bindings-resolver.js +90 -34
  424. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  425. package/dist/resolver/import-resolution.d.ts +16 -1
  426. package/dist/resolver/import-resolution.d.ts.map +1 -1
  427. package/dist/resolver/import-resolution.js +29 -12
  428. package/dist/resolver/import-resolution.js.map +1 -1
  429. package/dist/resolver/naming.d.ts +1 -1
  430. package/dist/resolver/naming.d.ts.map +1 -1
  431. package/dist/resolver/naming.js +13 -2
  432. package/dist/resolver/naming.js.map +1 -1
  433. package/dist/resolver.test.js +4 -0
  434. package/dist/resolver.test.js.map +1 -1
  435. package/dist/symbol-table/builder.d.ts +3 -1
  436. package/dist/symbol-table/builder.d.ts.map +1 -1
  437. package/dist/symbol-table/builder.js +9 -8
  438. package/dist/symbol-table/builder.js.map +1 -1
  439. package/dist/symbol-table/types.d.ts +2 -2
  440. package/dist/symbol-table/types.d.ts.map +1 -1
  441. package/dist/types/diagnostic.d.ts +12 -2
  442. package/dist/types/diagnostic.d.ts.map +1 -1
  443. package/dist/types/diagnostic.js +5 -1
  444. package/dist/types/diagnostic.js.map +1 -1
  445. package/dist/validation/extension-methods.d.ts +17 -0
  446. package/dist/validation/extension-methods.d.ts.map +1 -0
  447. package/dist/validation/extension-methods.js +133 -0
  448. package/dist/validation/extension-methods.js.map +1 -0
  449. package/dist/validation/generics.d.ts.map +1 -1
  450. package/dist/validation/generics.js +1 -129
  451. package/dist/validation/generics.js.map +1 -1
  452. package/dist/validation/imports.js +1 -1
  453. package/dist/validation/imports.js.map +1 -1
  454. package/dist/validation/index.d.ts +1 -0
  455. package/dist/validation/index.d.ts.map +1 -1
  456. package/dist/validation/index.js +1 -0
  457. package/dist/validation/index.js.map +1 -1
  458. package/dist/validation/orchestrator.d.ts.map +1 -1
  459. package/dist/validation/orchestrator.js +2 -0
  460. package/dist/validation/orchestrator.js.map +1 -1
  461. package/dist/validation/static-safety.d.ts +1 -0
  462. package/dist/validation/static-safety.d.ts.map +1 -1
  463. package/dist/validation/static-safety.js +366 -96
  464. package/dist/validation/static-safety.js.map +1 -1
  465. package/dist/validator.test.js +77 -1
  466. package/dist/validator.test.js.map +1 -1
  467. package/package.json +2 -2
  468. package/dist/ir/type-converter/arrays.d.ts +0 -10
  469. package/dist/ir/type-converter/arrays.d.ts.map +0 -1
  470. package/dist/ir/type-converter/arrays.js.map +0 -1
  471. package/dist/ir/type-converter/converter.d.ts +0 -6
  472. package/dist/ir/type-converter/converter.d.ts.map +0 -1
  473. package/dist/ir/type-converter/converter.js +0 -6
  474. package/dist/ir/type-converter/converter.js.map +0 -1
  475. package/dist/ir/type-converter/functions.d.ts +0 -10
  476. package/dist/ir/type-converter/functions.d.ts.map +0 -1
  477. package/dist/ir/type-converter/functions.js +0 -15
  478. package/dist/ir/type-converter/functions.js.map +0 -1
  479. package/dist/ir/type-converter/index.d.ts +0 -7
  480. package/dist/ir/type-converter/index.d.ts.map +0 -1
  481. package/dist/ir/type-converter/index.js +0 -7
  482. package/dist/ir/type-converter/index.js.map +0 -1
  483. package/dist/ir/type-converter/inference.d.ts +0 -32
  484. package/dist/ir/type-converter/inference.d.ts.map +0 -1
  485. package/dist/ir/type-converter/inference.js +0 -297
  486. package/dist/ir/type-converter/inference.js.map +0 -1
  487. package/dist/ir/type-converter/literals.d.ts.map +0 -1
  488. package/dist/ir/type-converter/literals.js.map +0 -1
  489. package/dist/ir/type-converter/objects.d.ts +0 -16
  490. package/dist/ir/type-converter/objects.d.ts.map +0 -1
  491. package/dist/ir/type-converter/objects.js.map +0 -1
  492. package/dist/ir/type-converter/orchestrator.d.ts.map +0 -1
  493. package/dist/ir/type-converter/orchestrator.js.map +0 -1
  494. package/dist/ir/type-converter/patterns.d.ts +0 -10
  495. package/dist/ir/type-converter/patterns.d.ts.map +0 -1
  496. package/dist/ir/type-converter/patterns.js.map +0 -1
  497. package/dist/ir/type-converter/primitives.d.ts.map +0 -1
  498. package/dist/ir/type-converter/primitives.js.map +0 -1
  499. package/dist/ir/type-converter/references.d.ts.map +0 -1
  500. package/dist/ir/type-converter/references.js +0 -371
  501. package/dist/ir/type-converter/references.js.map +0 -1
  502. package/dist/ir/type-converter/unions-intersections.d.ts +0 -14
  503. package/dist/ir/type-converter/unions-intersections.d.ts.map +0 -1
  504. package/dist/ir/type-converter/unions-intersections.js +0 -22
  505. package/dist/ir/type-converter/unions-intersections.js.map +0 -1
  506. package/dist/ir/type-converter/utility-types.d.ts.map +0 -1
  507. package/dist/ir/type-converter/utility-types.js +0 -528
  508. package/dist/ir/type-converter/utility-types.js.map +0 -1
  509. package/dist/ir/type-converter/utility-types.test.d.ts.map +0 -1
  510. package/dist/ir/type-converter/utility-types.test.js.map +0 -1
  511. /package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.js +0 -0
  512. /package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +0 -0
  513. /package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.d.ts +0 -0
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Helper functions for expression conversion
3
+ *
4
+ * ALICE'S SPEC: All type resolution goes through TypeSystem.
5
+ * NO getHandleRegistry() calls allowed here.
3
6
  */
4
7
  import * as ts from "typescript";
5
- import { TSONIC_TO_NUMERIC_KIND } from "../../types.js";
6
- import { convertType, convertTsTypeToIr } from "../../type-converter.js";
7
8
  import { getSourceLocation } from "../../../program/diagnostics.js";
8
9
  /**
9
10
  * Get source span for a TypeScript node.
@@ -22,210 +23,186 @@ export const getSourceSpan = (node) => {
22
23
  }
23
24
  };
24
25
  /**
25
- * Check if a TypeScript type is a numeric alias from @tsonic/core.
26
- * Returns true for types like `int`, `byte`, `float`, etc.
26
+ * Derive identifier type from declaration TypeNode (DETERMINISTIC).
27
27
  *
28
- * This is used to prevent numeric intent from leaking through contextual typing.
29
- * When an expression like `a + b` is inside `(a + b) as int`, TypeScript's
30
- * contextual type for the binary is `int`. We must NOT use this contextual type
31
- * for inferredType because it would make the binary appear to have numeric intent
32
- * when we haven't proven it does.
33
- */
34
- const isNumericAliasType = (tsType) => {
35
- // Check if it's a type alias that resolves to a numeric kind
36
- const symbol = tsType.aliasSymbol ?? tsType.getSymbol();
37
- if (symbol) {
38
- const name = symbol.getName();
39
- if (TSONIC_TO_NUMERIC_KIND.has(name)) {
40
- return true;
41
- }
42
- }
43
- return false;
44
- };
45
- /**
46
- * Attempt to recover numeric intent from a property declaration's type annotation.
28
+ * This function looks up the identifier's declaration and extracts the type
29
+ * from the TypeNode, NOT from TypeScript's computed type. This ensures:
30
+ * - CLR type aliases like `int`, `byte`, `long` are preserved
31
+ * - Types are deterministic and don't depend on TypeScript inference
47
32
  *
48
- * When TypeScript normalizes `int` to `number`, we can still find the original
49
- * annotation in the property's declaration AST.
33
+ * For variables without explicit type annotation (e.g., `const x = createArray()`),
34
+ * derives the type from the initializer's declared return type.
50
35
  *
51
- * GUARDRAILS:
52
- * - Only accepts clean TypeReferenceNode with simple identifier (not qualified names)
53
- * - Only returns if identifier is in TSONIC_TO_NUMERIC_KIND vocabulary
54
- * - Rejects unions, intersections, or complex types
55
- * - CONSERVATIVE: If multiple declarations have conflicting numeric annotations,
56
- * returns undefined to avoid incorrect recovery from partial declaration merges
36
+ * Returns undefined if:
37
+ * - No declaration found
38
+ * - Declaration has no TypeNode and no derivable initializer
39
+ */
40
+ /**
41
+ * Derive the return type of a call expression from its declaration.
57
42
  *
58
- * NOTE: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
59
- * not package-path based. Do not add special casing for @tsonic/core paths.
43
+ * ALICE'S SPEC: Uses TypeSystem.resolveCall() exclusively.
44
+ * This is a simplified version for use in deriveIdentifierType to avoid
45
+ * circular dependencies with calls.ts.
60
46
  */
61
- const tryRecoverNumericReferenceFromPropertyDecl = (propSymbol) => {
62
- const declarations = propSymbol.declarations ?? [];
63
- // Collect all numeric annotations found across declarations
64
- const recoveredNames = new Set();
65
- for (const decl of declarations) {
66
- // Only handle PropertySignature and PropertyDeclaration with type annotation
67
- if ((ts.isPropertySignature(decl) || ts.isPropertyDeclaration(decl)) &&
68
- decl.type) {
69
- const typeNode = decl.type;
70
- // STRICT: Only accept TypeReferenceNode with simple identifier
71
- if (ts.isTypeReferenceNode(typeNode) &&
72
- ts.isIdentifier(typeNode.typeName)) {
73
- const name = typeNode.typeName.text;
74
- // Only if name is in numeric vocabulary
75
- if (TSONIC_TO_NUMERIC_KIND.has(name)) {
76
- recoveredNames.add(name);
77
- }
78
- }
79
- }
80
- }
81
- // CONSERVATIVE: Only return if exactly one numeric annotation was found
82
- // If conflicting (e.g., one says `int`, another says `long`), return undefined
83
- if (recoveredNames.size === 1) {
84
- const names = [...recoveredNames];
85
- const name = names[0];
86
- if (name !== undefined) {
87
- return { kind: "referenceType", name };
88
- }
47
+ const deriveCallReturnType = (node, ctx) => {
48
+ const typeSystem = ctx.typeSystem;
49
+ const sigId = ctx.binding.resolveCallSignature(node);
50
+ if (!sigId)
51
+ return undefined;
52
+ // Use TypeSystem.resolveCall() - returns fully resolved return type
53
+ const resolved = typeSystem.resolveCall({
54
+ sigId,
55
+ argumentCount: node.arguments.length,
56
+ });
57
+ // If TypeSystem returns unknownType, treat it as unresolvable
58
+ if (resolved.returnType.kind === "unknownType") {
59
+ return undefined;
89
60
  }
90
- return undefined;
61
+ return resolved.returnType;
91
62
  };
92
63
  /**
93
- * Attempt to recover numeric intent from a method/function's return type annotation.
94
- *
95
- * For calls like arr.indexOf("x"), if the declaration says `indexOf(...): int`,
96
- * we recover "int" even if checker normalizes to "number".
64
+ * Derive the constructed type from a new expression.
97
65
  *
98
- * STRICT: Only handles common declaration types, not arrow functions or function types.
99
- * CONSERVATIVE: If signature has multiple declarations with conflicting return types,
100
- * returns undefined to avoid incorrect recovery.
101
- *
102
- * NOTE: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
103
- * not package-path based. Do not add special casing for @tsonic/core paths.
66
+ * Phase 15 (Alice's spec): Uses constructor-signature-based logic with resolveCall.
67
+ * This enables deterministic generic inference from argument types.
104
68
  */
105
- const tryRecoverNumericReferenceFromSignatureReturnDecl = (signature) => {
106
- const decl = signature.declaration;
107
- if (!decl)
69
+ const deriveNewExpressionType = (node, ctx) => {
70
+ const typeSystem = ctx.typeSystem;
71
+ // Get constructor signature ID
72
+ const sigId = ctx.binding.resolveConstructorSignature(node);
73
+ if (!sigId)
108
74
  return undefined;
109
- // Get the return type annotation from the declaration
110
- // STRICT: Only accept method/function declarations, not arrow functions
111
- const returnTypeNode = ts.isMethodSignature(decl) ||
112
- ts.isMethodDeclaration(decl) ||
113
- ts.isFunctionDeclaration(decl) ||
114
- ts.isCallSignatureDeclaration(decl)
115
- ? decl.type
75
+ // Extract explicit type arguments
76
+ const explicitTypeArgs = node.typeArguments
77
+ ? node.typeArguments.map((ta) => typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(ta)))
116
78
  : undefined;
117
- if (!returnTypeNode)
118
- return undefined;
119
- // STRICT: Only accept TypeReferenceNode with simple identifier
120
- if (ts.isTypeReferenceNode(returnTypeNode) &&
121
- ts.isIdentifier(returnTypeNode.typeName)) {
122
- const name = returnTypeNode.typeName.text;
123
- if (TSONIC_TO_NUMERIC_KIND.has(name)) {
124
- return { kind: "referenceType", name };
79
+ // Derive argTypes conservatively from syntax (similar to deriveTypeFromInitializer)
80
+ const argTypes = [];
81
+ const args = node.arguments ?? [];
82
+ for (const arg of args) {
83
+ if (ts.isSpreadElement(arg)) {
84
+ argTypes.push(undefined);
85
+ }
86
+ else if (ts.isNumericLiteral(arg)) {
87
+ argTypes.push({ kind: "primitiveType", name: "number" });
88
+ }
89
+ else if (ts.isStringLiteral(arg)) {
90
+ argTypes.push({ kind: "primitiveType", name: "string" });
91
+ }
92
+ else if (arg.kind === ts.SyntaxKind.TrueKeyword ||
93
+ arg.kind === ts.SyntaxKind.FalseKeyword) {
94
+ argTypes.push({ kind: "primitiveType", name: "boolean" });
95
+ }
96
+ else if (ts.isIdentifier(arg)) {
97
+ argTypes.push(deriveIdentifierType(arg, ctx));
98
+ }
99
+ else if (ts.isNewExpression(arg)) {
100
+ // Recursive call for nested new expressions
101
+ argTypes.push(deriveNewExpressionType(arg, ctx));
102
+ }
103
+ else {
104
+ argTypes.push(undefined);
125
105
  }
126
106
  }
127
- return undefined;
107
+ // Resolve the constructor call with argTypes for inference
108
+ const resolved = typeSystem.resolveCall({
109
+ sigId,
110
+ argumentCount: args.length,
111
+ explicitTypeArgs,
112
+ argTypes,
113
+ });
114
+ // Return the resolved returnType (the constructed type)
115
+ if (resolved.returnType.kind === "unknownType") {
116
+ return undefined;
117
+ }
118
+ return resolved.returnType;
128
119
  };
129
120
  /**
130
- * Helper to get inferred type from TypeScript node
131
- * Prefers contextual type (from assignment target, return position, etc.)
132
- * over literal type to handle cases like empty arrays `[]` correctly.
121
+ * Derive type from an initializer expression.
133
122
  *
134
- * IMPORTANT: For numeric types, we do NOT use contextual type. This prevents
135
- * numeric intent from leaking through TypeScript's contextual typing.
136
- * The `numericNarrowing` IR node is the ONLY source of numeric intent.
123
+ * DETERMINISTIC: Only uses TypeNodes from declarations, not TS type inference.
124
+ * Returns undefined if type cannot be determined from declarations alone.
137
125
  */
138
- export const getInferredType = (node, checker) => {
139
- try {
140
- // Get the actual type first
141
- const actualType = checker.getTypeAtLocation(node);
142
- // Try contextual type (from assignment target, parameter, return, etc.)
143
- // This is essential for empty arrays: [] has literal type never[] but contextual
144
- // type Player[] when assigned to a Player[] variable
145
- const expr = ts.isExpression(node) ? node : undefined;
146
- const contextualType = expr ? checker.getContextualType(expr) : undefined;
147
- // CRITICAL: Do NOT use contextual type if it's a numeric alias.
148
- // This prevents numeric intent from leaking into inner expressions.
149
- // Example: (a + b) as int - the binary should NOT have int intent from contextual typing.
150
- // Only the numericNarrowing node should carry the intent.
151
- const tsType = contextualType && !isNumericAliasType(contextualType)
152
- ? contextualType
153
- : actualType;
154
- // First try typeToTypeNode for simple types
155
- const typeNode = checker.typeToTypeNode(tsType, node, ts.NodeBuilderFlags.None);
156
- // If typeNode conversion works, use convertType
157
- const result = typeNode
158
- ? convertType(typeNode, checker)
159
- : // Fallback: use convertTsTypeToIr directly for complex types
160
- // This handles intersection types like List_1$instance<T> that can't be converted to TypeNodes
161
- convertTsTypeToIr(tsType, checker);
162
- // DECLARATION RECOVERY: If checker returned primitive "number", try to recover
163
- // numeric intent from the declaration AST. TypeScript sometimes normalizes type
164
- // aliases like `int` to plain `number`, losing the alias information.
165
- //
166
- // IMPORTANT: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
167
- // not package-path based. We recognize `int`, `long`, `byte`, etc. by NAME only.
168
- // Do not add special casing for "@tsonic/core" or other package paths.
169
- if (result?.kind === "primitiveType" && result.name === "number") {
170
- // For property access like arr.length, check the property declaration
171
- if (ts.isPropertyAccessExpression(node)) {
172
- const objType = checker.getTypeAtLocation(node.expression);
173
- const propName = node.name.text;
174
- const propSymbol = checker.getPropertyOfType(objType, propName);
175
- if (propSymbol) {
176
- const recovered = tryRecoverNumericReferenceFromPropertyDecl(propSymbol);
177
- if (recovered) {
178
- return recovered; // Return referenceType("int") instead of primitiveType("number")
179
- }
180
- }
181
- }
182
- // For call expressions like arr.indexOf("x"), check the signature return type
183
- if (ts.isCallExpression(node)) {
184
- const signature = checker.getResolvedSignature(node);
185
- if (signature) {
186
- const recovered = tryRecoverNumericReferenceFromSignatureReturnDecl(signature);
187
- if (recovered) {
188
- return recovered;
189
- }
126
+ const deriveTypeFromInitializer = (initializer, ctx) => {
127
+ // Call expression: const arr = createArray()
128
+ if (ts.isCallExpression(initializer)) {
129
+ return deriveCallReturnType(initializer, ctx);
130
+ }
131
+ // New expression: const list = new List<int>()
132
+ if (ts.isNewExpression(initializer)) {
133
+ return deriveNewExpressionType(initializer, ctx);
134
+ }
135
+ // Identifier: const y = x (derive type from x's declaration)
136
+ if (ts.isIdentifier(initializer)) {
137
+ // Recursive call - will look up the identifier's declaration
138
+ // Note: This uses the main function, which is defined below
139
+ // TypeScript hoisting makes this work
140
+ return deriveIdentifierType(initializer, ctx);
141
+ }
142
+ // Literals - derive from the literal itself
143
+ if (ts.isNumericLiteral(initializer)) {
144
+ return { kind: "primitiveType", name: "number" };
145
+ }
146
+ if (ts.isStringLiteral(initializer)) {
147
+ return { kind: "primitiveType", name: "string" };
148
+ }
149
+ if (initializer.kind === ts.SyntaxKind.TrueKeyword ||
150
+ initializer.kind === ts.SyntaxKind.FalseKeyword) {
151
+ return { kind: "primitiveType", name: "boolean" };
152
+ }
153
+ // Array literal - return Array type (element type from first element if possible)
154
+ if (ts.isArrayLiteralExpression(initializer)) {
155
+ // For array literals, we can try to derive element type from first element
156
+ if (initializer.elements.length > 0) {
157
+ const firstElem = initializer.elements[0];
158
+ if (firstElem && !ts.isSpreadElement(firstElem)) {
159
+ const elementType = deriveTypeFromInitializer(firstElem, ctx);
160
+ if (elementType) {
161
+ return { kind: "arrayType", elementType };
190
162
  }
191
163
  }
192
164
  }
193
- return result;
165
+ // Empty array or couldn't derive element type
166
+ return undefined;
194
167
  }
195
- catch {
196
- // If type extraction fails, return undefined
168
+ // Property access: const len = arr.length (need to trace through)
169
+ // Member access typing is complex - defer to undefined for now
170
+ // The proof pass will handle this
171
+ return undefined;
172
+ };
173
+ export const deriveIdentifierType = (node, ctx) => {
174
+ const typeSystem = ctx.typeSystem;
175
+ const declId = ctx.binding.resolveIdentifier(node);
176
+ if (!declId)
177
+ return undefined;
178
+ // ALICE'S SPEC: Use TypeSystem.typeOfDecl() exclusively
179
+ const declType = typeSystem.typeOfDecl(declId);
180
+ // TypeSystem returns unknownType if it can't resolve - treat as unresolvable
181
+ if (declType.kind === "unknownType") {
197
182
  return undefined;
198
183
  }
184
+ return declType;
199
185
  };
200
186
  /**
201
- * Extract type arguments from a call or new expression
202
- * This captures both explicit type arguments and inferred ones
187
+ * Extract explicit type arguments from a call or new expression.
188
+ *
189
+ * DETERMINISTIC TYPING: Only returns type arguments that are explicitly
190
+ * specified in the source code. Does NOT use TypeScript's type inference
191
+ * to infer type arguments. For inferred type arguments, use expectedType
192
+ * threading in the caller (Step 6 of deterministic typing).
203
193
  */
204
- export const extractTypeArguments = (node, checker) => {
194
+ export const extractTypeArguments = (node, ctx) => {
205
195
  try {
206
- // First check for explicit type arguments
196
+ // Only return explicitly specified type arguments
197
+ // DETERMINISTIC: No typeToTypeNode for inferred type args
207
198
  if (node.typeArguments && node.typeArguments.length > 0) {
208
- return node.typeArguments.map((typeArg) => convertType(typeArg, checker));
209
- }
210
- // Try to get inferred type arguments from resolved signature
211
- const signature = checker.getResolvedSignature(node);
212
- if (!signature) {
213
- return undefined;
214
- }
215
- const typeParameters = signature.typeParameters;
216
- if (!typeParameters || typeParameters.length === 0) {
217
- return undefined;
199
+ // PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
200
+ const typeSystem = ctx.typeSystem;
201
+ return node.typeArguments.map((typeArg) => typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(typeArg)));
218
202
  }
219
- // Get the type arguments inferred by the checker
220
- const typeArgs = [];
221
- for (const typeParam of typeParameters) {
222
- // Try to resolve the instantiated type for this parameter
223
- const typeNode = checker.typeToTypeNode(typeParam, node, ts.NodeBuilderFlags.None);
224
- if (typeNode) {
225
- typeArgs.push(convertType(typeNode, checker));
226
- }
227
- }
228
- return typeArgs.length > 0 ? typeArgs : undefined;
203
+ // No explicit type arguments - return undefined
204
+ // The caller should use expectedType threading if type args are needed
205
+ return undefined;
229
206
  }
230
207
  catch {
231
208
  return undefined;
@@ -234,36 +211,27 @@ export const extractTypeArguments = (node, checker) => {
234
211
  /**
235
212
  * Check if a call/new expression requires specialization
236
213
  * Returns true for conditional types, infer, variadic generics, this typing
214
+ *
215
+ * DETERMINISTIC: Uses Binding API to resolve signatures and extract declaration info.
237
216
  */
238
- export const checkIfRequiresSpecialization = (node, checker) => {
217
+ export const checkIfRequiresSpecialization = (node, ctx) => {
239
218
  try {
240
- const signature = checker.getResolvedSignature(node);
241
- if (!signature || !signature.declaration) {
219
+ // Handle both CallExpression and NewExpression
220
+ const sigId = ts.isCallExpression(node)
221
+ ? ctx.binding.resolveCallSignature(node)
222
+ : ctx.binding.resolveConstructorSignature(node);
223
+ if (!sigId)
242
224
  return false;
243
- }
244
- const decl = signature.declaration;
225
+ // ALICE'S SPEC: Use TypeSystem for all type checks
226
+ const typeSystem = ctx.typeSystem;
227
+ // ALICE'S SPEC (Phase 5): Use semantic methods instead of getSignatureInfo
245
228
  // Check for conditional return types
246
- if (ts.isFunctionDeclaration(decl) ||
247
- ts.isMethodDeclaration(decl) ||
248
- ts.isFunctionTypeNode(decl)) {
249
- if (decl.type && ts.isConditionalTypeNode(decl.type)) {
250
- return true;
251
- }
229
+ if (typeSystem.signatureHasConditionalReturn(sigId)) {
230
+ return true;
252
231
  }
253
- // Check for variadic type parameters (rest parameters with generic types)
254
- const typeParameters = signature.typeParameters;
255
- if (typeParameters) {
256
- for (const typeParam of typeParameters) {
257
- const constraint = typeParam.getConstraint();
258
- if (constraint) {
259
- const constraintStr = checker.typeToString(constraint);
260
- // Check for unknown[] which indicates variadic
261
- if (constraintStr.includes("unknown[]") ||
262
- constraintStr.includes("any[]")) {
263
- return true;
264
- }
265
- }
266
- }
232
+ // Check for variadic type parameters (e.g., T extends unknown[])
233
+ if (typeSystem.signatureHasVariadicTypeParams(sigId)) {
234
+ return true;
267
235
  }
268
236
  return false;
269
237
  }
@@ -328,56 +296,91 @@ export const isAssignmentOperator = (token) => {
328
296
  token.kind <= ts.SyntaxKind.LastAssignment);
329
297
  };
330
298
  /**
331
- * Get the contextual type for an expression (for object literals).
332
- * Returns an IrType with type arguments if the contextual type is a named type
333
- * (interface, class, generic), or undefined if it's an anonymous/primitive type.
299
+ * Get the contextual type for an expression from explicit TypeNodes.
300
+ *
301
+ * DETERMINISTIC TYPING: Only extracts types from explicit TypeNodes in the
302
+ * source code. Does NOT use TypeScript's getContextualType (banned API).
303
+ * Returns undefined if no explicit type annotation is found.
334
304
  *
335
- * This captures the full type including generic type arguments (e.g., Container<T>),
336
- * which is essential for emitting correct C# object initializers.
305
+ * For complete expectedType threading (covering all contexts), see Step 6
306
+ * of deterministic typing implementation.
337
307
  */
338
- export const getContextualType = (node, checker) => {
308
+ export const getContextualType = (node, ctx) => {
339
309
  try {
340
- const contextualType = checker.getContextualType(node);
341
- if (!contextualType) {
342
- return undefined;
310
+ // PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
311
+ const typeSystem = ctx.typeSystem;
312
+ const parent = node.parent;
313
+ // Variable declaration: const x: Foo = { ... }
314
+ if (ts.isVariableDeclaration(parent) && parent.type) {
315
+ return typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(parent.type));
343
316
  }
344
- // Check if it's an object type with a symbol (named type)
345
- const symbol = contextualType.getSymbol();
346
- if (!symbol) {
347
- return undefined;
317
+ // Return statement: function f(): Foo { return { ... } }
318
+ if (ts.isReturnStatement(parent)) {
319
+ // Walk up to find enclosing function
320
+ let current = parent;
321
+ while (current && !ts.isFunctionLike(current)) {
322
+ current = current.parent;
323
+ }
324
+ if (current && ts.isFunctionLike(current) && current.type) {
325
+ return typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(current.type));
326
+ }
348
327
  }
349
- // Get the symbol name
350
- const name = symbol.getName();
351
- // Skip anonymous types and built-in types
352
- if (name === "__type" || name === "__object" || name === "Object") {
353
- return undefined;
328
+ // Property assignment in object literal: { prop: { ... } }
329
+ if (ts.isPropertyAssignment(parent)) {
330
+ const propName = ts.isIdentifier(parent.name)
331
+ ? parent.name.text
332
+ : ts.isStringLiteral(parent.name)
333
+ ? parent.name.text
334
+ : undefined;
335
+ if (propName && ts.isObjectLiteralExpression(parent.parent)) {
336
+ const parentType = getContextualType(parent.parent, ctx);
337
+ if (parentType?.kind === "objectType") {
338
+ const member = parentType.members.find((m) => m.kind === "propertySignature" && m.name === propName);
339
+ if (member?.kind === "propertySignature") {
340
+ return member.type;
341
+ }
342
+ }
343
+ // For referenceType, we would need TypeRegistry to find member type
344
+ // This will be handled in Step 6 with full expectedType threading
345
+ }
354
346
  }
355
- // Check that it's actually a class or interface declaration
356
- const declarations = symbol.getDeclarations();
357
- if (declarations && declarations.length > 0) {
358
- const firstDecl = declarations[0];
359
- if (firstDecl &&
360
- (ts.isInterfaceDeclaration(firstDecl) ||
361
- ts.isClassDeclaration(firstDecl) ||
362
- ts.isTypeAliasDeclaration(firstDecl))) {
363
- // Convert the full contextual type to IR, capturing type arguments
364
- return convertTsTypeToIr(contextualType, checker);
347
+ // Array element: const arr: Foo[] = [{ ... }]
348
+ if (ts.isArrayLiteralExpression(parent)) {
349
+ const arrayType = getContextualType(parent, ctx);
350
+ if (arrayType?.kind === "arrayType") {
351
+ return arrayType.elementType;
365
352
  }
366
353
  }
354
+ // Call argument: f({ ... }) where f(x: Foo)
355
+ // Use TypeSystem.resolveCall() to get parameter types
356
+ if (ts.isCallExpression(parent) || ts.isNewExpression(parent)) {
357
+ const argIndex = parent.arguments
358
+ ? parent.arguments.indexOf(node)
359
+ : -1;
360
+ if (argIndex >= 0) {
361
+ // Handle both CallExpression and NewExpression
362
+ const sigId = ts.isCallExpression(parent)
363
+ ? ctx.binding.resolveCallSignature(parent)
364
+ : ctx.binding.resolveConstructorSignature(parent);
365
+ if (sigId) {
366
+ // ALICE'S SPEC: Use TypeSystem.resolveCall() for parameter types
367
+ const resolved = typeSystem.resolveCall({
368
+ sigId,
369
+ argumentCount: parent.arguments?.length ?? 0,
370
+ });
371
+ const paramType = resolved.parameterTypes[argIndex];
372
+ if (paramType && paramType.kind !== "unknownType") {
373
+ return paramType;
374
+ }
375
+ }
376
+ }
377
+ }
378
+ // DETERMINISTIC: No fallback to checker.getContextualType
379
+ // Return undefined if we can't find an explicit type annotation
367
380
  return undefined;
368
381
  }
369
382
  catch {
370
383
  return undefined;
371
384
  }
372
385
  };
373
- /**
374
- * @deprecated Use getContextualType instead - returns IrType with type arguments
375
- */
376
- export const getContextualTypeName = (node, checker) => {
377
- const irType = getContextualType(node, checker);
378
- if (irType && irType.kind === "referenceType") {
379
- return irType.name;
380
- }
381
- return undefined;
382
- };
383
386
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAa,EAA8B,EAAE;IACzE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,iBAAiB,CACtB,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,CAC3B,IAAuB,EACvB,GAAmB,EACC,EAAE;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAElC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,oEAAoE;IACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC;QACtC,KAAK;QACL,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;KACrC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC7B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,CAC9B,IAAsB,EACtB,GAAmB,EACC,EAAE;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAElC,+BAA+B;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa;QACzC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC5B,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAC7D;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,oFAAoF;IACpF,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,IACL,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YACtC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,EACvC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,4CAA4C;YAC5C,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC;QACtC,KAAK;QACL,aAAa,EAAE,IAAI,CAAC,MAAM;QAC1B,gBAAgB;QAChB,QAAQ;KACT,CAAC,CAAC;IAEH,wDAAwD;IACxD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC7B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,CAChC,WAA0B,EAC1B,GAAmB,EACC,EAAE;IACtB,6CAA6C;IAC7C,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,+CAA+C;IAC/C,IAAI,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,uBAAuB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,IAAI,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,6DAA6D;QAC7D,4DAA4D;QAC5D,sCAAsC;QACtC,OAAO,oBAAoB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,4CAA4C;IAC5C,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACnD,CAAC;IACD,IACE,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;QAC9C,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,EAC/C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,kFAAkF;IAClF,IAAI,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,2EAA2E;QAC3E,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChD,MAAM,WAAW,GAAG,yBAAyB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC9D,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QACD,8CAA8C;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kEAAkE;IAClE,+DAA+D;IAC/D,kCAAkC;IAElC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAmB,EACnB,GAAmB,EACC,EAAE;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAElC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,wDAAwD;IACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE/C,6EAA6E;IAC7E,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAA0C,EAC1C,GAAmB,EACY,EAAE;IACjC,IAAI,CAAC;QACH,kDAAkD;QAClD,0DAA0D;QAC1D,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,iEAAiE;YACjE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;YAClC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACxC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAClE,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,uEAAuE;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,IAA0C,EAC1C,GAAmB,EACV,EAAE;IACX,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACrC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC;YACxC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,mDAAmD;QACnD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAElC,2EAA2E;QAE3E,qCAAqC;QACrC,IAAI,UAAU,CAAC,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iEAAiE;QACjE,IAAI,UAAU,CAAC,8BAA8B,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAA6B,EACrB,EAAE;IACV,MAAM,WAAW,GAA2B;QAC1C,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG;QAC9B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG;QAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,GAAG;QAClC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG;QAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,GAAG;QACjC,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,IAAI;QAC3C,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI;QACvC,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI;QAC5C,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,KAAK;QAC9C,CAAC,EAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,KAAK;QACnD,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,GAAG;QAClC,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,GAAG;QACrC,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,IAAI;QACzC,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI;QAC5C,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,IAAI;QAC3C,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,IAAI;QACjD,CAAC,EAAE,CAAC,UAAU,CAAC,sCAAsC,CAAC,EAAE,KAAK;QAC7D,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,GAAG;QACnC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG;QAC7B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG;QAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,IAAI;QAC7C,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI;QACjC,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,IAAI;QAC3C,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI;QAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,YAAY;QAC/C,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,GAAG;QAChC,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,IAAI;QACrC,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACtC,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,IAAI;QACzC,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACtC,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,IAAI;QACxC,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,KAAK;QAClD,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,KAAK;QAClD,CAAC,EAAE,CAAC,UAAU,CAAC,iCAAiC,CAAC,EAAE,KAAK;QACxD,CAAC,EAAE,CAAC,UAAU,CAAC,4CAA4C,CAAC,EAAE,MAAM;QACpE,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,IAAI;QAC1C,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI;QACpC,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACtC,CAAC,EAAE,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,KAAK;QACpD,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,KAAK;QACxC,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,KAAK;KACnD,CAAC;IAEF,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AACxC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAA6B,EACpB,EAAE;IACX,OAAO,CACL,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe;QAC3C,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAC3C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAmB,EACnB,GAAmB,EACC,EAAE;IACtB,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,+CAA+C;QAC/C,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACpD,OAAO,UAAU,CAAC,cAAc,CAC9B,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAC3C,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,IAAI,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,qCAAqC;YACrC,IAAI,OAAO,GAAY,MAAM,CAAC;YAC9B,OAAO,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3B,CAAC;YACD,IAAI,OAAO,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC1D,OAAO,UAAU,CAAC,cAAc,CAC9B,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAC5C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,IAAI,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;gBAClB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;oBAClB,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,QAAQ,IAAI,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACzD,IAAI,UAAU,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAC7D,CAAC;oBACF,IAAI,MAAM,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBACzC,OAAO,MAAM,CAAC,IAAI,CAAC;oBACrB,CAAC;gBACH,CAAC;gBACD,oEAAoE;gBACpE,kEAAkE;YACpE,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjD,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,OAAO,SAAS,CAAC,WAAW,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,sDAAsD;QACtD,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS;gBAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAqB,CAAC;gBACjD,CAAC,CAAC,CAAC,CAAC,CAAC;YACP,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAClB,+CAA+C;gBAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;oBACvC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC;oBAC1C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,KAAK,EAAE,CAAC;oBACV,iEAAiE;oBACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC;wBACtC,KAAK;wBACL,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;qBAC7C,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;oBACpD,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAClD,OAAO,SAAS,CAAC;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,gEAAgE;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Expression converters barrel exports
3
3
  */
4
- export { getInferredType, getSourceSpan, extractTypeArguments, checkIfRequiresSpecialization, convertBinaryOperator, isAssignmentOperator, } from "./helpers.js";
4
+ export { getSourceSpan, extractTypeArguments, checkIfRequiresSpecialization, convertBinaryOperator, isAssignmentOperator, deriveIdentifierType, } from "./helpers.js";
5
5
  export { convertLiteral } from "./literals.js";
6
6
  export { convertArrayLiteral, convertObjectLiteral } from "./collections.js";
7
7
  export { convertMemberExpression } from "./access.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}