@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,13 @@
1
+ /**
2
+ * Internal Handle Types — NOT FOR PUBLIC EXPORT
3
+ *
4
+ * ALICE'S SPEC: These types are INTERNAL ONLY.
5
+ * They may contain raw TypeNodes (as unknown) for internal use.
6
+ * They must NOT be exported from type-system/index.ts.
7
+ *
8
+ * Allowed importers:
9
+ * - ir/type-system/**
10
+ * - ir/binding/**
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=handle-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-types.js","sourceRoot":"","sources":["../../../../src/ir/type-system/internal/handle-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * NominalEnv - Inheritance instantiation environment
3
+ *
4
+ * Phase 6 (Alice's spec): TypeId-based, Universe-driven.
5
+ *
6
+ * Computes type parameter substitution through inheritance chains
7
+ * deterministically, using only the UnifiedTypeCatalog (no TypeNodes).
8
+ */
9
+ import type { IrType } from "../../types/index.js";
10
+ import type { UnifiedTypeCatalog, TypeId } from "./universe/types.js";
11
+ /**
12
+ * Map from type parameter name to concrete IR type
13
+ */
14
+ export type InstantiationEnv = ReadonlyMap<string, IrType>;
15
+ /**
16
+ * Substitution result for a specific type in the inheritance chain
17
+ */
18
+ export type SubstitutionResult = {
19
+ readonly declaringTypeId: TypeId;
20
+ readonly substitution: InstantiationEnv;
21
+ };
22
+ /**
23
+ * NominalEnv API - Phase 6: TypeId-based
24
+ */
25
+ export type NominalEnv = {
26
+ /**
27
+ * Find which nominal type in the inheritance chain declares a given member.
28
+ * Returns the TypeId and the substitution needed to access that member.
29
+ */
30
+ readonly findMemberDeclaringType: (receiverTypeId: TypeId, receiverTypeArgs: readonly IrType[], memberName: string) => SubstitutionResult | undefined;
31
+ /**
32
+ * Get type parameter substitution for accessing a member from a target type
33
+ * when the receiver has the given TypeId and type arguments.
34
+ *
35
+ * Example:
36
+ * ```typescript
37
+ * class SomeBase<T> { value: List<T>; }
38
+ * class SomeClass extends SomeBase<int> {}
39
+ *
40
+ * // getInstantiation(SomeClassId, [], SomeBaseId)
41
+ * // → { "T" → int }
42
+ * ```
43
+ */
44
+ readonly getInstantiation: (receiverTypeId: TypeId, receiverTypeArgs: readonly IrType[], targetTypeId: TypeId) => InstantiationEnv | undefined;
45
+ /**
46
+ * Get the complete inheritance chain for a nominal type.
47
+ * Returns TypeIds in order from child to parent.
48
+ *
49
+ * Only follows "extends" edges (matches legacy behavior).
50
+ */
51
+ readonly getInheritanceChain: (typeId: TypeId) => readonly TypeId[];
52
+ };
53
+ /**
54
+ * Apply a substitution map to an IrType.
55
+ * Replaces typeParameterType nodes with their concrete values.
56
+ */
57
+ export declare const substituteIrType: (type: IrType, subst: InstantiationEnv) => IrType;
58
+ /**
59
+ * Build a NominalEnv from a UnifiedTypeCatalog.
60
+ *
61
+ * Phase 6: Uses ONLY the catalog for all lookups. No TypeRegistry, no TypeNodes.
62
+ *
63
+ * @param catalog The UnifiedTypeCatalog to use for lookups
64
+ */
65
+ export declare const buildNominalEnv: (catalog: UnifiedTypeCatalog) => NominalEnv;
66
+ //# sourceMappingURL=nominal-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nominal-env.d.ts","sourceRoot":"","sources":["../../../../src/ir/type-system/internal/nominal-env.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EAEP,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,EAAE,CAChC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,UAAU,EAAE,MAAM,KACf,kBAAkB,GAAG,SAAS,CAAC;IAEpC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,gBAAgB,EAAE,CACzB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,YAAY,EAAE,MAAM,KACjB,gBAAgB,GAAG,SAAS,CAAC;IAElC;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;CACrE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,gBAAgB,KACtB,MA8HF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,KAAG,UAqM7D,CAAC"}
@@ -0,0 +1,301 @@
1
+ /**
2
+ * NominalEnv - Inheritance instantiation environment
3
+ *
4
+ * Phase 6 (Alice's spec): TypeId-based, Universe-driven.
5
+ *
6
+ * Computes type parameter substitution through inheritance chains
7
+ * deterministically, using only the UnifiedTypeCatalog (no TypeNodes).
8
+ */
9
+ /**
10
+ * Apply a substitution map to an IrType.
11
+ * Replaces typeParameterType nodes with their concrete values.
12
+ */
13
+ export const substituteIrType = (type, subst) => {
14
+ switch (type.kind) {
15
+ case "typeParameterType": {
16
+ const replacement = subst.get(type.name);
17
+ return replacement ?? type;
18
+ }
19
+ case "referenceType": {
20
+ // Check if the type itself is a type parameter (legacy format)
21
+ const replacement = subst.get(type.name);
22
+ if (replacement)
23
+ return replacement;
24
+ // Substitute in type arguments and structural members
25
+ const hasTypeArgs = type.typeArguments && type.typeArguments.length > 0;
26
+ const hasStructural = type.structuralMembers && type.structuralMembers.length > 0;
27
+ if (hasTypeArgs || hasStructural) {
28
+ return {
29
+ ...type,
30
+ typeArguments: hasTypeArgs
31
+ ? type.typeArguments.map((arg) => substituteIrType(arg, subst))
32
+ : type.typeArguments,
33
+ structuralMembers: hasStructural
34
+ ? type.structuralMembers.map((m) => {
35
+ if (m.kind === "propertySignature") {
36
+ return {
37
+ ...m,
38
+ type: substituteIrType(m.type, subst),
39
+ };
40
+ }
41
+ // methodSignature
42
+ return {
43
+ ...m,
44
+ returnType: m.returnType
45
+ ? substituteIrType(m.returnType, subst)
46
+ : m.returnType,
47
+ parameters: m.parameters.map((p) => ({
48
+ ...p,
49
+ type: p.type ? substituteIrType(p.type, subst) : p.type,
50
+ })),
51
+ };
52
+ })
53
+ : type.structuralMembers,
54
+ };
55
+ }
56
+ return type;
57
+ }
58
+ case "arrayType": {
59
+ return {
60
+ ...type,
61
+ elementType: substituteIrType(type.elementType, subst),
62
+ };
63
+ }
64
+ case "functionType": {
65
+ return {
66
+ ...type,
67
+ parameters: type.parameters.map((p) => ({
68
+ ...p,
69
+ type: p.type ? substituteIrType(p.type, subst) : p.type,
70
+ })),
71
+ returnType: type.returnType
72
+ ? substituteIrType(type.returnType, subst)
73
+ : type.returnType,
74
+ };
75
+ }
76
+ case "unionType": {
77
+ return {
78
+ ...type,
79
+ types: type.types.map((t) => substituteIrType(t, subst)),
80
+ };
81
+ }
82
+ case "tupleType": {
83
+ return {
84
+ ...type,
85
+ elementTypes: type.elementTypes.map((t) => substituteIrType(t, subst)),
86
+ };
87
+ }
88
+ case "dictionaryType": {
89
+ return {
90
+ ...type,
91
+ keyType: substituteIrType(type.keyType, subst),
92
+ valueType: substituteIrType(type.valueType, subst),
93
+ };
94
+ }
95
+ case "intersectionType": {
96
+ return {
97
+ ...type,
98
+ types: type.types.map((t) => substituteIrType(t, subst)),
99
+ };
100
+ }
101
+ case "objectType": {
102
+ return {
103
+ ...type,
104
+ members: type.members.map((m) => {
105
+ if (m.kind === "propertySignature") {
106
+ return {
107
+ ...m,
108
+ type: substituteIrType(m.type, subst),
109
+ };
110
+ }
111
+ // methodSignature
112
+ return {
113
+ ...m,
114
+ returnType: m.returnType
115
+ ? substituteIrType(m.returnType, subst)
116
+ : m.returnType,
117
+ parameters: m.parameters.map((p) => ({
118
+ ...p,
119
+ type: p.type ? substituteIrType(p.type, subst) : p.type,
120
+ })),
121
+ };
122
+ }),
123
+ };
124
+ }
125
+ default:
126
+ return type;
127
+ }
128
+ };
129
+ /**
130
+ * Build a NominalEnv from a UnifiedTypeCatalog.
131
+ *
132
+ * Phase 6: Uses ONLY the catalog for all lookups. No TypeRegistry, no TypeNodes.
133
+ *
134
+ * @param catalog The UnifiedTypeCatalog to use for lookups
135
+ */
136
+ export const buildNominalEnv = (catalog) => {
137
+ // Cache for computed inheritance chains
138
+ // Key: stableId
139
+ const inheritanceChainCache = new Map();
140
+ // Cache for computed instantiations
141
+ // Key: "receiverStableId|serialized args|targetStableId"
142
+ const instantiationCache = new Map();
143
+ /**
144
+ * Serialize type args for cache key.
145
+ */
146
+ const serializeTypeArgs = (typeArgs) => {
147
+ if (typeArgs.length === 0)
148
+ return "";
149
+ return typeArgs.map((a) => JSON.stringify(a)).join(",");
150
+ };
151
+ /**
152
+ * Get the inheritance chain for a nominal type.
153
+ * Returns TypeIds in order from child to parent.
154
+ *
155
+ * Phase 6 (Alice's spec): This must be sufficient for nominal assignability and
156
+ * member lookup across both class inheritance and implemented interfaces.
157
+ */
158
+ const getInheritanceChain = (typeId) => {
159
+ const cached = inheritanceChainCache.get(typeId.stableId);
160
+ if (cached)
161
+ return cached;
162
+ const chain = [typeId];
163
+ const visited = new Set([typeId.stableId]);
164
+ const queue = [typeId];
165
+ while (queue.length > 0) {
166
+ const currentTypeId = queue.shift();
167
+ if (!currentTypeId)
168
+ continue;
169
+ const heritage = [...catalog.getHeritage(currentTypeId)].sort((a, b) => {
170
+ const rank = (k) => (k === "extends" ? 0 : 1);
171
+ const ra = rank(a.kind);
172
+ const rb = rank(b.kind);
173
+ if (ra !== rb)
174
+ return ra - rb;
175
+ return a.targetStableId.localeCompare(b.targetStableId);
176
+ });
177
+ for (const edge of heritage) {
178
+ if (visited.has(edge.targetStableId))
179
+ continue;
180
+ const parentEntry = catalog.getByStableId(edge.targetStableId);
181
+ if (!parentEntry)
182
+ continue;
183
+ visited.add(edge.targetStableId);
184
+ chain.push(parentEntry.typeId);
185
+ queue.push(parentEntry.typeId);
186
+ }
187
+ }
188
+ inheritanceChainCache.set(typeId.stableId, chain);
189
+ return chain;
190
+ };
191
+ /**
192
+ * Get instantiation for a specific target in the inheritance chain.
193
+ */
194
+ const getInstantiation = (receiverTypeId, receiverTypeArgs, targetTypeId) => {
195
+ // Check cache
196
+ const cacheKey = `${receiverTypeId.stableId}|${serializeTypeArgs(receiverTypeArgs)}|${targetTypeId.stableId}`;
197
+ const cached = instantiationCache.get(cacheKey);
198
+ if (cached)
199
+ return cached;
200
+ // If receiver is the target, build initial substitution from receiver's type args
201
+ if (receiverTypeId.stableId === targetTypeId.stableId) {
202
+ const receiverTypeParams = catalog.getTypeParameters(receiverTypeId);
203
+ const subst = new Map();
204
+ for (let i = 0; i < receiverTypeParams.length; i++) {
205
+ const paramName = receiverTypeParams[i]?.name;
206
+ const arg = receiverTypeArgs[i];
207
+ if (paramName && arg) {
208
+ subst.set(paramName, arg);
209
+ }
210
+ }
211
+ instantiationCache.set(cacheKey, subst);
212
+ return subst;
213
+ }
214
+ // Start with receiver's type args (receiver param → concrete type)
215
+ const receiverTypeParams = catalog.getTypeParameters(receiverTypeId);
216
+ let currentSubst = new Map();
217
+ for (let i = 0; i < receiverTypeParams.length; i++) {
218
+ const paramName = receiverTypeParams[i]?.name;
219
+ const arg = receiverTypeArgs[i];
220
+ if (paramName && arg) {
221
+ currentSubst.set(paramName, arg);
222
+ }
223
+ }
224
+ const serializeSubst = (typeId, subst) => {
225
+ const typeParams = catalog.getTypeParameters(typeId);
226
+ return typeParams
227
+ .map((tp) => JSON.stringify(subst.get(tp.name) ?? null))
228
+ .join(",");
229
+ };
230
+ const visited = new Set();
231
+ const queue = [
232
+ {
233
+ typeId: receiverTypeId,
234
+ subst: currentSubst,
235
+ },
236
+ ];
237
+ while (queue.length > 0) {
238
+ const state = queue.shift();
239
+ if (!state)
240
+ continue;
241
+ if (state.typeId.stableId === targetTypeId.stableId) {
242
+ instantiationCache.set(cacheKey, state.subst);
243
+ return state.subst;
244
+ }
245
+ const heritage = [...catalog.getHeritage(state.typeId)].sort((a, b) => {
246
+ const rank = (k) => (k === "extends" ? 0 : 1);
247
+ const ra = rank(a.kind);
248
+ const rb = rank(b.kind);
249
+ if (ra !== rb)
250
+ return ra - rb;
251
+ return a.targetStableId.localeCompare(b.targetStableId);
252
+ });
253
+ for (const edge of heritage) {
254
+ const parentEntry = catalog.getByStableId(edge.targetStableId);
255
+ if (!parentEntry)
256
+ continue;
257
+ const parentTypeId = parentEntry.typeId;
258
+ const parentTypeParams = catalog.getTypeParameters(parentTypeId);
259
+ const nextSubst = new Map();
260
+ for (let i = 0; i < parentTypeParams.length; i++) {
261
+ const paramName = parentTypeParams[i]?.name;
262
+ const argType = edge.typeArguments[i];
263
+ if (paramName && argType) {
264
+ nextSubst.set(paramName, substituteIrType(argType, state.subst));
265
+ }
266
+ }
267
+ const visitKey = `${parentTypeId.stableId}|${serializeSubst(parentTypeId, nextSubst)}`;
268
+ if (visited.has(visitKey))
269
+ continue;
270
+ visited.add(visitKey);
271
+ queue.push({ typeId: parentTypeId, subst: nextSubst });
272
+ }
273
+ }
274
+ return undefined;
275
+ };
276
+ /**
277
+ * Find which type in the inheritance chain declares a given member.
278
+ */
279
+ const findMemberDeclaringType = (receiverTypeId, receiverTypeArgs, memberName) => {
280
+ const chain = getInheritanceChain(receiverTypeId);
281
+ for (const typeId of chain) {
282
+ const member = catalog.getMember(typeId, memberName);
283
+ if (member) {
284
+ const subst = getInstantiation(receiverTypeId, receiverTypeArgs, typeId);
285
+ if (subst) {
286
+ return {
287
+ declaringTypeId: typeId,
288
+ substitution: subst,
289
+ };
290
+ }
291
+ }
292
+ }
293
+ return undefined;
294
+ };
295
+ return {
296
+ getInstantiation,
297
+ findMemberDeclaringType,
298
+ getInheritanceChain,
299
+ };
300
+ };
301
+ //# sourceMappingURL=nominal-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nominal-env.js","sourceRoot":"","sources":["../../../../src/ir/type-system/internal/nominal-env.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgEH;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,KAAuB,EACf,EAAE;IACV,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,WAAW,IAAI,IAAI,CAAC;QAC7B,CAAC;QAED,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,+DAA+D;YAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;YAEpC,sDAAsD;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YACxE,MAAM,aAAa,GACjB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YAE9D,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;gBACjC,OAAO;oBACL,GAAG,IAAI;oBACP,aAAa,EAAE,WAAW;wBACxB,CAAC,CAAC,IAAI,CAAC,aAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAChE,CAAC,CAAC,IAAI,CAAC,aAAa;oBACtB,iBAAiB,EAAE,aAAa;wBAC9B,CAAC,CAAC,IAAI,CAAC,iBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4BAChC,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gCACnC,OAAO;oCACL,GAAG,CAAC;oCACJ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;iCACtC,CAAC;4BACJ,CAAC;4BACD,kBAAkB;4BAClB,OAAO;gCACL,GAAG,CAAC;gCACJ,UAAU,EAAE,CAAC,CAAC,UAAU;oCACtB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC;oCACvC,CAAC,CAAC,CAAC,CAAC,UAAU;gCAChB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oCACnC,GAAG,CAAC;oCACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iCACxD,CAAC,CAAC;6BACJ,CAAC;wBACJ,CAAC,CAAC;wBACJ,CAAC,CAAC,IAAI,CAAC,iBAAiB;iBAC3B,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO;gBACL,GAAG,IAAI;gBACP,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;aACvD,CAAC;QACJ,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,OAAO;gBACL,GAAG,IAAI;gBACP,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtC,GAAG,CAAC;oBACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iBACxD,CAAC,CAAC;gBACH,UAAU,EAAE,IAAI,CAAC,UAAU;oBACzB,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;oBAC1C,CAAC,CAAC,IAAI,CAAC,UAAU;aACpB,CAAC;QACJ,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACzD,CAAC;QACJ,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO;gBACL,GAAG,IAAI;gBACP,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACvE,CAAC;QACJ,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,OAAO;gBACL,GAAG,IAAI;gBACP,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC9C,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,OAAO;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACzD,CAAC;QACJ,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,OAAO;gBACL,GAAG,IAAI;gBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBACnC,OAAO;4BACL,GAAG,CAAC;4BACJ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;yBACtC,CAAC;oBACJ,CAAC;oBACD,kBAAkB;oBAClB,OAAO;wBACL,GAAG,CAAC;wBACJ,UAAU,EAAE,CAAC,CAAC,UAAU;4BACtB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC;4BACvC,CAAC,CAAC,CAAC,CAAC,UAAU;wBAChB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACnC,GAAG,CAAC;4BACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;yBACxD,CAAC,CAAC;qBACJ,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC;QACJ,CAAC;QAED;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA2B,EAAc,EAAE;IACzE,wCAAwC;IACxC,gBAAgB;IAChB,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEnE,oCAAoC;IACpC,yDAAyD;IACzD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE/D;;OAEG;IACH,MAAM,iBAAiB,GAAG,CAAC,QAA2B,EAAU,EAAE;QAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF;;;;;;OAMG;IACH,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAqB,EAAE;QAChE,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,CAAC;QAEjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa;gBAAE,SAAS;YAE7B,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrE,MAAM,IAAI,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxB,IAAI,EAAE,KAAK,EAAE;oBAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC9B,OAAO,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;oBAAE,SAAS;gBAE/C,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC/D,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAE3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,gBAAgB,GAAG,CACvB,cAAsB,EACtB,gBAAmC,EACnC,YAAoB,EACU,EAAE;QAChC,cAAc;QACd,MAAM,QAAQ,GAAG,GAAG,cAAc,CAAC,QAAQ,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC9G,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,kFAAkF;QAClF,IAAI,cAAc,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;oBACrB,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YACD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mEAAmE;QACnE,MAAM,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACrE,IAAI,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;gBACrB,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAKD,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,KAAuB,EAAU,EAAE;YACzE,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,UAAU;iBACd,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;iBACvD,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,KAAK,GAAY;YACrB;gBACE,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE,YAAY;aACpB;SACF,CAAC;QAEF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACpD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9C,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC;YAED,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpE,MAAM,IAAI,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxB,IAAI,EAAE,KAAK,EAAE;oBAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC9B,OAAO,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC/D,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAE3B,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;gBACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBAEjE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;gBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACtC,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;wBACzB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;gBAED,MAAM,QAAQ,GAAG,GAAG,YAAY,CAAC,QAAQ,IAAI,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;gBACvF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAEtB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,uBAAuB,GAAG,CAC9B,cAAsB,EACtB,gBAAmC,EACnC,UAAkB,EACc,EAAE;QAClC,MAAM,KAAK,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAElD,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACrD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,gBAAgB,CAC5B,cAAc,EACd,gBAAgB,EAChB,MAAM,CACP,CAAC;gBACF,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO;wBACL,eAAe,EAAE,MAAM;wBACvB,YAAY,EAAE,KAAK;qBACpB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,uBAAuB;QACvB,mBAAmB;KACpB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Array type conversion
3
+ */
4
+ import * as ts from "typescript";
5
+ import { IrType } from "../../../types.js";
6
+ import type { Binding } from "../../../binding/index.js";
7
+ /**
8
+ * Convert TypeScript array type to IR array type
9
+ */
10
+ export declare const convertArrayType: (node: ts.ArrayTypeNode, binding: Binding, convertType: (node: ts.TypeNode, binding: Binding) => IrType) => IrType;
11
+ //# sourceMappingURL=arrays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/arrays.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,EAAE,CAAC,aAAa,EACtB,SAAS,OAAO,EAChB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,KAC3D,MAMF,CAAC"}
@@ -4,10 +4,10 @@
4
4
  /**
5
5
  * Convert TypeScript array type to IR array type
6
6
  */
7
- export const convertArrayType = (node, checker, convertType) => {
7
+ export const convertArrayType = (node, binding, convertType) => {
8
8
  return {
9
9
  kind: "arrayType",
10
- elementType: convertType(node.elementType, checker),
10
+ elementType: convertType(node.elementType, binding),
11
11
  origin: "explicit",
12
12
  };
13
13
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/arrays.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAsB,EACtB,OAAgB,EAChB,WAA4D,EACpD,EAAE;IACV,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;QACnD,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Type converter - TypeScript types to IR types
3
+ * Main dispatcher - re-exports from orchestrator
4
+ *
5
+ * Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
6
+ */
7
+ import { IrType } from "../../../types.js";
8
+ import type { Binding } from "../../../binding/index.js";
9
+ export { convertType, convertFunctionType, convertObjectType, } from "./orchestrator.js";
10
+ /**
11
+ * Convert a captured type node (unknown) to IrType.
12
+ *
13
+ * This function encapsulates the ts.TypeNode cast in one place.
14
+ * Per Alice's spec: all TypeNode casts should be inside type-system/internal.
15
+ */
16
+ export declare const convertCapturedTypeNode: (node: unknown, binding: Binding) => IrType;
17
+ //# sourceMappingURL=converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,OAAO,EACb,SAAS,OAAO,KACf,MAA2D,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Type converter - TypeScript types to IR types
3
+ * Main dispatcher - re-exports from orchestrator
4
+ *
5
+ * Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
6
+ */
7
+ import { convertType as convertTypeInternal } from "./orchestrator.js";
8
+ export { convertType, convertFunctionType, convertObjectType, } from "./orchestrator.js";
9
+ /**
10
+ * Convert a captured type node (unknown) to IrType.
11
+ *
12
+ * This function encapsulates the ts.TypeNode cast in one place.
13
+ * Per Alice's spec: all TypeNode casts should be inside type-system/internal.
14
+ */
15
+ export const convertCapturedTypeNode = (node, binding) => convertTypeInternal(node, binding);
16
+ //# sourceMappingURL=converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAAa,EACb,OAAgB,EACR,EAAE,CAAC,mBAAmB,CAAC,IAAmB,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Function type conversion
3
+ *
4
+ * Phase 5 Step 4: Uses local parameter helper (no ProgramContext dependency).
5
+ * Type conversion should NOT depend on statement conversion.
6
+ */
7
+ import * as ts from "typescript";
8
+ import { IrType, IrFunctionType } from "../../../types.js";
9
+ import type { Binding } from "../../../binding/index.js";
10
+ /**
11
+ * Convert TypeScript function type to IR function type
12
+ */
13
+ export declare const convertFunctionType: (node: ts.FunctionTypeNode, binding: Binding, convertType: (node: ts.TypeNode, binding: Binding) => IrType) => IrFunctionType;
14
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAExE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,EAAE,CAAC,gBAAgB,EACzB,SAAS,OAAO,EAChB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,KAC3D,cAMF,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Function type conversion
3
+ *
4
+ * Phase 5 Step 4: Uses local parameter helper (no ProgramContext dependency).
5
+ * Type conversion should NOT depend on statement conversion.
6
+ */
7
+ import * as ts from "typescript";
8
+ import { convertBindingName } from "../../../syntax/binding-patterns.js";
9
+ /**
10
+ * Convert TypeScript function type to IR function type
11
+ */
12
+ export const convertFunctionType = (node, binding, convertType) => {
13
+ return {
14
+ kind: "functionType",
15
+ parameters: convertTypeParameters(node.parameters, binding, convertType),
16
+ returnType: convertType(node.type, binding),
17
+ };
18
+ };
19
+ /**
20
+ * Convert parameters for type signatures (no initializers, no ProgramContext).
21
+ *
22
+ * This is used for FunctionTypeNode and MethodSignature in type contexts.
23
+ * Unlike statement-converter's convertParameters, this:
24
+ * - Does NOT convert initializers (type signatures don't have them)
25
+ * - Does NOT require ProgramContext
26
+ * - Takes a convertType function for type node conversion
27
+ */
28
+ const convertTypeParameters = (parameters, binding, convertType) => {
29
+ return parameters.map((param) => {
30
+ let passing = "value";
31
+ let actualType = param.type;
32
+ // Detect ref<T>, out<T>, in<T>, inref<T> wrapper types
33
+ if (param.type &&
34
+ ts.isTypeReferenceNode(param.type) &&
35
+ ts.isIdentifier(param.type.typeName)) {
36
+ const typeName = param.type.typeName.text;
37
+ if ((typeName === "ref" ||
38
+ typeName === "out" ||
39
+ typeName === "in" ||
40
+ typeName === "inref") &&
41
+ param.type.typeArguments &&
42
+ param.type.typeArguments.length > 0) {
43
+ // Set passing mode (both "in" and "inref" map to C# "in")
44
+ passing =
45
+ typeName === "in" || typeName === "inref"
46
+ ? "in"
47
+ : typeName;
48
+ // Extract wrapped type
49
+ actualType = param.type.typeArguments[0];
50
+ }
51
+ }
52
+ // Convert type if present
53
+ const paramType = actualType ? convertType(actualType, binding) : undefined;
54
+ return {
55
+ kind: "parameter",
56
+ pattern: convertBindingName(param.name),
57
+ type: paramType,
58
+ // Type signatures don't have initializers
59
+ initializer: undefined,
60
+ isOptional: !!param.questionToken,
61
+ isRest: !!param.dotDotDotToken,
62
+ passing,
63
+ };
64
+ });
65
+ };
66
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAyB,EACzB,OAAgB,EAChB,WAA4D,EAC5C,EAAE;IAClB,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;QACxE,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAG,CAC5B,UAAiD,EACjD,OAAgB,EAChB,WAA4D,EACpC,EAAE;IAC1B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,OAAO,GAAmC,OAAO,CAAC;QACtD,IAAI,UAAU,GAA4B,KAAK,CAAC,IAAI,CAAC;QAErD,uDAAuD;QACvD,IACE,KAAK,CAAC,IAAI;YACV,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpC,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1C,IACE,CAAC,QAAQ,KAAK,KAAK;gBACjB,QAAQ,KAAK,KAAK;gBAClB,QAAQ,KAAK,IAAI;gBACjB,QAAQ,KAAK,OAAO,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,aAAa;gBACxB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EACnC,CAAC;gBACD,0DAA0D;gBAC1D,OAAO;oBACL,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,OAAO;wBACvC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAE,QAA0B,CAAC;gBAClC,uBAAuB;gBACvB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5E,OAAO;YACL,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;YACvC,IAAI,EAAE,SAAS;YACf,0CAA0C;YAC1C,WAAW,EAAE,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;YACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc;YAC9B,OAAO;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Type converter - Public API
3
+ *
4
+ * NOTE: convertBindingName was moved to ir/syntax/binding-patterns.ts
5
+ * per Alice's spec (it's syntax→IR conversion, not type logic).
6
+ *
7
+ * Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
8
+ */
9
+ export { convertType, convertFunctionType, convertObjectType, convertCapturedTypeNode, } from "./converter.js";
10
+ export { inferLambdaParamTypes, type LambdaParamInferenceResult, } from "./inference.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Type converter - Public API
3
+ *
4
+ * NOTE: convertBindingName was moved to ir/syntax/binding-patterns.ts
5
+ * per Alice's spec (it's syntax→IR conversion, not type logic).
6
+ *
7
+ * Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
8
+ */
9
+ export { convertType, convertFunctionType, convertObjectType, convertCapturedTypeNode, } from "./converter.js";
10
+ export { inferLambdaParamTypes, } from "./inference.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Type inference - Deterministic IR typing for lambda parameters
3
+ *
4
+ * IMPORTANT: Contextual type inference has been removed for INV-0 compliance.
5
+ * Lambda parameter types must now come from:
6
+ * 1. Explicit type annotations on parameters
7
+ * 2. ExpectedType threaded from call argument position
8
+ *
9
+ * The banned APIs (getContextualType, getTypeOfSymbolAtLocation, typeToTypeNode)
10
+ * are no longer used here. All typing is deterministic.
11
+ */
12
+ import type * as ts from "typescript";
13
+ import type { IrType } from "../../../types.js";
14
+ import type { Binding } from "../../../binding/index.js";
15
+ /**
16
+ * Result of inferring lambda parameter types from contextual signature.
17
+ * Returns array of IrType (one per parameter) if all params can be inferred,
18
+ * or undefined if inference fails for any parameter.
19
+ */
20
+ export type LambdaParamInferenceResult = {
21
+ readonly paramTypes: readonly (IrType | undefined)[];
22
+ readonly allInferred: boolean;
23
+ };
24
+ /**
25
+ * Infer parameter types for a lambda (arrow function or function expression).
26
+ *
27
+ * DETERMINISTIC IR TYPING (INV-0 compliant):
28
+ * This function no longer uses contextual type inference from TypeScript.
29
+ * Lambda parameter types are determined by:
30
+ * 1. Explicit type annotations on parameters → handled by param.type
31
+ * 2. ExpectedType threaded from call argument position → handled by calls.ts
32
+ *
33
+ * Returns undefined to indicate that no contextual inference is performed.
34
+ * The caller (expression converter) will use expectedType from the call site.
35
+ */
36
+ export declare const inferLambdaParamTypes: (_node: ts.ArrowFunction | ts.FunctionExpression, _binding: Binding) => LambdaParamInferenceResult | undefined;
37
+ //# sourceMappingURL=inference.d.ts.map