@tsonic/frontend 0.0.74 → 0.0.75

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 (1782) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/core-intrinsics/provenance.d.ts +7 -0
  3. package/dist/core-intrinsics/provenance.d.ts.map +1 -1
  4. package/dist/core-intrinsics/provenance.js +27 -4
  5. package/dist/core-intrinsics/provenance.js.map +1 -1
  6. package/dist/graph/extraction/imports.d.ts.map +1 -1
  7. package/dist/graph/extraction/imports.js +2 -0
  8. package/dist/graph/extraction/imports.js.map +1 -1
  9. package/dist/ir/binding/binding-call-resolution-calls.d.ts +11 -0
  10. package/dist/ir/binding/binding-call-resolution-calls.d.ts.map +1 -0
  11. package/dist/ir/binding/binding-call-resolution-calls.js +974 -0
  12. package/dist/ir/binding/binding-call-resolution-calls.js.map +1 -0
  13. package/dist/ir/binding/binding-call-resolution-candidates.d.ts +15 -0
  14. package/dist/ir/binding/binding-call-resolution-candidates.d.ts.map +1 -0
  15. package/dist/ir/binding/binding-call-resolution-candidates.js +178 -0
  16. package/dist/ir/binding/binding-call-resolution-candidates.js.map +1 -0
  17. package/dist/ir/binding/binding-call-resolution.d.ts +11 -0
  18. package/dist/ir/binding/binding-call-resolution.d.ts.map +1 -0
  19. package/dist/ir/binding/binding-call-resolution.js +11 -0
  20. package/dist/ir/binding/binding-call-resolution.js.map +1 -0
  21. package/dist/ir/binding/binding-factory.d.ts +7 -4
  22. package/dist/ir/binding/binding-factory.d.ts.map +1 -1
  23. package/dist/ir/binding/binding-factory.js +44 -829
  24. package/dist/ir/binding/binding-factory.js.map +1 -1
  25. package/dist/ir/binding/binding-helpers.d.ts +1 -0
  26. package/dist/ir/binding/binding-helpers.d.ts.map +1 -1
  27. package/dist/ir/binding/binding-helpers.js +37 -14
  28. package/dist/ir/binding/binding-helpers.js.map +1 -1
  29. package/dist/ir/binding/binding-registry.d.ts +52 -0
  30. package/dist/ir/binding/binding-registry.d.ts.map +1 -0
  31. package/dist/ir/binding/binding-registry.js +582 -0
  32. package/dist/ir/binding/binding-registry.js.map +1 -0
  33. package/dist/ir/binding/binding-types.d.ts +2 -0
  34. package/dist/ir/binding/binding-types.d.ts.map +1 -1
  35. package/dist/ir/binding-resolution-cases/extension-method-binding.test.d.ts +7 -0
  36. package/dist/ir/binding-resolution-cases/extension-method-binding.test.d.ts.map +1 -0
  37. package/dist/ir/binding-resolution-cases/extension-method-binding.test.js +463 -0
  38. package/dist/ir/binding-resolution-cases/extension-method-binding.test.js.map +1 -0
  39. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.d.ts +6 -0
  40. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.d.ts.map +1 -0
  41. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.js +252 -0
  42. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.js.map +1 -0
  43. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.d.ts +6 -0
  44. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.d.ts.map +1 -0
  45. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.js +369 -0
  46. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.js.map +1 -0
  47. package/dist/ir/binding-resolution-cases/extract-type-name.test.d.ts +5 -0
  48. package/dist/ir/binding-resolution-cases/extract-type-name.test.d.ts.map +1 -0
  49. package/dist/ir/binding-resolution-cases/extract-type-name.test.js +57 -0
  50. package/dist/ir/binding-resolution-cases/extract-type-name.test.js.map +1 -0
  51. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.d.ts +5 -0
  52. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.d.ts.map +1 -0
  53. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.js +323 -0
  54. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.js.map +1 -0
  55. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.d.ts +5 -0
  56. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.d.ts.map +1 -0
  57. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.js +1057 -0
  58. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.js.map +1 -0
  59. package/dist/ir/binding-resolution-cases/helpers.d.ts +38 -0
  60. package/dist/ir/binding-resolution-cases/helpers.d.ts.map +1 -0
  61. package/dist/ir/binding-resolution-cases/helpers.js +59 -0
  62. package/dist/ir/binding-resolution-cases/helpers.js.map +1 -0
  63. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.d.ts +5 -0
  64. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.d.ts.map +1 -0
  65. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.js +259 -0
  66. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.js.map +1 -0
  67. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.d.ts +2 -0
  68. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.d.ts.map +1 -0
  69. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.js +566 -0
  70. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.js.map +1 -0
  71. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.d.ts +5 -0
  72. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.d.ts.map +1 -0
  73. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.js +186 -0
  74. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.js.map +1 -0
  75. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.d.ts +6 -0
  76. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.d.ts.map +1 -0
  77. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.js +198 -0
  78. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.js.map +1 -0
  79. package/dist/ir/binding-resolution.test.d.ts +9 -4
  80. package/dist/ir/binding-resolution.test.d.ts.map +1 -1
  81. package/dist/ir/binding-resolution.test.js +9 -1428
  82. package/dist/ir/binding-resolution.test.js.map +1 -1
  83. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.d.ts +8 -0
  84. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.d.ts.map +1 -0
  85. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.js +255 -0
  86. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.js.map +1 -0
  87. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.d.ts +11 -0
  88. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.d.ts.map +1 -0
  89. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.js +326 -0
  90. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.js.map +1 -0
  91. package/dist/ir/bindings-disambiguation.test.d.ts +2 -10
  92. package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -1
  93. package/dist/ir/bindings-disambiguation.test.js +2 -561
  94. package/dist/ir/bindings-disambiguation.test.js.map +1 -1
  95. package/dist/ir/builder/exports.d.ts +2 -2
  96. package/dist/ir/builder/exports.d.ts.map +1 -1
  97. package/dist/ir/builder/exports.js +6 -10
  98. package/dist/ir/builder/exports.js.map +1 -1
  99. package/dist/ir/builder/imports.d.ts.map +1 -1
  100. package/dist/ir/builder/imports.js +104 -58
  101. package/dist/ir/builder/imports.js.map +1 -1
  102. package/dist/ir/builder/orchestrator.d.ts.map +1 -1
  103. package/dist/ir/builder/orchestrator.js +7 -9
  104. package/dist/ir/builder/orchestrator.js.map +1 -1
  105. package/dist/ir/builder/statements.d.ts +5 -0
  106. package/dist/ir/builder/statements.d.ts.map +1 -1
  107. package/dist/ir/builder/statements.js +16 -5
  108. package/dist/ir/builder/statements.js.map +1 -1
  109. package/dist/ir/builder-cases/_test-helpers.d.ts +61 -0
  110. package/dist/ir/builder-cases/_test-helpers.d.ts.map +1 -0
  111. package/dist/ir/builder-cases/_test-helpers.js +123 -0
  112. package/dist/ir/builder-cases/_test-helpers.js.map +1 -0
  113. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.d.ts +2 -0
  114. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.d.ts.map +1 -0
  115. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.js +123 -0
  116. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.js.map +1 -0
  117. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.d.ts +2 -0
  118. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.d.ts.map +1 -0
  119. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.js +839 -0
  120. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.js.map +1 -0
  121. package/dist/ir/builder-cases/clr-identity.test.d.ts +5 -0
  122. package/dist/ir/builder-cases/clr-identity.test.d.ts.map +1 -0
  123. package/dist/ir/builder-cases/clr-identity.test.js +188 -0
  124. package/dist/ir/builder-cases/clr-identity.test.js.map +1 -0
  125. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.d.ts +2 -0
  126. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.d.ts.map +1 -0
  127. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.js +1436 -0
  128. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.js.map +1 -0
  129. package/dist/ir/builder-cases/conditional-narrowing.test.d.ts +5 -0
  130. package/dist/ir/builder-cases/conditional-narrowing.test.d.ts.map +1 -0
  131. package/dist/ir/builder-cases/conditional-narrowing.test.js +598 -0
  132. package/dist/ir/builder-cases/conditional-narrowing.test.js.map +1 -0
  133. package/dist/ir/builder-cases/contextual-typing-middleware.test.d.ts +5 -0
  134. package/dist/ir/builder-cases/contextual-typing-middleware.test.d.ts.map +1 -0
  135. package/dist/ir/builder-cases/contextual-typing-middleware.test.js +384 -0
  136. package/dist/ir/builder-cases/contextual-typing-middleware.test.js.map +1 -0
  137. package/dist/ir/builder-cases/expression-conversion.test.d.ts +5 -0
  138. package/dist/ir/builder-cases/expression-conversion.test.d.ts.map +1 -0
  139. package/dist/ir/builder-cases/expression-conversion.test.js +712 -0
  140. package/dist/ir/builder-cases/expression-conversion.test.js.map +1 -0
  141. package/dist/ir/builder-cases/fluent-and-nullable-params.test.d.ts +5 -0
  142. package/dist/ir/builder-cases/fluent-and-nullable-params.test.d.ts.map +1 -0
  143. package/dist/ir/builder-cases/fluent-and-nullable-params.test.js +170 -0
  144. package/dist/ir/builder-cases/fluent-and-nullable-params.test.js.map +1 -0
  145. package/dist/ir/builder-cases/for-of-loops.test.d.ts +5 -0
  146. package/dist/ir/builder-cases/for-of-loops.test.d.ts.map +1 -0
  147. package/dist/ir/builder-cases/for-of-loops.test.js +367 -0
  148. package/dist/ir/builder-cases/for-of-loops.test.js.map +1 -0
  149. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.d.ts +2 -0
  150. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.d.ts.map +1 -0
  151. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.js +192 -0
  152. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.js.map +1 -0
  153. package/dist/ir/builder-cases/implements-and-struct.test.d.ts +5 -0
  154. package/dist/ir/builder-cases/implements-and-struct.test.d.ts.map +1 -0
  155. package/dist/ir/builder-cases/implements-and-struct.test.js +145 -0
  156. package/dist/ir/builder-cases/implements-and-struct.test.js.map +1 -0
  157. package/dist/ir/builder-cases/import-extraction.test.d.ts +5 -0
  158. package/dist/ir/builder-cases/import-extraction.test.d.ts.map +1 -0
  159. package/dist/ir/builder-cases/import-extraction.test.js +852 -0
  160. package/dist/ir/builder-cases/import-extraction.test.js.map +1 -0
  161. package/dist/ir/builder-cases/imported-null-guard-assignments.test.d.ts +2 -0
  162. package/dist/ir/builder-cases/imported-null-guard-assignments.test.d.ts.map +1 -0
  163. package/dist/ir/builder-cases/imported-null-guard-assignments.test.js +185 -0
  164. package/dist/ir/builder-cases/imported-null-guard-assignments.test.js.map +1 -0
  165. package/dist/ir/builder-cases/imported-union-aliases.test.d.ts +2 -0
  166. package/dist/ir/builder-cases/imported-union-aliases.test.d.ts.map +1 -0
  167. package/dist/ir/builder-cases/imported-union-aliases.test.js +255 -0
  168. package/dist/ir/builder-cases/imported-union-aliases.test.js.map +1 -0
  169. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.d.ts +2 -0
  170. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.d.ts.map +1 -0
  171. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.js +1267 -0
  172. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.js.map +1 -0
  173. package/dist/ir/builder-cases/invocation-flow-assertions.test.d.ts +2 -0
  174. package/dist/ir/builder-cases/invocation-flow-assertions.test.d.ts.map +1 -0
  175. package/dist/ir/builder-cases/invocation-flow-assertions.test.js +198 -0
  176. package/dist/ir/builder-cases/invocation-flow-assertions.test.js.map +1 -0
  177. package/dist/ir/builder-cases/js-surface-helpers.test.d.ts +5 -0
  178. package/dist/ir/builder-cases/js-surface-helpers.test.d.ts.map +1 -0
  179. package/dist/ir/builder-cases/js-surface-helpers.test.js +1990 -0
  180. package/dist/ir/builder-cases/js-surface-helpers.test.js.map +1 -0
  181. package/dist/ir/builder-cases/module-structure-and-exports.test.d.ts +5 -0
  182. package/dist/ir/builder-cases/module-structure-and-exports.test.d.ts.map +1 -0
  183. package/dist/ir/builder-cases/module-structure-and-exports.test.js +97 -0
  184. package/dist/ir/builder-cases/module-structure-and-exports.test.js.map +1 -0
  185. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.d.ts +5 -0
  186. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.d.ts.map +1 -0
  187. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.js +511 -0
  188. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.js.map +1 -0
  189. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.d.ts +5 -0
  190. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.d.ts.map +1 -0
  191. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.js +676 -0
  192. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.js.map +1 -0
  193. package/dist/ir/builder-cases/object-exports-and-member-inference.test.d.ts +5 -0
  194. package/dist/ir/builder-cases/object-exports-and-member-inference.test.d.ts.map +1 -0
  195. package/dist/ir/builder-cases/object-exports-and-member-inference.test.js +159 -0
  196. package/dist/ir/builder-cases/object-exports-and-member-inference.test.js.map +1 -0
  197. package/dist/ir/builder-cases/object-synthesis-advanced.test.d.ts +5 -0
  198. package/dist/ir/builder-cases/object-synthesis-advanced.test.d.ts.map +1 -0
  199. package/dist/ir/builder-cases/object-synthesis-advanced.test.js +250 -0
  200. package/dist/ir/builder-cases/object-synthesis-advanced.test.js.map +1 -0
  201. package/dist/ir/builder-cases/object-synthesis.test.d.ts +5 -0
  202. package/dist/ir/builder-cases/object-synthesis.test.d.ts.map +1 -0
  203. package/dist/ir/builder-cases/object-synthesis.test.js +254 -0
  204. package/dist/ir/builder-cases/object-synthesis.test.js.map +1 -0
  205. package/dist/ir/builder-cases/overload-family-markers.test.d.ts +2 -0
  206. package/dist/ir/builder-cases/overload-family-markers.test.d.ts.map +1 -0
  207. package/dist/ir/builder-cases/overload-family-markers.test.js +264 -0
  208. package/dist/ir/builder-cases/overload-family-markers.test.js.map +1 -0
  209. package/dist/ir/builder-cases/overload-null-guard-selection.test.d.ts +2 -0
  210. package/dist/ir/builder-cases/overload-null-guard-selection.test.d.ts.map +1 -0
  211. package/dist/ir/builder-cases/overload-null-guard-selection.test.js +210 -0
  212. package/dist/ir/builder-cases/overload-null-guard-selection.test.js.map +1 -0
  213. package/dist/ir/builder-cases/overload-stub-typing.test.d.ts +2 -0
  214. package/dist/ir/builder-cases/overload-stub-typing.test.d.ts.map +1 -0
  215. package/dist/ir/builder-cases/overload-stub-typing.test.js +111 -0
  216. package/dist/ir/builder-cases/overload-stub-typing.test.js.map +1 -0
  217. package/dist/ir/builder-cases/private-members-and-instanceof.test.d.ts +5 -0
  218. package/dist/ir/builder-cases/private-members-and-instanceof.test.d.ts.map +1 -0
  219. package/dist/ir/builder-cases/private-members-and-instanceof.test.js +239 -0
  220. package/dist/ir/builder-cases/private-members-and-instanceof.test.js.map +1 -0
  221. package/dist/ir/builder-cases/promise-callback-typing.test.d.ts +5 -0
  222. package/dist/ir/builder-cases/promise-callback-typing.test.d.ts.map +1 -0
  223. package/dist/ir/builder-cases/promise-callback-typing.test.js +977 -0
  224. package/dist/ir/builder-cases/promise-callback-typing.test.js.map +1 -0
  225. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.d.ts +5 -0
  226. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.d.ts.map +1 -0
  227. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.js +509 -0
  228. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.js.map +1 -0
  229. package/dist/ir/builder-cases/statement-conversion.test.d.ts +5 -0
  230. package/dist/ir/builder-cases/statement-conversion.test.d.ts.map +1 -0
  231. package/dist/ir/builder-cases/statement-conversion.test.js +240 -0
  232. package/dist/ir/builder-cases/statement-conversion.test.js.map +1 -0
  233. package/dist/ir/builder-cases/type-access-and-records.test.d.ts +5 -0
  234. package/dist/ir/builder-cases/type-access-and-records.test.d.ts.map +1 -0
  235. package/dist/ir/builder-cases/type-access-and-records.test.js +420 -0
  236. package/dist/ir/builder-cases/type-access-and-records.test.js.map +1 -0
  237. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.d.ts +5 -0
  238. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.d.ts.map +1 -0
  239. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.js +187 -0
  240. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.js.map +1 -0
  241. package/dist/ir/builder.test.d.ts +27 -4
  242. package/dist/ir/builder.test.d.ts.map +1 -1
  243. package/dist/ir/builder.test.js +27 -3583
  244. package/dist/ir/builder.test.js.map +1 -1
  245. package/dist/ir/converters/access-paths.d.ts +20 -0
  246. package/dist/ir/converters/access-paths.d.ts.map +1 -0
  247. package/dist/ir/converters/access-paths.js +163 -0
  248. package/dist/ir/converters/access-paths.js.map +1 -0
  249. package/dist/ir/converters/array-type-guards.d.ts +7 -0
  250. package/dist/ir/converters/array-type-guards.d.ts.map +1 -0
  251. package/dist/ir/converters/array-type-guards.js +33 -0
  252. package/dist/ir/converters/array-type-guards.js.map +1 -0
  253. package/dist/ir/converters/assertion-wrapping.d.ts +4 -0
  254. package/dist/ir/converters/assertion-wrapping.d.ts.map +1 -0
  255. package/dist/ir/converters/assertion-wrapping.js +40 -0
  256. package/dist/ir/converters/assertion-wrapping.js.map +1 -0
  257. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -1
  258. package/dist/ir/converters/expressions/access/access-converter.js +104 -40
  259. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -1
  260. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.d.ts +18 -0
  261. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.d.ts.map +1 -0
  262. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.js +347 -0
  263. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.js.map +1 -0
  264. package/dist/ir/converters/expressions/access/binding-resolution-memberid.d.ts +28 -0
  265. package/dist/ir/converters/expressions/access/binding-resolution-memberid.d.ts.map +1 -0
  266. package/dist/ir/converters/expressions/access/binding-resolution-memberid.js +522 -0
  267. package/dist/ir/converters/expressions/access/binding-resolution-memberid.js.map +1 -0
  268. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +7 -31
  269. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -1
  270. package/dist/ir/converters/expressions/access/binding-resolution.js +7 -490
  271. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -1
  272. package/dist/ir/converters/expressions/access/member-resolution.d.ts +7 -6
  273. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -1
  274. package/dist/ir/converters/expressions/access/member-resolution.js +323 -77
  275. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -1
  276. package/dist/ir/converters/expressions/ambient-global-source-owner.d.ts +5 -0
  277. package/dist/ir/converters/expressions/ambient-global-source-owner.d.ts.map +1 -0
  278. package/dist/ir/converters/expressions/ambient-global-source-owner.js +252 -0
  279. package/dist/ir/converters/expressions/ambient-global-source-owner.js.map +1 -0
  280. package/dist/ir/converters/expressions/array-literals.d.ts +25 -0
  281. package/dist/ir/converters/expressions/array-literals.d.ts.map +1 -0
  282. package/dist/ir/converters/expressions/array-literals.js +356 -0
  283. package/dist/ir/converters/expressions/array-literals.js.map +1 -0
  284. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.d.ts +13 -0
  285. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.d.ts.map +1 -0
  286. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.js +56 -0
  287. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.js.map +1 -0
  288. package/dist/ir/converters/expressions/calls/call-converter.d.ts +7 -17
  289. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -1
  290. package/dist/ir/converters/expressions/calls/call-converter.js +7 -648
  291. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -1
  292. package/dist/ir/converters/expressions/calls/call-expression.d.ts +9 -0
  293. package/dist/ir/converters/expressions/calls/call-expression.d.ts.map +1 -0
  294. package/dist/ir/converters/expressions/calls/call-expression.js +9 -0
  295. package/dist/ir/converters/expressions/calls/call-expression.js.map +1 -0
  296. package/dist/ir/converters/expressions/calls/call-general.d.ts +25 -0
  297. package/dist/ir/converters/expressions/calls/call-general.d.ts.map +1 -0
  298. package/dist/ir/converters/expressions/calls/call-general.js +2237 -0
  299. package/dist/ir/converters/expressions/calls/call-general.js.map +1 -0
  300. package/dist/ir/converters/expressions/calls/call-intrinsics.d.ts +16 -0
  301. package/dist/ir/converters/expressions/calls/call-intrinsics.d.ts.map +1 -0
  302. package/dist/ir/converters/expressions/calls/call-intrinsics.js +308 -0
  303. package/dist/ir/converters/expressions/calls/call-intrinsics.js.map +1 -0
  304. package/dist/ir/converters/expressions/calls/call-resolution.d.ts +58 -0
  305. package/dist/ir/converters/expressions/calls/call-resolution.d.ts.map +1 -0
  306. package/dist/ir/converters/expressions/calls/call-resolution.js +293 -0
  307. package/dist/ir/converters/expressions/calls/call-resolution.js.map +1 -0
  308. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.d.ts +51 -0
  309. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.d.ts.map +1 -0
  310. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.js +313 -0
  311. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.js.map +1 -0
  312. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.d.ts +13 -0
  313. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.d.ts.map +1 -0
  314. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.js +251 -0
  315. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.js.map +1 -0
  316. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.d.ts +2 -0
  317. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.d.ts.map +1 -0
  318. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.js +18 -0
  319. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.js.map +1 -0
  320. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +12 -51
  321. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -1
  322. package/dist/ir/converters/expressions/calls/call-site-analysis.js +9 -526
  323. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -1
  324. package/dist/ir/converters/expressions/calls/invocation-finalization.d.ts +56 -0
  325. package/dist/ir/converters/expressions/calls/invocation-finalization.d.ts.map +1 -0
  326. package/dist/ir/converters/expressions/calls/invocation-finalization.js +723 -0
  327. package/dist/ir/converters/expressions/calls/invocation-finalization.js.map +1 -0
  328. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -1
  329. package/dist/ir/converters/expressions/calls/new-converter.js +78 -3
  330. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -1
  331. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.d.ts +22 -0
  332. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.d.ts.map +1 -0
  333. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.js +257 -0
  334. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.js.map +1 -0
  335. package/dist/ir/converters/expressions/collections.d.ts +5 -25
  336. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  337. package/dist/ir/converters/expressions/collections.js +5 -886
  338. package/dist/ir/converters/expressions/collections.js.map +1 -1
  339. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  340. package/dist/ir/converters/expressions/functions.js +80 -65
  341. package/dist/ir/converters/expressions/functions.js.map +1 -1
  342. package/dist/ir/converters/expressions/helpers.js +1 -1
  343. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  344. package/dist/ir/converters/expressions/import-meta.d.ts +3 -3
  345. package/dist/ir/converters/expressions/import-meta.d.ts.map +1 -1
  346. package/dist/ir/converters/expressions/import-meta.js +22 -8
  347. package/dist/ir/converters/expressions/import-meta.js.map +1 -1
  348. package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
  349. package/dist/ir/converters/expressions/literals.js +31 -6
  350. package/dist/ir/converters/expressions/literals.js.map +1 -1
  351. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.d.ts +9 -0
  352. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.d.ts.map +1 -0
  353. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.js +124 -0
  354. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.js.map +1 -0
  355. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.d.ts +8 -0
  356. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.d.ts.map +1 -0
  357. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.js +117 -0
  358. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.js.map +1 -0
  359. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.d.ts +8 -0
  360. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.d.ts.map +1 -0
  361. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.js +170 -0
  362. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.js.map +1 -0
  363. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.d.ts +31 -0
  364. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.d.ts.map +1 -0
  365. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.js +183 -0
  366. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.js.map +1 -0
  367. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +3 -16
  368. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
  369. package/dist/ir/converters/expressions/numeric-recovery.test.js +3 -407
  370. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
  371. package/dist/ir/converters/expressions/object-literal-helpers.d.ts +12 -0
  372. package/dist/ir/converters/expressions/object-literal-helpers.d.ts.map +1 -0
  373. package/dist/ir/converters/expressions/object-literal-helpers.js +12 -0
  374. package/dist/ir/converters/expressions/object-literal-helpers.js.map +1 -0
  375. package/dist/ir/converters/expressions/object-literal-synthesis.d.ts +27 -0
  376. package/dist/ir/converters/expressions/object-literal-synthesis.d.ts.map +1 -0
  377. package/dist/ir/converters/expressions/object-literal-synthesis.js +459 -0
  378. package/dist/ir/converters/expressions/object-literal-synthesis.js.map +1 -0
  379. package/dist/ir/converters/expressions/object-literal-type-helpers.d.ts +27 -0
  380. package/dist/ir/converters/expressions/object-literal-type-helpers.d.ts.map +1 -0
  381. package/dist/ir/converters/expressions/object-literal-type-helpers.js +267 -0
  382. package/dist/ir/converters/expressions/object-literal-type-helpers.js.map +1 -0
  383. package/dist/ir/converters/expressions/object-literals.d.ts +16 -0
  384. package/dist/ir/converters/expressions/object-literals.d.ts.map +1 -0
  385. package/dist/ir/converters/expressions/object-literals.js +317 -0
  386. package/dist/ir/converters/expressions/object-literals.js.map +1 -0
  387. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  388. package/dist/ir/converters/expressions/operators.js +33 -19
  389. package/dist/ir/converters/expressions/operators.js.map +1 -1
  390. package/dist/ir/converters/expressions/other.d.ts +4 -2
  391. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  392. package/dist/ir/converters/expressions/other.js +32 -10
  393. package/dist/ir/converters/expressions/other.js.map +1 -1
  394. package/dist/ir/converters/flow-narrowing.d.ts +6 -25
  395. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  396. package/dist/ir/converters/flow-narrowing.js +5 -418
  397. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  398. package/dist/ir/converters/heritage-reference-type.d.ts +5 -0
  399. package/dist/ir/converters/heritage-reference-type.d.ts.map +1 -0
  400. package/dist/ir/converters/heritage-reference-type.js +22 -0
  401. package/dist/ir/converters/heritage-reference-type.js.map +1 -0
  402. package/dist/ir/converters/narrowing-candidates.d.ts +7 -0
  403. package/dist/ir/converters/narrowing-candidates.d.ts.map +1 -0
  404. package/dist/ir/converters/narrowing-candidates.js +5 -0
  405. package/dist/ir/converters/narrowing-candidates.js.map +1 -0
  406. package/dist/ir/converters/narrowing-collection.d.ts +10 -0
  407. package/dist/ir/converters/narrowing-collection.d.ts.map +1 -0
  408. package/dist/ir/converters/narrowing-collection.js +10 -0
  409. package/dist/ir/converters/narrowing-collection.js.map +1 -0
  410. package/dist/ir/converters/narrowing-environment.d.ts +13 -0
  411. package/dist/ir/converters/narrowing-environment.d.ts.map +1 -0
  412. package/dist/ir/converters/narrowing-environment.js +83 -0
  413. package/dist/ir/converters/narrowing-environment.js.map +1 -0
  414. package/dist/ir/converters/narrowing-property-helpers.d.ts +8 -0
  415. package/dist/ir/converters/narrowing-property-helpers.d.ts.map +1 -0
  416. package/dist/ir/converters/narrowing-property-helpers.js +57 -0
  417. package/dist/ir/converters/narrowing-property-helpers.js.map +1 -0
  418. package/dist/ir/converters/narrowing-resolvers-equality.d.ts +22 -0
  419. package/dist/ir/converters/narrowing-resolvers-equality.d.ts.map +1 -0
  420. package/dist/ir/converters/narrowing-resolvers-equality.js +309 -0
  421. package/dist/ir/converters/narrowing-resolvers-equality.js.map +1 -0
  422. package/dist/ir/converters/narrowing-resolvers-equality.test.d.ts +2 -0
  423. package/dist/ir/converters/narrowing-resolvers-equality.test.d.ts.map +1 -0
  424. package/dist/ir/converters/narrowing-resolvers-equality.test.js +159 -0
  425. package/dist/ir/converters/narrowing-resolvers-equality.test.js.map +1 -0
  426. package/dist/ir/converters/narrowing-resolvers-typeof.d.ts +41 -0
  427. package/dist/ir/converters/narrowing-resolvers-typeof.d.ts.map +1 -0
  428. package/dist/ir/converters/narrowing-resolvers-typeof.js +251 -0
  429. package/dist/ir/converters/narrowing-resolvers-typeof.js.map +1 -0
  430. package/dist/ir/converters/narrowing-resolvers.d.ts +12 -0
  431. package/dist/ir/converters/narrowing-resolvers.d.ts.map +1 -0
  432. package/dist/ir/converters/narrowing-resolvers.js +10 -0
  433. package/dist/ir/converters/narrowing-resolvers.js.map +1 -0
  434. package/dist/ir/converters/narrowing-truthy.d.ts +19 -0
  435. package/dist/ir/converters/narrowing-truthy.d.ts.map +1 -0
  436. package/dist/ir/converters/narrowing-truthy.js +355 -0
  437. package/dist/ir/converters/narrowing-truthy.js.map +1 -0
  438. package/dist/ir/converters/reference-type-guards.d.ts +8 -0
  439. package/dist/ir/converters/reference-type-guards.d.ts.map +1 -0
  440. package/dist/ir/converters/reference-type-guards.js +51 -0
  441. package/dist/ir/converters/reference-type-guards.js.map +1 -0
  442. package/dist/ir/converters/reference-type-guards.test.d.ts +2 -0
  443. package/dist/ir/converters/reference-type-guards.test.d.ts.map +1 -0
  444. package/dist/ir/converters/reference-type-guards.test.js +51 -0
  445. package/dist/ir/converters/reference-type-guards.test.js.map +1 -0
  446. package/dist/ir/converters/return-expression-types.d.ts +3 -0
  447. package/dist/ir/converters/return-expression-types.d.ts.map +1 -0
  448. package/dist/ir/converters/return-expression-types.js +10 -0
  449. package/dist/ir/converters/return-expression-types.js.map +1 -0
  450. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
  451. package/dist/ir/converters/statements/control/blocks.js +72 -2
  452. package/dist/ir/converters/statements/control/blocks.js.map +1 -1
  453. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  454. package/dist/ir/converters/statements/control/conditionals.js +2 -12
  455. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  456. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  457. package/dist/ir/converters/statements/control/loops.js +18 -4
  458. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  459. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
  460. package/dist/ir/converters/statements/declarations/classes/constructors.js +36 -19
  461. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
  462. package/dist/ir/converters/statements/declarations/classes/member-names.d.ts +5 -0
  463. package/dist/ir/converters/statements/declarations/classes/member-names.d.ts.map +1 -0
  464. package/dist/ir/converters/statements/declarations/classes/member-names.js +6 -0
  465. package/dist/ir/converters/statements/declarations/classes/member-names.js.map +1 -0
  466. package/dist/ir/converters/statements/declarations/classes/method-declaration.d.ts +11 -0
  467. package/dist/ir/converters/statements/declarations/classes/method-declaration.d.ts.map +1 -0
  468. package/dist/ir/converters/statements/declarations/classes/method-declaration.js +54 -0
  469. package/dist/ir/converters/statements/declarations/classes/method-declaration.js.map +1 -0
  470. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -15
  471. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
  472. package/dist/ir/converters/statements/declarations/classes/methods.js +2 -810
  473. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  474. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
  475. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +15 -41
  476. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
  477. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +4 -1
  478. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
  479. package/dist/ir/converters/statements/declarations/classes/override-detection.js +18 -10
  480. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
  481. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
  482. package/dist/ir/converters/statements/declarations/classes/properties.js +10 -3
  483. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
  484. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
  485. package/dist/ir/converters/statements/declarations/functions.js +8 -2
  486. package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
  487. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  488. package/dist/ir/converters/statements/declarations/interfaces.js +67 -2
  489. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  490. package/dist/ir/converters/statements/declarations/overload-family-builders.d.ts +9 -0
  491. package/dist/ir/converters/statements/declarations/overload-family-builders.d.ts.map +1 -0
  492. package/dist/ir/converters/statements/declarations/overload-family-builders.js +21 -0
  493. package/dist/ir/converters/statements/declarations/overload-family-builders.js.map +1 -0
  494. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  495. package/dist/ir/converters/statements/declarations/type-aliases.js +12 -1
  496. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  497. package/dist/ir/converters/statements/declarations/variable-generic-lowering.d.ts +50 -0
  498. package/dist/ir/converters/statements/declarations/variable-generic-lowering.d.ts.map +1 -0
  499. package/dist/ir/converters/statements/declarations/variable-generic-lowering.js +281 -0
  500. package/dist/ir/converters/statements/declarations/variable-generic-lowering.js.map +1 -0
  501. package/dist/ir/converters/statements/declarations/variable-helpers.d.ts +29 -0
  502. package/dist/ir/converters/statements/declarations/variable-helpers.d.ts.map +1 -0
  503. package/dist/ir/converters/statements/declarations/variable-helpers.js +58 -0
  504. package/dist/ir/converters/statements/declarations/variable-helpers.js.map +1 -0
  505. package/dist/ir/converters/statements/declarations/variables-generic-function-values.d.ts +21 -0
  506. package/dist/ir/converters/statements/declarations/variables-generic-function-values.d.ts.map +1 -0
  507. package/dist/ir/converters/statements/declarations/variables-generic-function-values.js +263 -0
  508. package/dist/ir/converters/statements/declarations/variables-generic-function-values.js.map +1 -0
  509. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  510. package/dist/ir/converters/statements/declarations/variables.js +3 -262
  511. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  512. package/dist/ir/converters/synthetic-types.d.ts.map +1 -1
  513. package/dist/ir/converters/synthetic-types.js +83 -4
  514. package/dist/ir/converters/synthetic-types.js.map +1 -1
  515. package/dist/ir/converters/type-env.d.ts +3 -1
  516. package/dist/ir/converters/type-env.d.ts.map +1 -1
  517. package/dist/ir/converters/type-env.js +52 -19
  518. package/dist/ir/converters/type-env.js.map +1 -1
  519. package/dist/ir/expression-converter-dispatch.d.ts +21 -0
  520. package/dist/ir/expression-converter-dispatch.d.ts.map +1 -0
  521. package/dist/ir/expression-converter-dispatch.js +550 -0
  522. package/dist/ir/expression-converter-dispatch.js.map +1 -0
  523. package/dist/ir/expression-converter-helpers.d.ts +27 -0
  524. package/dist/ir/expression-converter-helpers.d.ts.map +1 -0
  525. package/dist/ir/expression-converter-helpers.js +172 -0
  526. package/dist/ir/expression-converter-helpers.js.map +1 -0
  527. package/dist/ir/expression-converter.d.ts +5 -15
  528. package/dist/ir/expression-converter.d.ts.map +1 -1
  529. package/dist/ir/expression-converter.js +5 -410
  530. package/dist/ir/expression-converter.js.map +1 -1
  531. package/dist/ir/field-marker.test.js +1 -1
  532. package/dist/ir/field-marker.test.js.map +1 -1
  533. package/dist/ir/json-global-typing.test.d.ts +2 -0
  534. package/dist/ir/json-global-typing.test.d.ts.map +1 -0
  535. package/dist/ir/json-global-typing.test.js +80 -0
  536. package/dist/ir/json-global-typing.test.js.map +1 -0
  537. package/dist/ir/program-context-factory.d.ts +25 -0
  538. package/dist/ir/program-context-factory.d.ts.map +1 -0
  539. package/dist/ir/program-context-factory.js +196 -0
  540. package/dist/ir/program-context-factory.js.map +1 -0
  541. package/dist/ir/program-context-types.d.ts +147 -0
  542. package/dist/ir/program-context-types.d.ts.map +1 -0
  543. package/dist/ir/program-context-types.js +123 -0
  544. package/dist/ir/program-context-types.js.map +1 -0
  545. package/dist/ir/program-context.d.ts +6 -122
  546. package/dist/ir/program-context.d.ts.map +1 -1
  547. package/dist/ir/program-context.js +5 -347
  548. package/dist/ir/program-context.js.map +1 -1
  549. package/dist/ir/program-context.test.js +20 -0
  550. package/dist/ir/program-context.test.js.map +1 -1
  551. package/dist/ir/syntax/overload-stubs.d.ts +4 -0
  552. package/dist/ir/syntax/overload-stubs.d.ts.map +1 -0
  553. package/dist/ir/syntax/overload-stubs.js +32 -0
  554. package/dist/ir/syntax/overload-stubs.js.map +1 -0
  555. package/dist/ir/syntax/property-names.d.ts +6 -0
  556. package/dist/ir/syntax/property-names.d.ts.map +1 -0
  557. package/dist/ir/syntax/property-names.js +116 -0
  558. package/dist/ir/syntax/property-names.js.map +1 -0
  559. package/dist/ir/type-system/call-resolution-callable-types.d.ts +10 -0
  560. package/dist/ir/type-system/call-resolution-callable-types.d.ts.map +1 -0
  561. package/dist/ir/type-system/call-resolution-callable-types.js +288 -0
  562. package/dist/ir/type-system/call-resolution-callable-types.js.map +1 -0
  563. package/dist/ir/type-system/call-resolution-candidate-selection.d.ts +9 -0
  564. package/dist/ir/type-system/call-resolution-candidate-selection.d.ts.map +1 -0
  565. package/dist/ir/type-system/call-resolution-candidate-selection.js +413 -0
  566. package/dist/ir/type-system/call-resolution-candidate-selection.js.map +1 -0
  567. package/dist/ir/type-system/call-resolution-inference.d.ts +12 -0
  568. package/dist/ir/type-system/call-resolution-inference.d.ts.map +1 -0
  569. package/dist/ir/type-system/call-resolution-inference.js +12 -0
  570. package/dist/ir/type-system/call-resolution-inference.js.map +1 -0
  571. package/dist/ir/type-system/call-resolution-method-substitution.d.ts +12 -0
  572. package/dist/ir/type-system/call-resolution-method-substitution.d.ts.map +1 -0
  573. package/dist/ir/type-system/call-resolution-method-substitution.js +115 -0
  574. package/dist/ir/type-system/call-resolution-method-substitution.js.map +1 -0
  575. package/dist/ir/type-system/call-resolution-parameters.d.ts +30 -0
  576. package/dist/ir/type-system/call-resolution-parameters.d.ts.map +1 -0
  577. package/dist/ir/type-system/call-resolution-parameters.js +167 -0
  578. package/dist/ir/type-system/call-resolution-parameters.js.map +1 -0
  579. package/dist/ir/type-system/call-resolution-receiver-substitution.d.ts +12 -0
  580. package/dist/ir/type-system/call-resolution-receiver-substitution.d.ts.map +1 -0
  581. package/dist/ir/type-system/call-resolution-receiver-substitution.js +134 -0
  582. package/dist/ir/type-system/call-resolution-receiver-substitution.js.map +1 -0
  583. package/dist/ir/type-system/call-resolution-resolve.d.ts +12 -0
  584. package/dist/ir/type-system/call-resolution-resolve.d.ts.map +1 -0
  585. package/dist/ir/type-system/call-resolution-resolve.js +275 -0
  586. package/dist/ir/type-system/call-resolution-resolve.js.map +1 -0
  587. package/dist/ir/type-system/call-resolution-scoring.d.ts +18 -0
  588. package/dist/ir/type-system/call-resolution-scoring.d.ts.map +1 -0
  589. package/dist/ir/type-system/call-resolution-scoring.js +166 -0
  590. package/dist/ir/type-system/call-resolution-scoring.js.map +1 -0
  591. package/dist/ir/type-system/call-resolution-signatures-catalog.d.ts +19 -0
  592. package/dist/ir/type-system/call-resolution-signatures-catalog.d.ts.map +1 -0
  593. package/dist/ir/type-system/call-resolution-signatures-catalog.js +121 -0
  594. package/dist/ir/type-system/call-resolution-signatures-catalog.js.map +1 -0
  595. package/dist/ir/type-system/call-resolution-signatures-catalog.test.d.ts +2 -0
  596. package/dist/ir/type-system/call-resolution-signatures-catalog.test.d.ts.map +1 -0
  597. package/dist/ir/type-system/call-resolution-signatures-catalog.test.js +88 -0
  598. package/dist/ir/type-system/call-resolution-signatures-catalog.test.js.map +1 -0
  599. package/dist/ir/type-system/call-resolution-signatures-raw.d.ts +21 -0
  600. package/dist/ir/type-system/call-resolution-signatures-raw.d.ts.map +1 -0
  601. package/dist/ir/type-system/call-resolution-signatures-raw.js +242 -0
  602. package/dist/ir/type-system/call-resolution-signatures-raw.js.map +1 -0
  603. package/dist/ir/type-system/call-resolution-signatures.d.ts +10 -0
  604. package/dist/ir/type-system/call-resolution-signatures.d.ts.map +1 -0
  605. package/dist/ir/type-system/call-resolution-signatures.js +10 -0
  606. package/dist/ir/type-system/call-resolution-signatures.js.map +1 -0
  607. package/dist/ir/type-system/call-resolution-type-ids.d.ts +43 -0
  608. package/dist/ir/type-system/call-resolution-type-ids.d.ts.map +1 -0
  609. package/dist/ir/type-system/call-resolution-type-ids.js +465 -0
  610. package/dist/ir/type-system/call-resolution-type-ids.js.map +1 -0
  611. package/dist/ir/type-system/call-resolution-type-ids.test.d.ts +2 -0
  612. package/dist/ir/type-system/call-resolution-type-ids.test.d.ts.map +1 -0
  613. package/dist/ir/type-system/call-resolution-type-ids.test.js +63 -0
  614. package/dist/ir/type-system/call-resolution-type-ids.test.js.map +1 -0
  615. package/dist/ir/type-system/call-resolution-unification.d.ts +18 -0
  616. package/dist/ir/type-system/call-resolution-unification.d.ts.map +1 -0
  617. package/dist/ir/type-system/call-resolution-unification.js +637 -0
  618. package/dist/ir/type-system/call-resolution-unification.js.map +1 -0
  619. package/dist/ir/type-system/call-resolution-utilities.d.ts +11 -0
  620. package/dist/ir/type-system/call-resolution-utilities.d.ts.map +1 -0
  621. package/dist/ir/type-system/call-resolution-utilities.js +11 -0
  622. package/dist/ir/type-system/call-resolution-utilities.js.map +1 -0
  623. package/dist/ir/type-system/inference-declarations-overrides.d.ts +33 -0
  624. package/dist/ir/type-system/inference-declarations-overrides.d.ts.map +1 -0
  625. package/dist/ir/type-system/inference-declarations-overrides.js +241 -0
  626. package/dist/ir/type-system/inference-declarations-overrides.js.map +1 -0
  627. package/dist/ir/type-system/inference-declarations-types.d.ts +20 -0
  628. package/dist/ir/type-system/inference-declarations-types.d.ts.map +1 -0
  629. package/dist/ir/type-system/inference-declarations-types.js +475 -0
  630. package/dist/ir/type-system/inference-declarations-types.js.map +1 -0
  631. package/dist/ir/type-system/inference-declarations.d.ts +10 -0
  632. package/dist/ir/type-system/inference-declarations.d.ts.map +1 -0
  633. package/dist/ir/type-system/inference-declarations.js +10 -0
  634. package/dist/ir/type-system/inference-declarations.js.map +1 -0
  635. package/dist/ir/type-system/inference-expressions-infer.d.ts +25 -0
  636. package/dist/ir/type-system/inference-expressions-infer.d.ts.map +1 -0
  637. package/dist/ir/type-system/inference-expressions-infer.js +427 -0
  638. package/dist/ir/type-system/inference-expressions-infer.js.map +1 -0
  639. package/dist/ir/type-system/inference-expressions-lambda.d.ts +13 -0
  640. package/dist/ir/type-system/inference-expressions-lambda.d.ts.map +1 -0
  641. package/dist/ir/type-system/inference-expressions-lambda.js +101 -0
  642. package/dist/ir/type-system/inference-expressions-lambda.js.map +1 -0
  643. package/dist/ir/type-system/inference-expressions.d.ts +10 -0
  644. package/dist/ir/type-system/inference-expressions.d.ts.map +1 -0
  645. package/dist/ir/type-system/inference-expressions.js +10 -0
  646. package/dist/ir/type-system/inference-expressions.js.map +1 -0
  647. package/dist/ir/type-system/inference-initializers-call.d.ts +37 -0
  648. package/dist/ir/type-system/inference-initializers-call.d.ts.map +1 -0
  649. package/dist/ir/type-system/inference-initializers-call.js +242 -0
  650. package/dist/ir/type-system/inference-initializers-call.js.map +1 -0
  651. package/dist/ir/type-system/inference-initializers-variable.d.ts +14 -0
  652. package/dist/ir/type-system/inference-initializers-variable.d.ts.map +1 -0
  653. package/dist/ir/type-system/inference-initializers-variable.js +178 -0
  654. package/dist/ir/type-system/inference-initializers-variable.js.map +1 -0
  655. package/dist/ir/type-system/inference-initializers.d.ts +10 -0
  656. package/dist/ir/type-system/inference-initializers.d.ts.map +1 -0
  657. package/dist/ir/type-system/inference-initializers.js +10 -0
  658. package/dist/ir/type-system/inference-initializers.js.map +1 -0
  659. package/dist/ir/type-system/inference-member-id.d.ts +21 -0
  660. package/dist/ir/type-system/inference-member-id.d.ts.map +1 -0
  661. package/dist/ir/type-system/inference-member-id.js +402 -0
  662. package/dist/ir/type-system/inference-member-id.js.map +1 -0
  663. package/dist/ir/type-system/inference-member-lookup.d.ts +15 -0
  664. package/dist/ir/type-system/inference-member-lookup.d.ts.map +1 -0
  665. package/dist/ir/type-system/inference-member-lookup.js +567 -0
  666. package/dist/ir/type-system/inference-member-lookup.js.map +1 -0
  667. package/dist/ir/type-system/inference-member-resolution.d.ts +10 -0
  668. package/dist/ir/type-system/inference-member-resolution.d.ts.map +1 -0
  669. package/dist/ir/type-system/inference-member-resolution.js +10 -0
  670. package/dist/ir/type-system/inference-member-resolution.js.map +1 -0
  671. package/dist/ir/type-system/inference-type-preference.d.ts +9 -0
  672. package/dist/ir/type-system/inference-type-preference.d.ts.map +1 -0
  673. package/dist/ir/type-system/inference-type-preference.js +67 -0
  674. package/dist/ir/type-system/inference-type-preference.js.map +1 -0
  675. package/dist/ir/type-system/inference-utilities.d.ts +48 -0
  676. package/dist/ir/type-system/inference-utilities.d.ts.map +1 -0
  677. package/dist/ir/type-system/inference-utilities.js +182 -0
  678. package/dist/ir/type-system/inference-utilities.js.map +1 -0
  679. package/dist/ir/type-system/internal/handle-types.d.ts +12 -0
  680. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  681. package/dist/ir/type-system/internal/nominal-env.d.ts +1 -1
  682. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  683. package/dist/ir/type-system/internal/nominal-env.js +12 -114
  684. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  685. package/dist/ir/type-system/internal/registry-builder.d.ts +19 -0
  686. package/dist/ir/type-system/internal/registry-builder.d.ts.map +1 -0
  687. package/dist/ir/type-system/internal/registry-builder.js +292 -0
  688. package/dist/ir/type-system/internal/registry-builder.js.map +1 -0
  689. package/dist/ir/type-system/internal/registry-helpers-extraction.d.ts +69 -0
  690. package/dist/ir/type-system/internal/registry-helpers-extraction.d.ts.map +1 -0
  691. package/dist/ir/type-system/internal/registry-helpers-extraction.js +429 -0
  692. package/dist/ir/type-system/internal/registry-helpers-extraction.js.map +1 -0
  693. package/dist/ir/type-system/internal/registry-helpers-inference.d.ts +19 -0
  694. package/dist/ir/type-system/internal/registry-helpers-inference.d.ts.map +1 -0
  695. package/dist/ir/type-system/internal/registry-helpers-inference.js +237 -0
  696. package/dist/ir/type-system/internal/registry-helpers-inference.js.map +1 -0
  697. package/dist/ir/type-system/internal/registry-helpers.d.ts +12 -0
  698. package/dist/ir/type-system/internal/registry-helpers.d.ts.map +1 -0
  699. package/dist/ir/type-system/internal/registry-helpers.js +12 -0
  700. package/dist/ir/type-system/internal/registry-helpers.js.map +1 -0
  701. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.d.ts +53 -0
  702. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.d.ts.map +1 -0
  703. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.js +281 -0
  704. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.js.map +1 -0
  705. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.d.ts +35 -0
  706. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.d.ts.map +1 -0
  707. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.js +308 -0
  708. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.js.map +1 -0
  709. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.d.ts +23 -0
  710. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.d.ts.map +1 -0
  711. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.js +23 -0
  712. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.js.map +1 -0
  713. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.d.ts +5 -0
  714. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.d.ts.map +1 -0
  715. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.js +232 -0
  716. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.js.map +1 -0
  717. package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -1
  718. package/dist/ir/type-system/internal/type-converter/functions.js +21 -0
  719. package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -1
  720. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.d.ts +37 -0
  721. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.d.ts.map +1 -0
  722. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.js +334 -0
  723. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.js.map +1 -0
  724. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.d.ts +27 -0
  725. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.d.ts.map +1 -0
  726. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.js +174 -0
  727. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.js.map +1 -0
  728. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.d.ts +10 -0
  729. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.d.ts.map +1 -0
  730. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.js +10 -0
  731. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.js.map +1 -0
  732. package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -1
  733. package/dist/ir/type-system/internal/type-converter/objects.js +11 -6
  734. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  735. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +6 -5
  736. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  737. package/dist/ir/type-system/internal/type-converter/orchestrator.js +80 -463
  738. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  739. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +47 -57
  740. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -1
  741. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  742. package/dist/ir/type-system/internal/type-converter/primitives.js +9 -1
  743. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  744. package/dist/ir/type-system/internal/type-converter/references-alias.d.ts +21 -0
  745. package/dist/ir/type-system/internal/type-converter/references-alias.d.ts.map +1 -0
  746. package/dist/ir/type-system/internal/type-converter/references-alias.js +267 -0
  747. package/dist/ir/type-system/internal/type-converter/references-alias.js.map +1 -0
  748. package/dist/ir/type-system/internal/type-converter/references-converter.d.ts +16 -0
  749. package/dist/ir/type-system/internal/type-converter/references-converter.d.ts.map +1 -0
  750. package/dist/ir/type-system/internal/type-converter/references-converter.js +203 -0
  751. package/dist/ir/type-system/internal/type-converter/references-converter.js.map +1 -0
  752. package/dist/ir/type-system/internal/type-converter/references-normalize.d.ts +49 -0
  753. package/dist/ir/type-system/internal/type-converter/references-normalize.d.ts.map +1 -0
  754. package/dist/ir/type-system/internal/type-converter/references-normalize.js +162 -0
  755. package/dist/ir/type-system/internal/type-converter/references-normalize.js.map +1 -0
  756. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.d.ts +52 -0
  757. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.d.ts.map +1 -0
  758. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.js +295 -0
  759. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.js.map +1 -0
  760. package/dist/ir/type-system/internal/type-converter/references-structural-members.d.ts +55 -0
  761. package/dist/ir/type-system/internal/type-converter/references-structural-members.d.ts.map +1 -0
  762. package/dist/ir/type-system/internal/type-converter/references-structural-members.js +334 -0
  763. package/dist/ir/type-system/internal/type-converter/references-structural-members.js.map +1 -0
  764. package/dist/ir/type-system/internal/type-converter/references-structural.d.ts +12 -0
  765. package/dist/ir/type-system/internal/type-converter/references-structural.d.ts.map +1 -0
  766. package/dist/ir/type-system/internal/type-converter/references-structural.js +12 -0
  767. package/dist/ir/type-system/internal/type-converter/references-structural.js.map +1 -0
  768. package/dist/ir/type-system/internal/type-converter/references.d.ts +8 -9
  769. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  770. package/dist/ir/type-system/internal/type-converter/references.js +7 -981
  771. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  772. package/dist/ir/type-system/internal/type-converter/type-operators.d.ts +16 -0
  773. package/dist/ir/type-system/internal/type-converter/type-operators.d.ts.map +1 -0
  774. package/dist/ir/type-system/internal/type-converter/type-operators.js +197 -0
  775. package/dist/ir/type-system/internal/type-converter/type-operators.js.map +1 -0
  776. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -1
  777. package/dist/ir/type-system/internal/type-converter/unions-intersections.js +2 -4
  778. package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -1
  779. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.d.ts +2 -0
  780. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.d.ts.map +1 -0
  781. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.js +246 -0
  782. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.js.map +1 -0
  783. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.d.ts +2 -0
  784. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.d.ts.map +1 -0
  785. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.js +179 -0
  786. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.js.map +1 -0
  787. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.d.ts +2 -0
  788. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.d.ts.map +1 -0
  789. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.js +277 -0
  790. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.js.map +1 -0
  791. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.d.ts +2 -0
  792. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.d.ts.map +1 -0
  793. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.js +163 -0
  794. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.js.map +1 -0
  795. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.d.ts +2 -0
  796. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.d.ts.map +1 -0
  797. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.js +305 -0
  798. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.js.map +1 -0
  799. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.d.ts +38 -0
  800. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.d.ts.map +1 -0
  801. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.js +127 -0
  802. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.js.map +1 -0
  803. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.d.ts +2 -0
  804. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.d.ts.map +1 -0
  805. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.js +145 -0
  806. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.js.map +1 -0
  807. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts +6 -76
  808. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  809. package/dist/ir/type-system/internal/type-converter/utility-types.js +6 -1031
  810. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  811. package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts +6 -9
  812. package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -1
  813. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +6 -1416
  814. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  815. package/dist/ir/type-system/internal/type-converter/value-inference.d.ts +13 -0
  816. package/dist/ir/type-system/internal/type-converter/value-inference.d.ts.map +1 -0
  817. package/dist/ir/type-system/internal/type-converter/value-inference.js +311 -0
  818. package/dist/ir/type-system/internal/type-converter/value-inference.js.map +1 -0
  819. package/dist/ir/type-system/internal/type-registry.d.ts +12 -12
  820. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
  821. package/dist/ir/type-system/internal/type-registry.js +4 -529
  822. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  823. package/dist/ir/type-system/internal/universe/catalog-types.d.ts +260 -0
  824. package/dist/ir/type-system/internal/universe/catalog-types.d.ts.map +1 -0
  825. package/dist/ir/type-system/internal/universe/catalog-types.js +12 -0
  826. package/dist/ir/type-system/internal/universe/catalog-types.js.map +1 -0
  827. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +7 -5
  828. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  829. package/dist/ir/type-system/internal/universe/clr-catalog.js +160 -90
  830. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  831. package/dist/ir/type-system/internal/universe/clr-catalog.test.js +166 -72
  832. package/dist/ir/type-system/internal/universe/clr-catalog.test.js.map +1 -1
  833. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +7 -47
  834. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -1
  835. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +6 -695
  836. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -1
  837. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.d.ts +10 -0
  838. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.d.ts.map +1 -0
  839. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.js +168 -0
  840. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.js.map +1 -0
  841. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.d.ts +28 -0
  842. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.d.ts.map +1 -0
  843. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.js +307 -0
  844. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.js.map +1 -0
  845. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.d.ts +11 -0
  846. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.d.ts.map +1 -0
  847. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.js +10 -0
  848. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.js.map +1 -0
  849. package/dist/ir/type-system/internal/universe/clr-raw-converter.d.ts +41 -0
  850. package/dist/ir/type-system/internal/universe/clr-raw-converter.d.ts.map +1 -0
  851. package/dist/ir/type-system/internal/universe/clr-raw-converter.js +364 -0
  852. package/dist/ir/type-system/internal/universe/clr-raw-converter.js.map +1 -0
  853. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +3 -41
  854. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -1
  855. package/dist/ir/type-system/internal/universe/clr-type-parser.js +3 -470
  856. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -1
  857. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js +13 -2
  858. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js.map +1 -1
  859. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.d.ts +28 -0
  860. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.d.ts.map +1 -0
  861. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.js +208 -0
  862. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.js.map +1 -0
  863. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.d.ts +28 -0
  864. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.d.ts.map +1 -0
  865. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.js +279 -0
  866. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.js.map +1 -0
  867. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  868. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  869. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  870. package/dist/ir/type-system/internal/universe/raw-bindings-types.d.ts +167 -0
  871. package/dist/ir/type-system/internal/universe/raw-bindings-types.d.ts.map +1 -0
  872. package/dist/ir/type-system/internal/universe/raw-bindings-types.js +79 -0
  873. package/dist/ir/type-system/internal/universe/raw-bindings-types.js.map +1 -0
  874. package/dist/ir/type-system/internal/universe/source-catalog.d.ts +1 -1
  875. package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -1
  876. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
  877. package/dist/ir/type-system/internal/universe/types.d.ts +4 -388
  878. package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -1
  879. package/dist/ir/type-system/internal/universe/types.js +2 -60
  880. package/dist/ir/type-system/internal/universe/types.js.map +1 -1
  881. package/dist/ir/type-system/internal/universe/unified-universe.d.ts +2 -2
  882. package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -1
  883. package/dist/ir/type-system/internal/universe/unified-universe.js +467 -19
  884. package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -1
  885. package/dist/ir/type-system/internal/universe/unified-universe.test.js +7 -2
  886. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
  887. package/dist/ir/type-system/iterable-type-shapes.d.ts +8 -0
  888. package/dist/ir/type-system/iterable-type-shapes.d.ts.map +1 -0
  889. package/dist/ir/type-system/iterable-type-shapes.js +229 -0
  890. package/dist/ir/type-system/iterable-type-shapes.js.map +1 -0
  891. package/dist/ir/type-system/type-alias-expansion.d.ts +4 -0
  892. package/dist/ir/type-system/type-alias-expansion.d.ts.map +1 -0
  893. package/dist/ir/type-system/type-alias-expansion.js +27 -0
  894. package/dist/ir/type-system/type-alias-expansion.js.map +1 -0
  895. package/dist/ir/type-system/type-system-call-resolution.d.ts +16 -68
  896. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -1
  897. package/dist/ir/type-system/type-system-call-resolution.js +17 -1407
  898. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -1
  899. package/dist/ir/type-system/type-system-factory.d.ts +24 -0
  900. package/dist/ir/type-system/type-system-factory.d.ts.map +1 -0
  901. package/dist/ir/type-system/type-system-factory.js +145 -0
  902. package/dist/ir/type-system/type-system-factory.js.map +1 -0
  903. package/dist/ir/type-system/type-system-inference.d.ts +13 -92
  904. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -1
  905. package/dist/ir/type-system/type-system-inference.js +18 -1315
  906. package/dist/ir/type-system/type-system-inference.js.map +1 -1
  907. package/dist/ir/type-system/type-system-relations.d.ts +1 -0
  908. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -1
  909. package/dist/ir/type-system/type-system-relations.js +332 -19
  910. package/dist/ir/type-system/type-system-relations.js.map +1 -1
  911. package/dist/ir/type-system/type-system-state-call-types.d.ts +62 -0
  912. package/dist/ir/type-system/type-system-state-call-types.d.ts.map +1 -0
  913. package/dist/ir/type-system/type-system-state-call-types.js +2 -0
  914. package/dist/ir/type-system/type-system-state-call-types.js.map +1 -0
  915. package/dist/ir/type-system/type-system-state-handle-types.d.ts +134 -0
  916. package/dist/ir/type-system/type-system-state-handle-types.d.ts.map +1 -0
  917. package/dist/ir/type-system/type-system-state-handle-types.js +2 -0
  918. package/dist/ir/type-system/type-system-state-handle-types.js.map +1 -0
  919. package/dist/ir/type-system/type-system-state-helpers.d.ts +56 -0
  920. package/dist/ir/type-system/type-system-state-helpers.d.ts.map +1 -0
  921. package/dist/ir/type-system/type-system-state-helpers.js +291 -0
  922. package/dist/ir/type-system/type-system-state-helpers.js.map +1 -0
  923. package/dist/ir/type-system/type-system-state-model.d.ts +33 -0
  924. package/dist/ir/type-system/type-system-state-model.d.ts.map +1 -0
  925. package/dist/ir/type-system/type-system-state-model.js +3 -0
  926. package/dist/ir/type-system/type-system-state-model.js.map +1 -0
  927. package/dist/ir/type-system/type-system-state-registry-types.d.ts +11 -0
  928. package/dist/ir/type-system/type-system-state-registry-types.d.ts.map +1 -0
  929. package/dist/ir/type-system/type-system-state-registry-types.js +17 -0
  930. package/dist/ir/type-system/type-system-state-registry-types.js.map +1 -0
  931. package/dist/ir/type-system/type-system-state-types.d.ts +4 -0
  932. package/dist/ir/type-system/type-system-state-types.d.ts.map +1 -0
  933. package/dist/ir/type-system/type-system-state-types.js +4 -0
  934. package/dist/ir/type-system/type-system-state-types.js.map +1 -0
  935. package/dist/ir/type-system/type-system-state.d.ts +4 -454
  936. package/dist/ir/type-system/type-system-state.d.ts.map +1 -1
  937. package/dist/ir/type-system/type-system-state.js +4 -228
  938. package/dist/ir/type-system/type-system-state.js.map +1 -1
  939. package/dist/ir/type-system/type-system-types-api.d.ts +341 -0
  940. package/dist/ir/type-system/type-system-types-api.d.ts.map +1 -0
  941. package/dist/ir/type-system/type-system-types-api.js +11 -0
  942. package/dist/ir/type-system/type-system-types-api.js.map +1 -0
  943. package/dist/ir/type-system/type-system-utilities.d.ts +4 -48
  944. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -1
  945. package/dist/ir/type-system/type-system-utilities.js +4 -349
  946. package/dist/ir/type-system/type-system-utilities.js.map +1 -1
  947. package/dist/ir/type-system/type-system.d.ts +8 -313
  948. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  949. package/dist/ir/type-system/type-system.js +7 -131
  950. package/dist/ir/type-system/type-system.js.map +1 -1
  951. package/dist/ir/type-system/types.d.ts +2 -0
  952. package/dist/ir/type-system/types.d.ts.map +1 -1
  953. package/dist/ir/type-system/types.js +5 -0
  954. package/dist/ir/type-system/types.js.map +1 -1
  955. package/dist/ir/type-system/utility-type-filter-helpers.d.ts +40 -0
  956. package/dist/ir/type-system/utility-type-filter-helpers.d.ts.map +1 -0
  957. package/dist/ir/type-system/utility-type-filter-helpers.js +142 -0
  958. package/dist/ir/type-system/utility-type-filter-helpers.js.map +1 -0
  959. package/dist/ir/type-system/utility-type-mapped-helpers.d.ts +34 -0
  960. package/dist/ir/type-system/utility-type-mapped-helpers.d.ts.map +1 -0
  961. package/dist/ir/type-system/utility-type-mapped-helpers.js +243 -0
  962. package/dist/ir/type-system/utility-type-mapped-helpers.js.map +1 -0
  963. package/dist/ir/types/expressions-core.d.ts +331 -0
  964. package/dist/ir/types/expressions-core.d.ts.map +1 -0
  965. package/dist/ir/types/expressions-core.js +5 -0
  966. package/dist/ir/types/expressions-core.js.map +1 -0
  967. package/dist/ir/types/expressions-extended.d.ts +232 -0
  968. package/dist/ir/types/expressions-extended.d.ts.map +1 -0
  969. package/dist/ir/types/expressions-extended.js +6 -0
  970. package/dist/ir/types/expressions-extended.js.map +1 -0
  971. package/dist/ir/types/expressions.d.ts +6 -480
  972. package/dist/ir/types/expressions.d.ts.map +1 -1
  973. package/dist/ir/types/expressions.js +5 -1
  974. package/dist/ir/types/expressions.js.map +1 -1
  975. package/dist/ir/types/helpers.d.ts +4 -0
  976. package/dist/ir/types/helpers.d.ts.map +1 -1
  977. package/dist/ir/types/index.d.ts +4 -2
  978. package/dist/ir/types/index.d.ts.map +1 -1
  979. package/dist/ir/types/index.js +2 -1
  980. package/dist/ir/types/index.js.map +1 -1
  981. package/dist/ir/types/ir-substitution-builders.d.ts +91 -0
  982. package/dist/ir/types/ir-substitution-builders.d.ts.map +1 -0
  983. package/dist/ir/types/ir-substitution-builders.js +340 -0
  984. package/dist/ir/types/ir-substitution-builders.js.map +1 -0
  985. package/dist/ir/types/ir-substitution-core.d.ts +55 -0
  986. package/dist/ir/types/ir-substitution-core.d.ts.map +1 -0
  987. package/dist/ir/types/ir-substitution-core.js +402 -0
  988. package/dist/ir/types/ir-substitution-core.js.map +1 -0
  989. package/dist/ir/types/ir-substitution.d.ts +13 -142
  990. package/dist/ir/types/ir-substitution.d.ts.map +1 -1
  991. package/dist/ir/types/ir-substitution.js +9 -565
  992. package/dist/ir/types/ir-substitution.js.map +1 -1
  993. package/dist/ir/types/ir-types.d.ts +80 -4
  994. package/dist/ir/types/ir-types.d.ts.map +1 -1
  995. package/dist/ir/types/overload-family.d.ts +36 -0
  996. package/dist/ir/types/overload-family.d.ts.map +1 -0
  997. package/dist/ir/types/overload-family.js +9 -0
  998. package/dist/ir/types/overload-family.js.map +1 -0
  999. package/dist/ir/types/statements.d.ts +8 -1
  1000. package/dist/ir/types/statements.d.ts.map +1 -1
  1001. package/dist/ir/types/type-ops.d.ts +41 -2
  1002. package/dist/ir/types/type-ops.d.ts.map +1 -1
  1003. package/dist/ir/types/type-ops.js +744 -45
  1004. package/dist/ir/types/type-ops.js.map +1 -1
  1005. package/dist/ir/types/type-ops.test.js +443 -1
  1006. package/dist/ir/types/type-ops.test.js.map +1 -1
  1007. package/dist/ir/types.d.ts +2 -2
  1008. package/dist/ir/types.d.ts.map +1 -1
  1009. package/dist/ir/types.js +1 -1
  1010. package/dist/ir/types.js.map +1 -1
  1011. package/dist/ir/validation/anon-type-declaration-synthesis.d.ts +11 -0
  1012. package/dist/ir/validation/anon-type-declaration-synthesis.d.ts.map +1 -0
  1013. package/dist/ir/validation/anon-type-declaration-synthesis.js +11 -0
  1014. package/dist/ir/validation/anon-type-declaration-synthesis.js.map +1 -0
  1015. package/dist/ir/validation/anon-type-ir-rewriting.d.ts +10 -0
  1016. package/dist/ir/validation/anon-type-ir-rewriting.d.ts.map +1 -0
  1017. package/dist/ir/validation/anon-type-ir-rewriting.js +3 -0
  1018. package/dist/ir/validation/anon-type-ir-rewriting.js.map +1 -0
  1019. package/dist/ir/validation/anon-type-lower-expressions.d.ts +10 -0
  1020. package/dist/ir/validation/anon-type-lower-expressions.d.ts.map +1 -0
  1021. package/dist/ir/validation/anon-type-lower-expressions.js +364 -0
  1022. package/dist/ir/validation/anon-type-lower-expressions.js.map +1 -0
  1023. package/dist/ir/validation/anon-type-lower-statements.d.ts +13 -0
  1024. package/dist/ir/validation/anon-type-lower-statements.d.ts.map +1 -0
  1025. package/dist/ir/validation/anon-type-lower-statements.js +270 -0
  1026. package/dist/ir/validation/anon-type-lower-statements.js.map +1 -0
  1027. package/dist/ir/validation/anon-type-lower-types.d.ts +60 -0
  1028. package/dist/ir/validation/anon-type-lower-types.d.ts.map +1 -0
  1029. package/dist/ir/validation/anon-type-lower-types.js +287 -0
  1030. package/dist/ir/validation/anon-type-lower-types.js.map +1 -0
  1031. package/dist/ir/validation/anon-type-naming.d.ts +20 -0
  1032. package/dist/ir/validation/anon-type-naming.d.ts.map +1 -0
  1033. package/dist/ir/validation/anon-type-naming.js +153 -0
  1034. package/dist/ir/validation/anon-type-naming.js.map +1 -0
  1035. package/dist/ir/validation/anon-type-shape-analysis.d.ts +13 -0
  1036. package/dist/ir/validation/anon-type-shape-analysis.d.ts.map +1 -0
  1037. package/dist/ir/validation/anon-type-shape-analysis.js +12 -0
  1038. package/dist/ir/validation/anon-type-shape-analysis.js.map +1 -0
  1039. package/dist/ir/validation/anon-type-shape-collectors.d.ts +39 -0
  1040. package/dist/ir/validation/anon-type-shape-collectors.d.ts.map +1 -0
  1041. package/dist/ir/validation/anon-type-shape-collectors.js +369 -0
  1042. package/dist/ir/validation/anon-type-shape-collectors.js.map +1 -0
  1043. package/dist/ir/validation/anon-type-shape-serialization.d.ts +38 -0
  1044. package/dist/ir/validation/anon-type-shape-serialization.d.ts.map +1 -0
  1045. package/dist/ir/validation/anon-type-shape-serialization.js +241 -0
  1046. package/dist/ir/validation/anon-type-shape-serialization.js.map +1 -0
  1047. package/dist/ir/validation/anon-type-template-inference.d.ts +12 -0
  1048. package/dist/ir/validation/anon-type-template-inference.d.ts.map +1 -0
  1049. package/dist/ir/validation/anon-type-template-inference.js +296 -0
  1050. package/dist/ir/validation/anon-type-template-inference.js.map +1 -0
  1051. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts +7 -1
  1052. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  1053. package/dist/ir/validation/anonymous-type-lowering-pass.js +315 -1166
  1054. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  1055. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.d.ts +2 -0
  1056. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.d.ts.map +1 -0
  1057. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.js +332 -0
  1058. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.js.map +1 -0
  1059. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.d.ts +2 -0
  1060. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.d.ts.map +1 -0
  1061. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.js +255 -0
  1062. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.js.map +1 -0
  1063. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.d.ts +2 -0
  1064. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.d.ts.map +1 -0
  1065. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.js +715 -0
  1066. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.js.map +1 -0
  1067. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.d.ts +4 -0
  1068. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.d.ts.map +1 -0
  1069. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.js +85 -0
  1070. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.js.map +1 -0
  1071. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts +3 -1
  1072. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts.map +1 -1
  1073. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js +3 -120
  1074. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js.map +1 -1
  1075. package/dist/ir/validation/arrow-return-expression-walk.d.ts +13 -0
  1076. package/dist/ir/validation/arrow-return-expression-walk.d.ts.map +1 -0
  1077. package/dist/ir/validation/arrow-return-expression-walk.js +224 -0
  1078. package/dist/ir/validation/arrow-return-expression-walk.js.map +1 -0
  1079. package/dist/ir/validation/arrow-return-finalization-pass.d.ts +3 -17
  1080. package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -1
  1081. package/dist/ir/validation/arrow-return-finalization-pass.js +2 -418
  1082. package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -1
  1083. package/dist/ir/validation/arrow-return-statement-walk.d.ts +27 -0
  1084. package/dist/ir/validation/arrow-return-statement-walk.d.ts.map +1 -0
  1085. package/dist/ir/validation/arrow-return-statement-walk.js +206 -0
  1086. package/dist/ir/validation/arrow-return-statement-walk.js.map +1 -0
  1087. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +8 -2
  1088. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -1
  1089. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -1
  1090. package/dist/ir/validation/attribute-collection/marker-chain-parser.d.ts +21 -0
  1091. package/dist/ir/validation/attribute-collection/marker-chain-parser.d.ts.map +1 -0
  1092. package/dist/ir/validation/attribute-collection/marker-chain-parser.js +261 -0
  1093. package/dist/ir/validation/attribute-collection/marker-chain-parser.js.map +1 -0
  1094. package/dist/ir/validation/attribute-collection/marker-collection.d.ts +28 -0
  1095. package/dist/ir/validation/attribute-collection/marker-collection.d.ts.map +1 -0
  1096. package/dist/ir/validation/attribute-collection/marker-collection.js +343 -0
  1097. package/dist/ir/validation/attribute-collection/marker-collection.js.map +1 -0
  1098. package/dist/ir/validation/attribute-collection/marker-detection.d.ts +25 -0
  1099. package/dist/ir/validation/attribute-collection/marker-detection.d.ts.map +1 -0
  1100. package/dist/ir/validation/attribute-collection/marker-detection.js +214 -0
  1101. package/dist/ir/validation/attribute-collection/marker-detection.js.map +1 -0
  1102. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +7 -24
  1103. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -1
  1104. package/dist/ir/validation/attribute-collection/marker-parser.js +7 -400
  1105. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -1
  1106. package/dist/ir/validation/attribute-collection/module-rebuild.d.ts +28 -0
  1107. package/dist/ir/validation/attribute-collection/module-rebuild.d.ts.map +1 -0
  1108. package/dist/ir/validation/attribute-collection/module-rebuild.js +176 -0
  1109. package/dist/ir/validation/attribute-collection/module-rebuild.js.map +1 -0
  1110. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +3 -19
  1111. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -1
  1112. package/dist/ir/validation/attribute-collection/orchestrator.js +2 -323
  1113. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -1
  1114. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.d.ts +5 -0
  1115. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.d.ts.map +1 -0
  1116. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.js +62 -0
  1117. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.js.map +1 -0
  1118. package/dist/ir/validation/attribute-collection-cases/error-cases.test.d.ts +5 -0
  1119. package/dist/ir/validation/attribute-collection-cases/error-cases.test.d.ts.map +1 -0
  1120. package/dist/ir/validation/attribute-collection-cases/error-cases.test.js +246 -0
  1121. package/dist/ir/validation/attribute-collection-cases/error-cases.test.js.map +1 -0
  1122. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.d.ts +6 -0
  1123. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.d.ts.map +1 -0
  1124. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.js +77 -0
  1125. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.js.map +1 -0
  1126. package/dist/ir/validation/attribute-collection-cases/helpers.d.ts +186 -0
  1127. package/dist/ir/validation/attribute-collection-cases/helpers.d.ts.map +1 -0
  1128. package/dist/ir/validation/attribute-collection-cases/helpers.js +239 -0
  1129. package/dist/ir/validation/attribute-collection-cases/helpers.js.map +1 -0
  1130. package/dist/ir/validation/attribute-collection-cases/method-selector.test.d.ts +5 -0
  1131. package/dist/ir/validation/attribute-collection-cases/method-selector.test.d.ts.map +1 -0
  1132. package/dist/ir/validation/attribute-collection-cases/method-selector.test.js +371 -0
  1133. package/dist/ir/validation/attribute-collection-cases/method-selector.test.js.map +1 -0
  1134. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.d.ts +5 -0
  1135. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.d.ts.map +1 -0
  1136. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.js +209 -0
  1137. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.js.map +1 -0
  1138. package/dist/ir/validation/attribute-collection-cases/type-add.test.d.ts +5 -0
  1139. package/dist/ir/validation/attribute-collection-cases/type-add.test.d.ts.map +1 -0
  1140. package/dist/ir/validation/attribute-collection-cases/type-add.test.js +330 -0
  1141. package/dist/ir/validation/attribute-collection-cases/type-add.test.js.map +1 -0
  1142. package/dist/ir/validation/attribute-collection-pass.d.ts +5 -4
  1143. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  1144. package/dist/ir/validation/attribute-collection-pass.js +5 -4
  1145. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  1146. package/dist/ir/validation/attribute-collection-pass.test.d.ts +8 -1
  1147. package/dist/ir/validation/attribute-collection-pass.test.d.ts.map +1 -1
  1148. package/dist/ir/validation/attribute-collection-pass.test.js +8 -1331
  1149. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  1150. package/dist/ir/validation/call-resolution-refresh-pass.d.ts +8 -0
  1151. package/dist/ir/validation/call-resolution-refresh-pass.d.ts.map +1 -0
  1152. package/dist/ir/validation/call-resolution-refresh-pass.js +616 -0
  1153. package/dist/ir/validation/call-resolution-refresh-pass.js.map +1 -0
  1154. package/dist/ir/validation/char-validation-expressions.d.ts +13 -0
  1155. package/dist/ir/validation/char-validation-expressions.d.ts.map +1 -0
  1156. package/dist/ir/validation/char-validation-expressions.js +362 -0
  1157. package/dist/ir/validation/char-validation-expressions.js.map +1 -0
  1158. package/dist/ir/validation/char-validation-pass.d.ts +7 -22
  1159. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -1
  1160. package/dist/ir/validation/char-validation-pass.js +6 -504
  1161. package/dist/ir/validation/char-validation-pass.js.map +1 -1
  1162. package/dist/ir/validation/char-validation-types.d.ts +28 -0
  1163. package/dist/ir/validation/char-validation-types.d.ts.map +1 -0
  1164. package/dist/ir/validation/char-validation-types.js +144 -0
  1165. package/dist/ir/validation/char-validation-types.js.map +1 -0
  1166. package/dist/ir/validation/index.d.ts +3 -0
  1167. package/dist/ir/validation/index.d.ts.map +1 -1
  1168. package/dist/ir/validation/index.js +3 -0
  1169. package/dist/ir/validation/index.js.map +1 -1
  1170. package/dist/ir/validation/known-builtin-reference-types.d.ts +12 -0
  1171. package/dist/ir/validation/known-builtin-reference-types.d.ts.map +1 -0
  1172. package/dist/ir/validation/known-builtin-reference-types.js +29 -0
  1173. package/dist/ir/validation/known-builtin-reference-types.js.map +1 -0
  1174. package/dist/ir/validation/numeric-classification.d.ts +105 -0
  1175. package/dist/ir/validation/numeric-classification.d.ts.map +1 -0
  1176. package/dist/ir/validation/numeric-classification.js +368 -0
  1177. package/dist/ir/validation/numeric-classification.js.map +1 -0
  1178. package/dist/ir/validation/numeric-coercion-pass.d.ts +3 -50
  1179. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
  1180. package/dist/ir/validation/numeric-coercion-pass.js +3 -777
  1181. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
  1182. package/dist/ir/validation/numeric-expression-validation.d.ts +26 -0
  1183. package/dist/ir/validation/numeric-expression-validation.d.ts.map +1 -0
  1184. package/dist/ir/validation/numeric-expression-validation.js +253 -0
  1185. package/dist/ir/validation/numeric-expression-validation.js.map +1 -0
  1186. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.d.ts +11 -0
  1187. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.d.ts.map +1 -0
  1188. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.js +185 -0
  1189. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.js.map +1 -0
  1190. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.d.ts +16 -0
  1191. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.d.ts.map +1 -0
  1192. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.js +364 -0
  1193. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.js.map +1 -0
  1194. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.d.ts +9 -0
  1195. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.d.ts.map +1 -0
  1196. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.js +119 -0
  1197. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.js.map +1 -0
  1198. package/dist/ir/validation/numeric-invariants-cases/helpers.d.ts +60 -0
  1199. package/dist/ir/validation/numeric-invariants-cases/helpers.d.ts.map +1 -0
  1200. package/dist/ir/validation/numeric-invariants-cases/helpers.js +163 -0
  1201. package/dist/ir/validation/numeric-invariants-cases/helpers.js.map +1 -0
  1202. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.d.ts +8 -0
  1203. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.d.ts.map +1 -0
  1204. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.js +110 -0
  1205. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.js.map +1 -0
  1206. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.d.ts +12 -0
  1207. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.d.ts.map +1 -0
  1208. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.js +188 -0
  1209. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.js.map +1 -0
  1210. package/dist/ir/validation/numeric-invariants.test.d.ts +5 -14
  1211. package/dist/ir/validation/numeric-invariants.test.d.ts.map +1 -1
  1212. package/dist/ir/validation/numeric-invariants.test.js +5 -932
  1213. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  1214. package/dist/ir/validation/numeric-proof-analysis.d.ts +9 -0
  1215. package/dist/ir/validation/numeric-proof-analysis.d.ts.map +1 -0
  1216. package/dist/ir/validation/numeric-proof-analysis.js +8 -0
  1217. package/dist/ir/validation/numeric-proof-analysis.js.map +1 -0
  1218. package/dist/ir/validation/numeric-proof-expression-walk.d.ts +18 -0
  1219. package/dist/ir/validation/numeric-proof-expression-walk.d.ts.map +1 -0
  1220. package/dist/ir/validation/numeric-proof-expression-walk.js +331 -0
  1221. package/dist/ir/validation/numeric-proof-expression-walk.js.map +1 -0
  1222. package/dist/ir/validation/numeric-proof-guard-facts.d.ts +29 -0
  1223. package/dist/ir/validation/numeric-proof-guard-facts.d.ts.map +1 -0
  1224. package/dist/ir/validation/numeric-proof-guard-facts.js +213 -0
  1225. package/dist/ir/validation/numeric-proof-guard-facts.js.map +1 -0
  1226. package/dist/ir/validation/numeric-proof-inference.d.ts +33 -0
  1227. package/dist/ir/validation/numeric-proof-inference.d.ts.map +1 -0
  1228. package/dist/ir/validation/numeric-proof-inference.js +222 -0
  1229. package/dist/ir/validation/numeric-proof-inference.js.map +1 -0
  1230. package/dist/ir/validation/numeric-proof-pass.d.ts +5 -25
  1231. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  1232. package/dist/ir/validation/numeric-proof-pass.js +5 -1165
  1233. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  1234. package/dist/ir/validation/numeric-proof-proving.d.ts +21 -0
  1235. package/dist/ir/validation/numeric-proof-proving.d.ts.map +1 -0
  1236. package/dist/ir/validation/numeric-proof-proving.js +261 -0
  1237. package/dist/ir/validation/numeric-proof-proving.js.map +1 -0
  1238. package/dist/ir/validation/numeric-proof-statement-walk.d.ts +37 -0
  1239. package/dist/ir/validation/numeric-proof-statement-walk.d.ts.map +1 -0
  1240. package/dist/ir/validation/numeric-proof-statement-walk.js +295 -0
  1241. package/dist/ir/validation/numeric-proof-statement-walk.js.map +1 -0
  1242. package/dist/ir/validation/numeric-proof-walk.d.ts +10 -0
  1243. package/dist/ir/validation/numeric-proof-walk.d.ts.map +1 -0
  1244. package/dist/ir/validation/numeric-proof-walk.js +9 -0
  1245. package/dist/ir/validation/numeric-proof-walk.js.map +1 -0
  1246. package/dist/ir/validation/numeric-statement-processing.d.ts +39 -0
  1247. package/dist/ir/validation/numeric-statement-processing.d.ts.map +1 -0
  1248. package/dist/ir/validation/numeric-statement-processing.js +229 -0
  1249. package/dist/ir/validation/numeric-statement-processing.js.map +1 -0
  1250. package/dist/ir/validation/numeric-validation.d.ts +13 -0
  1251. package/dist/ir/validation/numeric-validation.d.ts.map +1 -0
  1252. package/dist/ir/validation/numeric-validation.js +12 -0
  1253. package/dist/ir/validation/numeric-validation.js.map +1 -0
  1254. package/dist/ir/validation/overload-collection-cases/basic.test.d.ts +2 -0
  1255. package/dist/ir/validation/overload-collection-cases/basic.test.d.ts.map +1 -0
  1256. package/dist/ir/validation/overload-collection-cases/basic.test.js +103 -0
  1257. package/dist/ir/validation/overload-collection-cases/basic.test.js.map +1 -0
  1258. package/dist/ir/validation/overload-collection-cases/consistency.test.d.ts +2 -0
  1259. package/dist/ir/validation/overload-collection-cases/consistency.test.d.ts.map +1 -0
  1260. package/dist/ir/validation/overload-collection-cases/consistency.test.js +79 -0
  1261. package/dist/ir/validation/overload-collection-cases/consistency.test.js.map +1 -0
  1262. package/dist/ir/validation/overload-collection-cases/error-cases.test.d.ts +2 -0
  1263. package/dist/ir/validation/overload-collection-cases/error-cases.test.d.ts.map +1 -0
  1264. package/dist/ir/validation/overload-collection-cases/error-cases.test.js +24 -0
  1265. package/dist/ir/validation/overload-collection-cases/error-cases.test.js.map +1 -0
  1266. package/dist/ir/validation/overload-collection-cases/helpers.d.ts +107 -0
  1267. package/dist/ir/validation/overload-collection-cases/helpers.d.ts.map +1 -0
  1268. package/dist/ir/validation/overload-collection-cases/helpers.js +142 -0
  1269. package/dist/ir/validation/overload-collection-cases/helpers.js.map +1 -0
  1270. package/dist/ir/validation/overload-collection-pass.d.ts +16 -0
  1271. package/dist/ir/validation/overload-collection-pass.d.ts.map +1 -0
  1272. package/dist/ir/validation/overload-collection-pass.js +930 -0
  1273. package/dist/ir/validation/overload-collection-pass.js.map +1 -0
  1274. package/dist/ir/validation/overload-collection-pass.test.d.ts +4 -0
  1275. package/dist/ir/validation/overload-collection-pass.test.d.ts.map +1 -0
  1276. package/dist/ir/validation/overload-collection-pass.test.js +4 -0
  1277. package/dist/ir/validation/overload-collection-pass.test.js.map +1 -0
  1278. package/dist/ir/validation/overload-family-consistency-pass.d.ts +9 -0
  1279. package/dist/ir/validation/overload-family-consistency-pass.d.ts.map +1 -0
  1280. package/dist/ir/validation/overload-family-consistency-pass.js +161 -0
  1281. package/dist/ir/validation/overload-family-consistency-pass.js.map +1 -0
  1282. package/dist/ir/validation/rest-type-synthesis-helpers.d.ts +52 -0
  1283. package/dist/ir/validation/rest-type-synthesis-helpers.d.ts.map +1 -0
  1284. package/dist/ir/validation/rest-type-synthesis-helpers.js +250 -0
  1285. package/dist/ir/validation/rest-type-synthesis-helpers.js.map +1 -0
  1286. package/dist/ir/validation/rest-type-synthesis-pass.d.ts +6 -20
  1287. package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -1
  1288. package/dist/ir/validation/rest-type-synthesis-pass.js +5 -461
  1289. package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -1
  1290. package/dist/ir/validation/rest-type-synthesis-processing.d.ts +14 -0
  1291. package/dist/ir/validation/rest-type-synthesis-processing.d.ts.map +1 -0
  1292. package/dist/ir/validation/rest-type-synthesis-processing.js +220 -0
  1293. package/dist/ir/validation/rest-type-synthesis-processing.js.map +1 -0
  1294. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.d.ts +12 -0
  1295. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.d.ts.map +1 -0
  1296. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.js +99 -0
  1297. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.js.map +1 -0
  1298. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.d.ts +10 -0
  1299. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.d.ts.map +1 -0
  1300. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.js +139 -0
  1301. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.js.map +1 -0
  1302. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.d.ts +10 -0
  1303. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.d.ts.map +1 -0
  1304. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.js +123 -0
  1305. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.js.map +1 -0
  1306. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.d.ts +15 -0
  1307. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.d.ts.map +1 -0
  1308. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.js +292 -0
  1309. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.js.map +1 -0
  1310. package/dist/ir/validation/soundness-gate-cases/test-helpers.d.ts +12 -0
  1311. package/dist/ir/validation/soundness-gate-cases/test-helpers.d.ts.map +1 -0
  1312. package/dist/ir/validation/soundness-gate-cases/test-helpers.js +36 -0
  1313. package/dist/ir/validation/soundness-gate-cases/test-helpers.js.map +1 -0
  1314. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.d.ts +11 -0
  1315. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.d.ts.map +1 -0
  1316. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.js +249 -0
  1317. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.js.map +1 -0
  1318. package/dist/ir/validation/soundness-gate-expression-validation.d.ts +3 -0
  1319. package/dist/ir/validation/soundness-gate-expression-validation.d.ts.map +1 -0
  1320. package/dist/ir/validation/soundness-gate-expression-validation.js +205 -0
  1321. package/dist/ir/validation/soundness-gate-expression-validation.js.map +1 -0
  1322. package/dist/ir/validation/soundness-gate-shared.d.ts +26 -0
  1323. package/dist/ir/validation/soundness-gate-shared.d.ts.map +1 -0
  1324. package/dist/ir/validation/soundness-gate-shared.js +46 -0
  1325. package/dist/ir/validation/soundness-gate-shared.js.map +1 -0
  1326. package/dist/ir/validation/soundness-gate-statement-validation.d.ts +5 -0
  1327. package/dist/ir/validation/soundness-gate-statement-validation.d.ts.map +1 -0
  1328. package/dist/ir/validation/soundness-gate-statement-validation.js +199 -0
  1329. package/dist/ir/validation/soundness-gate-statement-validation.js.map +1 -0
  1330. package/dist/ir/validation/soundness-gate-type-validation.d.ts +9 -0
  1331. package/dist/ir/validation/soundness-gate-type-validation.d.ts.map +1 -0
  1332. package/dist/ir/validation/soundness-gate-type-validation.js +149 -0
  1333. package/dist/ir/validation/soundness-gate-type-validation.js.map +1 -0
  1334. package/dist/ir/validation/soundness-gate.d.ts +2 -18
  1335. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  1336. package/dist/ir/validation/soundness-gate.js +15 -608
  1337. package/dist/ir/validation/soundness-gate.js.map +1 -1
  1338. package/dist/ir/validation/soundness-gate.test.d.ts +5 -12
  1339. package/dist/ir/validation/soundness-gate.test.d.ts.map +1 -1
  1340. package/dist/ir/validation/soundness-gate.test.js +5 -696
  1341. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  1342. package/dist/ir/validation/virtual-marking-pass.d.ts +10 -2
  1343. package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -1
  1344. package/dist/ir/validation/virtual-marking-pass.js +347 -59
  1345. package/dist/ir/validation/virtual-marking-pass.js.map +1 -1
  1346. package/dist/ir/validation/virtual-marking-pass.test.d.ts +2 -0
  1347. package/dist/ir/validation/virtual-marking-pass.test.d.ts.map +1 -0
  1348. package/dist/ir/validation/virtual-marking-pass.test.js +314 -0
  1349. package/dist/ir/validation/virtual-marking-pass.test.js.map +1 -0
  1350. package/dist/ir/validation/yield-expression-lowering.d.ts +13 -0
  1351. package/dist/ir/validation/yield-expression-lowering.d.ts.map +1 -0
  1352. package/dist/ir/validation/yield-expression-lowering.js +13 -0
  1353. package/dist/ir/validation/yield-expression-lowering.js.map +1 -0
  1354. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.d.ts +14 -0
  1355. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.d.ts.map +1 -0
  1356. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.js +383 -0
  1357. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.js.map +1 -0
  1358. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.d.ts +12 -0
  1359. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.d.ts.map +1 -0
  1360. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.js +120 -0
  1361. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.js.map +1 -0
  1362. package/dist/ir/validation/yield-lowering-cases/control-flow.test.d.ts +13 -0
  1363. package/dist/ir/validation/yield-lowering-cases/control-flow.test.d.ts.map +1 -0
  1364. package/dist/ir/validation/yield-lowering-cases/control-flow.test.js +284 -0
  1365. package/dist/ir/validation/yield-lowering-cases/control-flow.test.js.map +1 -0
  1366. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.d.ts +13 -0
  1367. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.d.ts.map +1 -0
  1368. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.js +334 -0
  1369. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.js.map +1 -0
  1370. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.d.ts +16 -0
  1371. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.d.ts.map +1 -0
  1372. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.js +321 -0
  1373. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.js.map +1 -0
  1374. package/dist/ir/validation/yield-lowering-cases/helpers.d.ts +32 -0
  1375. package/dist/ir/validation/yield-lowering-cases/helpers.d.ts.map +1 -0
  1376. package/dist/ir/validation/yield-lowering-cases/helpers.js +76 -0
  1377. package/dist/ir/validation/yield-lowering-cases/helpers.js.map +1 -0
  1378. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.d.ts +13 -0
  1379. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.d.ts.map +1 -0
  1380. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.js +221 -0
  1381. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.js.map +1 -0
  1382. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.d.ts +11 -0
  1383. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.d.ts.map +1 -0
  1384. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.js +136 -0
  1385. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.js.map +1 -0
  1386. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.d.ts +14 -0
  1387. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.d.ts.map +1 -0
  1388. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.js +219 -0
  1389. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.js.map +1 -0
  1390. package/dist/ir/validation/yield-lowering-helpers.d.ts +63 -0
  1391. package/dist/ir/validation/yield-lowering-helpers.d.ts.map +1 -0
  1392. package/dist/ir/validation/yield-lowering-helpers.js +240 -0
  1393. package/dist/ir/validation/yield-lowering-helpers.js.map +1 -0
  1394. package/dist/ir/validation/yield-lowering-pass.d.ts +7 -1
  1395. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  1396. package/dist/ir/validation/yield-lowering-pass.js +8 -1418
  1397. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  1398. package/dist/ir/validation/yield-lowering-pass.test.d.ts +8 -11
  1399. package/dist/ir/validation/yield-lowering-pass.test.d.ts.map +1 -1
  1400. package/dist/ir/validation/yield-lowering-pass.test.js +8 -1975
  1401. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  1402. package/dist/ir/validation/yield-main-expression-lowering.d.ts +20 -0
  1403. package/dist/ir/validation/yield-main-expression-lowering.d.ts.map +1 -0
  1404. package/dist/ir/validation/yield-main-expression-lowering.js +381 -0
  1405. package/dist/ir/validation/yield-main-expression-lowering.js.map +1 -0
  1406. package/dist/ir/validation/yield-member-access-lowering.d.ts +21 -0
  1407. package/dist/ir/validation/yield-member-access-lowering.d.ts.map +1 -0
  1408. package/dist/ir/validation/yield-member-access-lowering.js +58 -0
  1409. package/dist/ir/validation/yield-member-access-lowering.js.map +1 -0
  1410. package/dist/ir/validation/yield-module-processing.d.ts +25 -0
  1411. package/dist/ir/validation/yield-module-processing.d.ts.map +1 -0
  1412. package/dist/ir/validation/yield-module-processing.js +180 -0
  1413. package/dist/ir/validation/yield-module-processing.js.map +1 -0
  1414. package/dist/ir/validation/yield-statement-loops.d.ts +51 -0
  1415. package/dist/ir/validation/yield-statement-loops.d.ts.map +1 -0
  1416. package/dist/ir/validation/yield-statement-loops.js +344 -0
  1417. package/dist/ir/validation/yield-statement-loops.js.map +1 -0
  1418. package/dist/ir/validation/yield-statement-lowering.d.ts +18 -0
  1419. package/dist/ir/validation/yield-statement-lowering.d.ts.map +1 -0
  1420. package/dist/ir/validation/yield-statement-lowering.js +48 -0
  1421. package/dist/ir/validation/yield-statement-lowering.js.map +1 -0
  1422. package/dist/ir/validation/yield-statement-simple.d.ts +33 -0
  1423. package/dist/ir/validation/yield-statement-simple.d.ts.map +1 -0
  1424. package/dist/ir/validation/yield-statement-simple.js +268 -0
  1425. package/dist/ir/validation/yield-statement-simple.js.map +1 -0
  1426. package/dist/program/binding-loader.d.ts.map +1 -1
  1427. package/dist/program/binding-loader.js +1099 -6
  1428. package/dist/program/binding-loader.js.map +1 -1
  1429. package/dist/program/binding-payload-invariants.test.d.ts +2 -0
  1430. package/dist/program/binding-payload-invariants.test.d.ts.map +1 -0
  1431. package/dist/program/binding-payload-invariants.test.js +55 -0
  1432. package/dist/program/binding-payload-invariants.test.js.map +1 -0
  1433. package/dist/program/binding-registry-loading.d.ts +51 -0
  1434. package/dist/program/binding-registry-loading.d.ts.map +1 -0
  1435. package/dist/program/binding-registry-loading.js +816 -0
  1436. package/dist/program/binding-registry-loading.js.map +1 -0
  1437. package/dist/program/binding-registry-resolution-extension.d.ts +26 -0
  1438. package/dist/program/binding-registry-resolution-extension.d.ts.map +1 -0
  1439. package/dist/program/binding-registry-resolution-extension.js +161 -0
  1440. package/dist/program/binding-registry-resolution-extension.js.map +1 -0
  1441. package/dist/program/binding-registry-resolution-member.d.ts +46 -0
  1442. package/dist/program/binding-registry-resolution-member.d.ts.map +1 -0
  1443. package/dist/program/binding-registry-resolution-member.js +252 -0
  1444. package/dist/program/binding-registry-resolution-member.js.map +1 -0
  1445. package/dist/program/binding-registry-resolution.d.ts +13 -0
  1446. package/dist/program/binding-registry-resolution.d.ts.map +1 -0
  1447. package/dist/program/binding-registry-resolution.js +12 -0
  1448. package/dist/program/binding-registry-resolution.js.map +1 -0
  1449. package/dist/program/binding-registry.d.ts +34 -22
  1450. package/dist/program/binding-registry.d.ts.map +1 -1
  1451. package/dist/program/binding-registry.js +111 -562
  1452. package/dist/program/binding-registry.js.map +1 -1
  1453. package/dist/program/binding-types.d.ts +34 -3
  1454. package/dist/program/binding-types.d.ts.map +1 -1
  1455. package/dist/program/binding-types.js +72 -2
  1456. package/dist/program/binding-types.js.map +1 -1
  1457. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.d.ts +2 -0
  1458. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.d.ts.map +1 -0
  1459. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.js +115 -0
  1460. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.js.map +1 -0
  1461. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.d.ts +6 -0
  1462. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.d.ts.map +1 -0
  1463. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.js +573 -0
  1464. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.js.map +1 -0
  1465. package/dist/program/bindings-cases/load-bindings.test.d.ts +7 -0
  1466. package/dist/program/bindings-cases/load-bindings.test.d.ts.map +1 -0
  1467. package/dist/program/bindings-cases/load-bindings.test.js +545 -0
  1468. package/dist/program/bindings-cases/load-bindings.test.js.map +1 -0
  1469. package/dist/program/bindings-cases/registry-basics.test.d.ts +6 -0
  1470. package/dist/program/bindings-cases/registry-basics.test.d.ts.map +1 -0
  1471. package/dist/program/bindings-cases/registry-basics.test.js +201 -0
  1472. package/dist/program/bindings-cases/registry-basics.test.js.map +1 -0
  1473. package/dist/program/bindings-cases/registry-member-resolution.test.d.ts +8 -0
  1474. package/dist/program/bindings-cases/registry-member-resolution.test.d.ts.map +1 -0
  1475. package/dist/program/bindings-cases/registry-member-resolution.test.js +301 -0
  1476. package/dist/program/bindings-cases/registry-member-resolution.test.js.map +1 -0
  1477. package/dist/program/bindings.d.ts +2 -1
  1478. package/dist/program/bindings.d.ts.map +1 -1
  1479. package/dist/program/bindings.js +1 -0
  1480. package/dist/program/bindings.js.map +1 -1
  1481. package/dist/program/bindings.test.d.ts +12 -2
  1482. package/dist/program/bindings.test.d.ts.map +1 -1
  1483. package/dist/program/bindings.test.js +12 -988
  1484. package/dist/program/bindings.test.js.map +1 -1
  1485. package/dist/program/core-declarations.d.ts +16 -0
  1486. package/dist/program/core-declarations.d.ts.map +1 -0
  1487. package/dist/program/core-declarations.js +126 -0
  1488. package/dist/program/core-declarations.js.map +1 -0
  1489. package/dist/program/creation-cases/authoritative-type-roots.test.d.ts +6 -0
  1490. package/dist/program/creation-cases/authoritative-type-roots.test.d.ts.map +1 -0
  1491. package/dist/program/creation-cases/authoritative-type-roots.test.js +136 -0
  1492. package/dist/program/creation-cases/authoritative-type-roots.test.js.map +1 -0
  1493. package/dist/program/creation-cases/compiler-options.test.d.ts +5 -0
  1494. package/dist/program/creation-cases/compiler-options.test.d.ts.map +1 -0
  1495. package/dist/program/creation-cases/compiler-options.test.js +77 -0
  1496. package/dist/program/creation-cases/compiler-options.test.js.map +1 -0
  1497. package/dist/program/creation-cases/core-type-checking.test.d.ts +6 -0
  1498. package/dist/program/creation-cases/core-type-checking.test.d.ts.map +1 -0
  1499. package/dist/program/creation-cases/core-type-checking.test.js +66 -0
  1500. package/dist/program/creation-cases/core-type-checking.test.js.map +1 -0
  1501. package/dist/program/creation-cases/js-surface-globals.test.d.ts +6 -0
  1502. package/dist/program/creation-cases/js-surface-globals.test.d.ts.map +1 -0
  1503. package/dist/program/creation-cases/js-surface-globals.test.js +236 -0
  1504. package/dist/program/creation-cases/js-surface-globals.test.js.map +1 -0
  1505. package/dist/program/creation-cases/module-bindings.test.d.ts +2 -0
  1506. package/dist/program/creation-cases/module-bindings.test.d.ts.map +1 -0
  1507. package/dist/program/creation-cases/module-bindings.test.js +253 -0
  1508. package/dist/program/creation-cases/module-bindings.test.js.map +1 -0
  1509. package/dist/program/creation-cases/package-resolution.test.d.ts +6 -0
  1510. package/dist/program/creation-cases/package-resolution.test.d.ts.map +1 -0
  1511. package/dist/program/creation-cases/package-resolution.test.js +116 -0
  1512. package/dist/program/creation-cases/package-resolution.test.js.map +1 -0
  1513. package/dist/program/creation-cases/surface-isolation.test.d.ts +6 -0
  1514. package/dist/program/creation-cases/surface-isolation.test.d.ts.map +1 -0
  1515. package/dist/program/creation-cases/surface-isolation.test.js +196 -0
  1516. package/dist/program/creation-cases/surface-isolation.test.js.map +1 -0
  1517. package/dist/program/creation-cases/test-package-helpers.d.ts +6 -0
  1518. package/dist/program/creation-cases/test-package-helpers.d.ts.map +1 -0
  1519. package/dist/program/creation-cases/test-package-helpers.js +26 -0
  1520. package/dist/program/creation-cases/test-package-helpers.js.map +1 -0
  1521. package/dist/program/creation.d.ts +3 -14
  1522. package/dist/program/creation.d.ts.map +1 -1
  1523. package/dist/program/creation.js +3 -780
  1524. package/dist/program/creation.js.map +1 -1
  1525. package/dist/program/creation.test.d.ts +10 -2
  1526. package/dist/program/creation.test.d.ts.map +1 -1
  1527. package/dist/program/creation.test.js +10 -929
  1528. package/dist/program/creation.test.js.map +1 -1
  1529. package/dist/program/declaration-module-aliases.d.ts +13 -0
  1530. package/dist/program/declaration-module-aliases.d.ts.map +1 -0
  1531. package/dist/program/declaration-module-aliases.js +144 -0
  1532. package/dist/program/declaration-module-aliases.js.map +1 -0
  1533. package/dist/program/dependency-graph.d.ts +3 -1
  1534. package/dist/program/dependency-graph.d.ts.map +1 -1
  1535. package/dist/program/dependency-graph.js +211 -23
  1536. package/dist/program/dependency-graph.js.map +1 -1
  1537. package/dist/program/dependency-graph.test.js +307 -85
  1538. package/dist/program/dependency-graph.test.js.map +1 -1
  1539. package/dist/program/diagnostics.d.ts +1 -1
  1540. package/dist/program/diagnostics.d.ts.map +1 -1
  1541. package/dist/program/diagnostics.js +2 -48
  1542. package/dist/program/diagnostics.js.map +1 -1
  1543. package/dist/program/diagnostics.test.js +9 -24
  1544. package/dist/program/diagnostics.test.js.map +1 -1
  1545. package/dist/program/dotnet-binding-payload.d.ts +12 -0
  1546. package/dist/program/dotnet-binding-payload.d.ts.map +1 -0
  1547. package/dist/program/dotnet-binding-payload.js +71 -0
  1548. package/dist/program/dotnet-binding-payload.js.map +1 -0
  1549. package/dist/program/fixture-fast-coverage.test.d.ts +2 -0
  1550. package/dist/program/fixture-fast-coverage.test.d.ts.map +1 -0
  1551. package/dist/program/fixture-fast-coverage.test.js +225 -0
  1552. package/dist/program/fixture-fast-coverage.test.js.map +1 -0
  1553. package/dist/program/index.d.ts +1 -1
  1554. package/dist/program/index.d.ts.map +1 -1
  1555. package/dist/program/index.js +1 -1
  1556. package/dist/program/index.js.map +1 -1
  1557. package/dist/program/json-deserialize-overload-resolution.test.d.ts +2 -0
  1558. package/dist/program/json-deserialize-overload-resolution.test.d.ts.map +1 -0
  1559. package/dist/program/json-deserialize-overload-resolution.test.js +57 -0
  1560. package/dist/program/json-deserialize-overload-resolution.test.js.map +1 -0
  1561. package/dist/program/metadata.d.ts.map +1 -1
  1562. package/dist/program/metadata.js +24 -8
  1563. package/dist/program/metadata.js.map +1 -1
  1564. package/dist/program/metadata.test.js +30 -82
  1565. package/dist/program/metadata.test.js.map +1 -1
  1566. package/dist/program/module-resolution.d.ts +29 -0
  1567. package/dist/program/module-resolution.d.ts.map +1 -0
  1568. package/dist/program/module-resolution.js +257 -0
  1569. package/dist/program/module-resolution.js.map +1 -0
  1570. package/dist/program/package-roots.d.ts +3 -1
  1571. package/dist/program/package-roots.d.ts.map +1 -1
  1572. package/dist/program/package-roots.js +159 -21
  1573. package/dist/program/package-roots.js.map +1 -1
  1574. package/dist/program/package-roots.test.js +81 -25
  1575. package/dist/program/package-roots.test.js.map +1 -1
  1576. package/dist/program/program-assembly.d.ts +12 -0
  1577. package/dist/program/program-assembly.d.ts.map +1 -0
  1578. package/dist/program/program-assembly.js +409 -0
  1579. package/dist/program/program-assembly.js.map +1 -0
  1580. package/dist/program/program-factory.d.ts +9 -0
  1581. package/dist/program/program-factory.d.ts.map +1 -0
  1582. package/dist/program/program-factory.js +9 -0
  1583. package/dist/program/program-factory.js.map +1 -0
  1584. package/dist/program/program-input-discovery.d.ts +19 -0
  1585. package/dist/program/program-input-discovery.d.ts.map +1 -0
  1586. package/dist/program/program-input-discovery.js +379 -0
  1587. package/dist/program/program-input-discovery.js.map +1 -0
  1588. package/dist/program/program-input-discovery.test.d.ts +2 -0
  1589. package/dist/program/program-input-discovery.test.d.ts.map +1 -0
  1590. package/dist/program/program-input-discovery.test.js +342 -0
  1591. package/dist/program/program-input-discovery.test.js.map +1 -0
  1592. package/dist/program/source-binding-imports.d.ts +7 -0
  1593. package/dist/program/source-binding-imports.d.ts.map +1 -0
  1594. package/dist/program/source-binding-imports.js +80 -0
  1595. package/dist/program/source-binding-imports.js.map +1 -0
  1596. package/dist/program/source-binding-imports.test.d.ts +2 -0
  1597. package/dist/program/source-binding-imports.test.d.ts.map +1 -0
  1598. package/dist/program/source-binding-imports.test.js +58 -0
  1599. package/dist/program/source-binding-imports.test.js.map +1 -0
  1600. package/dist/program/source-file-identity.d.ts +13 -0
  1601. package/dist/program/source-file-identity.d.ts.map +1 -0
  1602. package/dist/program/source-file-identity.js +127 -0
  1603. package/dist/program/source-file-identity.js.map +1 -0
  1604. package/dist/program/source-package-metadata.d.ts +14 -0
  1605. package/dist/program/source-package-metadata.d.ts.map +1 -0
  1606. package/dist/program/source-package-metadata.js +227 -0
  1607. package/dist/program/source-package-metadata.js.map +1 -0
  1608. package/dist/program/tsbindgen-instance-receiver-substitution.test.d.ts +2 -0
  1609. package/dist/program/tsbindgen-instance-receiver-substitution.test.d.ts.map +1 -0
  1610. package/dist/program/tsbindgen-instance-receiver-substitution.test.js +194 -0
  1611. package/dist/program/tsbindgen-instance-receiver-substitution.test.js.map +1 -0
  1612. package/dist/program/types.d.ts +3 -2
  1613. package/dist/program/types.d.ts.map +1 -1
  1614. package/dist/program/xunit-equal-overload-resolution.test.d.ts +2 -0
  1615. package/dist/program/xunit-equal-overload-resolution.test.d.ts.map +1 -0
  1616. package/dist/program/xunit-equal-overload-resolution.test.js +205 -0
  1617. package/dist/program/xunit-equal-overload-resolution.test.js.map +1 -0
  1618. package/dist/program.d.ts +1 -1
  1619. package/dist/program.d.ts.map +1 -1
  1620. package/dist/resolver/clr-bindings-package-resolution.d.ts +28 -0
  1621. package/dist/resolver/clr-bindings-package-resolution.d.ts.map +1 -0
  1622. package/dist/resolver/clr-bindings-package-resolution.js +120 -0
  1623. package/dist/resolver/clr-bindings-package-resolution.js.map +1 -0
  1624. package/dist/resolver/clr-bindings-resolve-logic.d.ts +40 -0
  1625. package/dist/resolver/clr-bindings-resolve-logic.d.ts.map +1 -0
  1626. package/dist/resolver/clr-bindings-resolve-logic.js +192 -0
  1627. package/dist/resolver/clr-bindings-resolve-logic.js.map +1 -0
  1628. package/dist/resolver/clr-bindings-resolver.d.ts +9 -69
  1629. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  1630. package/dist/resolver/clr-bindings-resolver.js +4 -436
  1631. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  1632. package/dist/resolver/import-resolution.d.ts +3 -0
  1633. package/dist/resolver/import-resolution.d.ts.map +1 -1
  1634. package/dist/resolver/import-resolution.js +120 -33
  1635. package/dist/resolver/import-resolution.js.map +1 -1
  1636. package/dist/resolver/source-package-resolution.d.ts +18 -0
  1637. package/dist/resolver/source-package-resolution.d.ts.map +1 -1
  1638. package/dist/resolver/source-package-resolution.js +141 -14
  1639. package/dist/resolver/source-package-resolution.js.map +1 -1
  1640. package/dist/resolver/source-package-resolution.test.js +27 -52
  1641. package/dist/resolver/source-package-resolution.test.js.map +1 -1
  1642. package/dist/resolver-cases/namespace-and-classname.test.d.ts +5 -0
  1643. package/dist/resolver-cases/namespace-and-classname.test.d.ts.map +1 -0
  1644. package/dist/resolver-cases/namespace-and-classname.test.js +32 -0
  1645. package/dist/resolver-cases/namespace-and-classname.test.js.map +1 -0
  1646. package/dist/resolver-cases/resolve-import.test.d.ts +5 -0
  1647. package/dist/resolver-cases/resolve-import.test.d.ts.map +1 -0
  1648. package/dist/resolver-cases/resolve-import.test.js +460 -0
  1649. package/dist/resolver-cases/resolve-import.test.js.map +1 -0
  1650. package/dist/resolver.test.d.ts +2 -4
  1651. package/dist/resolver.test.d.ts.map +1 -1
  1652. package/dist/resolver.test.js +2 -289
  1653. package/dist/resolver.test.js.map +1 -1
  1654. package/dist/surface/profiles.d.ts +1 -1
  1655. package/dist/surface/profiles.d.ts.map +1 -1
  1656. package/dist/surface/profiles.js +146 -53
  1657. package/dist/surface/profiles.js.map +1 -1
  1658. package/dist/surface/profiles.test.js +97 -108
  1659. package/dist/surface/profiles.test.js.map +1 -1
  1660. package/dist/testing/filesystem-fixtures.d.ts +7 -0
  1661. package/dist/testing/filesystem-fixtures.d.ts.map +1 -0
  1662. package/dist/testing/filesystem-fixtures.js +80 -0
  1663. package/dist/testing/filesystem-fixtures.js.map +1 -0
  1664. package/dist/types/diagnostic.d.ts +1 -1
  1665. package/dist/types/diagnostic.d.ts.map +1 -1
  1666. package/dist/types/diagnostic.js.map +1 -1
  1667. package/dist/validation/contextual-type-analysis.d.ts +12 -0
  1668. package/dist/validation/contextual-type-analysis.d.ts.map +1 -0
  1669. package/dist/validation/contextual-type-analysis.js +11 -0
  1670. package/dist/validation/contextual-type-analysis.js.map +1 -0
  1671. package/dist/validation/contextual-type-checks.d.ts +35 -0
  1672. package/dist/validation/contextual-type-checks.d.ts.map +1 -0
  1673. package/dist/validation/contextual-type-checks.js +214 -0
  1674. package/dist/validation/contextual-type-checks.js.map +1 -0
  1675. package/dist/validation/exports.d.ts.map +1 -1
  1676. package/dist/validation/exports.js +14 -15
  1677. package/dist/validation/exports.js.map +1 -1
  1678. package/dist/validation/features-cases/promise-chaining.test.d.ts +2 -0
  1679. package/dist/validation/features-cases/promise-chaining.test.d.ts.map +1 -0
  1680. package/dist/validation/features-cases/promise-chaining.test.js +113 -0
  1681. package/dist/validation/features-cases/promise-chaining.test.js.map +1 -0
  1682. package/dist/validation/features-cases/test-helpers.d.ts +11 -0
  1683. package/dist/validation/features-cases/test-helpers.d.ts.map +1 -0
  1684. package/dist/validation/features-cases/test-helpers.js +125 -0
  1685. package/dist/validation/features-cases/test-helpers.js.map +1 -0
  1686. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.d.ts +2 -0
  1687. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.d.ts.map +1 -0
  1688. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.js +158 -0
  1689. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.js.map +1 -0
  1690. package/dist/validation/features-cases/tsn5001-function-length.test.d.ts +2 -0
  1691. package/dist/validation/features-cases/tsn5001-function-length.test.d.ts.map +1 -0
  1692. package/dist/validation/features-cases/tsn5001-function-length.test.js +104 -0
  1693. package/dist/validation/features-cases/tsn5001-function-length.test.js.map +1 -0
  1694. package/dist/validation/features.d.ts.map +1 -1
  1695. package/dist/validation/features.js +223 -0
  1696. package/dist/validation/features.js.map +1 -1
  1697. package/dist/validation/features.test.d.ts +3 -1
  1698. package/dist/validation/features.test.d.ts.map +1 -1
  1699. package/dist/validation/features.test.js +3 -386
  1700. package/dist/validation/features.test.js.map +1 -1
  1701. package/dist/validation/imports.d.ts.map +1 -1
  1702. package/dist/validation/imports.js +37 -3
  1703. package/dist/validation/imports.js.map +1 -1
  1704. package/dist/validation/imports.test.js +45 -9
  1705. package/dist/validation/imports.test.js.map +1 -1
  1706. package/dist/validation/static-safety-arrow-rules.d.ts +11 -0
  1707. package/dist/validation/static-safety-arrow-rules.d.ts.map +1 -0
  1708. package/dist/validation/static-safety-arrow-rules.js +54 -0
  1709. package/dist/validation/static-safety-arrow-rules.js.map +1 -0
  1710. package/dist/validation/static-safety-dictionary-keys.d.ts +10 -0
  1711. package/dist/validation/static-safety-dictionary-keys.d.ts.map +1 -0
  1712. package/dist/validation/static-safety-dictionary-keys.js +32 -0
  1713. package/dist/validation/static-safety-dictionary-keys.js.map +1 -0
  1714. package/dist/validation/static-safety-rules.d.ts +27 -0
  1715. package/dist/validation/static-safety-rules.d.ts.map +1 -0
  1716. package/dist/validation/static-safety-rules.js +231 -0
  1717. package/dist/validation/static-safety-rules.js.map +1 -0
  1718. package/dist/validation/static-safety.d.ts +4 -7
  1719. package/dist/validation/static-safety.d.ts.map +1 -1
  1720. package/dist/validation/static-safety.js +3 -673
  1721. package/dist/validation/static-safety.js.map +1 -1
  1722. package/dist/validation/synthesis-eligibility.d.ts +31 -0
  1723. package/dist/validation/synthesis-eligibility.d.ts.map +1 -0
  1724. package/dist/validation/synthesis-eligibility.js +161 -0
  1725. package/dist/validation/synthesis-eligibility.js.map +1 -0
  1726. package/dist/validator-cases/any-and-object-literals.test.d.ts +10 -0
  1727. package/dist/validator-cases/any-and-object-literals.test.d.ts.map +1 -0
  1728. package/dist/validator-cases/any-and-object-literals.test.js +271 -0
  1729. package/dist/validator-cases/any-and-object-literals.test.js.map +1 -0
  1730. package/dist/validator-cases/generic-validation.test.d.ts +11 -0
  1731. package/dist/validator-cases/generic-validation.test.d.ts.map +1 -0
  1732. package/dist/validator-cases/generic-validation.test.js +282 -0
  1733. package/dist/validator-cases/generic-validation.test.js.map +1 -0
  1734. package/dist/validator-cases/helpers.d.ts +9 -0
  1735. package/dist/validator-cases/helpers.d.ts.map +1 -0
  1736. package/dist/validator-cases/helpers.js +46 -0
  1737. package/dist/validator-cases/helpers.js.map +1 -0
  1738. package/dist/validator-cases/parameters-and-dict-keys.test.d.ts +10 -0
  1739. package/dist/validator-cases/parameters-and-dict-keys.test.d.ts.map +1 -0
  1740. package/dist/validator-cases/parameters-and-dict-keys.test.js +280 -0
  1741. package/dist/validator-cases/parameters-and-dict-keys.test.js.map +1 -0
  1742. package/dist/validator-cases/utility-types.test.d.ts +12 -0
  1743. package/dist/validator-cases/utility-types.test.d.ts.map +1 -0
  1744. package/dist/validator-cases/utility-types.test.js +323 -0
  1745. package/dist/validator-cases/utility-types.test.js.map +1 -0
  1746. package/dist/validator-maximus-cases/array-and-literal-inference.test.d.ts +2 -0
  1747. package/dist/validator-maximus-cases/array-and-literal-inference.test.d.ts.map +1 -0
  1748. package/dist/validator-maximus-cases/array-and-literal-inference.test.js +221 -0
  1749. package/dist/validator-maximus-cases/array-and-literal-inference.test.js.map +1 -0
  1750. package/dist/validator-maximus-cases/deterministic-typing.test.d.ts +2 -0
  1751. package/dist/validator-maximus-cases/deterministic-typing.test.d.ts.map +1 -0
  1752. package/dist/validator-maximus-cases/deterministic-typing.test.js +432 -0
  1753. package/dist/validator-maximus-cases/deterministic-typing.test.js.map +1 -0
  1754. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.d.ts +2 -0
  1755. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.d.ts.map +1 -0
  1756. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.js +273 -0
  1757. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.js.map +1 -0
  1758. package/dist/validator-maximus-cases/feature-gating.test.d.ts +2 -0
  1759. package/dist/validator-maximus-cases/feature-gating.test.d.ts.map +1 -0
  1760. package/dist/validator-maximus-cases/feature-gating.test.js +181 -0
  1761. package/dist/validator-maximus-cases/feature-gating.test.js.map +1 -0
  1762. package/dist/validator-maximus-cases/generic-function-values.test.d.ts +2 -0
  1763. package/dist/validator-maximus-cases/generic-function-values.test.d.ts.map +1 -0
  1764. package/dist/validator-maximus-cases/generic-function-values.test.js +346 -0
  1765. package/dist/validator-maximus-cases/generic-function-values.test.js.map +1 -0
  1766. package/dist/validator-maximus-cases/helpers.d.ts +9 -0
  1767. package/dist/validator-maximus-cases/helpers.d.ts.map +1 -0
  1768. package/dist/validator-maximus-cases/helpers.js +113 -0
  1769. package/dist/validator-maximus-cases/helpers.js.map +1 -0
  1770. package/dist/validator-maximus-cases/type-syntax.test.d.ts +2 -0
  1771. package/dist/validator-maximus-cases/type-syntax.test.d.ts.map +1 -0
  1772. package/dist/validator-maximus-cases/type-syntax.test.js +157 -0
  1773. package/dist/validator-maximus-cases/type-syntax.test.js.map +1 -0
  1774. package/dist/validator.maximus.test.d.ts +6 -1
  1775. package/dist/validator.maximus.test.d.ts.map +1 -1
  1776. package/dist/validator.maximus.test.js +6 -1417
  1777. package/dist/validator.maximus.test.js.map +1 -1
  1778. package/dist/validator.test.d.ts +4 -10
  1779. package/dist/validator.test.d.ts.map +1 -1
  1780. package/dist/validator.test.js +4 -1086
  1781. package/dist/validator.test.js.map +1 -1
  1782. package/package.json +3 -3
@@ -0,0 +1,2237 @@
1
+ /**
2
+ * General call expression converter
3
+ *
4
+ * Two-pass argument resolution with generic type inference.
5
+ * ALICE'S SPEC: All call resolution goes through TypeSystem.resolveCall().
6
+ */
7
+ import * as fs from "node:fs";
8
+ import * as ts from "typescript";
9
+ import { getSourceSpan, extractTypeArguments, checkIfRequiresSpecialization, } from "../helpers.js";
10
+ import { convertExpression } from "../../../expression-converter.js";
11
+ import { buildResolvedRestParameter, expandParameterTypesForArguments, substitutePolymorphicThis, } from "../../../type-system/type-system-call-resolution.js";
12
+ import { addUndefinedToType } from "../../../type-system/type-system-state-helpers.js";
13
+ import { deriveSubstitutionsFromExpectedReturn, substituteTypeParameters, unwrapCallSiteArgumentModifier, applyCallSiteArgumentModifiers, extractArgumentPassing, extractArgumentPassingFromBinding, } from "./call-site-analysis.js";
14
+ import { narrowTypeByArrayShape } from "../../array-type-guards.js";
15
+ import { collectResolutionArguments, isArrayIsArrayCall, resolveCallableCandidate, } from "./call-resolution.js";
16
+ import { tryConvertIntrinsicCall } from "./call-intrinsics.js";
17
+ import { resolveHeritageReferenceType } from "../../heritage-reference-type.js";
18
+ import { getBoundGlobalCallParameterTypes } from "./bound-global-call-parameters.js";
19
+ import { resolveImport } from "../../../../resolver.js";
20
+ import { readSourcePackageMetadata } from "../../../../program/source-package-metadata.js";
21
+ import { tsbindgenClrTypeNameToTsTypeName } from "../../../../tsbindgen/names.js";
22
+ import { containsTypeParameter, deriveInvocationTypeSubstitutions, expandAuthoritativeSourceBackedSurfaceType, finalizeInvocationMetadata, getAuthoritativeDirectCalleeParameterTypes, getDirectStructuralMemberType, invocationTypesEquivalent, normalizeFinalizedInvocationArguments, selectDeterministicSourceBackedParameterType, } from "./invocation-finalization.js";
23
+ import { getClrIdentityKey, referenceTypeIdentity, } from "../../../types/type-ops.js";
24
+ const stripParentheses = (expr) => {
25
+ let current = expr;
26
+ while (ts.isParenthesizedExpression(current)) {
27
+ current = current.expression;
28
+ }
29
+ return current;
30
+ };
31
+ const clrBindingTypesMatch = (left, right) => getClrIdentityKey(left) === getClrIdentityKey(right);
32
+ const isStableNamedAggregateContextType = (type) => type?.kind === "referenceType" &&
33
+ !type.name.startsWith("__Anon_") &&
34
+ !type.name.startsWith("__Rest_") &&
35
+ type.name !== "object" &&
36
+ type.name !== "JsValue";
37
+ const preserveStableNamedAggregateArgumentIdentity = (argument, contextualExpectedType, ctx) => {
38
+ if (!isStableNamedAggregateContextType(contextualExpectedType) ||
39
+ !argument.inferredType ||
40
+ !invocationTypesEquivalent(argument.inferredType, contextualExpectedType, ctx)) {
41
+ return argument;
42
+ }
43
+ switch (argument.kind) {
44
+ case "object":
45
+ return {
46
+ ...argument,
47
+ inferredType: contextualExpectedType,
48
+ contextualType: contextualExpectedType,
49
+ };
50
+ case "array":
51
+ return {
52
+ ...argument,
53
+ inferredType: contextualExpectedType,
54
+ };
55
+ default:
56
+ return {
57
+ ...argument,
58
+ inferredType: contextualExpectedType,
59
+ };
60
+ }
61
+ };
62
+ const buildDeferredLambdaInferenceType = (expr) => {
63
+ const current = stripParentheses(expr);
64
+ if (!ts.isArrowFunction(current) && !ts.isFunctionExpression(current)) {
65
+ return undefined;
66
+ }
67
+ return {
68
+ kind: "functionType",
69
+ parameters: current.parameters.map((parameter, index) => ({
70
+ kind: "parameter",
71
+ pattern: {
72
+ kind: "identifierPattern",
73
+ name: ts.isIdentifier(parameter.name)
74
+ ? parameter.name.text
75
+ : `arg${index}`,
76
+ },
77
+ type: { kind: "unknownType" },
78
+ initializer: undefined,
79
+ isOptional: !!parameter.questionToken,
80
+ isRest: !!parameter.dotDotDotToken,
81
+ passing: "value",
82
+ })),
83
+ returnType: { kind: "unknownType" },
84
+ };
85
+ };
86
+ const getEnclosingClassSuperType = (node, ctx) => {
87
+ if (node.expression.kind !== ts.SyntaxKind.SuperKeyword) {
88
+ return undefined;
89
+ }
90
+ let current = node.parent;
91
+ while (current) {
92
+ if (ts.isClassDeclaration(current) || ts.isClassExpression(current)) {
93
+ const superClass = current.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0];
94
+ if (!superClass) {
95
+ return undefined;
96
+ }
97
+ return resolveHeritageReferenceType(superClass, ctx);
98
+ }
99
+ current = current.parent;
100
+ }
101
+ return undefined;
102
+ };
103
+ const collectSourceBackedReceiverTypeCandidates = (expression, receiverType) => {
104
+ const candidates = [];
105
+ const seen = new Set();
106
+ const opaqueKeys = new WeakMap();
107
+ let nextOpaqueKey = 0;
108
+ const opaqueKey = (type) => {
109
+ const existing = opaqueKeys.get(type);
110
+ if (existing !== undefined)
111
+ return `opaque:${existing}`;
112
+ const next = nextOpaqueKey;
113
+ nextOpaqueKey += 1;
114
+ opaqueKeys.set(type, next);
115
+ return `opaque:${next}`;
116
+ };
117
+ const shallowTypeKey = (type) => {
118
+ switch (type.kind) {
119
+ case "primitiveType":
120
+ return `prim:${type.name}`;
121
+ case "literalType":
122
+ return `lit:${JSON.stringify(type.value)}`;
123
+ case "typeParameterType":
124
+ return `tp:${type.name}`;
125
+ case "anyType":
126
+ case "unknownType":
127
+ case "voidType":
128
+ case "neverType":
129
+ return type.kind;
130
+ case "arrayType":
131
+ return `arr:${shallowTypeKey(type.elementType)}`;
132
+ case "tupleType":
133
+ return `tuple:${type.elementTypes.map(shallowTypeKey).join(",")}`;
134
+ case "dictionaryType":
135
+ return `dict:${shallowTypeKey(type.keyType)}=>${shallowTypeKey(type.valueType)}`;
136
+ case "referenceType": {
137
+ const identity = referenceTypeIdentity(type);
138
+ const args = (type.typeArguments ?? []).map(shallowTypeKey).join(",");
139
+ return `ref:${identity ?? opaqueKey(type)}<${args}>`;
140
+ }
141
+ case "functionType":
142
+ case "objectType":
143
+ case "unionType":
144
+ case "intersectionType":
145
+ return opaqueKey(type);
146
+ }
147
+ };
148
+ const pushCandidate = (candidate) => {
149
+ if (!candidate || candidate.kind !== "referenceType") {
150
+ return;
151
+ }
152
+ const key = shallowTypeKey(candidate);
153
+ if (seen.has(key)) {
154
+ return;
155
+ }
156
+ seen.add(key);
157
+ candidates.push(candidate);
158
+ };
159
+ pushCandidate(receiverType);
160
+ let current = expression;
161
+ while (current &&
162
+ (current.kind === "asinterface" ||
163
+ current.kind === "typeAssertion" ||
164
+ current.kind === "numericNarrowing" ||
165
+ current.kind === "trycast")) {
166
+ current = current.expression;
167
+ pushCandidate(current.inferredType);
168
+ }
169
+ return candidates;
170
+ };
171
+ const collectSourceBackedReceiverOwnerAliases = (receiverType) => {
172
+ const aliases = [];
173
+ const seen = new Set();
174
+ const pushAlias = (alias) => {
175
+ if (!alias || alias.length === 0 || seen.has(alias)) {
176
+ return;
177
+ }
178
+ seen.add(alias);
179
+ aliases.push(alias);
180
+ };
181
+ pushAlias(receiverType.name);
182
+ pushAlias(receiverType.name.split(".").pop() ?? receiverType.name);
183
+ if (receiverType.resolvedClrType) {
184
+ pushAlias(tsbindgenClrTypeNameToTsTypeName(receiverType.resolvedClrType));
185
+ pushAlias(receiverType.resolvedClrType);
186
+ }
187
+ pushAlias(receiverType.typeId?.tsName);
188
+ pushAlias(receiverType.typeId?.clrName);
189
+ return aliases;
190
+ };
191
+ const resolveSourceBackedMemberSourceOrigin = (receiverType, memberName, ctx) => {
192
+ const preferredClrOwner = typeof receiverType.resolvedClrType === "string"
193
+ ? receiverType.resolvedClrType
194
+ : undefined;
195
+ for (const ownerAlias of collectSourceBackedReceiverOwnerAliases(receiverType)) {
196
+ const overloads = ctx.bindings.getMemberOverloads(ownerAlias, memberName, preferredClrOwner);
197
+ const sourceOrigin = overloads
198
+ ?.map((candidate) => candidate.sourceOrigin)
199
+ .find((candidate) => candidate !== undefined);
200
+ if (sourceOrigin) {
201
+ return sourceOrigin;
202
+ }
203
+ }
204
+ return undefined;
205
+ };
206
+ const resolveSourceBackedExportedFunctionTarget = (sourceFile, exportedSymbol, resolvedSignatureDeclaration) => {
207
+ if (exportedSymbol.kind === "function") {
208
+ const candidates = sourceFile.statements.flatMap((statement) => ts.isFunctionDeclaration(statement) &&
209
+ statement.name?.text === exportedSymbol.localName
210
+ ? [statement]
211
+ : []);
212
+ if (candidates.length === 0) {
213
+ return undefined;
214
+ }
215
+ const publicCandidates = getPublicSourceBackedOverloadCandidates(candidates);
216
+ const declaration = publicCandidates.find((candidate) => candidate === resolvedSignatureDeclaration) ??
217
+ publicCandidates[publicCandidates.length - 1] ??
218
+ publicCandidates[0];
219
+ if (!declaration) {
220
+ return undefined;
221
+ }
222
+ return {
223
+ declaration,
224
+ ownerTypeParameterNames: [],
225
+ overloadCandidates: publicCandidates,
226
+ };
227
+ }
228
+ if (exportedSymbol.kind !== "variable") {
229
+ return undefined;
230
+ }
231
+ const initializer = exportedSymbol.node
232
+ .initializer;
233
+ if (!initializer ||
234
+ (!ts.isArrowFunction(initializer) && !ts.isFunctionExpression(initializer))) {
235
+ return undefined;
236
+ }
237
+ return {
238
+ declaration: initializer,
239
+ ownerTypeParameterNames: [],
240
+ overloadCandidates: [initializer],
241
+ };
242
+ };
243
+ const getPublicSourceBackedOverloadCandidates = (candidates) => {
244
+ const declarationOnly = candidates.filter((candidate) => candidate.body === undefined);
245
+ return declarationOnly.length > 0 ? declarationOnly : candidates;
246
+ };
247
+ const isExportedTopLevelStatement = (statement) => !!(ts.canHaveModifiers(statement)
248
+ ? ts
249
+ .getModifiers(statement)
250
+ ?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword)
251
+ : false);
252
+ const collectTopLevelSymbols = (sourceFile) => {
253
+ const symbols = new Map();
254
+ for (const statement of sourceFile.statements) {
255
+ if (ts.isClassDeclaration(statement) && statement.name?.text) {
256
+ symbols.set(statement.name.text, {
257
+ name: statement.name.text,
258
+ kind: "class",
259
+ node: statement,
260
+ });
261
+ continue;
262
+ }
263
+ if (ts.isEnumDeclaration(statement) && statement.name.text) {
264
+ symbols.set(statement.name.text, {
265
+ name: statement.name.text,
266
+ kind: "enum",
267
+ node: statement,
268
+ });
269
+ continue;
270
+ }
271
+ if (ts.isFunctionDeclaration(statement) && statement.name?.text) {
272
+ symbols.set(statement.name.text, {
273
+ name: statement.name.text,
274
+ kind: "function",
275
+ node: statement,
276
+ });
277
+ continue;
278
+ }
279
+ if (ts.isInterfaceDeclaration(statement) && statement.name.text) {
280
+ symbols.set(statement.name.text, {
281
+ name: statement.name.text,
282
+ kind: "interface",
283
+ node: statement,
284
+ });
285
+ continue;
286
+ }
287
+ if (!ts.isVariableStatement(statement)) {
288
+ continue;
289
+ }
290
+ for (const declaration of statement.declarationList.declarations) {
291
+ if (!ts.isIdentifier(declaration.name)) {
292
+ continue;
293
+ }
294
+ symbols.set(declaration.name.text, {
295
+ name: declaration.name.text,
296
+ kind: "variable",
297
+ node: declaration,
298
+ });
299
+ }
300
+ }
301
+ return symbols;
302
+ };
303
+ const collectExportedTopLevelSymbols = (sourceFile) => {
304
+ const topLevel = collectTopLevelSymbols(sourceFile);
305
+ const exported = [];
306
+ const seen = new Set();
307
+ const pushSymbol = (exportName, localName, symbol) => {
308
+ if (!symbol) {
309
+ return;
310
+ }
311
+ const key = `${exportName}::${localName}`;
312
+ if (seen.has(key)) {
313
+ return;
314
+ }
315
+ seen.add(key);
316
+ exported.push({
317
+ exportName,
318
+ localName,
319
+ kind: symbol.kind,
320
+ node: symbol.node,
321
+ });
322
+ };
323
+ for (const statement of sourceFile.statements) {
324
+ if (ts.isClassDeclaration(statement) &&
325
+ statement.name?.text &&
326
+ isExportedTopLevelStatement(statement)) {
327
+ pushSymbol(statement.name.text, statement.name.text, topLevel.get(statement.name.text));
328
+ continue;
329
+ }
330
+ if (ts.isEnumDeclaration(statement) &&
331
+ statement.name.text &&
332
+ isExportedTopLevelStatement(statement)) {
333
+ pushSymbol(statement.name.text, statement.name.text, topLevel.get(statement.name.text));
334
+ continue;
335
+ }
336
+ if (ts.isFunctionDeclaration(statement) &&
337
+ statement.name?.text &&
338
+ isExportedTopLevelStatement(statement)) {
339
+ pushSymbol(statement.name.text, statement.name.text, topLevel.get(statement.name.text));
340
+ continue;
341
+ }
342
+ if (ts.isInterfaceDeclaration(statement) &&
343
+ statement.name.text &&
344
+ isExportedTopLevelStatement(statement)) {
345
+ pushSymbol(statement.name.text, statement.name.text, topLevel.get(statement.name.text));
346
+ continue;
347
+ }
348
+ if (ts.isVariableStatement(statement) &&
349
+ isExportedTopLevelStatement(statement)) {
350
+ for (const declaration of statement.declarationList.declarations) {
351
+ if (!ts.isIdentifier(declaration.name)) {
352
+ continue;
353
+ }
354
+ pushSymbol(declaration.name.text, declaration.name.text, topLevel.get(declaration.name.text));
355
+ }
356
+ continue;
357
+ }
358
+ if (!ts.isExportDeclaration(statement) ||
359
+ !!statement.moduleSpecifier ||
360
+ !statement.exportClause ||
361
+ !ts.isNamedExports(statement.exportClause)) {
362
+ continue;
363
+ }
364
+ for (const element of statement.exportClause.elements) {
365
+ const localName = element.propertyName?.text ?? element.name.text;
366
+ pushSymbol(element.name.text, localName, topLevel.get(localName));
367
+ }
368
+ }
369
+ return exported;
370
+ };
371
+ const resolveSourceBackedExportSourceTarget = (sourceFile, exportName, ctx, visited = new Set()) => {
372
+ const visitKey = `${sourceFile.fileName.replace(/\\/g, "/")}::${exportName}`;
373
+ if (visited.has(visitKey)) {
374
+ return undefined;
375
+ }
376
+ const nextVisited = new Set(visited);
377
+ nextVisited.add(visitKey);
378
+ const exportedSymbols = collectExportedTopLevelSymbols(sourceFile);
379
+ const directMatch = exportedSymbols.find((symbol) => symbol.exportName === exportName);
380
+ if (directMatch && directMatch.localName === exportName) {
381
+ return {
382
+ sourceFile,
383
+ exportName,
384
+ };
385
+ }
386
+ for (const statement of sourceFile.statements) {
387
+ if (!ts.isExportDeclaration(statement) ||
388
+ !statement.exportClause ||
389
+ !ts.isNamedExports(statement.exportClause)) {
390
+ continue;
391
+ }
392
+ for (const element of statement.exportClause.elements) {
393
+ if (element.name.text !== exportName) {
394
+ continue;
395
+ }
396
+ const localName = element.propertyName?.text ?? element.name.text;
397
+ if (!statement.moduleSpecifier ||
398
+ !ts.isStringLiteral(statement.moduleSpecifier)) {
399
+ return {
400
+ sourceFile,
401
+ exportName: localName,
402
+ };
403
+ }
404
+ const resolved = resolveImport(statement.moduleSpecifier.text, sourceFile.fileName, ctx.sourceRoot, {
405
+ clrResolver: ctx.clrResolver,
406
+ bindings: ctx.bindings,
407
+ projectRoot: ctx.projectRoot,
408
+ surface: ctx.surface,
409
+ authoritativeTsonicPackageRoots: ctx.authoritativeTsonicPackageRoots,
410
+ declarationModuleAliases: ctx.declarationModuleAliases,
411
+ });
412
+ if (!resolved.ok || !resolved.value.resolvedPath) {
413
+ return undefined;
414
+ }
415
+ const redirectedSourceFile = getSourceFileForPath(resolved.value.resolvedPath, ctx);
416
+ if (!redirectedSourceFile || redirectedSourceFile.isDeclarationFile) {
417
+ return undefined;
418
+ }
419
+ return resolveSourceBackedExportSourceTarget(redirectedSourceFile, localName, ctx, nextVisited);
420
+ }
421
+ }
422
+ return directMatch
423
+ ? {
424
+ sourceFile,
425
+ exportName: directMatch.localName,
426
+ }
427
+ : undefined;
428
+ };
429
+ const resolveSourceBackedPackageExportSourceTarget = (receiverType, ctx) => {
430
+ const packageName = receiverType.typeId?.assemblyName;
431
+ if (!packageName || !packageName.startsWith("@tsonic/")) {
432
+ return undefined;
433
+ }
434
+ const exportName = receiverType.typeId?.tsName ??
435
+ receiverType.name.split(".").pop() ??
436
+ receiverType.name;
437
+ if (!exportName) {
438
+ return undefined;
439
+ }
440
+ const packageRoot = ctx.authoritativeTsonicPackageRoots.get(packageName);
441
+ if (!packageRoot) {
442
+ return undefined;
443
+ }
444
+ const metadata = readSourcePackageMetadata(packageRoot);
445
+ if (!metadata) {
446
+ return undefined;
447
+ }
448
+ const matches = new Map();
449
+ for (const exportPath of metadata.exportPaths) {
450
+ const sourceFile = getSourceFileForPath(exportPath, ctx);
451
+ if (!sourceFile || sourceFile.isDeclarationFile) {
452
+ continue;
453
+ }
454
+ const match = resolveSourceBackedExportSourceTarget(sourceFile, exportName, ctx);
455
+ if (!match) {
456
+ continue;
457
+ }
458
+ matches.set(match.sourceFile.fileName.replace(/\\/g, "/"), match);
459
+ }
460
+ if (matches.size !== 1) {
461
+ return undefined;
462
+ }
463
+ return [...matches.values()][0];
464
+ };
465
+ const resolveReferencedIdentifierSymbol = (checker, expr) => {
466
+ const current = stripParentheses(expr);
467
+ if (!ts.isIdentifier(current)) {
468
+ return undefined;
469
+ }
470
+ const symbol = checker.getSymbolAtLocation(current);
471
+ if (!symbol) {
472
+ return undefined;
473
+ }
474
+ if (symbol.flags & ts.SymbolFlags.Alias) {
475
+ return checker.getAliasedSymbol(symbol);
476
+ }
477
+ return symbol;
478
+ };
479
+ const getSourceFileForPath = (sourceFilePath, ctx) => {
480
+ const normalizedSourceFilePath = sourceFilePath.replace(/\\/g, "/");
481
+ const realSourceFilePath = (() => {
482
+ try {
483
+ return fs.realpathSync(sourceFilePath).replace(/\\/g, "/");
484
+ }
485
+ catch {
486
+ return undefined;
487
+ }
488
+ })();
489
+ const fromProgram = ctx.sourceFilesByPath.get(normalizedSourceFilePath) ??
490
+ (realSourceFilePath
491
+ ? ctx.sourceFilesByPath.get(realSourceFilePath)
492
+ : undefined);
493
+ if (fromProgram) {
494
+ return fromProgram;
495
+ }
496
+ if (!fs.existsSync(sourceFilePath)) {
497
+ return undefined;
498
+ }
499
+ return ts.createSourceFile(sourceFilePath, fs.readFileSync(sourceFilePath, "utf-8"), ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
500
+ };
501
+ const resolveSourceBackedIdentifierGlobalTarget = (node, callee, ctx) => {
502
+ if (!callee.resolvedAssembly || !callee.resolvedClrType) {
503
+ return undefined;
504
+ }
505
+ const binding = ctx.bindings.getExactBindingByKind(callee.name, "global");
506
+ if (!binding ||
507
+ binding.assembly !== callee.resolvedAssembly ||
508
+ !clrBindingTypesMatch(binding.type, callee.resolvedClrType) ||
509
+ !binding.sourceImport) {
510
+ return undefined;
511
+ }
512
+ const resolved = resolveImport(binding.sourceImport, node.getSourceFile().fileName, ctx.sourceRoot, {
513
+ clrResolver: ctx.clrResolver,
514
+ bindings: ctx.bindings,
515
+ projectRoot: ctx.projectRoot,
516
+ surface: ctx.surface,
517
+ authoritativeTsonicPackageRoots: ctx.authoritativeTsonicPackageRoots,
518
+ declarationModuleAliases: ctx.declarationModuleAliases,
519
+ });
520
+ if (!resolved.ok || !resolved.value.resolvedPath) {
521
+ return undefined;
522
+ }
523
+ const sourceFile = getSourceFileForPath(resolved.value.resolvedPath, ctx);
524
+ if (!sourceFile || sourceFile.isDeclarationFile) {
525
+ return undefined;
526
+ }
527
+ const exportedSymbol = collectExportedTopLevelSymbols(sourceFile).find((symbol) => symbol.exportName === callee.name);
528
+ if (!exportedSymbol) {
529
+ return undefined;
530
+ }
531
+ return resolveSourceBackedExportedFunctionTarget(sourceFile, exportedSymbol, ctx.checker.getResolvedSignature(node)?.getDeclaration());
532
+ };
533
+ const collectTopLevelClassDeclarations = (sourceFile) => {
534
+ const classes = new Map();
535
+ for (const statement of sourceFile.statements) {
536
+ if (ts.isClassDeclaration(statement) && statement.name?.text) {
537
+ classes.set(statement.name.text, statement);
538
+ }
539
+ }
540
+ return classes;
541
+ };
542
+ const resolveSourceBackedClassDeclarationByName = (typeName, ctx) => {
543
+ const simpleName = getLocalClassLookupName(typeName);
544
+ const binding = ctx.bindings.getExactBindingByKind(simpleName, "global");
545
+ if (!binding?.sourceImport) {
546
+ return undefined;
547
+ }
548
+ const resolved = resolveImport(binding.sourceImport, ctx.sourceRoot, ctx.sourceRoot, {
549
+ clrResolver: ctx.clrResolver,
550
+ bindings: ctx.bindings,
551
+ projectRoot: ctx.projectRoot,
552
+ surface: ctx.surface,
553
+ authoritativeTsonicPackageRoots: ctx.authoritativeTsonicPackageRoots,
554
+ declarationModuleAliases: ctx.declarationModuleAliases,
555
+ });
556
+ if (!resolved.ok || !resolved.value.resolvedPath) {
557
+ return undefined;
558
+ }
559
+ const sourceFile = getSourceFileForPath(resolved.value.resolvedPath, ctx);
560
+ if (!sourceFile) {
561
+ return undefined;
562
+ }
563
+ return collectTopLevelClassDeclarations(sourceFile).get(simpleName);
564
+ };
565
+ const getClassDeclarationIdentity = (classDeclaration) => {
566
+ const className = classDeclaration.name?.text;
567
+ if (!className) {
568
+ return undefined;
569
+ }
570
+ return `${classDeclaration.getSourceFile().fileName.replace(/\\/g, "/")}::${className}`;
571
+ };
572
+ const resolveClassDeclarationFromExpression = (expression, ctx) => {
573
+ const symbol = resolveReferencedIdentifierSymbol(ctx.checker, expression);
574
+ if (!symbol) {
575
+ return undefined;
576
+ }
577
+ const declaration = symbol.declarations?.find((candidate) => ts.isClassDeclaration(candidate));
578
+ return declaration && ts.isClassDeclaration(declaration)
579
+ ? declaration
580
+ : undefined;
581
+ };
582
+ const collectClassMethodDeclarationsInHierarchy = (ownerClass, memberName, ctx, visited = new Set()) => {
583
+ const ownerIdentity = getClassDeclarationIdentity(ownerClass);
584
+ if (!ownerIdentity || visited.has(ownerIdentity)) {
585
+ return [];
586
+ }
587
+ const nextVisited = new Set(visited);
588
+ nextVisited.add(ownerIdentity);
589
+ const directMembers = ownerClass.members.flatMap((member) => ts.isMethodDeclaration(member) &&
590
+ getDeclarationTextName(member.name) === memberName
591
+ ? [member]
592
+ : []);
593
+ const inheritedMembers = [];
594
+ const heritageClauses = ownerClass.heritageClauses ?? [];
595
+ for (const heritageClause of heritageClauses) {
596
+ if (heritageClause.token !== ts.SyntaxKind.ExtendsKeyword) {
597
+ continue;
598
+ }
599
+ for (const heritageType of heritageClause.types) {
600
+ const baseClass = resolveClassDeclarationFromExpression(heritageType.expression, ctx);
601
+ if (!baseClass) {
602
+ continue;
603
+ }
604
+ inheritedMembers.push(...collectClassMethodDeclarationsInHierarchy(baseClass, memberName, ctx, nextVisited));
605
+ }
606
+ }
607
+ return [...directMembers, ...inheritedMembers];
608
+ };
609
+ const getLocalClassLookupName = (typeName) => typeName
610
+ .replace(/\$instance$/, "")
611
+ .split(".")
612
+ .pop() ?? typeName;
613
+ const buildLocalReceiverOwnerTypeSubstitution = (receiverType, ownerClassDeclaration, ownerTypeParameterNames, ctx) => {
614
+ if (receiverType?.kind !== "referenceType" ||
615
+ !ownerClassDeclaration ||
616
+ !ownerClassDeclaration.name ||
617
+ ownerTypeParameterNames.length === 0) {
618
+ return undefined;
619
+ }
620
+ const ownerSourceClasses = collectTopLevelClassDeclarations(ownerClassDeclaration.getSourceFile());
621
+ let currentClass = ownerSourceClasses.get(getLocalClassLookupName(receiverType.name)) ??
622
+ resolveSourceBackedClassDeclarationByName(receiverType.name, ctx);
623
+ let currentInstantiatedType = receiverType;
624
+ const visited = new Set();
625
+ while (currentClass?.name?.text) {
626
+ const currentName = currentClass.name.text;
627
+ if (visited.has(currentName)) {
628
+ return undefined;
629
+ }
630
+ visited.add(currentName);
631
+ if (currentName === ownerClassDeclaration.name.text) {
632
+ if (currentInstantiatedType.kind !== "referenceType" ||
633
+ !currentInstantiatedType.typeArguments ||
634
+ currentInstantiatedType.typeArguments.length !==
635
+ ownerTypeParameterNames.length) {
636
+ return undefined;
637
+ }
638
+ const substitution = new Map();
639
+ for (let index = 0; index < ownerTypeParameterNames.length; index += 1) {
640
+ const typeParameterName = ownerTypeParameterNames[index];
641
+ const typeArgument = currentInstantiatedType.typeArguments[index];
642
+ if (typeParameterName && typeArgument) {
643
+ substitution.set(typeParameterName, typeArgument);
644
+ }
645
+ }
646
+ return substitution.size > 0 ? substitution : undefined;
647
+ }
648
+ const extendsClause = currentClass.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword);
649
+ const heritageType = extendsClause?.types[0];
650
+ if (!heritageType) {
651
+ return undefined;
652
+ }
653
+ let nextType = resolveHeritageReferenceType(heritageType, ctx);
654
+ if (currentInstantiatedType.kind === "referenceType" &&
655
+ currentClass.typeParameters?.length &&
656
+ currentInstantiatedType.typeArguments &&
657
+ currentInstantiatedType.typeArguments.length ===
658
+ currentClass.typeParameters.length) {
659
+ const currentSubstitution = new Map();
660
+ for (let index = 0; index < currentClass.typeParameters.length; index += 1) {
661
+ const typeParameterName = currentClass.typeParameters[index]?.name.text;
662
+ const typeArgument = currentInstantiatedType.typeArguments[index];
663
+ if (typeParameterName && typeArgument) {
664
+ currentSubstitution.set(typeParameterName, typeArgument);
665
+ }
666
+ }
667
+ if (currentSubstitution.size > 0) {
668
+ nextType =
669
+ ctx.typeSystem.substitute(nextType, currentSubstitution) ?? nextType;
670
+ }
671
+ }
672
+ if (nextType.kind !== "referenceType") {
673
+ return undefined;
674
+ }
675
+ currentInstantiatedType = nextType;
676
+ currentClass =
677
+ resolveClassDeclarationFromExpression(heritageType.expression, ctx) ??
678
+ resolveSourceBackedClassDeclarationByName(nextType.name, ctx);
679
+ }
680
+ return undefined;
681
+ };
682
+ const resolveInstantiatedExportClassDeclaration = (exportedSymbol, topLevelClasses, ctx) => {
683
+ if (exportedSymbol.kind === "class") {
684
+ return exportedSymbol.node;
685
+ }
686
+ if (exportedSymbol.kind !== "variable") {
687
+ return undefined;
688
+ }
689
+ const declaration = exportedSymbol.node;
690
+ const initializer = declaration.initializer;
691
+ if (!initializer || !ts.isNewExpression(initializer)) {
692
+ return undefined;
693
+ }
694
+ const localClass = ts.isIdentifier(initializer.expression)
695
+ ? topLevelClasses.get(initializer.expression.text)
696
+ : undefined;
697
+ if (localClass) {
698
+ return localClass;
699
+ }
700
+ return resolveClassDeclarationFromExpression(initializer.expression, ctx);
701
+ };
702
+ const resolveSourceBackedMemberAccessTarget = (node, callee, receiverType, ctx) => {
703
+ if (callee.isComputed || typeof callee.property !== "string") {
704
+ return undefined;
705
+ }
706
+ const receiverCandidates = collectSourceBackedReceiverTypeCandidates(callee.object, receiverType);
707
+ for (const candidateReceiverType of receiverCandidates) {
708
+ const packageExportTarget = resolveSourceBackedPackageExportSourceTarget(candidateReceiverType, ctx);
709
+ if (packageExportTarget) {
710
+ const exportedSymbol = collectExportedTopLevelSymbols(packageExportTarget.sourceFile).find((symbol) => symbol.localName === packageExportTarget.exportName ||
711
+ symbol.exportName === packageExportTarget.exportName);
712
+ if (!exportedSymbol) {
713
+ continue;
714
+ }
715
+ const topLevelClasses = collectTopLevelClassDeclarations(packageExportTarget.sourceFile);
716
+ const ownerClass = resolveInstantiatedExportClassDeclaration(exportedSymbol, topLevelClasses, ctx);
717
+ if (!ownerClass) {
718
+ continue;
719
+ }
720
+ const overloadCandidates = collectClassMethodDeclarationsInHierarchy(ownerClass, callee.property, ctx);
721
+ const declaration = overloadCandidates.find((candidate) => candidate.body === undefined) ??
722
+ overloadCandidates[0];
723
+ if (!declaration) {
724
+ continue;
725
+ }
726
+ return {
727
+ declaration,
728
+ overloadCandidates,
729
+ receiverType: candidateReceiverType,
730
+ };
731
+ }
732
+ const sourceOrigin = resolveSourceBackedMemberSourceOrigin(candidateReceiverType, callee.property, ctx);
733
+ if (sourceOrigin) {
734
+ const sourceFile = getSourceFileForPath(sourceOrigin.filePath, ctx);
735
+ if (!sourceFile || sourceFile.isDeclarationFile) {
736
+ continue;
737
+ }
738
+ const exportedSymbol = collectExportedTopLevelSymbols(sourceFile).find((symbol) => symbol.exportName === sourceOrigin.exportName);
739
+ if (!exportedSymbol) {
740
+ continue;
741
+ }
742
+ const topLevelClasses = collectTopLevelClassDeclarations(sourceFile);
743
+ const ownerClass = resolveInstantiatedExportClassDeclaration(exportedSymbol, topLevelClasses, ctx);
744
+ if (!ownerClass) {
745
+ continue;
746
+ }
747
+ const overloadCandidates = collectClassMethodDeclarationsInHierarchy(ownerClass, callee.property, ctx);
748
+ const declaration = overloadCandidates.find((candidate) => candidate.body === undefined) ??
749
+ overloadCandidates[0];
750
+ if (!declaration) {
751
+ continue;
752
+ }
753
+ return {
754
+ declaration,
755
+ overloadCandidates,
756
+ receiverType: candidateReceiverType,
757
+ };
758
+ }
759
+ const receiverSimpleName = candidateReceiverType.name.split(".").pop() ?? candidateReceiverType.name;
760
+ const binding = ctx.bindings.getExactBindingByKind(receiverSimpleName, "global");
761
+ if (!binding?.sourceImport) {
762
+ continue;
763
+ }
764
+ const resolved = resolveImport(binding.sourceImport, node.getSourceFile().fileName, ctx.sourceRoot, {
765
+ clrResolver: ctx.clrResolver,
766
+ bindings: ctx.bindings,
767
+ projectRoot: ctx.projectRoot,
768
+ surface: ctx.surface,
769
+ authoritativeTsonicPackageRoots: ctx.authoritativeTsonicPackageRoots,
770
+ declarationModuleAliases: ctx.declarationModuleAliases,
771
+ });
772
+ if (!resolved.ok || !resolved.value.resolvedPath) {
773
+ continue;
774
+ }
775
+ const sourceFile = getSourceFileForPath(resolved.value.resolvedPath, ctx);
776
+ if (!sourceFile || sourceFile.isDeclarationFile) {
777
+ continue;
778
+ }
779
+ const exportedSymbol = collectExportedTopLevelSymbols(sourceFile).find((symbol) => symbol.exportName === receiverSimpleName);
780
+ if (!exportedSymbol) {
781
+ continue;
782
+ }
783
+ const topLevelClasses = collectTopLevelClassDeclarations(sourceFile);
784
+ const ownerClass = resolveInstantiatedExportClassDeclaration(exportedSymbol, topLevelClasses, ctx);
785
+ if (!ownerClass) {
786
+ continue;
787
+ }
788
+ const overloadCandidates = collectClassMethodDeclarationsInHierarchy(ownerClass, callee.property, ctx);
789
+ const declaration = overloadCandidates.find((candidate) => candidate.body === undefined) ??
790
+ overloadCandidates[0];
791
+ if (!declaration) {
792
+ continue;
793
+ }
794
+ return {
795
+ declaration,
796
+ overloadCandidates,
797
+ receiverType: candidateReceiverType,
798
+ };
799
+ }
800
+ return undefined;
801
+ };
802
+ const classContainsMethodInHierarchy = (ownerClass, candidateClass, ctx, visited = new Set()) => {
803
+ const ownerIdentity = getClassDeclarationIdentity(ownerClass);
804
+ const candidateIdentity = getClassDeclarationIdentity(candidateClass);
805
+ if (!ownerIdentity || !candidateIdentity) {
806
+ return false;
807
+ }
808
+ if (ownerIdentity === candidateIdentity) {
809
+ return true;
810
+ }
811
+ if (visited.has(ownerIdentity)) {
812
+ return false;
813
+ }
814
+ const nextVisited = new Set(visited);
815
+ nextVisited.add(ownerIdentity);
816
+ const heritageClauses = ownerClass.heritageClauses ?? [];
817
+ for (const heritageClause of heritageClauses) {
818
+ if (heritageClause.token !== ts.SyntaxKind.ExtendsKeyword) {
819
+ continue;
820
+ }
821
+ for (const heritageType of heritageClause.types) {
822
+ const baseClass = resolveClassDeclarationFromExpression(heritageType.expression, ctx);
823
+ if (baseClass &&
824
+ classContainsMethodInHierarchy(baseClass, candidateClass, ctx, nextVisited)) {
825
+ return true;
826
+ }
827
+ }
828
+ }
829
+ return false;
830
+ };
831
+ const getDeclarationTextName = (name) => {
832
+ if (!name) {
833
+ return undefined;
834
+ }
835
+ if (ts.isIdentifier(name) || ts.isStringLiteral(name)) {
836
+ return name.text;
837
+ }
838
+ if (ts.isNumericLiteral(name)) {
839
+ return name.text;
840
+ }
841
+ return undefined;
842
+ };
843
+ const buildSourceBackedParameterSurface = (declaration, ownerTypeParameterNames, receiverType, argumentCount, ctx) => {
844
+ const declaredReturnType = declaration.type
845
+ ? ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(declaration.type))
846
+ : { kind: "unknownType" };
847
+ const substitutedSurface = applySourceReceiverTypeSubstitution(declaration.parameters.map((parameter) => buildFunctionParameterFromDeclaration(parameter, ctx)), declaredReturnType, receiverType, ownerTypeParameterNames, ts.isClassLike(declaration.parent) ? declaration.parent : undefined, ctx);
848
+ const optionalAwareParameterTypes = substitutedSurface.parameters.map((parameter, index) => parameter.type
849
+ ? declaration.parameters[index]?.questionToken
850
+ ? addUndefinedToType(parameter.type)
851
+ : parameter.type
852
+ : parameter.type);
853
+ const parameterTypes = expandParameterTypesForArguments(substitutedSurface.parameters, optionalAwareParameterTypes, argumentCount);
854
+ return {
855
+ parameterTypes,
856
+ returnType: substitutedSurface.returnType ?? { kind: "unknownType" },
857
+ methodTypeParameterNames: declaration.typeParameters?.map((parameter) => parameter.name.text) ?? [],
858
+ restParameter: buildResolvedRestParameter(substitutedSurface.parameters.map((parameter) => ({
859
+ isRest: parameter.isRest,
860
+ })), parameterTypes),
861
+ };
862
+ };
863
+ const NUMERIC_SOURCE_SURFACE_NAMES = new Set([
864
+ "number",
865
+ "int",
866
+ "byte",
867
+ "sbyte",
868
+ "short",
869
+ "ushort",
870
+ "uint",
871
+ "long",
872
+ "ulong",
873
+ "float",
874
+ "double",
875
+ "decimal",
876
+ ]);
877
+ const isNumericSourceSurfaceType = (type) => {
878
+ if (!type) {
879
+ return false;
880
+ }
881
+ if (type.kind === "primitiveType") {
882
+ return NUMERIC_SOURCE_SURFACE_NAMES.has(type.name);
883
+ }
884
+ if (type.kind === "referenceType") {
885
+ return NUMERIC_SOURCE_SURFACE_NAMES.has(type.name);
886
+ }
887
+ if (type.kind === "literalType") {
888
+ return typeof type.value === "number";
889
+ }
890
+ if (type.kind === "unionType") {
891
+ return (type.types.length > 0 &&
892
+ type.types.every((member) => isNumericSourceSurfaceType(member)));
893
+ }
894
+ return false;
895
+ };
896
+ const scoreSourceSurfaceComplexity = (type) => {
897
+ if (!type) {
898
+ return 0;
899
+ }
900
+ switch (type.kind) {
901
+ case "unionType":
902
+ return (type.types.length +
903
+ type.types.reduce((total, member) => total + scoreSourceSurfaceComplexity(member), 0));
904
+ case "intersectionType":
905
+ return (type.types.length +
906
+ type.types.reduce((total, member) => total + scoreSourceSurfaceComplexity(member), 0));
907
+ case "arrayType":
908
+ return 1 + scoreSourceSurfaceComplexity(type.elementType);
909
+ case "tupleType":
910
+ return (type.elementTypes.length +
911
+ type.elementTypes.reduce((total, member) => total + scoreSourceSurfaceComplexity(member), 0));
912
+ case "referenceType":
913
+ return (1 +
914
+ (type.typeArguments?.reduce((total, member) => total + scoreSourceSurfaceComplexity(member), 0) ?? 0));
915
+ case "functionType":
916
+ return (1 +
917
+ type.parameters.reduce((total, parameter) => total + scoreSourceSurfaceComplexity(parameter?.type), 0) +
918
+ scoreSourceSurfaceComplexity(type.returnType));
919
+ default:
920
+ return 1;
921
+ }
922
+ };
923
+ const scoreSourceBackedSurfaceCandidate = (candidateParameterTypes, selectedParameterTypes, actualArgTypes, ctx) => {
924
+ const containsAmbiguousSourceSurfaceType = (type) => {
925
+ if (!type) {
926
+ return false;
927
+ }
928
+ switch (type.kind) {
929
+ case "unknownType":
930
+ case "anyType":
931
+ case "typeParameterType":
932
+ return true;
933
+ case "arrayType":
934
+ return containsAmbiguousSourceSurfaceType(type.elementType);
935
+ case "tupleType":
936
+ return type.elementTypes.some((member) => containsAmbiguousSourceSurfaceType(member));
937
+ case "dictionaryType":
938
+ return (containsAmbiguousSourceSurfaceType(type.keyType) ||
939
+ containsAmbiguousSourceSurfaceType(type.valueType));
940
+ case "referenceType":
941
+ return ((type.typeArguments?.some((member) => containsAmbiguousSourceSurfaceType(member)) ??
942
+ false) ||
943
+ (type.structuralMembers?.some((member) => {
944
+ if (member.kind === "propertySignature") {
945
+ return containsAmbiguousSourceSurfaceType(member.type);
946
+ }
947
+ return (member.parameters.some((parameter) => containsAmbiguousSourceSurfaceType(parameter.type)) || containsAmbiguousSourceSurfaceType(member.returnType));
948
+ }) ??
949
+ false));
950
+ case "unionType":
951
+ case "intersectionType":
952
+ return type.types.some((member) => containsAmbiguousSourceSurfaceType(member));
953
+ case "functionType":
954
+ return (type.parameters.some((parameter) => containsAmbiguousSourceSurfaceType(parameter.type)) || containsAmbiguousSourceSurfaceType(type.returnType));
955
+ case "objectType":
956
+ return type.members.some((member) => {
957
+ if (member.kind === "propertySignature") {
958
+ return containsAmbiguousSourceSurfaceType(member.type);
959
+ }
960
+ return (member.parameters.some((parameter) => containsAmbiguousSourceSurfaceType(parameter.type)) || containsAmbiguousSourceSurfaceType(member.returnType));
961
+ });
962
+ default:
963
+ return false;
964
+ }
965
+ };
966
+ const candidateCoversActualArg = (candidateType, actualType) => {
967
+ if (!candidateType || !actualType) {
968
+ return false;
969
+ }
970
+ if (candidateType.kind === "unknownType" ||
971
+ candidateType.kind === "anyType" ||
972
+ (candidateType.kind === "unionType" &&
973
+ candidateType.types.some((member) => member.kind === "unknownType" || member.kind === "anyType"))) {
974
+ return true;
975
+ }
976
+ if (ctx.typeSystem.typesEqual(candidateType, actualType)) {
977
+ return true;
978
+ }
979
+ return ctx.typeSystem.isAssignableTo(actualType, candidateType);
980
+ };
981
+ const isBroadSourceSurfaceType = (type) => {
982
+ if (!type) {
983
+ return false;
984
+ }
985
+ switch (type.kind) {
986
+ case "anyType":
987
+ case "unknownType":
988
+ case "typeParameterType":
989
+ return true;
990
+ case "objectType":
991
+ return true;
992
+ case "referenceType":
993
+ return (type.name === "object" ||
994
+ type.name === "JsValue" ||
995
+ containsAmbiguousSourceSurfaceType(type));
996
+ case "unionType":
997
+ return type.types.every((member) => isBroadSourceSurfaceType(member));
998
+ default:
999
+ return false;
1000
+ }
1001
+ };
1002
+ let compatibleCount = 0;
1003
+ let actualCoverageCount = 0;
1004
+ let exactCount = 0;
1005
+ let nonBroadCount = 0;
1006
+ let complexity = 0;
1007
+ const actualCoverageByIndex = [];
1008
+ const pairCount = Math.min(candidateParameterTypes.length, selectedParameterTypes.length);
1009
+ for (let index = 0; index < pairCount; index += 1) {
1010
+ const candidate = candidateParameterTypes[index];
1011
+ const selected = selectedParameterTypes[index];
1012
+ complexity += scoreSourceSurfaceComplexity(candidate);
1013
+ if (!candidate || !selected) {
1014
+ continue;
1015
+ }
1016
+ const actualArgType = actualArgTypes?.[index];
1017
+ if (candidateCoversActualArg(candidate, actualArgType)) {
1018
+ actualCoverageCount += 1;
1019
+ actualCoverageByIndex[index] = true;
1020
+ }
1021
+ else {
1022
+ actualCoverageByIndex[index] = false;
1023
+ }
1024
+ if (!isBroadSourceSurfaceType(candidate)) {
1025
+ nonBroadCount += 1;
1026
+ }
1027
+ if (ctx.typeSystem.typesEqual(selected, candidate)) {
1028
+ compatibleCount += 1;
1029
+ exactCount += 1;
1030
+ continue;
1031
+ }
1032
+ if (ctx.typeSystem.isAssignableTo(selected, candidate) ||
1033
+ ctx.typeSystem.isAssignableTo(candidate, selected) ||
1034
+ (isNumericSourceSurfaceType(selected) &&
1035
+ isNumericSourceSurfaceType(candidate))) {
1036
+ compatibleCount += 1;
1037
+ }
1038
+ }
1039
+ return {
1040
+ actualCoverageByIndex,
1041
+ actualCoverageCount,
1042
+ exactCount,
1043
+ nonBroadCount,
1044
+ compatibleCount,
1045
+ complexity: -complexity,
1046
+ };
1047
+ };
1048
+ const compareSourceSurfaceScores = (left, right) => {
1049
+ const coverageCount = Math.max(left.actualCoverageByIndex.length, right.actualCoverageByIndex.length);
1050
+ for (let index = 0; index < coverageCount; index += 1) {
1051
+ const delta = Number(left.actualCoverageByIndex[index] ?? false) -
1052
+ Number(right.actualCoverageByIndex[index] ?? false);
1053
+ if (delta !== 0) {
1054
+ return delta;
1055
+ }
1056
+ }
1057
+ const deltas = [
1058
+ left.actualCoverageCount - right.actualCoverageCount,
1059
+ left.exactCount - right.exactCount,
1060
+ left.nonBroadCount - right.nonBroadCount,
1061
+ left.compatibleCount - right.compatibleCount,
1062
+ left.complexity - right.complexity,
1063
+ ];
1064
+ for (const delta of deltas) {
1065
+ if (delta !== 0) {
1066
+ return delta;
1067
+ }
1068
+ }
1069
+ return 0;
1070
+ };
1071
+ const containsUnknownishContextualType = (type, seen = new WeakSet()) => {
1072
+ if (!type) {
1073
+ return false;
1074
+ }
1075
+ if (seen.has(type)) {
1076
+ return false;
1077
+ }
1078
+ seen.add(type);
1079
+ switch (type.kind) {
1080
+ case "unknownType":
1081
+ case "anyType":
1082
+ case "typeParameterType":
1083
+ return true;
1084
+ case "arrayType":
1085
+ return containsUnknownishContextualType(type.elementType, seen);
1086
+ case "tupleType":
1087
+ return type.elementTypes.some((member) => containsUnknownishContextualType(member, seen));
1088
+ case "dictionaryType":
1089
+ return (containsUnknownishContextualType(type.keyType, seen) ||
1090
+ containsUnknownishContextualType(type.valueType, seen));
1091
+ case "referenceType":
1092
+ return ((type.typeArguments?.some((member) => containsUnknownishContextualType(member, seen)) ??
1093
+ false) ||
1094
+ (type.structuralMembers?.some((member) => {
1095
+ if (member.kind === "propertySignature") {
1096
+ return containsUnknownishContextualType(member.type, seen);
1097
+ }
1098
+ return (member.parameters.some((parameter) => containsUnknownishContextualType(parameter.type, seen)) || containsUnknownishContextualType(member.returnType, seen));
1099
+ }) ??
1100
+ false));
1101
+ case "unionType":
1102
+ case "intersectionType":
1103
+ return type.types.some((member) => containsUnknownishContextualType(member, seen));
1104
+ case "functionType":
1105
+ return (type.parameters.some((parameter) => containsUnknownishContextualType(parameter.type, seen)) || containsUnknownishContextualType(type.returnType, seen));
1106
+ case "objectType":
1107
+ return type.members.some((member) => {
1108
+ if (member.kind === "propertySignature") {
1109
+ return containsUnknownishContextualType(member.type, seen);
1110
+ }
1111
+ return (member.parameters.some((parameter) => containsUnknownishContextualType(parameter.type, seen)) || containsUnknownishContextualType(member.returnType, seen));
1112
+ });
1113
+ default:
1114
+ return false;
1115
+ }
1116
+ };
1117
+ const mergeContextualTypes = (primary, fallback) => {
1118
+ if (!primary) {
1119
+ return fallback;
1120
+ }
1121
+ if (!fallback || !containsUnknownishContextualType(primary)) {
1122
+ return primary;
1123
+ }
1124
+ if (primary.kind === "functionType" && fallback.kind === "functionType") {
1125
+ return {
1126
+ ...primary,
1127
+ parameters: primary.parameters.map((parameter, index) => ({
1128
+ ...parameter,
1129
+ type: mergeContextualTypes(parameter.type, fallback.parameters[index]?.type),
1130
+ })),
1131
+ returnType: mergeContextualTypes(primary.returnType, fallback.returnType) ??
1132
+ primary.returnType,
1133
+ };
1134
+ }
1135
+ if (primary.kind === "arrayType" && fallback.kind === "arrayType") {
1136
+ return {
1137
+ ...primary,
1138
+ elementType: mergeContextualTypes(primary.elementType, fallback.elementType) ??
1139
+ primary.elementType,
1140
+ };
1141
+ }
1142
+ if (primary.kind === "tupleType" &&
1143
+ fallback.kind === "tupleType" &&
1144
+ primary.elementTypes.length === fallback.elementTypes.length) {
1145
+ return {
1146
+ ...primary,
1147
+ elementTypes: primary.elementTypes.map((member, index) => mergeContextualTypes(member, fallback.elementTypes[index]) ?? member),
1148
+ };
1149
+ }
1150
+ if (primary.kind === "referenceType" &&
1151
+ fallback.kind === "referenceType" &&
1152
+ (primary.typeArguments?.length ?? 0) ===
1153
+ (fallback.typeArguments?.length ?? 0)) {
1154
+ const primaryIdentity = referenceTypeIdentity(primary);
1155
+ const fallbackIdentity = referenceTypeIdentity(fallback);
1156
+ if (primaryIdentity === undefined ||
1157
+ fallbackIdentity === undefined ||
1158
+ primaryIdentity !== fallbackIdentity) {
1159
+ return primary;
1160
+ }
1161
+ return {
1162
+ ...primary,
1163
+ ...(primary.typeArguments
1164
+ ? {
1165
+ typeArguments: primary.typeArguments.map((member, index) => mergeContextualTypes(member, fallback.typeArguments?.[index]) ??
1166
+ member),
1167
+ }
1168
+ : {}),
1169
+ };
1170
+ }
1171
+ return fallback;
1172
+ };
1173
+ const mergeContextualParameterTypes = (primary, fallback) => {
1174
+ if (!primary) {
1175
+ return fallback;
1176
+ }
1177
+ if (!fallback) {
1178
+ return primary;
1179
+ }
1180
+ const count = Math.max(primary.length, fallback.length);
1181
+ return Array.from({ length: count }, (_, index) => mergeContextualTypes(primary[index], fallback[index]));
1182
+ };
1183
+ const getSourceFileExtensionReceiverType = (sourceFilePath, exportName, memberName, ctx) => {
1184
+ const sourceFile = getSourceFileForPath(sourceFilePath, ctx);
1185
+ if (!sourceFile) {
1186
+ return undefined;
1187
+ }
1188
+ const localBindings = new Map();
1189
+ const exportedToLocal = new Map();
1190
+ for (const statement of sourceFile.statements) {
1191
+ const isExported = ts.canHaveModifiers(statement) &&
1192
+ (ts
1193
+ .getModifiers(statement)
1194
+ ?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword) ??
1195
+ false);
1196
+ if (ts.isClassDeclaration(statement) && statement.name?.text) {
1197
+ localBindings.set(statement.name.text, statement);
1198
+ if (isExported) {
1199
+ exportedToLocal.set(statement.name.text, statement.name.text);
1200
+ }
1201
+ continue;
1202
+ }
1203
+ if (ts.isFunctionDeclaration(statement) && statement.name?.text) {
1204
+ localBindings.set(statement.name.text, statement);
1205
+ if (isExported) {
1206
+ exportedToLocal.set(statement.name.text, statement.name.text);
1207
+ }
1208
+ continue;
1209
+ }
1210
+ if (ts.isVariableStatement(statement)) {
1211
+ for (const declaration of statement.declarationList.declarations) {
1212
+ if (!ts.isIdentifier(declaration.name)) {
1213
+ continue;
1214
+ }
1215
+ localBindings.set(declaration.name.text, declaration);
1216
+ if (isExported) {
1217
+ exportedToLocal.set(declaration.name.text, declaration.name.text);
1218
+ }
1219
+ }
1220
+ continue;
1221
+ }
1222
+ if (ts.isExportDeclaration(statement) &&
1223
+ !statement.moduleSpecifier &&
1224
+ statement.exportClause &&
1225
+ ts.isNamedExports(statement.exportClause)) {
1226
+ for (const element of statement.exportClause.elements) {
1227
+ exportedToLocal.set(element.name.text, element.propertyName?.text ?? element.name.text);
1228
+ }
1229
+ }
1230
+ }
1231
+ const localName = exportedToLocal.get(exportName);
1232
+ if (!localName) {
1233
+ return undefined;
1234
+ }
1235
+ const declaration = localBindings.get(localName);
1236
+ if (!declaration) {
1237
+ return undefined;
1238
+ }
1239
+ if (memberName && ts.isClassDeclaration(declaration)) {
1240
+ const classMember = declaration.members.find((member) => {
1241
+ if (!ts.isMethodDeclaration(member) || !member.name) {
1242
+ return false;
1243
+ }
1244
+ const memberText = ts.isIdentifier(member.name) || ts.isStringLiteral(member.name)
1245
+ ? member.name.text
1246
+ : undefined;
1247
+ return memberText === memberName;
1248
+ });
1249
+ const receiverTypeNode = classMember?.parameters[0]?.type;
1250
+ if (!receiverTypeNode) {
1251
+ return undefined;
1252
+ }
1253
+ return ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(receiverTypeNode));
1254
+ }
1255
+ const receiverTypeNode = (() => {
1256
+ if (ts.isFunctionDeclaration(declaration)) {
1257
+ return declaration.parameters[0]?.type;
1258
+ }
1259
+ if (!ts.isVariableDeclaration(declaration)) {
1260
+ return undefined;
1261
+ }
1262
+ const initializer = declaration.initializer;
1263
+ if (initializer &&
1264
+ (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer))) {
1265
+ return initializer.parameters[0]?.type;
1266
+ }
1267
+ return undefined;
1268
+ })();
1269
+ if (!receiverTypeNode) {
1270
+ return undefined;
1271
+ }
1272
+ return ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(receiverTypeNode));
1273
+ };
1274
+ const buildFunctionParameterFromDeclaration = (parameter, ctx) => ({
1275
+ kind: "parameter",
1276
+ pattern: ts.isIdentifier(parameter.name)
1277
+ ? { kind: "identifierPattern", name: parameter.name.text }
1278
+ : { kind: "identifierPattern", name: `p${parameter.pos}` },
1279
+ type: parameter.type
1280
+ ? ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(parameter.type))
1281
+ : { kind: "unknownType" },
1282
+ initializer: undefined,
1283
+ isOptional: !!parameter.questionToken || !!parameter.initializer,
1284
+ isRest: !!parameter.dotDotDotToken,
1285
+ passing: "value",
1286
+ });
1287
+ const buildSourceReceiverTypeSubstitution = (parameters, returnType, receiverType, ownerTypeParameterNames, ownerClassDeclaration, ctx) => {
1288
+ if (!receiverType || ownerTypeParameterNames.length === 0) {
1289
+ return undefined;
1290
+ }
1291
+ const substitution = new Map();
1292
+ if (receiverType.kind === "referenceType" &&
1293
+ receiverType.typeArguments &&
1294
+ receiverType.typeArguments.length === ownerTypeParameterNames.length) {
1295
+ for (let index = 0; index < ownerTypeParameterNames.length; index += 1) {
1296
+ const name = ownerTypeParameterNames[index];
1297
+ const argument = receiverType.typeArguments[index];
1298
+ if (name && argument) {
1299
+ substitution.set(name, argument);
1300
+ }
1301
+ }
1302
+ }
1303
+ if (substitution.size === 0) {
1304
+ const localReceiverSubstitution = buildLocalReceiverOwnerTypeSubstitution(receiverType, ownerClassDeclaration, ownerTypeParameterNames, ctx);
1305
+ if (localReceiverSubstitution) {
1306
+ for (const [typeParameterName, typeArgument,] of localReceiverSubstitution) {
1307
+ substitution.set(typeParameterName, typeArgument);
1308
+ }
1309
+ }
1310
+ }
1311
+ if (receiverType.kind === "arrayType" && substitution.size === 0) {
1312
+ const referencedNames = new Set();
1313
+ const collect = (type) => {
1314
+ if (!type)
1315
+ return;
1316
+ switch (type.kind) {
1317
+ case "typeParameterType":
1318
+ referencedNames.add(type.name);
1319
+ return;
1320
+ case "arrayType":
1321
+ collect(type.elementType);
1322
+ return;
1323
+ case "tupleType":
1324
+ type.elementTypes.forEach(collect);
1325
+ return;
1326
+ case "dictionaryType":
1327
+ collect(type.keyType);
1328
+ collect(type.valueType);
1329
+ return;
1330
+ case "referenceType":
1331
+ type.typeArguments?.forEach(collect);
1332
+ type.structuralMembers?.forEach((member) => {
1333
+ if (member.kind === "propertySignature") {
1334
+ collect(member.type);
1335
+ return;
1336
+ }
1337
+ member.parameters.forEach((parameter) => collect(parameter.type));
1338
+ collect(member.returnType);
1339
+ });
1340
+ return;
1341
+ case "unionType":
1342
+ case "intersectionType":
1343
+ type.types.forEach(collect);
1344
+ return;
1345
+ case "functionType":
1346
+ type.parameters.forEach((parameter) => collect(parameter.type));
1347
+ collect(type.returnType);
1348
+ return;
1349
+ default:
1350
+ return;
1351
+ }
1352
+ };
1353
+ parameters.forEach((parameter) => collect(parameter.type));
1354
+ collect(returnType);
1355
+ const receiverNames = ownerTypeParameterNames.filter((name) => referencedNames.has(name));
1356
+ if (receiverNames.length === 1) {
1357
+ const onlyName = receiverNames[0];
1358
+ if (onlyName) {
1359
+ substitution.set(onlyName, receiverType.elementType);
1360
+ }
1361
+ }
1362
+ }
1363
+ return substitution.size > 0 ? substitution : undefined;
1364
+ };
1365
+ const applySourceReceiverTypeSubstitution = (parameters, returnType, receiverType, ownerTypeParameterNames, ownerClassDeclaration, ctx) => {
1366
+ const substitution = buildSourceReceiverTypeSubstitution(parameters, returnType, receiverType, ownerTypeParameterNames, ownerClassDeclaration, ctx);
1367
+ if (!substitution) {
1368
+ return {
1369
+ parameters: parameters.map((parameter) => ({
1370
+ ...parameter,
1371
+ type: receiverType && parameter.type
1372
+ ? (substitutePolymorphicThis(parameter.type, receiverType) ??
1373
+ parameter.type)
1374
+ : parameter.type,
1375
+ })),
1376
+ returnType: receiverType && returnType
1377
+ ? (substitutePolymorphicThis(returnType, receiverType) ?? returnType)
1378
+ : returnType,
1379
+ };
1380
+ }
1381
+ const substitutedParameters = parameters.map((parameter) => ({
1382
+ ...parameter,
1383
+ type: parameter.type
1384
+ ? ctx.typeSystem.substitute(parameter.type, substitution)
1385
+ : parameter.type,
1386
+ }));
1387
+ const substitutedReturnType = returnType
1388
+ ? (ctx.typeSystem.substitute(returnType, substitution) ?? returnType)
1389
+ : returnType;
1390
+ return {
1391
+ parameters: substitutedParameters.map((parameter) => ({
1392
+ ...parameter,
1393
+ type: receiverType && parameter.type
1394
+ ? (substitutePolymorphicThis(parameter.type, receiverType) ??
1395
+ parameter.type)
1396
+ : parameter.type,
1397
+ })),
1398
+ returnType: receiverType && substitutedReturnType
1399
+ ? (substitutePolymorphicThis(substitutedReturnType, receiverType) ??
1400
+ substitutedReturnType)
1401
+ : substitutedReturnType,
1402
+ };
1403
+ };
1404
+ export const getSourceBackedCallParameterTypes = (node, callee, receiverType, argumentCount, selectedParameterTypes, actualArgTypes, expectedType, explicitTypeArgs, ctx) => {
1405
+ const identifierSourceTarget = callee.kind === "identifier"
1406
+ ? resolveSourceBackedIdentifierGlobalTarget(node, callee, ctx)
1407
+ : undefined;
1408
+ const memberAccessSourceTarget = callee.kind === "memberAccess"
1409
+ ? resolveSourceBackedMemberAccessTarget(node, callee, receiverType, ctx)
1410
+ : undefined;
1411
+ if ((callee.kind !== "memberAccess" ||
1412
+ (!callee.memberBinding && !memberAccessSourceTarget)) &&
1413
+ !identifierSourceTarget) {
1414
+ return undefined;
1415
+ }
1416
+ if (identifierSourceTarget) {
1417
+ const runtimeSurface = buildSourceBackedParameterSurface(identifierSourceTarget.declaration, identifierSourceTarget.ownerTypeParameterNames, receiverType, argumentCount, ctx);
1418
+ const surfaceParameterSurface = (() => {
1419
+ if (!selectedParameterTypes) {
1420
+ return runtimeSurface;
1421
+ }
1422
+ const overloadCandidates = getPublicSourceBackedOverloadCandidates(identifierSourceTarget.overloadCandidates);
1423
+ let bestSurface = runtimeSurface;
1424
+ let bestScore = scoreSourceBackedSurfaceCandidate(runtimeSurface.parameterTypes, selectedParameterTypes, actualArgTypes, ctx);
1425
+ for (const candidate of overloadCandidates) {
1426
+ const candidateSurface = buildSourceBackedParameterSurface(candidate, identifierSourceTarget.ownerTypeParameterNames, receiverType, argumentCount, ctx);
1427
+ const candidateScore = scoreSourceBackedSurfaceCandidate(candidateSurface.parameterTypes, selectedParameterTypes, actualArgTypes, ctx);
1428
+ if (compareSourceSurfaceScores(candidateScore, bestScore) > 0) {
1429
+ bestSurface = candidateSurface;
1430
+ bestScore = candidateScore;
1431
+ }
1432
+ }
1433
+ return bestSurface;
1434
+ })();
1435
+ const substitutions = deriveInvocationTypeSubstitutions(surfaceParameterSurface.parameterTypes, actualArgTypes, surfaceParameterSurface.returnType, expectedType, surfaceParameterSurface.methodTypeParameterNames, explicitTypeArgs, ctx);
1436
+ const specializeType = (type) => substitutions ? substituteTypeParameters(type, substitutions) : type;
1437
+ const surfaceParameterTypes = surfaceParameterSurface.parameterTypes.map((type) => specializeType(type));
1438
+ const selectionParameterTypes = surfaceParameterTypes.map((type) => expandAuthoritativeSourceBackedSurfaceType(type, ctx, new Set(), {
1439
+ preserveCarrierIdentity: false,
1440
+ }) ?? type);
1441
+ return {
1442
+ parameterTypes: selectionParameterTypes.map((type, index) => selectDeterministicSourceBackedParameterType(type, actualArgTypes?.[index], ctx)),
1443
+ surfaceParameterTypes,
1444
+ returnType: specializeType(surfaceParameterSurface.returnType) ??
1445
+ surfaceParameterSurface.returnType,
1446
+ restParameter: surfaceParameterSurface.restParameter,
1447
+ };
1448
+ }
1449
+ if (memberAccessSourceTarget) {
1450
+ const buildCandidateSurface = (candidate) => buildSourceBackedParameterSurface(candidate, ts.isClassLike(candidate.parent)
1451
+ ? (candidate.parent.typeParameters?.map((parameter) => parameter.name.text) ?? [])
1452
+ : [], memberAccessSourceTarget.receiverType, argumentCount, ctx);
1453
+ let bestSurface = buildCandidateSurface(memberAccessSourceTarget.declaration);
1454
+ let bestScore = scoreSourceBackedSurfaceCandidate(bestSurface.parameterTypes, selectedParameterTypes ?? [], actualArgTypes, ctx);
1455
+ const overloadCandidates = getPublicSourceBackedOverloadCandidates(memberAccessSourceTarget.overloadCandidates);
1456
+ for (const candidate of overloadCandidates) {
1457
+ const candidateSurface = buildCandidateSurface(candidate);
1458
+ const candidateScore = scoreSourceBackedSurfaceCandidate(candidateSurface.parameterTypes, selectedParameterTypes ?? [], actualArgTypes, ctx);
1459
+ if (compareSourceSurfaceScores(candidateScore, bestScore) > 0) {
1460
+ bestSurface = candidateSurface;
1461
+ bestScore = candidateScore;
1462
+ }
1463
+ }
1464
+ const substitutions = deriveInvocationTypeSubstitutions(bestSurface.parameterTypes, actualArgTypes, bestSurface.returnType, expectedType, bestSurface.methodTypeParameterNames, explicitTypeArgs, ctx);
1465
+ const specializeType = (type) => substitutions ? substituteTypeParameters(type, substitutions) : type;
1466
+ const surfaceParameterTypes = bestSurface.parameterTypes.map((type) => specializeType(type));
1467
+ const selectionParameterTypes = surfaceParameterTypes.map((type) => expandAuthoritativeSourceBackedSurfaceType(type, ctx, new Set(), {
1468
+ preserveCarrierIdentity: false,
1469
+ }) ?? type);
1470
+ return {
1471
+ parameterTypes: selectionParameterTypes.map((type, index) => selectDeterministicSourceBackedParameterType(type, actualArgTypes?.[index], ctx)),
1472
+ surfaceParameterTypes,
1473
+ returnType: specializeType(bestSurface.returnType) ?? bestSurface.returnType,
1474
+ restParameter: bestSurface.restParameter,
1475
+ };
1476
+ }
1477
+ if (callee.kind !== "memberAccess" || !callee.memberBinding) {
1478
+ return undefined;
1479
+ }
1480
+ const overloads = ctx.bindings.getClrMemberOverloads(callee.memberBinding.assembly, callee.memberBinding.type, callee.memberBinding.member);
1481
+ const sourceOrigin = overloads
1482
+ ?.map((candidate) => candidate.sourceOrigin)
1483
+ .find((candidate) => candidate !== undefined);
1484
+ if (!sourceOrigin) {
1485
+ return undefined;
1486
+ }
1487
+ const sourceFile = getSourceFileForPath(sourceOrigin.filePath, ctx);
1488
+ if (!sourceFile) {
1489
+ return undefined;
1490
+ }
1491
+ const exportedSymbol = (() => {
1492
+ for (const symbol of collectExportedTopLevelSymbols(sourceFile)) {
1493
+ if (symbol.exportName === sourceOrigin.exportName) {
1494
+ return symbol;
1495
+ }
1496
+ }
1497
+ return undefined;
1498
+ })();
1499
+ if (!exportedSymbol) {
1500
+ return undefined;
1501
+ }
1502
+ const resolvedSignatureDeclaration = ctx.checker
1503
+ .getResolvedSignature(node)
1504
+ ?.getDeclaration();
1505
+ const topLevelClasses = collectTopLevelClassDeclarations(sourceFile);
1506
+ const exportedCallableTarget = resolveSourceBackedExportedFunctionTarget(sourceFile, exportedSymbol, resolvedSignatureDeclaration);
1507
+ const ownerClass = resolveInstantiatedExportClassDeclaration(exportedSymbol, topLevelClasses, ctx);
1508
+ const resolveSignatureDeclaration = () => {
1509
+ if (!sourceOrigin.memberName) {
1510
+ return exportedCallableTarget;
1511
+ }
1512
+ if (exportedCallableTarget && !ownerClass) {
1513
+ return exportedCallableTarget;
1514
+ }
1515
+ if (!resolvedSignatureDeclaration ||
1516
+ !ts.isMethodDeclaration(resolvedSignatureDeclaration)) {
1517
+ return undefined;
1518
+ }
1519
+ if (resolvedSignatureDeclaration.name === undefined ||
1520
+ !(ts.isIdentifier(resolvedSignatureDeclaration.name) ||
1521
+ ts.isStringLiteral(resolvedSignatureDeclaration.name)) ||
1522
+ resolvedSignatureDeclaration.name.text !== sourceOrigin.memberName) {
1523
+ return undefined;
1524
+ }
1525
+ if (!ownerClass) {
1526
+ return undefined;
1527
+ }
1528
+ const resolvedOwner = resolvedSignatureDeclaration.parent;
1529
+ if (!ts.isClassLike(resolvedOwner)) {
1530
+ return undefined;
1531
+ }
1532
+ if (!classContainsMethodInHierarchy(ownerClass, resolvedOwner, ctx)) {
1533
+ return undefined;
1534
+ }
1535
+ return {
1536
+ declaration: resolvedSignatureDeclaration,
1537
+ ownerTypeParameterNames: resolvedOwner.typeParameters?.map((parameter) => parameter.name.text) ??
1538
+ [],
1539
+ };
1540
+ };
1541
+ const signature = resolveSignatureDeclaration();
1542
+ if (!signature) {
1543
+ return undefined;
1544
+ }
1545
+ const runtimeSurface = buildSourceBackedParameterSurface(signature.declaration, signature.ownerTypeParameterNames, receiverType, argumentCount, ctx);
1546
+ const surfaceParameterSurface = (() => {
1547
+ if (!selectedParameterTypes) {
1548
+ return runtimeSurface;
1549
+ }
1550
+ if (!ts.isMethodDeclaration(signature.declaration)) {
1551
+ if (exportedSymbol.kind !== "function") {
1552
+ return runtimeSurface;
1553
+ }
1554
+ const candidates = sourceFile.statements.flatMap((statement) => ts.isFunctionDeclaration(statement) &&
1555
+ statement.name?.text === exportedSymbol.localName
1556
+ ? [statement]
1557
+ : []);
1558
+ if (candidates.length === 0) {
1559
+ return runtimeSurface;
1560
+ }
1561
+ const publicCandidates = getPublicSourceBackedOverloadCandidates(candidates);
1562
+ let bestSurface = runtimeSurface;
1563
+ let bestScore = scoreSourceBackedSurfaceCandidate(runtimeSurface.parameterTypes, selectedParameterTypes, actualArgTypes, ctx);
1564
+ for (const candidate of publicCandidates) {
1565
+ const candidateSurface = buildSourceBackedParameterSurface(candidate, [], receiverType, argumentCount, ctx);
1566
+ const candidateScore = scoreSourceBackedSurfaceCandidate(candidateSurface.parameterTypes, selectedParameterTypes, actualArgTypes, ctx);
1567
+ if (compareSourceSurfaceScores(candidateScore, bestScore) > 0) {
1568
+ bestSurface = candidateSurface;
1569
+ bestScore = candidateScore;
1570
+ }
1571
+ }
1572
+ return bestSurface;
1573
+ }
1574
+ const resolvedOwner = signature.declaration.parent;
1575
+ if (!ts.isClassLike(resolvedOwner)) {
1576
+ return runtimeSurface;
1577
+ }
1578
+ const methodCandidates = resolvedOwner.members.flatMap((member) => ts.isMethodDeclaration(member) &&
1579
+ getDeclarationTextName(member.name) === sourceOrigin.memberName
1580
+ ? [member]
1581
+ : []);
1582
+ if (methodCandidates.length === 0) {
1583
+ return runtimeSurface;
1584
+ }
1585
+ const publicMethodCandidates = getPublicSourceBackedOverloadCandidates(methodCandidates);
1586
+ let bestSurface = runtimeSurface;
1587
+ let bestScore = scoreSourceBackedSurfaceCandidate(runtimeSurface.parameterTypes, selectedParameterTypes, actualArgTypes, ctx);
1588
+ for (const candidate of publicMethodCandidates) {
1589
+ const candidateSurface = buildSourceBackedParameterSurface(candidate, signature.ownerTypeParameterNames, receiverType, argumentCount, ctx);
1590
+ const candidateScore = scoreSourceBackedSurfaceCandidate(candidateSurface.parameterTypes, selectedParameterTypes, actualArgTypes, ctx);
1591
+ if (compareSourceSurfaceScores(candidateScore, bestScore) > 0) {
1592
+ bestSurface = candidateSurface;
1593
+ bestScore = candidateScore;
1594
+ }
1595
+ }
1596
+ return bestSurface;
1597
+ })();
1598
+ const substitutions = deriveInvocationTypeSubstitutions(surfaceParameterSurface.parameterTypes, actualArgTypes, surfaceParameterSurface.returnType, expectedType, surfaceParameterSurface.methodTypeParameterNames, explicitTypeArgs, ctx);
1599
+ const specializeType = (type) => substitutions ? substituteTypeParameters(type, substitutions) : type;
1600
+ const surfaceParameterTypes = surfaceParameterSurface.parameterTypes.map((type) => specializeType(type));
1601
+ const selectionParameterTypes = surfaceParameterTypes.map((type) => expandAuthoritativeSourceBackedSurfaceType(type, ctx, new Set(), {
1602
+ preserveCarrierIdentity: false,
1603
+ }) ?? type);
1604
+ return {
1605
+ parameterTypes: selectionParameterTypes.map((type, index) => selectDeterministicSourceBackedParameterType(type, actualArgTypes?.[index], ctx)),
1606
+ surfaceParameterTypes,
1607
+ returnType: specializeType(surfaceParameterSurface.returnType) ??
1608
+ surfaceParameterSurface.returnType,
1609
+ restParameter: surfaceParameterSurface.restParameter,
1610
+ };
1611
+ };
1612
+ const getExplicitExtensionReceiverExpectedType = (callee, finalResolved, ctx) => {
1613
+ if (callee.kind !== "memberAccess") {
1614
+ return undefined;
1615
+ }
1616
+ const binding = callee.memberBinding;
1617
+ if (!binding?.isExtensionMethod) {
1618
+ return undefined;
1619
+ }
1620
+ if (binding.receiverExpectedType) {
1621
+ return binding.receiverExpectedType;
1622
+ }
1623
+ if (finalResolved?.thisParameterType) {
1624
+ return finalResolved.thisParameterType;
1625
+ }
1626
+ const overloads = ctx.bindings.getClrMemberOverloads(binding.assembly, binding.type, binding.member);
1627
+ if (!overloads || overloads.length === 0) {
1628
+ return undefined;
1629
+ }
1630
+ const explicitReceiverType = overloads
1631
+ .map((candidate) => candidate.receiverExpectedType)
1632
+ .find((candidate) => candidate !== undefined);
1633
+ if (explicitReceiverType) {
1634
+ return explicitReceiverType;
1635
+ }
1636
+ const sourceOrigin = overloads
1637
+ .map((candidate) => candidate.sourceOrigin)
1638
+ .find((candidate) => candidate !== undefined);
1639
+ if (!sourceOrigin) {
1640
+ return undefined;
1641
+ }
1642
+ return getSourceFileExtensionReceiverType(sourceOrigin.filePath, sourceOrigin.exportName, sourceOrigin.memberName, ctx);
1643
+ };
1644
+ /**
1645
+ * Convert call expression
1646
+ */
1647
+ export const convertCallExpression = (node, ctx, expectedType) => {
1648
+ // Try intrinsic calls first
1649
+ const intrinsicResult = tryConvertIntrinsicCall(node, ctx, expectedType);
1650
+ if (intrinsicResult) {
1651
+ return intrinsicResult;
1652
+ }
1653
+ // Extract type arguments from the call signature
1654
+ const typeArguments = extractTypeArguments(node, ctx);
1655
+ const requiresSpecialization = checkIfRequiresSpecialization(node, ctx);
1656
+ // Convert callee first so we can access memberBinding and receiver type
1657
+ const callee = convertExpression(node.expression, ctx, undefined);
1658
+ // Extract receiver type for member method calls (e.g., dict.get() -> dict's type)
1659
+ const receiverIrType = callee.kind === "memberAccess"
1660
+ ? callee.object.inferredType
1661
+ : getEnclosingClassSuperType(node, ctx);
1662
+ const exactDeclaringClrType = callee.kind === "memberAccess" ? callee.memberBinding?.type : undefined;
1663
+ // Resolve call (two-pass):
1664
+ // 1) Resolve parameter types (for expectedType threading)
1665
+ // 2) Convert arguments, then re-resolve with argTypes to infer generics deterministically
1666
+ const typeSystem = ctx.typeSystem;
1667
+ const sigId = ctx.binding.resolveCallSignature(node);
1668
+ const candidateSigIds = ctx.binding.resolveCallSignatureCandidates(node);
1669
+ const exactMemberCallableType = (() => {
1670
+ if (!ts.isPropertyAccessExpression(node.expression))
1671
+ return undefined;
1672
+ if (!receiverIrType)
1673
+ return undefined;
1674
+ const directStructuralMemberType = getDirectStructuralMemberType(receiverIrType, node.expression.name.text);
1675
+ if (directStructuralMemberType) {
1676
+ return directStructuralMemberType;
1677
+ }
1678
+ const memberId = ctx.binding.resolvePropertyAccess(node.expression);
1679
+ if (!memberId)
1680
+ return undefined;
1681
+ return typeSystem.typeOfMemberId(memberId, receiverIrType);
1682
+ })();
1683
+ const useDirectCallableCandidateResolution = !sigId;
1684
+ const argumentCount = node.arguments.length;
1685
+ const callSiteArgModifiers = new Array(argumentCount).fill(undefined);
1686
+ const explicitTypeArgs = node.typeArguments
1687
+ ? node.typeArguments.map((ta) => typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(ta)))
1688
+ : undefined;
1689
+ const usesAuthoritativeSurfaceBindings = ctx.surface !== "clr";
1690
+ const boundGlobalCallParameterTypes = getBoundGlobalCallParameterTypes(callee, argumentCount, ctx);
1691
+ const authoritativeBoundGlobalSurfaceParameterTypes = usesAuthoritativeSurfaceBindings
1692
+ ? boundGlobalCallParameterTypes?.parameterTypes
1693
+ : undefined;
1694
+ const authoritativeBoundGlobalReturnType = usesAuthoritativeSurfaceBindings
1695
+ ? boundGlobalCallParameterTypes?.returnType
1696
+ : undefined;
1697
+ const ambientBoundGlobalSurfaceParameterTypes = !usesAuthoritativeSurfaceBindings &&
1698
+ boundGlobalCallParameterTypes &&
1699
+ callee.inferredType?.kind === "functionType"
1700
+ ? expandParameterTypesForArguments(callee.inferredType.parameters, callee.inferredType.parameters.map((parameter) => parameter.type), argumentCount)
1701
+ : undefined;
1702
+ const callableCandidateSourceType = callee.inferredType === undefined ||
1703
+ callee.inferredType.kind === "unknownType"
1704
+ ? exactMemberCallableType
1705
+ : callee.inferredType;
1706
+ // If we can't resolve a signature handle (common for calls through function-typed
1707
+ // variables), fall back to the callee's inferred function type.
1708
+ const initialCallableResolution = resolveCallableCandidate(callableCandidateSourceType, argumentCount, ctx, undefined, explicitTypeArgs, expectedType);
1709
+ const calleeFunctionType = initialCallableResolution?.callableType;
1710
+ const initialResolved = sigId && !useDirectCallableCandidateResolution
1711
+ ? typeSystem.resolveCall({
1712
+ sigId,
1713
+ argumentCount,
1714
+ receiverType: receiverIrType,
1715
+ declaringClrType: exactDeclaringClrType,
1716
+ explicitTypeArgs,
1717
+ expectedReturnType: expectedType,
1718
+ })
1719
+ : undefined;
1720
+ const sourceBackedCallParameterTypes = getSourceBackedCallParameterTypes(node, callee, receiverIrType, argumentCount, initialResolved?.parameterTypes ??
1721
+ initialCallableResolution?.resolved?.parameterTypes, undefined, expectedType, explicitTypeArgs, ctx);
1722
+ const authoritativeDirectCalleeParameterTypes = getAuthoritativeDirectCalleeParameterTypes(callee, argumentCount, ctx);
1723
+ const expectedReturnCandidates = expectedType
1724
+ ? typeSystem.collectExpectedReturnCandidates(expectedType)
1725
+ : undefined;
1726
+ const initialParameterTypes = (() => {
1727
+ if (boundGlobalCallParameterTypes?.parameterTypes) {
1728
+ return boundGlobalCallParameterTypes.parameterTypes;
1729
+ }
1730
+ const resolvedReturnSubstitutions = deriveSubstitutionsFromExpectedReturn(initialResolved?.returnType, expectedReturnCandidates);
1731
+ if (resolvedReturnSubstitutions && initialResolved?.parameterTypes) {
1732
+ return initialResolved.parameterTypes.map((t) => substituteTypeParameters(t, resolvedReturnSubstitutions));
1733
+ }
1734
+ const sourceBackedReturnSubstitutions = deriveSubstitutionsFromExpectedReturn(sourceBackedCallParameterTypes?.returnType, expectedReturnCandidates);
1735
+ if (sourceBackedReturnSubstitutions &&
1736
+ sourceBackedCallParameterTypes?.parameterTypes) {
1737
+ return sourceBackedCallParameterTypes.parameterTypes.map((t) => substituteTypeParameters(t, sourceBackedReturnSubstitutions));
1738
+ }
1739
+ return (authoritativeDirectCalleeParameterTypes ??
1740
+ mergeContextualParameterTypes(initialResolved?.parameterTypes, initialCallableResolution?.resolved?.parameterTypes) ??
1741
+ initialResolved?.parameterTypes ??
1742
+ initialCallableResolution?.resolved?.parameterTypes ??
1743
+ sourceBackedCallParameterTypes?.parameterTypes);
1744
+ })();
1745
+ const initialSurfaceParameterTypes = (() => {
1746
+ return (authoritativeBoundGlobalSurfaceParameterTypes ??
1747
+ sourceBackedCallParameterTypes?.surfaceParameterTypes ??
1748
+ ambientBoundGlobalSurfaceParameterTypes ??
1749
+ authoritativeDirectCalleeParameterTypes ??
1750
+ mergeContextualParameterTypes(initialResolved?.surfaceParameterTypes, initialCallableResolution?.resolved?.surfaceParameterTypes ??
1751
+ initialCallableResolution?.resolved?.parameterTypes) ??
1752
+ initialResolved?.surfaceParameterTypes ??
1753
+ initialCallableResolution?.resolved?.surfaceParameterTypes ??
1754
+ initialCallableResolution?.resolved?.parameterTypes);
1755
+ })();
1756
+ const initialFunctionParameterTypes = initialCallableResolution?.resolved?.parameterTypes;
1757
+ const initialParameterTypesForContext = initialSurfaceParameterTypes ??
1758
+ initialParameterTypes ??
1759
+ sourceBackedCallParameterTypes?.parameterTypes ??
1760
+ initialFunctionParameterTypes;
1761
+ const isLambdaArg = (expr) => {
1762
+ if (ts.isArrowFunction(expr) || ts.isFunctionExpression(expr))
1763
+ return true;
1764
+ if (ts.isParenthesizedExpression(expr))
1765
+ return isLambdaArg(expr.expression);
1766
+ return false;
1767
+ };
1768
+ const isExplicitlyTypedLambdaArg = (expr) => {
1769
+ if (ts.isParenthesizedExpression(expr)) {
1770
+ return isExplicitlyTypedLambdaArg(expr.expression);
1771
+ }
1772
+ if (!ts.isArrowFunction(expr) && !ts.isFunctionExpression(expr)) {
1773
+ return false;
1774
+ }
1775
+ if (expr.type)
1776
+ return true;
1777
+ if (expr.typeParameters && expr.typeParameters.length > 0)
1778
+ return true;
1779
+ return expr.parameters.some((p) => p.type !== undefined);
1780
+ };
1781
+ const shouldDeferLambdaForInference = (expr) => isLambdaArg(expr) && !isExplicitlyTypedLambdaArg(expr);
1782
+ const isGenericFunctionValueArg = (expr) => {
1783
+ const symbol = resolveReferencedIdentifierSymbol(ctx.checker, expr);
1784
+ return !!symbol && ctx.genericFunctionValueSymbols.has(symbol);
1785
+ };
1786
+ const shouldDeferGenericFunctionValueForInference = (expr, parameterType) => {
1787
+ if (!parameterType || !isGenericFunctionValueArg(expr)) {
1788
+ return false;
1789
+ }
1790
+ const expectedCallableType = parameterType.kind === "functionType"
1791
+ ? parameterType
1792
+ : ctx.typeSystem.delegateToFunctionType(parameterType);
1793
+ if (!expectedCallableType) {
1794
+ return false;
1795
+ }
1796
+ return ctx.typeSystem.containsTypeParameter(expectedCallableType);
1797
+ };
1798
+ const shouldDelayContextualAggregateInference = (expr, parameterType) => {
1799
+ if (!parameterType ||
1800
+ !ctx.typeSystem.containsTypeParameter(parameterType)) {
1801
+ return false;
1802
+ }
1803
+ const current = stripParentheses(expr);
1804
+ if (ts.isArrayLiteralExpression(current)) {
1805
+ return current.elements.length > 0;
1806
+ }
1807
+ return ts.isObjectLiteralExpression(current);
1808
+ };
1809
+ // Pass 1: convert non-lambda arguments and infer type args from them.
1810
+ const argsWorking = new Array(node.arguments.length);
1811
+ const argTypesForInference = Array(node.arguments.length).fill(undefined);
1812
+ const deferredAggregateContextIndices = new Set();
1813
+ for (let index = 0; index < node.arguments.length; index++) {
1814
+ const arg = node.arguments[index];
1815
+ if (!arg)
1816
+ continue;
1817
+ const expectedType = initialParameterTypesForContext?.[index];
1818
+ if (ts.isSpreadElement(arg)) {
1819
+ const spreadExpr = convertExpression(arg.expression, ctx, undefined);
1820
+ argsWorking[index] = {
1821
+ kind: "spread",
1822
+ expression: spreadExpr,
1823
+ inferredType: spreadExpr.inferredType,
1824
+ sourceSpan: getSourceSpan(arg),
1825
+ };
1826
+ continue;
1827
+ }
1828
+ const unwrapped = unwrapCallSiteArgumentModifier(arg);
1829
+ if (unwrapped.modifier) {
1830
+ callSiteArgModifiers[index] = unwrapped.modifier;
1831
+ }
1832
+ if (shouldDeferLambdaForInference(unwrapped.expression) ||
1833
+ shouldDeferGenericFunctionValueForInference(unwrapped.expression, expectedType)) {
1834
+ if (shouldDeferLambdaForInference(unwrapped.expression)) {
1835
+ argTypesForInference[index] = buildDeferredLambdaInferenceType(unwrapped.expression);
1836
+ }
1837
+ // Defer *untyped* lambda conversion until after we infer generic type args
1838
+ // from other arguments. Do the same for generic function values when the
1839
+ // contextual callable type still contains unresolved type parameters.
1840
+ // Explicitly typed lambdas are safe to convert early and often provide the
1841
+ // only deterministic inference signal.
1842
+ continue;
1843
+ }
1844
+ const deferAggregateContext = shouldDelayContextualAggregateInference(unwrapped.expression, expectedType);
1845
+ const shouldRecontextualizeAggregateLater = deferAggregateContext ||
1846
+ (expectedType === undefined &&
1847
+ (ts.isObjectLiteralExpression(stripParentheses(unwrapped.expression)) ||
1848
+ ts.isArrayLiteralExpression(stripParentheses(unwrapped.expression))));
1849
+ const converted = convertExpression(unwrapped.expression, ctx, deferAggregateContext ? undefined : expectedType);
1850
+ argsWorking[index] = converted;
1851
+ argTypesForInference[index] = converted.inferredType;
1852
+ if (shouldRecontextualizeAggregateLater) {
1853
+ deferredAggregateContextIndices.add(index);
1854
+ }
1855
+ }
1856
+ const lambdaContextSelection = sigId && !useDirectCallableCandidateResolution
1857
+ ? typeSystem.selectBestCallCandidate(sigId, candidateSigIds, {
1858
+ argumentCount,
1859
+ receiverType: receiverIrType,
1860
+ declaringClrType: exactDeclaringClrType,
1861
+ explicitTypeArgs,
1862
+ argTypes: argTypesForInference,
1863
+ expectedReturnType: expectedType,
1864
+ })
1865
+ : undefined;
1866
+ const lambdaContextResolved = lambdaContextSelection?.resolved ?? initialResolved;
1867
+ const lambdaContextCallableResolution = resolveCallableCandidate(callableCandidateSourceType, argumentCount, ctx, argTypesForInference, explicitTypeArgs, expectedType);
1868
+ const lambdaContextFunctionType = lambdaContextCallableResolution?.callableType ?? calleeFunctionType;
1869
+ const lambdaContextFunctionParameterTypes = lambdaContextCallableResolution?.resolved?.parameterTypes;
1870
+ const lambdaContextSurfaceParameterTypes = authoritativeBoundGlobalSurfaceParameterTypes ??
1871
+ sourceBackedCallParameterTypes?.surfaceParameterTypes ??
1872
+ mergeContextualParameterTypes(lambdaContextResolved?.surfaceParameterTypes, lambdaContextCallableResolution?.resolved?.surfaceParameterTypes ??
1873
+ lambdaContextCallableResolution?.resolved?.parameterTypes) ??
1874
+ lambdaContextResolved?.surfaceParameterTypes ??
1875
+ lambdaContextCallableResolution?.resolved?.surfaceParameterTypes ??
1876
+ lambdaContextCallableResolution?.resolved?.parameterTypes;
1877
+ const lambdaContextResolvedParameterTypes = mergeContextualParameterTypes(lambdaContextResolved?.parameterTypes, lambdaContextCallableResolution?.resolved?.parameterTypes) ??
1878
+ lambdaContextResolved?.parameterTypes ??
1879
+ lambdaContextCallableResolution?.resolved?.parameterTypes ??
1880
+ lambdaContextFunctionParameterTypes;
1881
+ const deferredContextParameterTypes = mergeContextualParameterTypes(lambdaContextResolvedParameterTypes, lambdaContextSurfaceParameterTypes) ?? lambdaContextSurfaceParameterTypes;
1882
+ const parameterTypesForDeferredContext = mergeContextualParameterTypes(deferredContextParameterTypes, initialParameterTypesForContext) ?? initialParameterTypesForContext;
1883
+ // Pass 2: convert deferred arguments with inferred parameter types in scope.
1884
+ //
1885
+ // IMPORTANT (airplane-grade):
1886
+ // Lambdas may have been converted in Pass 1 (e.g., because they have explicit
1887
+ // parameter annotations) before we had a fully resolved call signature.
1888
+ //
1889
+ // In those cases, block-bodied arrows can lose contextual return types and be
1890
+ // treated as `void`, which then mis-emits `return expr;` as:
1891
+ // expr;
1892
+ // return;
1893
+ //
1894
+ // Re-convert *all* deferred arguments here using the resolved parameter type so
1895
+ // contextual parameter + return typing is applied deterministically.
1896
+ for (let index = 0; index < node.arguments.length; index++) {
1897
+ const arg = node.arguments[index];
1898
+ if (!arg)
1899
+ continue;
1900
+ if (ts.isSpreadElement(arg))
1901
+ continue;
1902
+ const unwrapped = unwrapCallSiteArgumentModifier(arg);
1903
+ if (unwrapped.modifier) {
1904
+ callSiteArgModifiers[index] = unwrapped.modifier;
1905
+ }
1906
+ const isDeferredLambda = isLambdaArg(unwrapped.expression);
1907
+ const isDeferredGenericFunctionValue = isGenericFunctionValueArg(unwrapped.expression);
1908
+ const shouldRecontextualizeAggregateLater = deferredAggregateContextIndices.has(index);
1909
+ if (!isDeferredLambda &&
1910
+ !isDeferredGenericFunctionValue &&
1911
+ !shouldRecontextualizeAggregateLater) {
1912
+ continue;
1913
+ }
1914
+ const expectedType = parameterTypesForDeferredContext?.[index];
1915
+ const contextualExpectedType = expectedType?.kind === "functionType"
1916
+ ? expectedType
1917
+ : expectedType
1918
+ ? (typeSystem.delegateToFunctionType(expectedType) ?? expectedType)
1919
+ : undefined;
1920
+ if (shouldRecontextualizeAggregateLater &&
1921
+ expectedType &&
1922
+ ctx.typeSystem.containsTypeParameter(expectedType)) {
1923
+ continue;
1924
+ }
1925
+ argsWorking[index] = convertExpression(unwrapped.expression, ctx, contextualExpectedType);
1926
+ }
1927
+ const convertedArgs = argsWorking.map((a) => {
1928
+ if (!a) {
1929
+ throw new Error("ICE: call argument conversion produced a hole");
1930
+ }
1931
+ return a;
1932
+ });
1933
+ const argTypes = convertedArgs.map((a) => a.kind === "spread" ? undefined : a.inferredType);
1934
+ const resolutionArgs = collectResolutionArguments(convertedArgs);
1935
+ const finalResolutionArgumentCount = resolutionArgs.argumentCount > 0
1936
+ ? resolutionArgs.argumentCount
1937
+ : argumentCount;
1938
+ const finalResolutionArgTypes = resolutionArgs.argumentCount > 0 ? resolutionArgs.argTypes : argTypes;
1939
+ const finalSelection = sigId && !useDirectCallableCandidateResolution
1940
+ ? typeSystem.selectBestCallCandidate(sigId, candidateSigIds, {
1941
+ argumentCount: finalResolutionArgumentCount,
1942
+ receiverType: receiverIrType,
1943
+ declaringClrType: exactDeclaringClrType,
1944
+ explicitTypeArgs,
1945
+ argTypes: finalResolutionArgTypes,
1946
+ expectedReturnType: expectedType,
1947
+ })
1948
+ : undefined;
1949
+ const finalResolved = finalSelection?.resolved ?? lambdaContextResolved;
1950
+ const finalCallableResolution = useDirectCallableCandidateResolution
1951
+ ? resolveCallableCandidate(callableCandidateSourceType, finalResolutionArgumentCount, ctx, finalResolutionArgTypes, explicitTypeArgs, expectedType)
1952
+ : undefined;
1953
+ const directCalleeCallableType = callee.inferredType && callee.inferredType.kind !== "unknownType"
1954
+ ? callee.inferredType
1955
+ : undefined;
1956
+ const exactMemberCallableResolution = exactMemberCallableType && exactMemberCallableType.kind !== "unknownType"
1957
+ ? resolveCallableCandidate(exactMemberCallableType, finalResolutionArgumentCount, ctx, finalResolutionArgTypes, explicitTypeArgs, expectedType)
1958
+ : undefined;
1959
+ const directCalleeCallableResolution = directCalleeCallableType
1960
+ ? resolveCallableCandidate(directCalleeCallableType, finalResolutionArgumentCount, ctx, finalResolutionArgTypes, explicitTypeArgs, expectedType)
1961
+ : undefined;
1962
+ const finalFunctionType = finalCallableResolution?.callableType ??
1963
+ lambdaContextFunctionType ??
1964
+ calleeFunctionType ??
1965
+ (directCalleeCallableType?.kind === "functionType"
1966
+ ? directCalleeCallableType
1967
+ : undefined);
1968
+ const finalFunctionParameterTypes = useDirectCallableCandidateResolution
1969
+ ? finalCallableResolution?.resolved?.parameterTypes
1970
+ : undefined;
1971
+ const finalSourceBackedCallParameterTypes = getSourceBackedCallParameterTypes(node, callee, receiverIrType, finalResolutionArgumentCount, finalResolved?.parameterTypes ??
1972
+ finalFunctionParameterTypes ??
1973
+ initialParameterTypesForContext, finalResolutionArgTypes, expectedType, explicitTypeArgs, ctx);
1974
+ const authoritativeFinalDirectCalleeParameterTypes = getAuthoritativeDirectCalleeParameterTypes(callee, finalResolutionArgumentCount, ctx);
1975
+ const explicitSemanticRestParameter = (() => {
1976
+ if (boundGlobalCallParameterTypes) {
1977
+ return boundGlobalCallParameterTypes.restParameter;
1978
+ }
1979
+ if (finalSourceBackedCallParameterTypes) {
1980
+ return finalSourceBackedCallParameterTypes.restParameter;
1981
+ }
1982
+ if (sourceBackedCallParameterTypes) {
1983
+ return sourceBackedCallParameterTypes.restParameter;
1984
+ }
1985
+ return undefined;
1986
+ })();
1987
+ const extensionReceiverExpectedType = getExplicitExtensionReceiverExpectedType(callee, finalResolved, ctx);
1988
+ const finalCallee = callee.kind === "memberAccess" &&
1989
+ callee.memberBinding &&
1990
+ extensionReceiverExpectedType
1991
+ ? {
1992
+ ...callee,
1993
+ memberBinding: {
1994
+ ...callee.memberBinding,
1995
+ receiverExpectedType: extensionReceiverExpectedType,
1996
+ },
1997
+ }
1998
+ : callee;
1999
+ const finalAmbientBoundGlobalSurfaceParameterTypes = !usesAuthoritativeSurfaceBindings &&
2000
+ boundGlobalCallParameterTypes &&
2001
+ finalCallee.inferredType?.kind === "functionType"
2002
+ ? expandParameterTypesForArguments(finalCallee.inferredType.parameters, finalCallee.inferredType.parameters.map((parameter) => parameter.type), finalResolutionArgumentCount)
2003
+ : ambientBoundGlobalSurfaceParameterTypes;
2004
+ const finalAmbientBoundGlobalSurfaceRestParameter = !usesAuthoritativeSurfaceBindings &&
2005
+ boundGlobalCallParameterTypes &&
2006
+ finalCallee.inferredType?.kind === "functionType"
2007
+ ? buildResolvedRestParameter(finalCallee.inferredType.parameters.map((parameter) => ({
2008
+ isRest: parameter.isRest,
2009
+ })), finalAmbientBoundGlobalSurfaceParameterTypes ?? [])
2010
+ : undefined;
2011
+ const sourceBackedParameterTypes = finalSourceBackedCallParameterTypes?.parameterTypes ??
2012
+ sourceBackedCallParameterTypes?.parameterTypes;
2013
+ const sourceBackedSurfaceParameterTypes = finalSourceBackedCallParameterTypes?.surfaceParameterTypes ??
2014
+ sourceBackedCallParameterTypes?.surfaceParameterTypes;
2015
+ const sourceBackedReturnType = finalSourceBackedCallParameterTypes?.returnType ??
2016
+ sourceBackedCallParameterTypes?.returnType;
2017
+ const fallbackParameterTypes = finalFunctionParameterTypes ??
2018
+ initialParameterTypesForContext ??
2019
+ (calleeFunctionType
2020
+ ? expandParameterTypesForArguments(calleeFunctionType.parameters, calleeFunctionType.parameters.map((parameter) => parameter.type), node.arguments.length)
2021
+ : undefined);
2022
+ const preserveAuthoritativeDirectCalleeSurfaceIdentity = !!authoritativeFinalDirectCalleeParameterTypes &&
2023
+ !authoritativeBoundGlobalSurfaceParameterTypes &&
2024
+ !sourceBackedSurfaceParameterTypes &&
2025
+ !finalAmbientBoundGlobalSurfaceParameterTypes;
2026
+ const finalInvocationMetadata = finalizeInvocationMetadata({
2027
+ ctx,
2028
+ callee: finalCallee,
2029
+ receiverType: receiverIrType,
2030
+ callableType: finalFunctionType,
2031
+ argumentCount: finalResolutionArgumentCount,
2032
+ argTypes: finalResolutionArgTypes,
2033
+ explicitTypeArgs,
2034
+ expectedType,
2035
+ boundGlobalParameterTypes: boundGlobalCallParameterTypes?.parameterTypes,
2036
+ authoritativeBoundGlobalSurfaceParameterTypes,
2037
+ authoritativeBoundGlobalReturnType,
2038
+ sourceBackedParameterTypes,
2039
+ sourceBackedSurfaceParameterTypes,
2040
+ sourceBackedReturnType,
2041
+ ambientBoundGlobalSurfaceParameterTypes: finalAmbientBoundGlobalSurfaceParameterTypes,
2042
+ authoritativeDirectParameterTypes: authoritativeFinalDirectCalleeParameterTypes,
2043
+ resolvedParameterTypes: finalResolved?.parameterTypes,
2044
+ resolvedSurfaceParameterTypes: finalResolved?.surfaceParameterTypes ??
2045
+ finalCallableResolution?.resolved?.surfaceParameterTypes,
2046
+ resolvedReturnType: finalResolved?.returnType,
2047
+ fallbackParameterTypes,
2048
+ fallbackSurfaceParameterTypes: fallbackParameterTypes,
2049
+ exactParameterCandidates: [
2050
+ exactMemberCallableResolution?.resolved?.parameterTypes,
2051
+ directCalleeCallableResolution?.resolved?.parameterTypes,
2052
+ ],
2053
+ exactSurfaceParameterCandidates: [
2054
+ exactMemberCallableResolution?.resolved?.surfaceParameterTypes ??
2055
+ exactMemberCallableResolution?.resolved?.parameterTypes,
2056
+ directCalleeCallableResolution?.resolved?.surfaceParameterTypes ??
2057
+ directCalleeCallableResolution?.resolved?.parameterTypes,
2058
+ ],
2059
+ exactReturnCandidates: [
2060
+ exactMemberCallableResolution?.resolved?.returnType,
2061
+ directCalleeCallableResolution?.resolved?.returnType,
2062
+ ],
2063
+ preserveDirectSurfaceIdentity: preserveAuthoritativeDirectCalleeSurfaceIdentity,
2064
+ });
2065
+ const parameterTypes = finalInvocationMetadata.parameterTypes;
2066
+ const surfaceParameterTypes = finalInvocationMetadata.surfaceParameterTypes;
2067
+ const recontextualizedFinalArguments = convertedArgs.map((argument, index) => {
2068
+ const sourceArgument = node.arguments[index];
2069
+ if (!sourceArgument ||
2070
+ ts.isSpreadElement(sourceArgument) ||
2071
+ argument.kind === "spread") {
2072
+ return argument;
2073
+ }
2074
+ const unwrapped = unwrapCallSiteArgumentModifier(sourceArgument);
2075
+ const aggregateExpression = stripParentheses(unwrapped.expression);
2076
+ if (!ts.isObjectLiteralExpression(aggregateExpression) &&
2077
+ !ts.isArrayLiteralExpression(aggregateExpression)) {
2078
+ return argument;
2079
+ }
2080
+ const expectedType = surfaceParameterTypes?.[index] ?? parameterTypes?.[index];
2081
+ const contextualExpectedType = expectedType?.kind === "functionType"
2082
+ ? expectedType
2083
+ : expectedType
2084
+ ? (typeSystem.delegateToFunctionType(expectedType) ?? expectedType)
2085
+ : undefined;
2086
+ if (!contextualExpectedType ||
2087
+ containsTypeParameter(contextualExpectedType)) {
2088
+ return argument;
2089
+ }
2090
+ const preservedArgument = preserveStableNamedAggregateArgumentIdentity(argument, contextualExpectedType, ctx);
2091
+ if (preservedArgument !== argument) {
2092
+ return preservedArgument;
2093
+ }
2094
+ if (argument.inferredType &&
2095
+ invocationTypesEquivalent(argument.inferredType, contextualExpectedType, ctx)) {
2096
+ return argument;
2097
+ }
2098
+ const convertedArgument = convertExpression(unwrapped.expression, ctx, contextualExpectedType);
2099
+ return preserveStableNamedAggregateArgumentIdentity(convertedArgument, contextualExpectedType, ctx);
2100
+ });
2101
+ const finalizedArguments = normalizeFinalizedInvocationArguments(recontextualizedFinalArguments, parameterTypes, surfaceParameterTypes, ctx);
2102
+ const finalizedArgTypes = finalizedArguments.map((argument) => argument.kind === "spread" ? undefined : argument.inferredType);
2103
+ const finalSourceBackedParameterTypes = finalInvocationMetadata.sourceBackedParameterTypes;
2104
+ const finalSourceBackedSurfaceParameterTypes = finalInvocationMetadata.sourceBackedSurfaceParameterTypes;
2105
+ const finalSourceBackedReturnType = finalInvocationMetadata.sourceBackedReturnType;
2106
+ const fallbackRestParameter = (() => {
2107
+ if (finalSourceBackedCallParameterTypes?.restParameter) {
2108
+ return finalSourceBackedCallParameterTypes.restParameter;
2109
+ }
2110
+ if (boundGlobalCallParameterTypes?.restParameter) {
2111
+ return boundGlobalCallParameterTypes.restParameter;
2112
+ }
2113
+ if (finalResolved?.surfaceRestParameter) {
2114
+ return finalResolved.surfaceRestParameter;
2115
+ }
2116
+ if (finalCallableResolution?.resolved?.surfaceRestParameter) {
2117
+ return finalCallableResolution.resolved.surfaceRestParameter;
2118
+ }
2119
+ if (sourceBackedCallParameterTypes?.restParameter) {
2120
+ return sourceBackedCallParameterTypes.restParameter;
2121
+ }
2122
+ const functionTypeForRest = finalFunctionType ?? calleeFunctionType;
2123
+ if (!functionTypeForRest) {
2124
+ return undefined;
2125
+ }
2126
+ const restIndex = functionTypeForRest.parameters.findIndex((parameter) => parameter.isRest);
2127
+ if (restIndex < 0) {
2128
+ return undefined;
2129
+ }
2130
+ return {
2131
+ index: restIndex,
2132
+ arrayType: functionTypeForRest.parameters[restIndex]?.type,
2133
+ elementType: parameterTypes?.[restIndex],
2134
+ };
2135
+ })();
2136
+ const finalInferredType = (() => {
2137
+ if (node.expression.kind === ts.SyntaxKind.SuperKeyword) {
2138
+ return { kind: "voidType" };
2139
+ }
2140
+ if (ts.isCallExpression(node) && isArrayIsArrayCall(node.expression)) {
2141
+ return { kind: "primitiveType", name: "boolean" };
2142
+ }
2143
+ const resolvedReturnType = finalSourceBackedReturnType ??
2144
+ finalCallableResolution?.resolved?.returnType ??
2145
+ finalFunctionType?.returnType;
2146
+ if (!resolvedReturnType) {
2147
+ return { kind: "unknownType" };
2148
+ }
2149
+ const callableReturnType = finalFunctionType?.returnType;
2150
+ if (callableReturnType &&
2151
+ callableReturnType.kind !== "voidType" &&
2152
+ callableReturnType.kind !== "unknownType" &&
2153
+ callableReturnType.kind !== "anyType" &&
2154
+ (resolvedReturnType.kind === "voidType" ||
2155
+ resolvedReturnType.kind === "unknownType" ||
2156
+ resolvedReturnType.kind === "anyType")) {
2157
+ return callableReturnType;
2158
+ }
2159
+ if (finalResolved?.typePredicate &&
2160
+ (resolvedReturnType.kind === "unknownType" ||
2161
+ resolvedReturnType.kind === "anyType")) {
2162
+ return { kind: "primitiveType", name: "boolean" };
2163
+ }
2164
+ return resolvedReturnType;
2165
+ })();
2166
+ const argumentPassingFromBinding = extractArgumentPassingFromBinding(callee, node.arguments.length, ctx, parameterTypes, finalizedArgTypes);
2167
+ const argumentPassing = argumentPassingFromBinding ??
2168
+ (finalResolved
2169
+ ? finalResolved.parameterModes.slice(0, node.arguments.length)
2170
+ : extractArgumentPassing(node, ctx));
2171
+ const argumentPassingWithOverrides = applyCallSiteArgumentModifiers(argumentPassing, callSiteArgModifiers, argumentCount, ctx, node);
2172
+ const narrowing = (() => {
2173
+ if (ts.isCallExpression(node) && isArrayIsArrayCall(node.expression)) {
2174
+ const currentType = finalizedArgTypes[0];
2175
+ const targetType = narrowTypeByArrayShape(ctx.typeSystem, currentType, true);
2176
+ if (targetType) {
2177
+ return {
2178
+ kind: "typePredicate",
2179
+ argIndex: 0,
2180
+ targetType,
2181
+ };
2182
+ }
2183
+ }
2184
+ const pred = finalResolved?.typePredicate;
2185
+ if (pred?.kind === "param") {
2186
+ const currentArgumentType = finalizedArgTypes[pred.parameterIndex];
2187
+ if (currentArgumentType &&
2188
+ ctx.typeSystem.isAssignableTo(currentArgumentType, pred.targetType)) {
2189
+ return undefined;
2190
+ }
2191
+ return {
2192
+ kind: "typePredicate",
2193
+ argIndex: pred.parameterIndex,
2194
+ targetType: pred.targetType,
2195
+ };
2196
+ }
2197
+ return undefined;
2198
+ })();
2199
+ return {
2200
+ kind: "call",
2201
+ callee: finalCallee,
2202
+ // Pass parameter types as expectedType for deterministic contextual typing
2203
+ // This ensures `spreadArray([1,2,3], [4,5,6])` with `number[]` params produces `double[]`
2204
+ arguments: finalizedArguments,
2205
+ isOptional: node.questionDotToken !== undefined,
2206
+ inferredType: finalInferredType,
2207
+ sourceSpan: getSourceSpan(node),
2208
+ signatureId: sigId,
2209
+ candidateSignatureIds: candidateSigIds,
2210
+ typeArguments,
2211
+ requiresSpecialization,
2212
+ resolutionExpectedReturnType: expectedType,
2213
+ argumentPassing: argumentPassingWithOverrides,
2214
+ parameterTypes,
2215
+ surfaceParameterTypes,
2216
+ restParameter: boundGlobalCallParameterTypes
2217
+ ? boundGlobalCallParameterTypes.restParameter
2218
+ : (finalResolved?.restParameter ??
2219
+ explicitSemanticRestParameter ??
2220
+ fallbackRestParameter),
2221
+ surfaceRestParameter: finalAmbientBoundGlobalSurfaceRestParameter ??
2222
+ (boundGlobalCallParameterTypes
2223
+ ? boundGlobalCallParameterTypes.restParameter
2224
+ : finalSourceBackedCallParameterTypes
2225
+ ? finalSourceBackedCallParameterTypes.restParameter
2226
+ : (finalResolved?.surfaceRestParameter ??
2227
+ explicitSemanticRestParameter ??
2228
+ fallbackRestParameter)),
2229
+ sourceBackedParameterTypes: finalSourceBackedParameterTypes,
2230
+ sourceBackedSurfaceParameterTypes: finalSourceBackedSurfaceParameterTypes,
2231
+ sourceBackedRestParameter: finalSourceBackedCallParameterTypes?.restParameter ??
2232
+ sourceBackedCallParameterTypes?.restParameter,
2233
+ sourceBackedReturnType: finalSourceBackedReturnType,
2234
+ narrowing,
2235
+ };
2236
+ };
2237
+ //# sourceMappingURL=call-general.js.map