@tsonic/frontend 0.0.14 → 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 +431 -391
  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 +132 -57
  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 +33 -7
  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 +152 -8
  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
@@ -11,6 +11,7 @@
11
11
  * - TSN7409: 'infer' keyword not supported
12
12
  * - TSN7410: Intersection types not supported
13
13
  * - TSN7413: Dictionary key must be string or number
14
+ * - TSN7430: Arrow function requires explicit types (escape hatch)
14
15
  *
15
16
  * This ensures NativeAOT-compatible, predictable-performance output.
16
17
  *
@@ -21,14 +22,239 @@
21
22
  import * as ts from "typescript";
22
23
  import { addDiagnostic, createDiagnostic, } from "../types/diagnostic.js";
23
24
  import { getNodeLocation } from "./helpers.js";
24
- import { inferLambdaParamTypes } from "../ir/type-converter/index.js";
25
25
  import { UNSUPPORTED_MAPPED_UTILITY_TYPES, UNSUPPORTED_CONDITIONAL_UTILITY_TYPES, } from "./unsupported-utility-types.js";
26
- import { checkSynthesisEligibility } from "../ir/converters/anonymous-synthesis.js";
26
+ /**
27
+ * Check basic structural eligibility for object literal synthesis.
28
+ *
29
+ * This is a simplified check that doesn't require TypeSystem access.
30
+ * It validates structural constraints (no computed keys, no method shorthand, etc.)
31
+ * but does NOT validate spread type annotations (that requires TypeSystem).
32
+ *
33
+ * Full eligibility check happens during IR conversion.
34
+ */
35
+ const checkBasicSynthesisEligibility = (node) => {
36
+ for (const prop of node.properties) {
37
+ // Property assignment: check key type
38
+ if (ts.isPropertyAssignment(prop)) {
39
+ if (ts.isComputedPropertyName(prop.name)) {
40
+ // Computed key - check if it's a string literal
41
+ const expr = prop.name.expression;
42
+ if (!ts.isStringLiteral(expr)) {
43
+ return {
44
+ eligible: false,
45
+ reason: `Computed property key is not a string literal`,
46
+ };
47
+ }
48
+ }
49
+ // Check for symbol keys
50
+ if (ts.isPrivateIdentifier(prop.name)) {
51
+ return {
52
+ eligible: false,
53
+ reason: `Private identifier (symbol) keys are not supported`,
54
+ };
55
+ }
56
+ }
57
+ // Shorthand property: always ok (identifier key)
58
+ if (ts.isShorthandPropertyAssignment(prop)) {
59
+ continue;
60
+ }
61
+ // Spread: allow for now, full check happens during IR conversion
62
+ if (ts.isSpreadAssignment(prop)) {
63
+ // Basic check: spread source must be an identifier
64
+ if (!ts.isIdentifier(prop.expression)) {
65
+ return {
66
+ eligible: false,
67
+ reason: `Spread source must be a simple identifier (TSN5215)`,
68
+ };
69
+ }
70
+ continue;
71
+ }
72
+ // Method declaration: reject (use arrow functions instead)
73
+ if (ts.isMethodDeclaration(prop)) {
74
+ return {
75
+ eligible: false,
76
+ reason: `Method shorthand is not supported. Use arrow function syntax: 'name: () => ...'`,
77
+ };
78
+ }
79
+ // Getter/setter: reject
80
+ if (ts.isGetAccessorDeclaration(prop) ||
81
+ ts.isSetAccessorDeclaration(prop)) {
82
+ return {
83
+ eligible: false,
84
+ reason: `Getters and setters are not supported in synthesized types`,
85
+ };
86
+ }
87
+ }
88
+ return { eligible: true };
89
+ };
90
+ /**
91
+ * DETERMINISTIC IR TYPING (INV-0 compliant):
92
+ * Check if a lambda is in a position where expected types provide parameter types.
93
+ *
94
+ * This replaces the old getContextualType-based inference with AST analysis.
95
+ * Expected types are propagated from:
96
+ * 1. Call arguments - the callee's parameter type provides the expected type
97
+ * 2. Variable initializers - the variable's type annotation provides the expected type
98
+ * 3. New expression arguments - the constructor's parameter type provides the expected type
99
+ * 4. Return statements - the function's return type provides the expected type
100
+ * 5. Property assignments - the object's contextual type provides the expected type
101
+ * 6. Nested arrow functions - body of another arrow that has expected context
102
+ */
103
+ const lambdaHasExpectedTypeContext = (lambda) => {
104
+ const parent = lambda.parent;
105
+ // Case 1: Lambda is a call argument
106
+ // e.g., nums.sort((a, b) => a - b) or apply((x) => x * 2, 5)
107
+ if (ts.isCallExpression(parent)) {
108
+ return true;
109
+ }
110
+ // Case 2: Lambda is a new expression argument
111
+ // e.g., new Promise((resolve) => resolve())
112
+ if (ts.isNewExpression(parent)) {
113
+ return true;
114
+ }
115
+ // Case 3: Lambda is assigned to a typed variable
116
+ // e.g., const fn: (x: number) => number = (x) => x + 1
117
+ if (ts.isVariableDeclaration(parent) && parent.type) {
118
+ return true;
119
+ }
120
+ // Case 4: Lambda is in a return statement in a function with return type
121
+ if (ts.isReturnStatement(parent)) {
122
+ const containingFunction = findContainingFunction(parent);
123
+ if (containingFunction && containingFunction.type) {
124
+ return true;
125
+ }
126
+ }
127
+ // Case 5: Lambda is a property value where the object has contextual type
128
+ // e.g., const ops: OperationMap = { add: (a, b) => a + b }
129
+ if (ts.isPropertyAssignment(parent) &&
130
+ ts.isObjectLiteralExpression(parent.parent)) {
131
+ const grandparent = parent.parent.parent;
132
+ // Check if the object literal is assigned to a typed variable
133
+ if (ts.isVariableDeclaration(grandparent) && grandparent.type) {
134
+ return true;
135
+ }
136
+ // Check if the object literal is a call argument
137
+ if (ts.isCallExpression(grandparent) || ts.isNewExpression(grandparent)) {
138
+ return true;
139
+ }
140
+ }
141
+ // Case 6: Lambda is an array element where the array has a type
142
+ // e.g., const ops: Operation[] = [(a, b) => a + b]
143
+ if (ts.isArrayLiteralExpression(parent)) {
144
+ const arrayParent = parent.parent;
145
+ if (ts.isVariableDeclaration(arrayParent) && arrayParent.type) {
146
+ return true;
147
+ }
148
+ if (ts.isCallExpression(arrayParent) || ts.isNewExpression(arrayParent)) {
149
+ return true;
150
+ }
151
+ }
152
+ // Case 7: Lambda is the expression body of another arrow function
153
+ // e.g., () => () => "deeply nested" — the inner arrow is the body of the outer
154
+ // If the outer arrow has:
155
+ // a) an explicit return type annotation, OR
156
+ // b) expected-type context itself
157
+ // then the inner arrow has contextual type from the outer's expected return type.
158
+ if (ts.isArrowFunction(parent) || ts.isFunctionExpression(parent)) {
159
+ // Check if this lambda IS the body of the parent (not just a subexpression)
160
+ if (parent.body === lambda) {
161
+ // Parent has explicit return type → inner has context
162
+ if (parent.type) {
163
+ return true;
164
+ }
165
+ // Parent itself has expected-type context → inner has context
166
+ if (lambdaHasExpectedTypeContext(parent)) {
167
+ return true;
168
+ }
169
+ }
170
+ }
171
+ return false;
172
+ };
173
+ /**
174
+ * Find the containing function declaration/expression for a node.
175
+ */
176
+ const findContainingFunction = (node) => {
177
+ let current = node.parent;
178
+ while (current) {
179
+ if (ts.isFunctionDeclaration(current) ||
180
+ ts.isMethodDeclaration(current) ||
181
+ ts.isArrowFunction(current) ||
182
+ ts.isFunctionExpression(current)) {
183
+ return current;
184
+ }
185
+ current = current.parent;
186
+ }
187
+ return undefined;
188
+ };
189
+ /**
190
+ * DETERMINISTIC IR TYPING (INV-0 compliant):
191
+ * Check if an object literal is in a position where expected types are available.
192
+ *
193
+ * This replaces checker.getContextualType with AST analysis.
194
+ * Expected types are propagated from:
195
+ * 1. Variable initializers - the variable's type annotation provides the expected type
196
+ * 2. Call arguments - the callee's parameter type provides the expected type
197
+ * 3. New expression arguments - the constructor's parameter type provides the expected type
198
+ * 4. Return statements - the function's return type provides the expected type
199
+ * 5. Property assignments - the parent object's contextual type provides the expected type
200
+ */
201
+ const objectLiteralHasContextualType = (node) => {
202
+ const parent = node.parent;
203
+ // Case 1: Object is assigned to a typed variable
204
+ // e.g., const user: User = { name: "Alice" }
205
+ if (ts.isVariableDeclaration(parent) && parent.type) {
206
+ return true;
207
+ }
208
+ // Case 2: Object is a call argument
209
+ // e.g., createUser({ name: "Alice" })
210
+ if (ts.isCallExpression(parent)) {
211
+ return true;
212
+ }
213
+ // Case 3: Object is a new expression argument
214
+ // e.g., new User({ name: "Alice" })
215
+ if (ts.isNewExpression(parent)) {
216
+ return true;
217
+ }
218
+ // Case 4: Object is in a return statement in a function with return type
219
+ if (ts.isReturnStatement(parent)) {
220
+ const containingFunction = findContainingFunction(parent);
221
+ if (containingFunction && containingFunction.type) {
222
+ return true;
223
+ }
224
+ }
225
+ // Case 5: Object is a property value in another object that has contextual type
226
+ // e.g., const config: Config = { nested: { value: 1 } }
227
+ if (ts.isPropertyAssignment(parent) &&
228
+ ts.isObjectLiteralExpression(parent.parent)) {
229
+ return objectLiteralHasContextualType(parent.parent);
230
+ }
231
+ // Case 6: Object is an array element where the array has a type
232
+ // e.g., const users: User[] = [{ name: "Alice" }]
233
+ if (ts.isArrayLiteralExpression(parent)) {
234
+ const arrayParent = parent.parent;
235
+ if (ts.isVariableDeclaration(arrayParent) && arrayParent.type) {
236
+ return true;
237
+ }
238
+ if (ts.isCallExpression(arrayParent) || ts.isNewExpression(arrayParent)) {
239
+ return true;
240
+ }
241
+ }
242
+ // Case 7: Object is in an as-expression (type assertion)
243
+ // e.g., { name: "Alice" } as User
244
+ if (ts.isAsExpression(parent) && parent.type) {
245
+ return true;
246
+ }
247
+ // Case 8: Object is in a satisfies expression
248
+ // e.g., { name: "Alice" } satisfies User
249
+ if (ts.isSatisfiesExpression(parent) && parent.type) {
250
+ return true;
251
+ }
252
+ return false;
253
+ };
27
254
  /**
28
255
  * Validate a source file for static safety violations.
29
256
  */
30
257
  export const validateStaticSafety = (sourceFile, program, collector) => {
31
- const checker = program.checker;
32
258
  const visitor = (node, accCollector) => {
33
259
  let currentCollector = accCollector;
34
260
  // TSN7401: Check for explicit 'any' type annotations
@@ -47,15 +273,15 @@ export const validateStaticSafety = (sourceFile, program, collector) => {
47
273
  // For lambdas (arrow functions and function expressions), allow inference from context
48
274
  const isLambda = ts.isArrowFunction(parent) || ts.isFunctionExpression(parent);
49
275
  if (isLambda) {
50
- // Try contextual signature inference
51
- const inference = inferLambdaParamTypes(parent, checker);
52
- const paramIndex = parent.parameters.indexOf(node);
53
- // If inference succeeded for this parameter, don't emit TSN7405
54
- if (inference && inference.paramTypes[paramIndex] !== undefined) {
55
- // Inference succeeded - no error needed
276
+ // DETERMINISTIC IR TYPING (INV-0 compliant):
277
+ // Check if lambda is in a position where expected types provide parameter types.
278
+ // This replaces the old getContextualType-based inference.
279
+ const hasExpectedTypeContext = lambdaHasExpectedTypeContext(parent);
280
+ if (hasExpectedTypeContext) {
281
+ // Lambda is in a contextual position - converter will get types from expected type
56
282
  }
57
283
  else {
58
- // Inference failed - emit TSN7405
284
+ // No expected type context - emit TSN7405
59
285
  const paramName = ts.isIdentifier(node.name)
60
286
  ? node.name.text
61
287
  : "param";
@@ -80,21 +306,23 @@ export const validateStaticSafety = (sourceFile, program, collector) => {
80
306
  }
81
307
  // TSN7403: Check for object literals without contextual nominal type
82
308
  // Now supports auto-synthesis for eligible object literals (spreads, arrow props)
309
+ // DETERMINISTIC (INV-0): Uses AST-based contextual type detection, not getContextualType
83
310
  if (ts.isObjectLiteralExpression(node)) {
84
- const contextualType = checker.getContextualType(node);
85
- // If there's a contextual nominal type, we're good
86
- if (contextualType &&
87
- isNominalOrDictionaryType(contextualType, checker)) {
88
- // Has contextual type - no synthesis needed
311
+ // Check if object literal has a contextual type using deterministic AST analysis
312
+ const hasContextualType = objectLiteralHasContextualType(node);
313
+ if (hasContextualType) {
314
+ // Has contextual type - type checking will validate compatibility during IR conversion
89
315
  }
90
316
  else {
91
- // No contextual type - check if eligible for synthesis
92
- const eligibility = checkSynthesisEligibility(node, checker);
317
+ // No contextual type - check basic synthesis eligibility
318
+ // Full eligibility check (including spread type annotations) happens during IR conversion
319
+ // when we have TypeSystem access.
320
+ const eligibility = checkBasicSynthesisEligibility(node);
93
321
  if (!eligibility.eligible) {
94
322
  // Not eligible for synthesis - emit diagnostic with specific reason
95
323
  currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7403", "error", `Object literal cannot be synthesized: ${eligibility.reason}`, getNodeLocation(sourceFile, node), "Use an explicit type annotation, or restructure to use only identifier keys and arrow functions."));
96
324
  }
97
- // If eligible, synthesis will happen during IR conversion
325
+ // If eligible, full synthesis check happens during IR conversion
98
326
  }
99
327
  }
100
328
  // Check TypeReferenceNode for utility types and dictionary keys
@@ -158,7 +386,44 @@ export const validateStaticSafety = (sourceFile, program, collector) => {
158
386
  }
159
387
  // TSN7410: Check for intersection types (e.g., A & B)
160
388
  if (ts.isIntersectionTypeNode(node)) {
161
- currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7410", "error", "Intersection types (A & B) are not supported. Use a nominal type that explicitly includes all required members.", getNodeLocation(sourceFile, node), "Replace the intersection with an interface or class that combines the members, or a type alias to an object type with explicit members."));
389
+ const isTypeParamConstraint = ts.isTypeParameterDeclaration(node.parent) &&
390
+ node.parent.constraint === node;
391
+ // Intersection constraints are representable as multiple C# generic constraints:
392
+ // `T extends A & B` -> `where T : A, B`.
393
+ if (!isTypeParamConstraint) {
394
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7410", "error", "Intersection types (A & B) are not supported. Use a nominal type that explicitly includes all required members.", getNodeLocation(sourceFile, node), "Replace the intersection with an interface or class that combines the members, or a type alias to an object type with explicit members."));
395
+ }
396
+ }
397
+ // TSN7416: Check for new Array() without explicit type argument
398
+ // new Array<T>(n) is valid, new Array() or new Array(n) without type arg is not
399
+ if (ts.isNewExpression(node)) {
400
+ const callee = node.expression;
401
+ if (ts.isIdentifier(callee) && callee.text === "Array") {
402
+ const hasTypeArgs = node.typeArguments && node.typeArguments.length > 0;
403
+ if (!hasTypeArgs) {
404
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7416", "error", "'new Array()' requires an explicit type argument. Use 'new Array<T>(size)' instead.", getNodeLocation(sourceFile, node), "Add a type argument: new Array<int>(10), new Array<string>(5), etc."));
405
+ }
406
+ }
407
+ }
408
+ // TSN7417: Check for empty array literal without type annotation
409
+ // const x = [] is invalid, const x: T[] = [] is valid
410
+ if (ts.isArrayLiteralExpression(node) && node.elements.length === 0) {
411
+ // Check if parent provides type context
412
+ const parent = node.parent;
413
+ const hasTypeAnnotation = (ts.isVariableDeclaration(parent) && parent.type !== undefined) ||
414
+ (ts.isPropertyDeclaration(parent) && parent.type !== undefined) ||
415
+ (ts.isParameter(parent) && parent.type !== undefined) ||
416
+ ts.isReturnStatement(parent) || // return type from function
417
+ ts.isCallExpression(parent) || // passed as argument (has contextual type)
418
+ ts.isPropertyAssignment(parent); // object property (has contextual type)
419
+ if (!hasTypeAnnotation) {
420
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7417", "error", "Empty array literal requires a type annotation. Use 'const x: T[] = []' instead.", getNodeLocation(sourceFile, node), "Add a type annotation: const x: number[] = []; or const x: string[] = [];"));
421
+ }
422
+ }
423
+ // TSN7430: Arrow function escape hatch validation
424
+ // Non-simple arrows must have explicit type annotations
425
+ if (ts.isArrowFunction(node)) {
426
+ currentCollector = validateArrowEscapeHatch(node, sourceFile, program.checker, currentCollector);
162
427
  }
163
428
  // Continue visiting children
164
429
  ts.forEachChild(node, (child) => {
@@ -168,83 +433,6 @@ export const validateStaticSafety = (sourceFile, program, collector) => {
168
433
  };
169
434
  return visitor(sourceFile, collector);
170
435
  };
171
- /**
172
- * Check if a contextual type is a nominal type (interface, type alias, class)
173
- * or a dictionary type that we can emit.
174
- *
175
- * Returns false for anonymous object types like `{ x: number }` without a name.
176
- *
177
- * Special case: Union types defined via type aliases (e.g., Result<T, E> = { ok: true; value: T } | {...})
178
- * are considered nominal because we generate synthetic interfaces for them during IR building.
179
- */
180
- const isNominalOrDictionaryType = (type, checker) => {
181
- // Check if it's a dictionary type (Record<K,V> or index signature)
182
- if (isTsDictionaryType(type)) {
183
- return true;
184
- }
185
- // Check if the type has an aliasSymbol (used via a type alias)
186
- // This catches: type Result = { ok: true } | { ok: false }
187
- // where the union was defined via a type alias
188
- if (type.aliasSymbol) {
189
- const aliasDecl = type.aliasSymbol.getDeclarations()?.[0];
190
- if (aliasDecl && ts.isTypeAliasDeclaration(aliasDecl)) {
191
- return true;
192
- }
193
- }
194
- // Check if the type has a symbol with a declaration (named type)
195
- const symbol = type.getSymbol();
196
- if (symbol) {
197
- const declarations = symbol.getDeclarations();
198
- const decl = declarations?.[0];
199
- if (decl !== undefined) {
200
- // Accept: interface, type alias, class
201
- if (ts.isInterfaceDeclaration(decl) ||
202
- ts.isTypeAliasDeclaration(decl) ||
203
- ts.isClassDeclaration(decl)) {
204
- return true;
205
- }
206
- }
207
- }
208
- // Check for union types with aliasSymbol (discriminated unions via type alias)
209
- // This handles: return { ok: true, value } where return type is Result<T,E>
210
- if (type.isUnion()) {
211
- // Check if this union was created from a type alias
212
- if (type.aliasSymbol) {
213
- return true;
214
- }
215
- }
216
- // Check for primitive types (allowed)
217
- if (type.flags & ts.TypeFlags.String ||
218
- type.flags & ts.TypeFlags.Number ||
219
- type.flags & ts.TypeFlags.Boolean ||
220
- type.flags & ts.TypeFlags.Null ||
221
- type.flags & ts.TypeFlags.Undefined ||
222
- type.flags & ts.TypeFlags.Void) {
223
- return true;
224
- }
225
- // Check for array types (allowed)
226
- if (checker.isArrayType(type) || checker.isTupleType(type)) {
227
- return true;
228
- }
229
- return false;
230
- };
231
- /**
232
- * Check if a type is a TS dictionary type (Record<K,V> or index signature).
233
- *
234
- * TS dictionary types:
235
- * - Record<string, T> → has aliasSymbol named "Record"
236
- * - { [k: string]: T } → has string index signature
237
- */
238
- const isTsDictionaryType = (type) => {
239
- // Check for Record<K,V> utility type
240
- if (type.aliasSymbol?.name === "Record") {
241
- return true;
242
- }
243
- // Check for index signature type like { [k: string]: T }
244
- const stringIndexType = type.getStringIndexType();
245
- const numberIndexType = type.getNumberIndexType();
246
- return !!(stringIndexType || numberIndexType);
247
- };
248
436
  /**
249
437
  * Check if a type node represents an allowed dictionary key type.
250
438
  * Allowed: string, number (matches TypeScript's PropertyKey constraint)
@@ -283,4 +471,86 @@ const isAllowedKeyType = (typeNode) => {
283
471
  }
284
472
  return false;
285
473
  };
474
+ /**
475
+ * TSN7430: Arrow function escape hatch validation.
476
+ *
477
+ * Arrow functions can only infer types from context if they meet the
478
+ * "simple arrow" criteria. Non-simple arrows must have explicit annotations.
479
+ *
480
+ * Simple Arrow Definition (per spec):
481
+ * 1. Every parameter pattern is a simple identifier (no destructuring)
482
+ * 2. No default initializers
483
+ * 3. No rest parameters
484
+ *
485
+ * Notes:
486
+ * - Async arrows CAN be contextually typed when expected types are available.
487
+ * - Block-bodied arrows CAN be contextually typed when expected types are available.
488
+ *
489
+ * If an arrow fails ANY of these criteria AND doesn't have explicit types,
490
+ * emit TSN7430.
491
+ */
492
+ const validateArrowEscapeHatch = (node, sourceFile, _checker, collector) => {
493
+ // Check if arrow has explicit parameter types and return type
494
+ const hasExplicitReturnType = node.type !== undefined;
495
+ const allParamsExplicitlyTyped = node.parameters.every((param) => param.type !== undefined);
496
+ // If fully typed, no escape hatch validation needed
497
+ if (hasExplicitReturnType && allParamsExplicitlyTyped) {
498
+ return collector;
499
+ }
500
+ // Determine if this is a "simple arrow"
501
+ const simpleArrowResult = isSimpleArrow(node);
502
+ // If it's a simple arrow shape, check for contextual type
503
+ // DETERMINISTIC (INV-0): Uses AST-based contextual type detection, not getContextualType
504
+ if (simpleArrowResult.isSimple) {
505
+ // Check if arrow has expected type context using deterministic AST analysis
506
+ const hasExpectedType = lambdaHasExpectedTypeContext(node);
507
+ if (hasExpectedType) {
508
+ // Contextual type available - parameter inference will proceed during IR conversion
509
+ // Parameter count validation is done in the IR conversion phase
510
+ return collector;
511
+ }
512
+ else {
513
+ // No contextual type available
514
+ return addDiagnostic(collector, createDiagnostic("TSN7430", "error", "Arrow function requires explicit types. No contextual type available for inference.", getNodeLocation(sourceFile, node), "Add explicit type annotations: (x: Type, y: Type): ReturnType => expression"));
515
+ }
516
+ }
517
+ // Not a simple arrow - emit escape hatch error with specific reason
518
+ return addDiagnostic(collector, createDiagnostic("TSN7430", "error", `Arrow function requires explicit types. ${simpleArrowResult.reason}`, getNodeLocation(sourceFile, node), "Only expression-bodied arrows with simple identifier parameters can infer types from context. Add explicit parameter and return type annotations."));
519
+ };
520
+ /**
521
+ * Check if an arrow function meets the "simple arrow" criteria for type inference.
522
+ *
523
+ * Returns { isSimple: true } if all criteria are met, or
524
+ * { isSimple: false, reason: string } explaining why it's not simple.
525
+ */
526
+ const isSimpleArrow = (node) => {
527
+ // 1. All parameter patterns must be simple identifiers (no destructuring)
528
+ for (const param of node.parameters) {
529
+ if (!ts.isIdentifier(param.name)) {
530
+ return {
531
+ isSimple: false,
532
+ reason: "Arrow functions with destructuring patterns require explicit type annotations.",
533
+ };
534
+ }
535
+ }
536
+ // 2. No default initializers
537
+ for (const param of node.parameters) {
538
+ if (param.initializer !== undefined) {
539
+ return {
540
+ isSimple: false,
541
+ reason: "Arrow functions with default parameter values require explicit type annotations.",
542
+ };
543
+ }
544
+ }
545
+ // 3. No rest parameters
546
+ for (const param of node.parameters) {
547
+ if (param.dotDotDotToken !== undefined) {
548
+ return {
549
+ isSimple: false,
550
+ reason: "Arrow functions with rest parameters require explicit type annotations.",
551
+ };
552
+ }
553
+ }
554
+ return { isSimple: true };
555
+ };
286
556
  //# sourceMappingURL=static-safety.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"static-safety.js","sourceRoot":"","sources":["../../src/validation/static-safety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"static-safety.js","sourceRoot":"","sources":["../../src/validation/static-safety.ts"],"names":[],"mappings":"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"}