@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
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Type Universe Type Definitions
3
+ *
4
+ * This module defines the types for the unified type catalog that merges
5
+ * source-authored types (from TS AST) and assembly-authored types (from
6
+ * CLR metadata in bindings.json/metadata.json).
7
+ *
8
+ * INVARIANT INV-CLR: All nominal type identities come from ONE unified catalog.
9
+ * No type query is allowed to "fall back" to parallel logic or parallel stores.
10
+ *
11
+ * Key Types:
12
+ * - TypeId: Canonical identity for any nominal type
13
+ * - NominalEntry: Complete type information from either source or assembly
14
+ * - MemberEntry: Property/method/field information
15
+ * - MethodSignatureEntry: Full method signature with parameters
16
+ */
17
+ // ═══════════════════════════════════════════════════════════════════════════
18
+ // FACTORY FUNCTIONS
19
+ // ═══════════════════════════════════════════════════════════════════════════
20
+ /**
21
+ * Create a TypeId from components.
22
+ */
23
+ export const makeTypeId = (stableId, clrName, assemblyName, tsName) => ({
24
+ stableId,
25
+ clrName,
26
+ assemblyName,
27
+ tsName,
28
+ });
29
+ /**
30
+ * Parse a stableId into assemblyName and clrName.
31
+ */
32
+ export const parseStableId = (stableId) => {
33
+ const colonIndex = stableId.indexOf(":");
34
+ if (colonIndex === -1)
35
+ return undefined;
36
+ return {
37
+ assemblyName: stableId.slice(0, colonIndex),
38
+ clrName: stableId.slice(colonIndex + 1),
39
+ };
40
+ };
41
+ // ═══════════════════════════════════════════════════════════════════════════
42
+ // PRIMITIVE ↔ NOMINAL MAPPINGS
43
+ // ═══════════════════════════════════════════════════════════════════════════
44
+ /**
45
+ * Mapping from TS primitive type names to their CLR stableIds.
46
+ *
47
+ * This enables normalizing `primitiveType("string")` to the canonical
48
+ * `System.String` nominal type for member lookups.
49
+ */
50
+ export const PRIMITIVE_TO_STABLE_ID = new Map([
51
+ ["string", "System.Private.CoreLib:System.String"],
52
+ ["number", "System.Private.CoreLib:System.Double"],
53
+ ["int", "System.Private.CoreLib:System.Int32"],
54
+ ["boolean", "System.Private.CoreLib:System.Boolean"],
55
+ ["char", "System.Private.CoreLib:System.Char"],
56
+ ]);
57
+ /**
58
+ * Mapping from CLR stableIds back to TS primitive type names.
59
+ *
60
+ * This enables the emitter to use primitive syntax when appropriate.
61
+ */
62
+ export const STABLE_ID_TO_PRIMITIVE = new Map([
63
+ ["System.Private.CoreLib:System.String", "string"],
64
+ ["System.Private.CoreLib:System.Double", "number"],
65
+ ["System.Private.CoreLib:System.Int32", "int"],
66
+ ["System.Private.CoreLib:System.Boolean", "boolean"],
67
+ ["System.Private.CoreLib:System.Char", "char"],
68
+ ]);
69
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ir/type-universe/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwdH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAAgB,EAChB,OAAe,EACf,YAAoB,EACpB,MAAc,EACN,EAAE,CAAC,CAAC;IACZ,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,MAAM;CACP,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgB,EACuC,EAAE;IACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QAC3C,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;KACxC,CAAC;AACJ,CAAC,CAAC;AAEF,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAgC,IAAI,GAAG,CAAC;IACzE,CAAC,QAAQ,EAAE,sCAAsC,CAAC;IAClD,CAAC,QAAQ,EAAE,sCAAsC,CAAC;IAClD,CAAC,KAAK,EAAE,qCAAqC,CAAC;IAC9C,CAAC,SAAS,EAAE,uCAAuC,CAAC;IACpD,CAAC,MAAM,EAAE,oCAAoC,CAAC;CAC/C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAgC,IAAI,GAAG,CAAC;IACzE,CAAC,sCAAsC,EAAE,QAAQ,CAAC;IAClD,CAAC,sCAAsC,EAAE,QAAQ,CAAC;IAClD,CAAC,qCAAqC,EAAE,KAAK,CAAC;IAC9C,CAAC,uCAAuC,EAAE,SAAS,CAAC;IACpD,CAAC,oCAAoC,EAAE,MAAM,CAAC;CAC/C,CAAC,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Unified Type Catalog
3
+ *
4
+ * Merges source-authored types (from TypeRegistry) and assembly-authored
5
+ * types (from AssemblyTypeCatalog) into a single unified lookup table.
6
+ *
7
+ * INVARIANT INV-CLR: This is THE source of truth for all type queries.
8
+ * No fallback paths allowed. If a type isn't in this catalog, it doesn't exist.
9
+ *
10
+ * Design:
11
+ * - Source types get stableIds generated as "{projectName}:{fullyQualifiedName}"
12
+ * - Assembly types keep their original stableIds from metadata.json
13
+ * - Lookups by tsName, clrName, or stableId all work uniformly
14
+ */
15
+ import type { IrType } from "../types/index.js";
16
+ import type { TypeId, MemberEntry, AssemblyTypeCatalog, UnifiedTypeCatalog } from "./types.js";
17
+ import type { TypeRegistry } from "../type-system/internal/type-registry.js";
18
+ /**
19
+ * Build a unified type catalog from source and assembly catalogs.
20
+ *
21
+ * @param sourceRegistry - TypeRegistry containing source-authored types
22
+ * @param assemblyCatalog - AssemblyTypeCatalog containing CLR metadata types
23
+ * @param projectName - Project name for generating source type stableIds
24
+ * @returns UnifiedTypeCatalog with merged type information
25
+ */
26
+ export declare const buildUnifiedTypeCatalog: (sourceRegistry: TypeRegistry | undefined, assemblyCatalog: AssemblyTypeCatalog, projectName?: string) => UnifiedTypeCatalog;
27
+ /**
28
+ * Normalize a primitive IrType to its canonical nominal TypeId.
29
+ *
30
+ * This is the key function for unifying primitive types with their CLR counterparts:
31
+ * - primitiveType("string") → TypeId for System.String
32
+ * - primitiveType("int") → TypeId for System.Int32
33
+ * - primitiveType("number") → TypeId for System.Double
34
+ * - primitiveType("boolean") → TypeId for System.Boolean
35
+ *
36
+ * @param type - The IrType to normalize
37
+ * @param catalog - The unified catalog to look up TypeIds
38
+ * @returns The TypeId if this is a primitive that maps to a nominal, undefined otherwise
39
+ */
40
+ export declare const normalizePrimitiveToTypeId: (type: IrType, catalog: UnifiedTypeCatalog) => TypeId | undefined;
41
+ /**
42
+ * Get the TypeId for an IrType, normalizing primitives as needed.
43
+ *
44
+ * @param type - The IrType to get a TypeId for
45
+ * @param catalog - The unified catalog
46
+ * @returns The TypeId if this type has one, undefined for structural types
47
+ */
48
+ export declare const getTypeId: (type: IrType, catalog: UnifiedTypeCatalog) => TypeId | undefined;
49
+ /**
50
+ * Look up a member on a type, walking the inheritance chain if necessary.
51
+ *
52
+ * @param typeId - The type to start from
53
+ * @param memberName - The member name (TS name)
54
+ * @param catalog - The unified catalog
55
+ * @returns The member entry if found, undefined otherwise
56
+ */
57
+ export declare const lookupMemberWithInheritance: (typeId: TypeId, memberName: string, catalog: UnifiedTypeCatalog) => MemberEntry | undefined;
58
+ /**
59
+ * Get the declared type of a member, normalizing primitives.
60
+ *
61
+ * This is the primary entry point for type queries about members.
62
+ * Returns the IrType of the member, with primitives normalized.
63
+ *
64
+ * @param receiverType - The type of the receiver (object being accessed)
65
+ * @param memberName - The member name (TS name)
66
+ * @param catalog - The unified catalog
67
+ * @returns The member's IrType if found, undefined otherwise
68
+ */
69
+ export declare const getMemberDeclaredType: (receiverType: IrType, memberName: string, catalog: UnifiedTypeCatalog) => IrType | undefined;
70
+ //# sourceMappingURL=unified-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-catalog.d.ts","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EACV,MAAM,EAGN,WAAW,EAIX,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,0CAA0C,CAAC;AA8LlD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,gBAAgB,YAAY,GAAG,SAAS,EACxC,iBAAiB,mBAAmB,EACpC,cAAa,MAAkB,KAC9B,kBAmEF,CAAC;AAMF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,GACrC,MAAM,MAAM,EACZ,SAAS,kBAAkB,KAC1B,MAAM,GAAG,SAQX,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GACpB,MAAM,MAAM,EACZ,SAAS,kBAAkB,KAC1B,MAAM,GAAG,SAwBX,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,SAAS,kBAAkB,KAC1B,WAAW,GAAG,SAoBhB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,EACpB,YAAY,MAAM,EAClB,SAAS,kBAAkB,KAC1B,MAAM,GAAG,SAUX,CAAC"}
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Unified Type Catalog
3
+ *
4
+ * Merges source-authored types (from TypeRegistry) and assembly-authored
5
+ * types (from AssemblyTypeCatalog) into a single unified lookup table.
6
+ *
7
+ * INVARIANT INV-CLR: This is THE source of truth for all type queries.
8
+ * No fallback paths allowed. If a type isn't in this catalog, it doesn't exist.
9
+ *
10
+ * Design:
11
+ * - Source types get stableIds generated as "{projectName}:{fullyQualifiedName}"
12
+ * - Assembly types keep their original stableIds from metadata.json
13
+ * - Lookups by tsName, clrName, or stableId all work uniformly
14
+ */
15
+ import { makeTypeId, PRIMITIVE_TO_STABLE_ID } from "./types.js";
16
+ // ═══════════════════════════════════════════════════════════════════════════
17
+ // SOURCE TYPE → NOMINAL ENTRY CONVERSION
18
+ // ═══════════════════════════════════════════════════════════════════════════
19
+ /**
20
+ * Generate stableId for a source type.
21
+ */
22
+ const makeSourceStableId = (projectName, fullyQualifiedName) => {
23
+ return `${projectName}:${fullyQualifiedName}`;
24
+ };
25
+ /**
26
+ * Extract name from IrParameter pattern.
27
+ */
28
+ const getParameterName = (param, index) => {
29
+ if (param.pattern.kind === "identifierPattern" && param.pattern.name) {
30
+ return param.pattern.name;
31
+ }
32
+ return `p${index}`;
33
+ };
34
+ /**
35
+ * Convert MemberInfo from TypeRegistry to MemberEntry for unified catalog.
36
+ */
37
+ const convertMemberInfo = (memberInfo, parentFQName) => {
38
+ // Determine member kind
39
+ const memberKind = memberInfo.kind === "method"
40
+ ? "method"
41
+ : memberInfo.kind === "indexSignature"
42
+ ? "property" // Treat index signatures as properties
43
+ : "property";
44
+ return {
45
+ tsName: memberInfo.name,
46
+ clrName: toPascalCase(memberInfo.name), // Convert to C# naming convention
47
+ memberKind,
48
+ type: memberInfo.type,
49
+ signatures: memberInfo.methodSignatures?.map((sig) => ({
50
+ stableId: `${parentFQName}::${memberInfo.name}`,
51
+ parameters: sig.parameters.map((p, i) => ({
52
+ name: getParameterName(p, i),
53
+ type: p.type ?? { kind: "unknownType" }, // Default to unknown if no type
54
+ mode: "value",
55
+ isOptional: p.isOptional ?? false,
56
+ isRest: p.isRest ?? false,
57
+ })),
58
+ returnType: sig.returnType ?? { kind: "voidType" },
59
+ typeParameters: sig.typeParameters?.map((tp) => ({
60
+ name: tp.name,
61
+ constraint: tp.constraint,
62
+ defaultType: tp.default,
63
+ })) ?? [],
64
+ parameterCount: sig.parameters.length,
65
+ isStatic: false, // Source methods are instance by default unless marked
66
+ isExtensionMethod: false,
67
+ normalizedSignature: `${memberInfo.name}|${sig.parameters.map((p) => p.type?.kind ?? "unknown").join(",")}`,
68
+ })),
69
+ isStatic: false, // Would need to check actual declaration
70
+ isReadonly: memberInfo.isReadonly,
71
+ isAbstract: false,
72
+ isVirtual: false,
73
+ isOverride: false,
74
+ isIndexer: memberInfo.kind === "indexSignature",
75
+ hasGetter: true,
76
+ hasSetter: !memberInfo.isReadonly,
77
+ stableId: `${parentFQName}::${memberInfo.name}`,
78
+ };
79
+ };
80
+ /**
81
+ * Convert HeritageInfo from TypeRegistry to HeritageEdge for unified catalog.
82
+ */
83
+ const convertHeritageInfo = (heritageInfo, projectName) => {
84
+ // Determine the target type's stableId
85
+ // This is tricky - we need to figure out if it's a source type or assembly type
86
+ const targetName = heritageInfo.typeName;
87
+ // Check if it's a primitive that maps to a CLR type
88
+ const primitiveStableId = PRIMITIVE_TO_STABLE_ID.get(targetName.toLowerCase());
89
+ // For now, assume source types for unresolved names
90
+ const targetStableId = primitiveStableId
91
+ ? primitiveStableId
92
+ : makeSourceStableId(projectName, targetName);
93
+ // Extract type arguments from the baseType if it's a reference type
94
+ const typeArguments = [];
95
+ if (heritageInfo.baseType.kind === "referenceType" &&
96
+ heritageInfo.baseType.typeArguments) {
97
+ typeArguments.push(...heritageInfo.baseType.typeArguments);
98
+ }
99
+ return {
100
+ kind: heritageInfo.kind,
101
+ targetStableId,
102
+ typeArguments,
103
+ };
104
+ };
105
+ /**
106
+ * Convert TypeRegistryEntry to NominalEntry for unified catalog.
107
+ */
108
+ const convertRegistryEntry = (entry, projectName) => {
109
+ const stableId = makeSourceStableId(projectName, entry.fullyQualifiedName);
110
+ const typeId = makeTypeId(stableId, entry.fullyQualifiedName, // CLR name = FQ name for source types
111
+ projectName, entry.name // TS name = simple name
112
+ );
113
+ // Convert kind
114
+ const kindMap = {
115
+ class: "class",
116
+ interface: "interface",
117
+ typeAlias: "interface", // Type aliases treated as interfaces
118
+ };
119
+ const kind = kindMap[entry.kind] ?? "class";
120
+ // Convert members
121
+ const members = new Map();
122
+ for (const [name, memberInfo] of entry.members) {
123
+ members.set(name, convertMemberInfo(memberInfo, entry.fullyQualifiedName));
124
+ }
125
+ // Convert heritage
126
+ const heritage = entry.heritage.map((h) => convertHeritageInfo(h, projectName));
127
+ // Convert type parameters
128
+ const typeParameters = entry.typeParameters.map((tp) => ({
129
+ name: tp.name,
130
+ constraint: tp.constraint,
131
+ defaultType: tp.defaultType,
132
+ }));
133
+ return {
134
+ typeId,
135
+ kind,
136
+ typeParameters,
137
+ heritage,
138
+ members,
139
+ origin: "source",
140
+ accessibility: "public", // Source types are public by default
141
+ isAbstract: false, // Would need AST info
142
+ isSealed: false,
143
+ isStatic: false,
144
+ };
145
+ };
146
+ /**
147
+ * Convert camelCase to PascalCase for C# naming.
148
+ */
149
+ const toPascalCase = (name) => {
150
+ return name.charAt(0).toUpperCase() + name.slice(1);
151
+ };
152
+ // ═══════════════════════════════════════════════════════════════════════════
153
+ // UNIFIED CATALOG BUILDER
154
+ // ═══════════════════════════════════════════════════════════════════════════
155
+ /**
156
+ * Build a unified type catalog from source and assembly catalogs.
157
+ *
158
+ * @param sourceRegistry - TypeRegistry containing source-authored types
159
+ * @param assemblyCatalog - AssemblyTypeCatalog containing CLR metadata types
160
+ * @param projectName - Project name for generating source type stableIds
161
+ * @returns UnifiedTypeCatalog with merged type information
162
+ */
163
+ export const buildUnifiedTypeCatalog = (sourceRegistry, assemblyCatalog, projectName = "project") => {
164
+ // Start with assembly entries (these are the "ground truth" for CLR types)
165
+ const entries = new Map(assemblyCatalog.entries);
166
+ const tsNameToTypeId = new Map(assemblyCatalog.tsNameToTypeId);
167
+ const clrNameToTypeId = new Map(assemblyCatalog.clrNameToTypeId);
168
+ // Add source types if registry is provided
169
+ if (sourceRegistry) {
170
+ for (const fqName of sourceRegistry.getAllTypeNames()) {
171
+ const entry = sourceRegistry.resolveNominal(fqName);
172
+ if (!entry)
173
+ continue;
174
+ const nominalEntry = convertRegistryEntry(entry, projectName);
175
+ // Add to maps (source types won't collide with assembly types by stableId)
176
+ entries.set(nominalEntry.typeId.stableId, nominalEntry);
177
+ tsNameToTypeId.set(nominalEntry.typeId.tsName, nominalEntry.typeId);
178
+ clrNameToTypeId.set(nominalEntry.typeId.clrName, nominalEntry.typeId);
179
+ }
180
+ }
181
+ // Build the catalog interface
182
+ const catalog = {
183
+ getByTypeId: (typeId) => entries.get(typeId.stableId),
184
+ getByStableId: (stableId) => entries.get(stableId),
185
+ resolveTsName: (tsName) => tsNameToTypeId.get(tsName),
186
+ resolveClrName: (clrName) => clrNameToTypeId.get(clrName),
187
+ getMembers: (typeId) => {
188
+ const entry = entries.get(typeId.stableId);
189
+ return entry?.members ?? new Map();
190
+ },
191
+ getMember: (typeId, memberName) => {
192
+ const entry = entries.get(typeId.stableId);
193
+ return entry?.members.get(memberName);
194
+ },
195
+ getHeritage: (typeId) => {
196
+ const entry = entries.get(typeId.stableId);
197
+ return entry?.heritage ?? [];
198
+ },
199
+ getTypeParameters: (typeId) => {
200
+ const entry = entries.get(typeId.stableId);
201
+ return entry?.typeParameters ?? [];
202
+ },
203
+ hasType: (stableId) => entries.has(stableId),
204
+ getAllTypeIds: () => {
205
+ const typeIds = [];
206
+ for (const entry of entries.values()) {
207
+ typeIds.push(entry.typeId);
208
+ }
209
+ return typeIds;
210
+ },
211
+ };
212
+ return catalog;
213
+ };
214
+ // ═══════════════════════════════════════════════════════════════════════════
215
+ // PRIMITIVE TYPE NORMALIZATION
216
+ // ═══════════════════════════════════════════════════════════════════════════
217
+ /**
218
+ * Normalize a primitive IrType to its canonical nominal TypeId.
219
+ *
220
+ * This is the key function for unifying primitive types with their CLR counterparts:
221
+ * - primitiveType("string") → TypeId for System.String
222
+ * - primitiveType("int") → TypeId for System.Int32
223
+ * - primitiveType("number") → TypeId for System.Double
224
+ * - primitiveType("boolean") → TypeId for System.Boolean
225
+ *
226
+ * @param type - The IrType to normalize
227
+ * @param catalog - The unified catalog to look up TypeIds
228
+ * @returns The TypeId if this is a primitive that maps to a nominal, undefined otherwise
229
+ */
230
+ export const normalizePrimitiveToTypeId = (type, catalog) => {
231
+ if (type.kind !== "primitiveType")
232
+ return undefined;
233
+ const stableId = PRIMITIVE_TO_STABLE_ID.get(type.name);
234
+ if (!stableId)
235
+ return undefined;
236
+ const entry = catalog.getByStableId(stableId);
237
+ return entry?.typeId;
238
+ };
239
+ /**
240
+ * Get the TypeId for an IrType, normalizing primitives as needed.
241
+ *
242
+ * @param type - The IrType to get a TypeId for
243
+ * @param catalog - The unified catalog
244
+ * @returns The TypeId if this type has one, undefined for structural types
245
+ */
246
+ export const getTypeId = (type, catalog) => {
247
+ // Handle primitives by normalizing to nominal
248
+ if (type.kind === "primitiveType") {
249
+ return normalizePrimitiveToTypeId(type, catalog);
250
+ }
251
+ // Handle reference types - look up by name
252
+ if (type.kind === "referenceType") {
253
+ // Try clrName first (most specific)
254
+ if (type.resolvedClrType) {
255
+ const typeId = catalog.resolveClrName(type.resolvedClrType);
256
+ if (typeId)
257
+ return typeId;
258
+ }
259
+ // Try tsName
260
+ const typeId = catalog.resolveTsName(type.name);
261
+ if (typeId)
262
+ return typeId;
263
+ // Try as clrName
264
+ return catalog.resolveClrName(type.name);
265
+ }
266
+ // Arrays, tuples, functions, unions, intersections, etc. don't have TypeIds
267
+ return undefined;
268
+ };
269
+ // ═══════════════════════════════════════════════════════════════════════════
270
+ // MEMBER LOOKUP WITH INHERITANCE
271
+ // ═══════════════════════════════════════════════════════════════════════════
272
+ /**
273
+ * Look up a member on a type, walking the inheritance chain if necessary.
274
+ *
275
+ * @param typeId - The type to start from
276
+ * @param memberName - The member name (TS name)
277
+ * @param catalog - The unified catalog
278
+ * @returns The member entry if found, undefined otherwise
279
+ */
280
+ export const lookupMemberWithInheritance = (typeId, memberName, catalog) => {
281
+ // Check this type first
282
+ const member = catalog.getMember(typeId, memberName);
283
+ if (member)
284
+ return member;
285
+ // Walk inheritance chain
286
+ const heritage = catalog.getHeritage(typeId);
287
+ for (const edge of heritage) {
288
+ const parentEntry = catalog.getByStableId(edge.targetStableId);
289
+ if (!parentEntry)
290
+ continue;
291
+ const result = lookupMemberWithInheritance(parentEntry.typeId, memberName, catalog);
292
+ if (result)
293
+ return result;
294
+ }
295
+ return undefined;
296
+ };
297
+ /**
298
+ * Get the declared type of a member, normalizing primitives.
299
+ *
300
+ * This is the primary entry point for type queries about members.
301
+ * Returns the IrType of the member, with primitives normalized.
302
+ *
303
+ * @param receiverType - The type of the receiver (object being accessed)
304
+ * @param memberName - The member name (TS name)
305
+ * @param catalog - The unified catalog
306
+ * @returns The member's IrType if found, undefined otherwise
307
+ */
308
+ export const getMemberDeclaredType = (receiverType, memberName, catalog) => {
309
+ // Get TypeId for the receiver (normalizing primitives)
310
+ const typeId = getTypeId(receiverType, catalog);
311
+ if (!typeId)
312
+ return undefined;
313
+ // Look up member with inheritance
314
+ const member = lookupMemberWithInheritance(typeId, memberName, catalog);
315
+ if (!member)
316
+ return undefined;
317
+ return member.type;
318
+ };
319
+ //# sourceMappingURL=unified-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-catalog.js","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Unified Type Catalog Tests
3
+ *
4
+ * Tests for the unified type catalog that merges source and assembly types.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=unified-catalog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-catalog.test.d.ts","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Unified Type Catalog Tests
3
+ *
4
+ * Tests for the unified type catalog that merges source and assembly types.
5
+ */
6
+ import { expect } from "chai";
7
+ import * as path from "path";
8
+ import { loadSinglePackageMetadata } from "./assembly-catalog.js";
9
+ import { buildUnifiedTypeCatalog, normalizePrimitiveToTypeId, getTypeId, getMemberDeclaredType, } from "./unified-catalog.js";
10
+ import { PRIMITIVE_TO_STABLE_ID } from "./types.js";
11
+ describe("UnifiedTypeCatalog", () => {
12
+ // Path to System metadata
13
+ const systemMetadataPath = path.resolve(process.cwd(), "../..", "node_modules/@tsonic/dotnet/System/internal/metadata.json");
14
+ describe("buildUnifiedTypeCatalog", () => {
15
+ it("should build catalog from assembly metadata", () => {
16
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
17
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
18
+ // Check that we can look up System.String
19
+ const stringTypeId = catalog.resolveTsName("String");
20
+ expect(stringTypeId).to.not.be.undefined;
21
+ expect(stringTypeId?.clrName).to.equal("System.String");
22
+ });
23
+ it("should provide member lookup for assembly types", () => {
24
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
25
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
26
+ const stringTypeId = catalog.resolveTsName("String");
27
+ expect(stringTypeId).to.not.be.undefined;
28
+ if (stringTypeId) {
29
+ const lengthMember = catalog.getMember(stringTypeId, "length");
30
+ expect(lengthMember).to.not.be.undefined;
31
+ expect(lengthMember?.tsName).to.equal("length");
32
+ expect(lengthMember?.type).to.deep.equal({
33
+ kind: "primitiveType",
34
+ name: "int",
35
+ });
36
+ }
37
+ });
38
+ });
39
+ describe("normalizePrimitiveToTypeId", () => {
40
+ it("should normalize string primitive to System.String TypeId", () => {
41
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
42
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
43
+ const stringType = { kind: "primitiveType", name: "string" };
44
+ const typeId = normalizePrimitiveToTypeId(stringType, catalog);
45
+ expect(typeId).to.not.be.undefined;
46
+ expect(typeId?.stableId).to.equal("System.Private.CoreLib:System.String");
47
+ expect(typeId?.clrName).to.equal("System.String");
48
+ });
49
+ it("should normalize int primitive to System.Int32 TypeId", () => {
50
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
51
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
52
+ const intType = { kind: "primitiveType", name: "int" };
53
+ const typeId = normalizePrimitiveToTypeId(intType, catalog);
54
+ expect(typeId).to.not.be.undefined;
55
+ expect(typeId?.stableId).to.equal("System.Private.CoreLib:System.Int32");
56
+ });
57
+ it("should return undefined for non-primitive types", () => {
58
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
59
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
60
+ const refType = { kind: "referenceType", name: "SomeClass" };
61
+ const typeId = normalizePrimitiveToTypeId(refType, catalog);
62
+ expect(typeId).to.be.undefined;
63
+ });
64
+ });
65
+ describe("getTypeId", () => {
66
+ it("should get TypeId for primitive types via normalization", () => {
67
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
68
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
69
+ const stringType = { kind: "primitiveType", name: "string" };
70
+ const typeId = getTypeId(stringType, catalog);
71
+ expect(typeId).to.not.be.undefined;
72
+ expect(typeId?.clrName).to.equal("System.String");
73
+ });
74
+ it("should get TypeId for reference types by name", () => {
75
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
76
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
77
+ // Console is a type in System namespace
78
+ const consoleType = { kind: "referenceType", name: "Console" };
79
+ const typeId = getTypeId(consoleType, catalog);
80
+ expect(typeId).to.not.be.undefined;
81
+ expect(typeId?.clrName).to.equal("System.Console");
82
+ });
83
+ });
84
+ describe("getMemberDeclaredType", () => {
85
+ it("should get member type for string.length", () => {
86
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
87
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
88
+ const stringType = { kind: "primitiveType", name: "string" };
89
+ const memberType = getMemberDeclaredType(stringType, "length", catalog);
90
+ expect(memberType).to.not.be.undefined;
91
+ expect(memberType).to.deep.equal({
92
+ kind: "primitiveType",
93
+ name: "int",
94
+ });
95
+ });
96
+ it("should get member type for string.chars (indexer)", () => {
97
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
98
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
99
+ const stringType = { kind: "primitiveType", name: "string" };
100
+ const memberType = getMemberDeclaredType(stringType, "chars", catalog);
101
+ expect(memberType).to.not.be.undefined;
102
+ expect(memberType).to.deep.equal({
103
+ kind: "primitiveType",
104
+ name: "char",
105
+ });
106
+ });
107
+ it("should return undefined for non-existent members", () => {
108
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
109
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
110
+ const stringType = { kind: "primitiveType", name: "string" };
111
+ const memberType = getMemberDeclaredType(stringType, "nonExistentMember", catalog);
112
+ expect(memberType).to.be.undefined;
113
+ });
114
+ it("should return undefined for types not in catalog", () => {
115
+ const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
116
+ const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
117
+ const unknownType = {
118
+ kind: "referenceType",
119
+ name: "UnknownType",
120
+ };
121
+ const memberType = getMemberDeclaredType(unknownType, "foo", catalog);
122
+ expect(memberType).to.be.undefined;
123
+ });
124
+ });
125
+ describe("PRIMITIVE_TO_STABLE_ID mapping", () => {
126
+ it("should have correct mappings for all primitives", () => {
127
+ expect(PRIMITIVE_TO_STABLE_ID.get("string")).to.equal("System.Private.CoreLib:System.String");
128
+ expect(PRIMITIVE_TO_STABLE_ID.get("number")).to.equal("System.Private.CoreLib:System.Double");
129
+ expect(PRIMITIVE_TO_STABLE_ID.get("int")).to.equal("System.Private.CoreLib:System.Int32");
130
+ expect(PRIMITIVE_TO_STABLE_ID.get("boolean")).to.equal("System.Private.CoreLib:System.Boolean");
131
+ expect(PRIMITIVE_TO_STABLE_ID.get("char")).to.equal("System.Private.CoreLib:System.Char");
132
+ });
133
+ });
134
+ });
135
+ //# sourceMappingURL=unified-catalog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-catalog.test.js","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.test.ts"],"names":[],"mappings":"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"}