@tsonic/frontend 0.0.61 → 0.0.63

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 (466) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/dependency-graph.d.ts +1 -1
  3. package/dist/dependency-graph.d.ts.map +1 -1
  4. package/dist/dependency-graph.js +1 -1
  5. package/dist/dependency-graph.js.map +1 -1
  6. package/dist/dotnet-metadata.d.ts +0 -12
  7. package/dist/dotnet-metadata.d.ts.map +1 -1
  8. package/dist/dotnet-metadata.js +3 -25
  9. package/dist/dotnet-metadata.js.map +1 -1
  10. package/dist/dotnet-metadata.test.js.map +1 -1
  11. package/dist/generic-function-values.d.ts +11 -0
  12. package/dist/generic-function-values.d.ts.map +1 -0
  13. package/dist/generic-function-values.js +243 -0
  14. package/dist/generic-function-values.js.map +1 -0
  15. package/dist/generic-function-values.test.d.ts +2 -0
  16. package/dist/generic-function-values.test.d.ts.map +1 -0
  17. package/dist/generic-function-values.test.js +256 -0
  18. package/dist/generic-function-values.test.js.map +1 -0
  19. package/dist/graph/extraction/imports.d.ts +5 -0
  20. package/dist/graph/extraction/imports.d.ts.map +1 -1
  21. package/dist/graph/extraction/imports.js +30 -0
  22. package/dist/graph/extraction/imports.js.map +1 -1
  23. package/dist/graph/extraction/index.d.ts +1 -1
  24. package/dist/graph/extraction/index.d.ts.map +1 -1
  25. package/dist/graph/extraction/index.js +1 -1
  26. package/dist/graph/extraction/index.js.map +1 -1
  27. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  28. package/dist/graph/extraction/orchestrator.js +16 -2
  29. package/dist/graph/extraction/orchestrator.js.map +1 -1
  30. package/dist/graph/extraction.d.ts +1 -1
  31. package/dist/graph/extraction.d.ts.map +1 -1
  32. package/dist/graph/extraction.js +1 -1
  33. package/dist/graph/extraction.js.map +1 -1
  34. package/dist/ir/binding/binding-factory.d.ts +17 -0
  35. package/dist/ir/binding/binding-factory.d.ts.map +1 -0
  36. package/dist/ir/binding/binding-factory.js +765 -0
  37. package/dist/ir/binding/binding-factory.js.map +1 -0
  38. package/dist/ir/binding/binding-helpers.d.ts +90 -0
  39. package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
  40. package/dist/ir/binding/binding-helpers.js +387 -0
  41. package/dist/ir/binding/binding-helpers.js.map +1 -0
  42. package/dist/ir/binding/binding-types.d.ts +203 -0
  43. package/dist/ir/binding/binding-types.d.ts.map +1 -0
  44. package/dist/ir/binding/binding-types.js +9 -0
  45. package/dist/ir/binding/binding-types.js.map +1 -0
  46. package/dist/ir/binding/index.d.ts +4 -151
  47. package/dist/ir/binding/index.d.ts.map +1 -1
  48. package/dist/ir/binding/index.js +3 -1124
  49. package/dist/ir/binding/index.js.map +1 -1
  50. package/dist/ir/binding-resolution.test.js +4 -1
  51. package/dist/ir/binding-resolution.test.js.map +1 -1
  52. package/dist/ir/bindings-disambiguation.test.js.map +1 -1
  53. package/dist/ir/builder/imports.d.ts.map +1 -1
  54. package/dist/ir/builder/imports.js +91 -5
  55. package/dist/ir/builder/imports.js.map +1 -1
  56. package/dist/ir/builder.test.js +456 -24
  57. package/dist/ir/builder.test.js.map +1 -1
  58. package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
  59. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  60. package/dist/ir/converters/anonymous-synthesis.js +45 -8
  61. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  62. package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
  63. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
  64. package/dist/ir/converters/expressions/access/access-converter.js +141 -0
  65. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
  66. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
  67. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
  68. package/dist/ir/converters/expressions/access/binding-resolution.js +384 -0
  69. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
  70. package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
  71. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
  72. package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
  73. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
  74. package/dist/ir/converters/expressions/access.d.ts +1 -7
  75. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  76. package/dist/ir/converters/expressions/access.js +1 -720
  77. package/dist/ir/converters/expressions/access.js.map +1 -1
  78. package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
  79. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
  80. package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
  81. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
  82. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
  83. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
  84. package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
  85. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
  86. package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
  87. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
  88. package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
  89. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
  90. package/dist/ir/converters/expressions/calls.d.ts +2 -28
  91. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  92. package/dist/ir/converters/expressions/calls.js +2 -953
  93. package/dist/ir/converters/expressions/calls.js.map +1 -1
  94. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  95. package/dist/ir/converters/expressions/collections.js +56 -28
  96. package/dist/ir/converters/expressions/collections.js.map +1 -1
  97. package/dist/ir/converters/expressions/functions.js +3 -3
  98. package/dist/ir/converters/expressions/functions.js.map +1 -1
  99. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  100. package/dist/ir/converters/expressions/helpers.js +1 -0
  101. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  102. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  103. package/dist/ir/converters/expressions/operators.js +1 -1
  104. package/dist/ir/converters/expressions/operators.js.map +1 -1
  105. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  106. package/dist/ir/converters/expressions/other.js +17 -2
  107. package/dist/ir/converters/expressions/other.js.map +1 -1
  108. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  109. package/dist/ir/converters/flow-narrowing.js +3 -2
  110. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  111. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  112. package/dist/ir/converters/statements/control/loops.js +8 -2
  113. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  114. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
  115. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
  116. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
  117. package/dist/ir/converters/statements/declarations/classes/methods.js +71 -23
  118. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  119. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
  120. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +10 -4
  121. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
  122. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
  123. package/dist/ir/converters/statements/declarations/classes/override-detection.js +5 -1
  124. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
  125. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
  126. package/dist/ir/converters/statements/declarations/classes/properties.js +2 -1
  127. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
  128. package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
  129. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  130. package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
  131. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  132. package/dist/ir/converters/statements/declarations/variables.js +290 -3
  133. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  134. package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
  135. package/dist/ir/converters/statements/helpers.js +10 -2
  136. package/dist/ir/converters/statements/helpers.js.map +1 -1
  137. package/dist/ir/converters/type-env.d.ts.map +1 -1
  138. package/dist/ir/converters/type-env.js.map +1 -1
  139. package/dist/ir/expression-converter.d.ts +0 -1
  140. package/dist/ir/expression-converter.d.ts.map +1 -1
  141. package/dist/ir/expression-converter.js +25 -4
  142. package/dist/ir/expression-converter.js.map +1 -1
  143. package/dist/ir/field-marker.test.js.map +1 -1
  144. package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
  145. package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
  146. package/dist/ir/generic-function-value-lowering.test.js +312 -0
  147. package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
  148. package/dist/ir/generic-validator.d.ts +3 -4
  149. package/dist/ir/generic-validator.d.ts.map +1 -1
  150. package/dist/ir/generic-validator.js +3 -35
  151. package/dist/ir/generic-validator.js.map +1 -1
  152. package/dist/ir/program-context.d.ts +7 -0
  153. package/dist/ir/program-context.d.ts.map +1 -1
  154. package/dist/ir/program-context.js +7 -2
  155. package/dist/ir/program-context.js.map +1 -1
  156. package/dist/ir/statement-converter.d.ts +0 -2
  157. package/dist/ir/statement-converter.d.ts.map +1 -1
  158. package/dist/ir/statement-converter.js +0 -3
  159. package/dist/ir/statement-converter.js.map +1 -1
  160. package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
  161. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  162. package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
  163. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  164. package/dist/ir/type-system/internal/nominal-env.js +2 -6
  165. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  166. package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
  167. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
  168. package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
  169. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
  170. package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
  171. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  172. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
  173. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  174. package/dist/ir/type-system/internal/type-converter/orchestrator.js +318 -24
  175. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  176. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
  177. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
  178. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
  179. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
  180. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  181. package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
  182. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  183. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  184. package/dist/ir/type-system/internal/type-converter/references.js +172 -26
  185. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  186. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  187. package/dist/ir/type-system/internal/type-converter/utility-types.js +154 -4
  188. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  189. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
  190. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  191. package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
  192. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
  193. package/dist/ir/type-system/internal/type-registry.js +15 -11
  194. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  195. package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
  196. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
  197. package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
  198. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
  199. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
  200. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  201. package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1027
  202. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  203. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
  204. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
  205. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
  206. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
  207. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
  208. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
  209. package/dist/ir/type-system/internal/universe/clr-type-parser.js +415 -0
  210. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
  211. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  212. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  213. package/dist/ir/type-system/internal/universe/index.js +1 -3
  214. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  215. package/dist/ir/type-system/internal/universe/source-catalog.js +3 -1
  216. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
  217. package/dist/ir/type-system/internal/universe/types.d.ts +7 -0
  218. package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -1
  219. package/dist/ir/type-system/internal/universe/types.js.map +1 -1
  220. package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -1
  221. package/dist/ir/type-system/internal/universe/unified-universe.js +16 -1
  222. package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -1
  223. package/dist/ir/type-system/internal/universe/unified-universe.test.d.ts +2 -0
  224. package/dist/ir/type-system/internal/universe/unified-universe.test.d.ts.map +1 -0
  225. package/dist/ir/type-system/internal/universe/unified-universe.test.js +89 -0
  226. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -0
  227. package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
  228. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
  229. package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
  230. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
  231. package/dist/ir/type-system/type-system-inference.d.ts +98 -0
  232. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
  233. package/dist/ir/type-system/type-system-inference.js +1083 -0
  234. package/dist/ir/type-system/type-system-inference.js.map +1 -0
  235. package/dist/ir/type-system/type-system-relations.d.ts +15 -0
  236. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
  237. package/dist/ir/type-system/type-system-relations.js +152 -0
  238. package/dist/ir/type-system/type-system-relations.js.map +1 -0
  239. package/dist/ir/type-system/type-system-state.d.ts +436 -0
  240. package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
  241. package/dist/ir/type-system/type-system-state.js +212 -0
  242. package/dist/ir/type-system/type-system-state.js.map +1 -0
  243. package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
  244. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
  245. package/dist/ir/type-system/type-system-utilities.js +373 -0
  246. package/dist/ir/type-system/type-system-utilities.js.map +1 -0
  247. package/dist/ir/type-system/type-system.d.ts +17 -350
  248. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  249. package/dist/ir/type-system/type-system.js +67 -2764
  250. package/dist/ir/type-system/type-system.js.map +1 -1
  251. package/dist/ir/types/index.d.ts +1 -0
  252. package/dist/ir/types/index.d.ts.map +1 -1
  253. package/dist/ir/types/index.js +1 -0
  254. package/dist/ir/types/index.js.map +1 -1
  255. package/dist/ir/types/ir-substitution.js +1 -1
  256. package/dist/ir/types/ir-substitution.js.map +1 -1
  257. package/dist/ir/types/ir-types.d.ts.map +1 -1
  258. package/dist/ir/types/module.d.ts +11 -0
  259. package/dist/ir/types/module.d.ts.map +1 -1
  260. package/dist/ir/types/statements.d.ts +1 -1
  261. package/dist/ir/types/type-ops.d.ts +9 -0
  262. package/dist/ir/types/type-ops.d.ts.map +1 -0
  263. package/dist/ir/types/type-ops.js +134 -0
  264. package/dist/ir/types/type-ops.js.map +1 -0
  265. package/dist/ir/types/type-ops.test.d.ts +2 -0
  266. package/dist/ir/types/type-ops.test.d.ts.map +1 -0
  267. package/dist/ir/types/type-ops.test.js +73 -0
  268. package/dist/ir/types/type-ops.test.js.map +1 -0
  269. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  270. package/dist/ir/validation/anonymous-type-lowering-pass.js +101 -49
  271. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  272. package/dist/ir/validation/arrow-return-finalization-pass.js +13 -3
  273. package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -1
  274. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
  275. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
  276. package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
  277. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
  278. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
  279. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
  280. package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
  281. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
  282. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
  283. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
  284. package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
  285. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
  286. package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
  287. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  288. package/dist/ir/validation/attribute-collection-pass.js +1 -953
  289. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  290. package/dist/ir/validation/attribute-collection-pass.test.js +42 -19
  291. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  292. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -1
  293. package/dist/ir/validation/char-validation-pass.js +6 -3
  294. package/dist/ir/validation/char-validation-pass.js.map +1 -1
  295. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
  296. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
  297. package/dist/ir/validation/numeric-invariants.test.js +46 -0
  298. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  299. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  300. package/dist/ir/validation/numeric-proof-pass.js +68 -1
  301. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  302. package/dist/ir/validation/rest-type-synthesis-pass.js +1 -1
  303. package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -1
  304. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  305. package/dist/ir/validation/soundness-gate.js +8 -5
  306. package/dist/ir/validation/soundness-gate.js.map +1 -1
  307. package/dist/ir/validation/soundness-gate.test.js +158 -0
  308. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  309. package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
  310. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  311. package/dist/ir/validation/yield-lowering-pass.js +942 -48
  312. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  313. package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
  314. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  315. package/dist/program/binding-loader.d.ts +37 -0
  316. package/dist/program/binding-loader.d.ts.map +1 -0
  317. package/dist/program/binding-loader.js +155 -0
  318. package/dist/program/binding-loader.js.map +1 -0
  319. package/dist/program/binding-registry.d.ts +106 -0
  320. package/dist/program/binding-registry.d.ts.map +1 -0
  321. package/dist/program/binding-registry.js +590 -0
  322. package/dist/program/binding-registry.js.map +1 -0
  323. package/dist/program/binding-types.d.ts +166 -0
  324. package/dist/program/binding-types.d.ts.map +1 -0
  325. package/dist/program/binding-types.js +57 -0
  326. package/dist/program/binding-types.js.map +1 -0
  327. package/dist/program/bindings.d.ts +6 -271
  328. package/dist/program/bindings.d.ts.map +1 -1
  329. package/dist/program/bindings.js +7 -781
  330. package/dist/program/bindings.js.map +1 -1
  331. package/dist/program/clr-bindings-discovery.d.ts +19 -0
  332. package/dist/program/clr-bindings-discovery.d.ts.map +1 -0
  333. package/dist/program/clr-bindings-discovery.js +150 -0
  334. package/dist/program/clr-bindings-discovery.js.map +1 -0
  335. package/dist/program/clr-bindings-discovery.test.d.ts +2 -0
  336. package/dist/program/clr-bindings-discovery.test.d.ts.map +1 -0
  337. package/dist/program/clr-bindings-discovery.test.js +119 -0
  338. package/dist/program/clr-bindings-discovery.test.js.map +1 -0
  339. package/dist/program/creation.d.ts.map +1 -1
  340. package/dist/program/creation.js +2 -1
  341. package/dist/program/creation.js.map +1 -1
  342. package/dist/program/creation.test.js.map +1 -1
  343. package/dist/program/dependency-graph.d.ts +2 -2
  344. package/dist/program/dependency-graph.d.ts.map +1 -1
  345. package/dist/program/dependency-graph.js +26 -42
  346. package/dist/program/dependency-graph.js.map +1 -1
  347. package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
  348. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  349. package/dist/resolver/clr-bindings-resolver.js +22 -30
  350. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  351. package/dist/resolver/clr-bindings-resolver.test.js +0 -27
  352. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
  353. package/dist/resolver/import-resolution.d.ts +1 -1
  354. package/dist/resolver/import-resolution.d.ts.map +1 -1
  355. package/dist/resolver/import-resolution.js +2 -7
  356. package/dist/resolver/import-resolution.js.map +1 -1
  357. package/dist/resolver/namespace.d.ts.map +1 -1
  358. package/dist/resolver/namespace.js +1 -3
  359. package/dist/resolver/namespace.js.map +1 -1
  360. package/dist/resolver/naming.d.ts.map +1 -1
  361. package/dist/resolver/naming.js +1 -0
  362. package/dist/resolver/naming.js.map +1 -1
  363. package/dist/tsbindgen/names.d.ts.map +1 -1
  364. package/dist/tsbindgen/names.js +4 -2
  365. package/dist/tsbindgen/names.js.map +1 -1
  366. package/dist/types/diagnostic.d.ts +1 -1
  367. package/dist/types/diagnostic.d.ts.map +1 -1
  368. package/dist/types/diagnostic.js.map +1 -1
  369. package/dist/validation/core-intrinsics.d.ts.map +1 -1
  370. package/dist/validation/core-intrinsics.js +3 -1
  371. package/dist/validation/core-intrinsics.js.map +1 -1
  372. package/dist/validation/extension-methods.d.ts.map +1 -1
  373. package/dist/validation/extension-methods.js.map +1 -1
  374. package/dist/validation/features.d.ts.map +1 -1
  375. package/dist/validation/features.js +38 -13
  376. package/dist/validation/features.js.map +1 -1
  377. package/dist/validation/features.test.d.ts +2 -0
  378. package/dist/validation/features.test.d.ts.map +1 -0
  379. package/dist/validation/features.test.js +273 -0
  380. package/dist/validation/features.test.js.map +1 -0
  381. package/dist/validation/generics.d.ts +1 -1
  382. package/dist/validation/generics.d.ts.map +1 -1
  383. package/dist/validation/generics.js +2 -26
  384. package/dist/validation/generics.js.map +1 -1
  385. package/dist/validation/imports.d.ts.map +1 -1
  386. package/dist/validation/imports.js +2 -1
  387. package/dist/validation/imports.js.map +1 -1
  388. package/dist/validation/imports.test.d.ts +2 -0
  389. package/dist/validation/imports.test.d.ts.map +1 -0
  390. package/dist/validation/imports.test.js +112 -0
  391. package/dist/validation/imports.test.js.map +1 -0
  392. package/dist/validation/static-safety.d.ts +6 -6
  393. package/dist/validation/static-safety.d.ts.map +1 -1
  394. package/dist/validation/static-safety.js +163 -94
  395. package/dist/validation/static-safety.js.map +1 -1
  396. package/dist/validation/unsupported-utility-types.d.ts +3 -3
  397. package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
  398. package/dist/validation/unsupported-utility-types.js +4 -7
  399. package/dist/validation/unsupported-utility-types.js.map +1 -1
  400. package/dist/validator.maximus.test.d.ts +2 -0
  401. package/dist/validator.maximus.test.d.ts.map +1 -0
  402. package/dist/validator.maximus.test.js +1214 -0
  403. package/dist/validator.maximus.test.js.map +1 -0
  404. package/dist/validator.test.js +152 -18
  405. package/dist/validator.test.js.map +1 -1
  406. package/package.json +1 -1
  407. package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
  408. package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
  409. package/dist/ir/converters/statements/declarations/registry.js +0 -130
  410. package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
  411. package/dist/ir/this-parameter-inference.test.d.ts +0 -13
  412. package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
  413. package/dist/ir/this-parameter-inference.test.js +0 -165
  414. package/dist/ir/this-parameter-inference.test.js.map +0 -1
  415. package/dist/metadata/bindings-loader.d.ts +0 -41
  416. package/dist/metadata/bindings-loader.d.ts.map +0 -1
  417. package/dist/metadata/bindings-loader.js +0 -308
  418. package/dist/metadata/bindings-loader.js.map +0 -1
  419. package/dist/metadata/bindings-loader.test.d.ts +0 -5
  420. package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
  421. package/dist/metadata/bindings-loader.test.js +0 -117
  422. package/dist/metadata/bindings-loader.test.js.map +0 -1
  423. package/dist/metadata/index.d.ts +0 -8
  424. package/dist/metadata/index.d.ts.map +0 -1
  425. package/dist/metadata/index.js +0 -7
  426. package/dist/metadata/index.js.map +0 -1
  427. package/dist/metadata/library-loader.d.ts +0 -42
  428. package/dist/metadata/library-loader.d.ts.map +0 -1
  429. package/dist/metadata/library-loader.js +0 -126
  430. package/dist/metadata/library-loader.js.map +0 -1
  431. package/dist/metadata/loader.d.ts +0 -26
  432. package/dist/metadata/loader.d.ts.map +0 -1
  433. package/dist/metadata/loader.js +0 -333
  434. package/dist/metadata/loader.js.map +0 -1
  435. package/dist/metadata/loader.test.d.ts +0 -5
  436. package/dist/metadata/loader.test.d.ts.map +0 -1
  437. package/dist/metadata/loader.test.js +0 -119
  438. package/dist/metadata/loader.test.js.map +0 -1
  439. package/dist/resolver/naming-policy.d.ts +0 -20
  440. package/dist/resolver/naming-policy.d.ts.map +0 -1
  441. package/dist/resolver/naming-policy.js +0 -40
  442. package/dist/resolver/naming-policy.js.map +0 -1
  443. package/dist/types/bindings.d.ts +0 -153
  444. package/dist/types/bindings.d.ts.map +0 -1
  445. package/dist/types/bindings.js +0 -14
  446. package/dist/types/bindings.js.map +0 -1
  447. package/dist/types/metadata.d.ts +0 -196
  448. package/dist/types/metadata.d.ts.map +0 -1
  449. package/dist/types/metadata.js +0 -10
  450. package/dist/types/metadata.js.map +0 -1
  451. package/dist/types/nested-types.d.ts +0 -111
  452. package/dist/types/nested-types.d.ts.map +0 -1
  453. package/dist/types/nested-types.js +0 -176
  454. package/dist/types/nested-types.js.map +0 -1
  455. package/dist/types/nested-types.test.d.ts +0 -5
  456. package/dist/types/nested-types.test.d.ts.map +0 -1
  457. package/dist/types/nested-types.test.js +0 -135
  458. package/dist/types/nested-types.test.js.map +0 -1
  459. package/dist/types/ref-parameters.d.ts +0 -123
  460. package/dist/types/ref-parameters.d.ts.map +0 -1
  461. package/dist/types/ref-parameters.js +0 -203
  462. package/dist/types/ref-parameters.js.map +0 -1
  463. package/dist/types/ref-parameters.test.d.ts +0 -5
  464. package/dist/types/ref-parameters.test.d.ts.map +0 -1
  465. package/dist/types/ref-parameters.test.js +0 -147
  466. package/dist/types/ref-parameters.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"nested-types.js","sourceRoot":"","sources":["../../src/types/nested-types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for nested types handling
3
- */
4
- export {};
5
- //# sourceMappingURL=nested-types.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nested-types.test.d.ts","sourceRoot":"","sources":["../../src/types/nested-types.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,135 +0,0 @@
1
- /**
2
- * Tests for nested types handling
3
- */
4
- import { describe, it } from "mocha";
5
- import { strict as assert } from "assert";
6
- import { parseNestedTypeName, isNestedType, tsCSharpNestedTypeName, clrToTsNestedTypeName, tsToCLRNestedTypeName, getNestedTypeLevels, getOutermostType, getInnermostType, isNestedInside, getParentType, } from "./nested-types.js";
7
- describe("Nested Types", () => {
8
- describe("isNestedType", () => {
9
- it("should detect nested type with $ separator", () => {
10
- assert.ok(isNestedType("List_1$Enumerator"));
11
- });
12
- it("should return false for non-nested type", () => {
13
- assert.ok(!isNestedType("List_1"));
14
- });
15
- });
16
- describe("parseNestedTypeName", () => {
17
- it("should parse simple nested type", () => {
18
- const info = parseNestedTypeName("List_1$Enumerator");
19
- assert.ok(info);
20
- assert.equal(info?.outerType, "List_1");
21
- assert.equal(info?.nestedType, "Enumerator");
22
- assert.equal(info?.depth, 1);
23
- assert.deepEqual(info?.fullPath, ["List_1", "Enumerator"]);
24
- });
25
- it("should parse multiple nesting levels", () => {
26
- const info = parseNestedTypeName("A$B$C");
27
- assert.ok(info);
28
- assert.equal(info?.outerType, "A");
29
- assert.equal(info?.nestedType, "C");
30
- assert.equal(info?.depth, 2);
31
- assert.deepEqual(info?.fullPath, ["A", "B", "C"]);
32
- });
33
- it("should return undefined for non-nested type", () => {
34
- const info = parseNestedTypeName("SimpleType");
35
- assert.equal(info, undefined);
36
- });
37
- });
38
- describe("tsCSharpNestedTypeName", () => {
39
- it("should convert $ to . separator", () => {
40
- const result = tsCSharpNestedTypeName("List_1$Enumerator");
41
- assert.equal(result, "List_1.Enumerator");
42
- });
43
- it("should handle multiple levels", () => {
44
- const result = tsCSharpNestedTypeName("A$B$C");
45
- assert.equal(result, "A.B.C");
46
- });
47
- it("should leave non-nested types unchanged", () => {
48
- const result = tsCSharpNestedTypeName("SimpleType");
49
- assert.equal(result, "SimpleType");
50
- });
51
- });
52
- describe("clrToTsNestedTypeName", () => {
53
- it("should convert CLR name to TypeScript", () => {
54
- const result = clrToTsNestedTypeName("List`1+Enumerator");
55
- assert.equal(result, "List_1$Enumerator");
56
- });
57
- it("should handle multiple levels", () => {
58
- const result = clrToTsNestedTypeName("A+B+C");
59
- assert.equal(result, "A$B$C");
60
- });
61
- it("should handle generic nested types", () => {
62
- const result = clrToTsNestedTypeName("Dictionary`2+KeyCollection`1");
63
- assert.equal(result, "Dictionary_2$KeyCollection_1");
64
- });
65
- });
66
- describe("tsToCLRNestedTypeName", () => {
67
- it("should convert TypeScript name to CLR", () => {
68
- const result = tsToCLRNestedTypeName("List_1$Enumerator");
69
- assert.equal(result, "List`1+Enumerator");
70
- });
71
- it("should handle multiple levels", () => {
72
- const result = tsToCLRNestedTypeName("A$B$C");
73
- assert.equal(result, "A+B+C");
74
- });
75
- });
76
- describe("getNestedTypeLevels", () => {
77
- it("should return all nesting levels", () => {
78
- const levels = getNestedTypeLevels("A$B$C");
79
- assert.deepEqual(levels, ["A", "A$B", "A$B$C"]);
80
- });
81
- it("should return single level for non-nested type", () => {
82
- const levels = getNestedTypeLevels("SimpleType");
83
- assert.deepEqual(levels, ["SimpleType"]);
84
- });
85
- });
86
- describe("getOutermostType", () => {
87
- it("should return outermost type", () => {
88
- const outermost = getOutermostType("List_1$Enumerator");
89
- assert.equal(outermost, "List_1");
90
- });
91
- it("should return same type for non-nested", () => {
92
- const outermost = getOutermostType("SimpleType");
93
- assert.equal(outermost, "SimpleType");
94
- });
95
- });
96
- describe("getInnermostType", () => {
97
- it("should return innermost type", () => {
98
- const innermost = getInnermostType("A$B$C");
99
- assert.equal(innermost, "C");
100
- });
101
- it("should return same type for non-nested", () => {
102
- const innermost = getInnermostType("SimpleType");
103
- assert.equal(innermost, "SimpleType");
104
- });
105
- });
106
- describe("isNestedInside", () => {
107
- it("should detect type nested inside another", () => {
108
- const result = isNestedInside("List_1$Enumerator", "List_1");
109
- assert.ok(result);
110
- });
111
- it("should return false for unrelated types", () => {
112
- const result = isNestedInside("Dictionary_2$KeyCollection", "List_1");
113
- assert.ok(!result);
114
- });
115
- it("should return false for non-nested type", () => {
116
- const result = isNestedInside("SimpleType", "List_1");
117
- assert.ok(!result);
118
- });
119
- });
120
- describe("getParentType", () => {
121
- it("should return parent type", () => {
122
- const parent = getParentType("A$B$C");
123
- assert.equal(parent, "A$B");
124
- });
125
- it("should return parent for single nesting", () => {
126
- const parent = getParentType("List_1$Enumerator");
127
- assert.equal(parent, "List_1");
128
- });
129
- it("should return undefined for non-nested type", () => {
130
- const parent = getParentType("SimpleType");
131
- assert.equal(parent, undefined);
132
- });
133
- });
134
- });
135
- //# sourceMappingURL=nested-types.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nested-types.test.js","sourceRoot":"","sources":["../../src/types/nested-types.test.ts"],"names":[],"mappings":"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"}
@@ -1,123 +0,0 @@
1
- /**
2
- * Ref/Out Parameter Handling - Generate C# ref/out/in keywords from TSByRef wrapper.
3
- *
4
- * C# supports pass-by-reference parameters (ref, out, in) which don't have direct
5
- * JavaScript equivalents. TypeScript code uses TSByRef<T> wrapper:
6
- *
7
- * TypeScript: const result = { value: 0 }; TryParse("42", result);
8
- * C#: int result; TryParse("42", out result);
9
- *
10
- * @see spec/ref-out-parameters.md for complete documentation
11
- */
12
- import * as ts from "typescript";
13
- import type { ParameterMetadata } from "./metadata.js";
14
- /**
15
- * Parameter modifier for C# emission.
16
- */
17
- export type ParameterModifier = "ref" | "out" | "in" | "none";
18
- /**
19
- * Information about a ref/out/in parameter.
20
- */
21
- export type RefParameterInfo = {
22
- readonly isRef: boolean;
23
- readonly isOut: boolean;
24
- readonly isIn: boolean;
25
- readonly modifier: ParameterModifier;
26
- readonly wrappedType: ts.Type;
27
- };
28
- /**
29
- * Get ref/out/in information from parameter metadata.
30
- *
31
- * @param paramMetadata - Parameter metadata from .metadata.json
32
- * @returns Parameter modifier to use in C# emission
33
- */
34
- export declare const getParameterModifier: (paramMetadata: ParameterMetadata) => ParameterModifier;
35
- /**
36
- * Check if parameter requires TSByRef wrapper based on metadata.
37
- *
38
- * @param paramMetadata - Parameter metadata from .metadata.json
39
- * @returns True if parameter should use TSByRef<T> in TypeScript
40
- */
41
- export declare const requiresTSByRef: (paramMetadata: ParameterMetadata) => boolean;
42
- /**
43
- * Get ref parameter info from TypeScript type and metadata.
44
- *
45
- * @param paramType - TypeScript parameter type
46
- * @param paramMetadata - Parameter metadata from .metadata.json
47
- * @param checker - TypeScript type checker
48
- * @returns Ref parameter info if applicable, undefined otherwise
49
- */
50
- export declare const getRefParameterInfo: (paramType: ts.Type, paramMetadata: ParameterMetadata, checker: ts.TypeChecker) => RefParameterInfo | undefined;
51
- /**
52
- * Extract variable name from TSByRef argument expression.
53
- *
54
- * TypeScript: TryParse("42", result) // where result = { value: 0 }
55
- * C#: TryParse("42", out result)
56
- *
57
- * @param argumentNode - Argument AST node
58
- * @returns Variable identifier name, or undefined if not extractable
59
- */
60
- export declare const extractRefArgumentVariable: (argumentNode: ts.Expression) => string | undefined;
61
- /**
62
- * Check if argument expression is a TSByRef wrapper object literal.
63
- *
64
- * Detects: { value: 0 } or { value: initialValue }
65
- *
66
- * @param argumentNode - Argument AST node
67
- * @returns True if argument is object literal with 'value' property
68
- */
69
- export declare const isTSByRefObjectLiteral: (argumentNode: ts.Expression) => boolean;
70
- /**
71
- * Generate C# parameter declaration with modifier.
72
- *
73
- * @param modifier - Parameter modifier (ref/out/in/none)
74
- * @param typeName - C# type name
75
- * @param paramName - Parameter name
76
- * @returns C# parameter declaration
77
- */
78
- export declare const generateCSharpParameter: (modifier: ParameterModifier, typeName: string, paramName: string) => string;
79
- /**
80
- * Generate C# argument with modifier for method call.
81
- *
82
- * @param modifier - Parameter modifier (ref/out/in/none)
83
- * @param argumentExpression - C# argument expression
84
- * @returns C# argument with modifier
85
- */
86
- export declare const generateCSharpArgument: (modifier: ParameterModifier, argumentExpression: string) => string;
87
- /**
88
- * Check if variable declaration is needed for out parameter.
89
- *
90
- * For out parameters in TypeScript:
91
- * const result = { value: 0 }; // Declaration
92
- * TryParse("42", result); // Usage
93
- *
94
- * For out parameters in C#:
95
- * TryParse("42", out int result); // Inline declaration
96
- *
97
- * @param argumentNode - Argument AST node
98
- * @returns True if variable should be declared before the call
99
- */
100
- export declare const needsOutVariableDeclaration: (argumentNode: ts.Expression) => boolean;
101
- /**
102
- * Extract initial value from TSByRef object literal.
103
- *
104
- * { value: 42 } → 42
105
- * { value: getDefault() } → getDefault()
106
- *
107
- * @param argumentNode - Argument AST node (must be object literal)
108
- * @returns Initial value expression, or undefined if no initializer
109
- */
110
- export declare const extractTSByRefInitialValue: (argumentNode: ts.Expression) => ts.Expression | undefined;
111
- /**
112
- * Determine if ref/out parameter should use inline declaration in C#.
113
- *
114
- * C# 7.0+ supports inline out var:
115
- * if (int.TryParse("42", out var result)) { ... }
116
- *
117
- * We use this when the TypeScript code declares the wrapper inline.
118
- *
119
- * @param argumentNode - Argument AST node
120
- * @returns True if should use inline declaration
121
- */
122
- export declare const shouldUseInlineDeclaration: (argumentNode: ts.Expression) => boolean;
123
- //# sourceMappingURL=ref-parameters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref-parameters.d.ts","sourceRoot":"","sources":["../../src/types/ref-parameters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,eAAe,iBAAiB,KAC/B,iBAWF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,eAAe,iBAAiB,KAAG,OAIlE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,EAAE,CAAC,IAAI,EAClB,eAAe,iBAAiB,EAChC,SAAS,EAAE,CAAC,WAAW,KACtB,gBAAgB,GAAG,SAmBrB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,GACrC,cAAc,EAAE,CAAC,UAAU,KAC1B,MAAM,GAAG,SAaX,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,cAAc,EAAE,CAAC,UAAU,KAC1B,OAqBF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,iBAAiB,EAC3B,UAAU,MAAM,EAChB,WAAW,MAAM,KAChB,MAKF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,iBAAiB,EAC3B,oBAAoB,MAAM,KACzB,MAKF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,2BAA2B,GACtC,cAAc,EAAE,CAAC,UAAU,KAC1B,OAYF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,GACrC,cAAc,EAAE,CAAC,UAAU,KAC1B,EAAE,CAAC,UAAU,GAAG,SAgBlB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,GACrC,cAAc,EAAE,CAAC,UAAU,KAC1B,OAGF,CAAC"}
@@ -1,203 +0,0 @@
1
- /**
2
- * Ref/Out Parameter Handling - Generate C# ref/out/in keywords from TSByRef wrapper.
3
- *
4
- * C# supports pass-by-reference parameters (ref, out, in) which don't have direct
5
- * JavaScript equivalents. TypeScript code uses TSByRef<T> wrapper:
6
- *
7
- * TypeScript: const result = { value: 0 }; TryParse("42", result);
8
- * C#: int result; TryParse("42", out result);
9
- *
10
- * @see spec/ref-out-parameters.md for complete documentation
11
- */
12
- import * as ts from "typescript";
13
- import { isTSByRef, getTSByRefWrappedType } from "./support-types.js";
14
- /**
15
- * Get ref/out/in information from parameter metadata.
16
- *
17
- * @param paramMetadata - Parameter metadata from .metadata.json
18
- * @returns Parameter modifier to use in C# emission
19
- */
20
- export const getParameterModifier = (paramMetadata) => {
21
- if (paramMetadata.isOut) {
22
- return "out";
23
- }
24
- if (paramMetadata.isRef) {
25
- return "ref";
26
- }
27
- if (paramMetadata.isIn) {
28
- return "in";
29
- }
30
- return "none";
31
- };
32
- /**
33
- * Check if parameter requires TSByRef wrapper based on metadata.
34
- *
35
- * @param paramMetadata - Parameter metadata from .metadata.json
36
- * @returns True if parameter should use TSByRef<T> in TypeScript
37
- */
38
- export const requiresTSByRef = (paramMetadata) => {
39
- return (paramMetadata.isRef || paramMetadata.isOut || (paramMetadata.isIn ?? false));
40
- };
41
- /**
42
- * Get ref parameter info from TypeScript type and metadata.
43
- *
44
- * @param paramType - TypeScript parameter type
45
- * @param paramMetadata - Parameter metadata from .metadata.json
46
- * @param checker - TypeScript type checker
47
- * @returns Ref parameter info if applicable, undefined otherwise
48
- */
49
- export const getRefParameterInfo = (paramType, paramMetadata, checker) => {
50
- // Check if type is TSByRef<T>
51
- if (!isTSByRef(paramType, checker)) {
52
- return undefined;
53
- }
54
- // Extract wrapped type
55
- const wrappedType = getTSByRefWrappedType(paramType, checker);
56
- if (!wrappedType) {
57
- return undefined;
58
- }
59
- return {
60
- isRef: paramMetadata.isRef,
61
- isOut: paramMetadata.isOut,
62
- isIn: paramMetadata.isIn ?? false,
63
- modifier: getParameterModifier(paramMetadata),
64
- wrappedType,
65
- };
66
- };
67
- /**
68
- * Extract variable name from TSByRef argument expression.
69
- *
70
- * TypeScript: TryParse("42", result) // where result = { value: 0 }
71
- * C#: TryParse("42", out result)
72
- *
73
- * @param argumentNode - Argument AST node
74
- * @returns Variable identifier name, or undefined if not extractable
75
- */
76
- export const extractRefArgumentVariable = (argumentNode) => {
77
- // Handle simple identifier
78
- if (ts.isIdentifier(argumentNode)) {
79
- return argumentNode.text;
80
- }
81
- // Handle property access (unlikely for ref params, but possible)
82
- if (ts.isPropertyAccessExpression(argumentNode)) {
83
- return argumentNode.name.text;
84
- }
85
- // Cannot extract variable name from complex expressions
86
- return undefined;
87
- };
88
- /**
89
- * Check if argument expression is a TSByRef wrapper object literal.
90
- *
91
- * Detects: { value: 0 } or { value: initialValue }
92
- *
93
- * @param argumentNode - Argument AST node
94
- * @returns True if argument is object literal with 'value' property
95
- */
96
- export const isTSByRefObjectLiteral = (argumentNode) => {
97
- if (!ts.isObjectLiteralExpression(argumentNode)) {
98
- return false;
99
- }
100
- // Check if object has exactly one property named 'value'
101
- const properties = argumentNode.properties;
102
- if (properties.length !== 1) {
103
- return false;
104
- }
105
- const prop = properties[0];
106
- if (!prop || !ts.isPropertyAssignment(prop)) {
107
- return false;
108
- }
109
- if (!ts.isIdentifier(prop.name)) {
110
- return false;
111
- }
112
- return prop.name.text === "value";
113
- };
114
- /**
115
- * Generate C# parameter declaration with modifier.
116
- *
117
- * @param modifier - Parameter modifier (ref/out/in/none)
118
- * @param typeName - C# type name
119
- * @param paramName - Parameter name
120
- * @returns C# parameter declaration
121
- */
122
- export const generateCSharpParameter = (modifier, typeName, paramName) => {
123
- if (modifier === "none") {
124
- return `${typeName} ${paramName}`;
125
- }
126
- return `${modifier} ${typeName} ${paramName}`;
127
- };
128
- /**
129
- * Generate C# argument with modifier for method call.
130
- *
131
- * @param modifier - Parameter modifier (ref/out/in/none)
132
- * @param argumentExpression - C# argument expression
133
- * @returns C# argument with modifier
134
- */
135
- export const generateCSharpArgument = (modifier, argumentExpression) => {
136
- if (modifier === "none") {
137
- return argumentExpression;
138
- }
139
- return `${modifier} ${argumentExpression}`;
140
- };
141
- /**
142
- * Check if variable declaration is needed for out parameter.
143
- *
144
- * For out parameters in TypeScript:
145
- * const result = { value: 0 }; // Declaration
146
- * TryParse("42", result); // Usage
147
- *
148
- * For out parameters in C#:
149
- * TryParse("42", out int result); // Inline declaration
150
- *
151
- * @param argumentNode - Argument AST node
152
- * @returns True if variable should be declared before the call
153
- */
154
- export const needsOutVariableDeclaration = (argumentNode) => {
155
- // If argument is already a simple identifier, it's already declared
156
- if (ts.isIdentifier(argumentNode)) {
157
- return false;
158
- }
159
- // If argument is an object literal { value: ... }, we need to declare the variable
160
- if (isTSByRefObjectLiteral(argumentNode)) {
161
- return true;
162
- }
163
- return false;
164
- };
165
- /**
166
- * Extract initial value from TSByRef object literal.
167
- *
168
- * { value: 42 } → 42
169
- * { value: getDefault() } → getDefault()
170
- *
171
- * @param argumentNode - Argument AST node (must be object literal)
172
- * @returns Initial value expression, or undefined if no initializer
173
- */
174
- export const extractTSByRefInitialValue = (argumentNode) => {
175
- if (!ts.isObjectLiteralExpression(argumentNode)) {
176
- return undefined;
177
- }
178
- const properties = argumentNode.properties;
179
- if (properties.length !== 1) {
180
- return undefined;
181
- }
182
- const prop = properties[0];
183
- if (!prop || !ts.isPropertyAssignment(prop)) {
184
- return undefined;
185
- }
186
- return prop.initializer;
187
- };
188
- /**
189
- * Determine if ref/out parameter should use inline declaration in C#.
190
- *
191
- * C# 7.0+ supports inline out var:
192
- * if (int.TryParse("42", out var result)) { ... }
193
- *
194
- * We use this when the TypeScript code declares the wrapper inline.
195
- *
196
- * @param argumentNode - Argument AST node
197
- * @returns True if should use inline declaration
198
- */
199
- export const shouldUseInlineDeclaration = (argumentNode) => {
200
- // Use inline declaration if argument is an object literal
201
- return isTSByRefObjectLiteral(argumentNode);
202
- };
203
- //# sourceMappingURL=ref-parameters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref-parameters.js","sourceRoot":"","sources":["../../src/types/ref-parameters.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for ref/out parameter handling
3
- */
4
- export {};
5
- //# sourceMappingURL=ref-parameters.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref-parameters.test.d.ts","sourceRoot":"","sources":["../../src/types/ref-parameters.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,147 +0,0 @@
1
- /**
2
- * Tests for ref/out parameter handling
3
- */
4
- import { describe, it } from "mocha";
5
- import { strict as assert } from "assert";
6
- import { getParameterModifier, requiresTSByRef, generateCSharpParameter, generateCSharpArgument, } from "./ref-parameters.js";
7
- describe("Ref Parameters", () => {
8
- describe("getParameterModifier", () => {
9
- it("should return 'out' for out parameter", () => {
10
- const param = {
11
- name: "result",
12
- type: "System.Int32",
13
- isRef: false,
14
- isOut: true,
15
- isParams: false,
16
- };
17
- const modifier = getParameterModifier(param);
18
- assert.equal(modifier, "out");
19
- });
20
- it("should return 'ref' for ref parameter", () => {
21
- const param = {
22
- name: "value",
23
- type: "System.Int32",
24
- isRef: true,
25
- isOut: false,
26
- isParams: false,
27
- };
28
- const modifier = getParameterModifier(param);
29
- assert.equal(modifier, "ref");
30
- });
31
- it("should return 'in' for in parameter", () => {
32
- const param = {
33
- name: "data",
34
- type: "LargeStruct",
35
- isRef: false,
36
- isOut: false,
37
- isIn: true,
38
- isParams: false,
39
- };
40
- const modifier = getParameterModifier(param);
41
- assert.equal(modifier, "in");
42
- });
43
- it("should return 'none' for regular parameter", () => {
44
- const param = {
45
- name: "input",
46
- type: "System.String",
47
- isRef: false,
48
- isOut: false,
49
- isParams: false,
50
- };
51
- const modifier = getParameterModifier(param);
52
- assert.equal(modifier, "none");
53
- });
54
- it("should prioritize 'out' over 'ref'", () => {
55
- // This should not happen in valid metadata, but test defensive behavior
56
- const param = {
57
- name: "weird",
58
- type: "System.Int32",
59
- isRef: true,
60
- isOut: true,
61
- isParams: false,
62
- };
63
- const modifier = getParameterModifier(param);
64
- assert.equal(modifier, "out");
65
- });
66
- });
67
- describe("requiresTSByRef", () => {
68
- it("should return true for out parameter", () => {
69
- const param = {
70
- name: "result",
71
- type: "System.Int32",
72
- isRef: false,
73
- isOut: true,
74
- isParams: false,
75
- };
76
- assert.ok(requiresTSByRef(param));
77
- });
78
- it("should return true for ref parameter", () => {
79
- const param = {
80
- name: "value",
81
- type: "System.Int32",
82
- isRef: true,
83
- isOut: false,
84
- isParams: false,
85
- };
86
- assert.ok(requiresTSByRef(param));
87
- });
88
- it("should return true for in parameter", () => {
89
- const param = {
90
- name: "data",
91
- type: "LargeStruct",
92
- isRef: false,
93
- isOut: false,
94
- isIn: true,
95
- isParams: false,
96
- };
97
- assert.ok(requiresTSByRef(param));
98
- });
99
- it("should return false for regular parameter", () => {
100
- const param = {
101
- name: "input",
102
- type: "System.String",
103
- isRef: false,
104
- isOut: false,
105
- isParams: false,
106
- };
107
- assert.ok(!requiresTSByRef(param));
108
- });
109
- });
110
- describe("generateCSharpParameter", () => {
111
- it("should generate out parameter", () => {
112
- const param = generateCSharpParameter("out", "int", "result");
113
- assert.equal(param, "out int result");
114
- });
115
- it("should generate ref parameter", () => {
116
- const param = generateCSharpParameter("ref", "string", "value");
117
- assert.equal(param, "ref string value");
118
- });
119
- it("should generate in parameter", () => {
120
- const param = generateCSharpParameter("in", "LargeStruct", "data");
121
- assert.equal(param, "in LargeStruct data");
122
- });
123
- it("should generate regular parameter without keyword", () => {
124
- const param = generateCSharpParameter("none", "string", "input");
125
- assert.equal(param, "string input");
126
- });
127
- });
128
- describe("generateCSharpArgument", () => {
129
- it("should generate out argument", () => {
130
- const arg = generateCSharpArgument("out", "result");
131
- assert.equal(arg, "out result");
132
- });
133
- it("should generate ref argument", () => {
134
- const arg = generateCSharpArgument("ref", "value");
135
- assert.equal(arg, "ref value");
136
- });
137
- it("should generate in argument", () => {
138
- const arg = generateCSharpArgument("in", "data");
139
- assert.equal(arg, "in data");
140
- });
141
- it("should generate regular argument without keyword", () => {
142
- const arg = generateCSharpArgument("none", "input");
143
- assert.equal(arg, "input");
144
- });
145
- });
146
- });
147
- //# sourceMappingURL=ref-parameters.test.js.map