@tsonic/frontend 0.0.15 → 0.0.16

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 (184) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  3. package/dist/graph/extraction/orchestrator.js +3 -2
  4. package/dist/graph/extraction/orchestrator.js.map +1 -1
  5. package/dist/ir/binding/index.d.ts +21 -0
  6. package/dist/ir/binding/index.d.ts.map +1 -1
  7. package/dist/ir/binding/index.js +316 -6
  8. package/dist/ir/binding/index.js.map +1 -1
  9. package/dist/ir/bindings-disambiguation.test.d.ts +11 -0
  10. package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -0
  11. package/dist/ir/bindings-disambiguation.test.js +416 -0
  12. package/dist/ir/bindings-disambiguation.test.js.map +1 -0
  13. package/dist/ir/builder/orchestrator.d.ts.map +1 -1
  14. package/dist/ir/builder/orchestrator.js +8 -2
  15. package/dist/ir/builder/orchestrator.js.map +1 -1
  16. package/dist/ir/builder/types.d.ts +2 -3
  17. package/dist/ir/builder/types.d.ts.map +1 -1
  18. package/dist/ir/builder.test.js +1 -1
  19. package/dist/ir/converters/context.d.ts.map +1 -1
  20. package/dist/ir/converters/context.js +1 -0
  21. package/dist/ir/converters/context.js.map +1 -1
  22. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  23. package/dist/ir/converters/expressions/access.js +161 -39
  24. package/dist/ir/converters/expressions/access.js.map +1 -1
  25. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  26. package/dist/ir/converters/expressions/calls.js +256 -19
  27. package/dist/ir/converters/expressions/calls.js.map +1 -1
  28. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  29. package/dist/ir/converters/expressions/functions.js +30 -12
  30. package/dist/ir/converters/expressions/functions.js.map +1 -1
  31. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  32. package/dist/ir/converters/expressions/operators.js +5 -1
  33. package/dist/ir/converters/expressions/operators.js.map +1 -1
  34. package/dist/ir/converters/flow-narrowing.d.ts +27 -0
  35. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -0
  36. package/dist/ir/converters/flow-narrowing.js +73 -0
  37. package/dist/ir/converters/flow-narrowing.js.map +1 -0
  38. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  39. package/dist/ir/converters/statements/control/conditionals.js +19 -2
  40. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  41. package/dist/ir/expression-converter.d.ts.map +1 -1
  42. package/dist/ir/expression-converter.js +11 -4
  43. package/dist/ir/expression-converter.js.map +1 -1
  44. package/dist/ir/program-context.d.ts +17 -4
  45. package/dist/ir/program-context.d.ts.map +1 -1
  46. package/dist/ir/program-context.js +3 -0
  47. package/dist/ir/program-context.js.map +1 -1
  48. package/dist/ir/thisarg-inference.test.js +18 -18
  49. package/dist/ir/thisarg-inference.test.js.map +1 -1
  50. package/dist/ir/type-system/internal/handle-types.d.ts +7 -0
  51. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  52. package/dist/ir/type-system/internal/type-converter/primitives.d.ts +3 -3
  53. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  54. package/dist/ir/type-system/internal/type-converter/primitives.js +2 -2
  55. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  56. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  57. package/dist/ir/type-system/internal/type-converter/references.js +5 -11
  58. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  59. package/dist/ir/type-system/internal/type-registry.d.ts +6 -1
  60. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
  61. package/dist/ir/type-system/internal/type-registry.js +11 -10
  62. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  63. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  64. package/dist/ir/type-system/internal/universe/clr-catalog.js +20 -4
  65. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  66. package/dist/ir/type-system/internal/universe/source-catalog.d.ts +2 -0
  67. package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -1
  68. package/dist/ir/type-system/internal/universe/source-catalog.js +8 -3
  69. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
  70. package/dist/ir/type-system/internal/universe/types.d.ts +1 -1
  71. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  72. package/dist/ir/type-system/type-system.js +192 -33
  73. package/dist/ir/type-system/type-system.js.map +1 -1
  74. package/dist/ir/types/expressions.d.ts +2 -0
  75. package/dist/ir/types/expressions.d.ts.map +1 -1
  76. package/dist/ir/types/ir-types.d.ts +1 -1
  77. package/dist/ir/types/statements.d.ts +9 -0
  78. package/dist/ir/types/statements.d.ts.map +1 -1
  79. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  80. package/dist/ir/validation/anonymous-type-lowering-pass.js +1 -0
  81. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  82. package/dist/ir/validation/char-validation-pass.d.ts +26 -0
  83. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -0
  84. package/dist/ir/validation/char-validation-pass.js +495 -0
  85. package/dist/ir/validation/char-validation-pass.js.map +1 -0
  86. package/dist/program/bindings.d.ts +16 -0
  87. package/dist/program/bindings.d.ts.map +1 -1
  88. package/dist/program/bindings.js +44 -0
  89. package/dist/program/bindings.js.map +1 -1
  90. package/dist/program/creation.d.ts.map +1 -1
  91. package/dist/program/creation.js +11 -104
  92. package/dist/program/creation.js.map +1 -1
  93. package/dist/program/dependency-graph.d.ts.map +1 -1
  94. package/dist/program/dependency-graph.js +8 -1
  95. package/dist/program/dependency-graph.js.map +1 -1
  96. package/dist/program/diagnostics.d.ts.map +1 -1
  97. package/dist/program/diagnostics.js +0 -6
  98. package/dist/program/diagnostics.js.map +1 -1
  99. package/dist/program/types.d.ts +2 -3
  100. package/dist/program/types.d.ts.map +1 -1
  101. package/dist/resolver/clr-bindings-resolver.d.ts +5 -0
  102. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  103. package/dist/resolver/clr-bindings-resolver.js +121 -31
  104. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  105. package/dist/resolver/clr-bindings-resolver.test.d.ts +2 -0
  106. package/dist/resolver/clr-bindings-resolver.test.d.ts.map +1 -0
  107. package/dist/resolver/clr-bindings-resolver.test.js +161 -0
  108. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -0
  109. package/dist/resolver/namespace.d.ts +2 -1
  110. package/dist/resolver/namespace.d.ts.map +1 -1
  111. package/dist/resolver/namespace.js +5 -2
  112. package/dist/resolver/namespace.js.map +1 -1
  113. package/dist/resolver/namespace.test.js +6 -6
  114. package/dist/resolver/naming-policy.d.ts +20 -0
  115. package/dist/resolver/naming-policy.d.ts.map +1 -0
  116. package/dist/resolver/naming-policy.js +40 -0
  117. package/dist/resolver/naming-policy.js.map +1 -0
  118. package/dist/resolver/naming.d.ts +2 -5
  119. package/dist/resolver/naming.d.ts.map +1 -1
  120. package/dist/resolver/naming.js +2 -30
  121. package/dist/resolver/naming.js.map +1 -1
  122. package/dist/resolver.d.ts +2 -0
  123. package/dist/resolver.d.ts.map +1 -1
  124. package/dist/resolver.js +1 -0
  125. package/dist/resolver.js.map +1 -1
  126. package/dist/resolver.test.js +7 -6
  127. package/dist/resolver.test.js.map +1 -1
  128. package/dist/types/diagnostic.d.ts +1 -1
  129. package/dist/types/diagnostic.d.ts.map +1 -1
  130. package/dist/types/diagnostic.js.map +1 -1
  131. package/dist/validation/core-intrinsics.d.ts +18 -0
  132. package/dist/validation/core-intrinsics.d.ts.map +1 -0
  133. package/dist/validation/core-intrinsics.js +186 -0
  134. package/dist/validation/core-intrinsics.js.map +1 -0
  135. package/dist/validation/index.d.ts +1 -0
  136. package/dist/validation/index.d.ts.map +1 -1
  137. package/dist/validation/index.js +1 -0
  138. package/dist/validation/index.js.map +1 -1
  139. package/dist/validation/orchestrator.d.ts.map +1 -1
  140. package/dist/validation/orchestrator.js +2 -0
  141. package/dist/validation/orchestrator.js.map +1 -1
  142. package/dist/validator.test.js +52 -6
  143. package/dist/validator.test.js.map +1 -1
  144. package/package.json +1 -1
  145. package/dist/ir/clr-type-mappings.d.ts +0 -42
  146. package/dist/ir/clr-type-mappings.d.ts.map +0 -1
  147. package/dist/ir/clr-type-mappings.js +0 -139
  148. package/dist/ir/clr-type-mappings.js.map +0 -1
  149. package/dist/ir/type-converter.d.ts +0 -9
  150. package/dist/ir/type-converter.d.ts.map +0 -1
  151. package/dist/ir/type-converter.js +0 -9
  152. package/dist/ir/type-converter.js.map +0 -1
  153. package/dist/ir/type-system/core.d.ts +0 -29
  154. package/dist/ir/type-system/core.d.ts.map +0 -1
  155. package/dist/ir/type-system/core.js +0 -456
  156. package/dist/ir/type-system/core.js.map +0 -1
  157. package/dist/ir/type-system/internal/type-converter/patterns.d.ts +0 -12
  158. package/dist/ir/type-system/internal/type-converter/patterns.d.ts.map +0 -1
  159. package/dist/ir/type-system/internal/type-converter/patterns.js +0 -82
  160. package/dist/ir/type-system/internal/type-converter/patterns.js.map +0 -1
  161. package/dist/ir/type-universe/assembly-catalog.d.ts +0 -44
  162. package/dist/ir/type-universe/assembly-catalog.d.ts.map +0 -1
  163. package/dist/ir/type-universe/assembly-catalog.js +0 -532
  164. package/dist/ir/type-universe/assembly-catalog.js.map +0 -1
  165. package/dist/ir/type-universe/assembly-catalog.test.d.ts +0 -7
  166. package/dist/ir/type-universe/assembly-catalog.test.d.ts.map +0 -1
  167. package/dist/ir/type-universe/assembly-catalog.test.js +0 -105
  168. package/dist/ir/type-universe/assembly-catalog.test.js.map +0 -1
  169. package/dist/ir/type-universe/index.d.ts +0 -19
  170. package/dist/ir/type-universe/index.d.ts.map +0 -1
  171. package/dist/ir/type-universe/index.js +0 -21
  172. package/dist/ir/type-universe/index.js.map +0 -1
  173. package/dist/ir/type-universe/types.d.ts +0 -436
  174. package/dist/ir/type-universe/types.d.ts.map +0 -1
  175. package/dist/ir/type-universe/types.js +0 -69
  176. package/dist/ir/type-universe/types.js.map +0 -1
  177. package/dist/ir/type-universe/unified-catalog.d.ts +0 -70
  178. package/dist/ir/type-universe/unified-catalog.d.ts.map +0 -1
  179. package/dist/ir/type-universe/unified-catalog.js +0 -319
  180. package/dist/ir/type-universe/unified-catalog.js.map +0 -1
  181. package/dist/ir/type-universe/unified-catalog.test.d.ts +0 -7
  182. package/dist/ir/type-universe/unified-catalog.test.d.ts.map +0 -1
  183. package/dist/ir/type-universe/unified-catalog.test.js +0 -135
  184. package/dist/ir/type-universe/unified-catalog.test.js.map +0 -1
@@ -6,8 +6,11 @@
6
6
  * be normalized nominally (e.g., tsbindgen `$instance & __views` intersections).
7
7
  */
8
8
  import * as ts from "typescript";
9
+ import { existsSync, readFileSync } from "node:fs";
10
+ import { dirname, join } from "node:path";
9
11
  import { getSourceSpan } from "./helpers.js";
10
12
  import { convertExpression } from "../../expression-converter.js";
13
+ import { createDiagnostic } from "../../../types/diagnostic.js";
11
14
  /**
12
15
  * Fallback for getDeclaredPropertyType when TypeSystem can't resolve the member.
13
16
  * Uses TypeSystem.typeOfMemberId() to get member types for:
@@ -157,6 +160,8 @@ const extractTypeName = (inferredType) => {
157
160
  return "Double"; // System.Double (TS number is double)
158
161
  case "boolean":
159
162
  return "Boolean"; // System.Boolean
163
+ case "char":
164
+ return "Char"; // System.Char
160
165
  default:
161
166
  return undefined;
162
167
  }
@@ -215,6 +220,40 @@ const extractTypeName = (inferredType) => {
215
220
  */
216
221
  const resolveHierarchicalBinding = (object, propertyName, ctx) => {
217
222
  const registry = ctx.bindings;
223
+ const toIrMemberBinding = (overloads) => {
224
+ const first = overloads[0];
225
+ if (!first)
226
+ return undefined;
227
+ const getTargetKey = (m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`;
228
+ const targetKey = getTargetKey(first);
229
+ if (overloads.some((m) => getTargetKey(m) !== targetKey)) {
230
+ // Unsafe: overloads map to different CLR targets.
231
+ return undefined;
232
+ }
233
+ const getModifiersKey = (m) => {
234
+ const mods = m.parameterModifiers ?? [];
235
+ if (mods.length === 0)
236
+ return "";
237
+ return [...mods]
238
+ .slice()
239
+ .sort((a, b) => a.index - b.index)
240
+ .map((mod) => `${mod.index}:${mod.modifier}`)
241
+ .join(",");
242
+ };
243
+ const modsKey = getModifiersKey(first);
244
+ const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
245
+ return {
246
+ assembly: first.binding.assembly,
247
+ type: first.binding.type,
248
+ member: first.binding.member,
249
+ // IMPORTANT: Only attach parameterModifiers if consistent across all overloads.
250
+ // Overloads can differ in ref/out/in, and those must be selected at call time.
251
+ parameterModifiers: modsConsistent && first.parameterModifiers && first.parameterModifiers.length > 0
252
+ ? first.parameterModifiers
253
+ : undefined,
254
+ isExtensionMethod: first.isExtensionMethod,
255
+ };
256
+ };
218
257
  // Case 1: object is identifier → check if it's a namespace, then check if property is a type
219
258
  if (object.kind === "identifier") {
220
259
  const namespace = registry.getNamespace(object.name);
@@ -234,17 +273,10 @@ const resolveHierarchicalBinding = (object, propertyName, ctx) => {
234
273
  const directType = registry.getType(object.name) ??
235
274
  (object.originalName ? registry.getType(object.originalName) : undefined);
236
275
  if (directType) {
237
- const member = directType.members.find((m) => m.alias === propertyName);
238
- if (member) {
239
- // Found a member binding for direct type import!
240
- return {
241
- assembly: member.binding.assembly,
242
- type: member.binding.type,
243
- member: member.binding.member,
244
- parameterModifiers: member.parameterModifiers,
245
- isExtensionMethod: member.isExtensionMethod,
246
- };
247
- }
276
+ const overloads = registry.getMemberOverloads(directType.alias, propertyName);
277
+ if (!overloads || overloads.length === 0)
278
+ return undefined;
279
+ return toIrMemberBinding(overloads);
248
280
  }
249
281
  }
250
282
  // Case 2: object is member expression with a type reference → check if property is a member
@@ -257,17 +289,10 @@ const resolveHierarchicalBinding = (object, propertyName, ctx) => {
257
289
  const type = namespace.types.find((t) => t.alias === object.property);
258
290
  if (type) {
259
291
  // The object is a type reference (namespace.type), now check if property is a member
260
- const member = type.members.find((m) => m.alias === propertyName);
261
- if (member) {
262
- // Found a member binding!
263
- return {
264
- assembly: member.binding.assembly,
265
- type: member.binding.type,
266
- member: member.binding.member,
267
- parameterModifiers: member.parameterModifiers,
268
- isExtensionMethod: member.isExtensionMethod,
269
- };
270
- }
292
+ const overloads = registry.getMemberOverloads(type.alias, propertyName);
293
+ if (!overloads || overloads.length === 0)
294
+ return undefined;
295
+ return toIrMemberBinding(overloads);
271
296
  }
272
297
  }
273
298
  }
@@ -277,19 +302,57 @@ const resolveHierarchicalBinding = (object, propertyName, ctx) => {
277
302
  const objectTypeName = extractTypeName(object.inferredType);
278
303
  if (objectTypeName) {
279
304
  // Look up member by type alias and property name
280
- const member = registry.getMember(objectTypeName, propertyName);
281
- if (member) {
282
- return {
283
- assembly: member.binding.assembly,
284
- type: member.binding.type,
285
- member: member.binding.member,
286
- parameterModifiers: member.parameterModifiers,
287
- isExtensionMethod: member.isExtensionMethod,
288
- };
289
- }
305
+ const overloads = registry.getMemberOverloads(objectTypeName, propertyName);
306
+ if (!overloads || overloads.length === 0)
307
+ return undefined;
308
+ return toIrMemberBinding(overloads);
290
309
  }
291
310
  return undefined;
292
311
  };
312
+ const findNearestBindingsJson = (filePath) => {
313
+ let currentDir = dirname(filePath);
314
+ while (true) {
315
+ const candidate = join(currentDir, "bindings.json");
316
+ if (existsSync(candidate))
317
+ return candidate;
318
+ const parentDir = dirname(currentDir);
319
+ if (parentDir === currentDir)
320
+ return undefined;
321
+ currentDir = parentDir;
322
+ }
323
+ };
324
+ const disambiguateOverloadsByDeclaringType = (overloads, memberId, declaringTypeTsName, ctx) => {
325
+ const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
326
+ if (!declSourceFilePath)
327
+ return undefined;
328
+ const bindingsPath = findNearestBindingsJson(declSourceFilePath);
329
+ if (!bindingsPath)
330
+ return undefined;
331
+ const raw = (() => {
332
+ try {
333
+ return JSON.parse(readFileSync(bindingsPath, "utf8"));
334
+ }
335
+ catch {
336
+ return undefined;
337
+ }
338
+ })();
339
+ if (!raw || typeof raw !== "object")
340
+ return undefined;
341
+ const types = raw.types;
342
+ if (!Array.isArray(types))
343
+ return undefined;
344
+ const typeEntry = types.find((t) => {
345
+ if (!t || typeof t !== "object")
346
+ return false;
347
+ const tsEmitName = t.tsEmitName;
348
+ return tsEmitName === declaringTypeTsName;
349
+ });
350
+ const expectedClrType = typeEntry && typeof typeEntry.clrName === "string" ? typeEntry.clrName : undefined;
351
+ if (!expectedClrType)
352
+ return undefined;
353
+ const filtered = overloads.filter((m) => m.binding.type === expectedClrType);
354
+ return filtered.length > 0 ? filtered : undefined;
355
+ };
293
356
  /**
294
357
  * Resolve hierarchical binding for a member access using Binding-resolved MemberId.
295
358
  *
@@ -315,15 +378,74 @@ const resolveHierarchicalBindingFromMemberId = (node, propertyName, ctx) => {
315
378
  return name;
316
379
  };
317
380
  const typeAlias = normalizeDeclaringType(declaringTypeName);
318
- const member = ctx.bindings.getMember(typeAlias, propertyName);
319
- if (!member)
381
+ const overloadsAll = ctx.bindings.getMemberOverloads(typeAlias, propertyName);
382
+ if (!overloadsAll || overloadsAll.length === 0) {
383
+ const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
384
+ const bindingsPath = declSourceFilePath !== undefined
385
+ ? findNearestBindingsJson(declSourceFilePath)
386
+ : undefined;
387
+ // Airplane-grade rule: If this member resolves to a tsbindgen declaration,
388
+ // we MUST have a CLR binding; we must never guess member names via naming policy.
389
+ //
390
+ // We treat it as CLR-bound if:
391
+ // - The declaring type is a tsbindgen extension interface (`__Ext_*`), OR
392
+ // - We can locate a bindings.json near the declaration source file.
393
+ const isClrBound = declaringTypeName.startsWith("__Ext_") || bindingsPath !== undefined;
394
+ if (isClrBound) {
395
+ ctx.diagnostics.push(createDiagnostic("TSN4004", "error", `Missing CLR binding for '${typeAlias}.${propertyName}'.`, getSourceSpan(node), bindingsPath
396
+ ? `No matching member binding was found in the loaded bindings for this tsbindgen declaration. (bindings.json: ${bindingsPath})`
397
+ : "No matching member binding was found for this tsbindgen extension interface member."));
398
+ }
320
399
  return undefined;
400
+ }
401
+ let overloads = overloadsAll;
402
+ const targetKeys = new Set(overloads.map((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`));
403
+ if (targetKeys.size > 1) {
404
+ const disambiguated = disambiguateOverloadsByDeclaringType(overloads, memberId, typeAlias, ctx);
405
+ if (disambiguated) {
406
+ overloads = disambiguated;
407
+ }
408
+ }
409
+ const first = overloads[0];
410
+ if (!first)
411
+ return undefined;
412
+ const targetKey = `${first.binding.assembly}:${first.binding.type}::${first.binding.member}`;
413
+ if (overloads.some((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}` !== targetKey)) {
414
+ const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
415
+ const bindingsPath = declSourceFilePath !== undefined
416
+ ? findNearestBindingsJson(declSourceFilePath)
417
+ : undefined;
418
+ // Only treat this as a CLR ambiguity when we can locate a bindings.json near the
419
+ // TS declaration source (tsbindgen packages). Otherwise, fall back to "no binding"
420
+ // and let local codepaths handle naming policy.
421
+ if (bindingsPath) {
422
+ const targets = [...new Set(overloads.map((m) => `${m.binding.type}.${m.binding.member}`))]
423
+ .sort()
424
+ .join(", ");
425
+ ctx.diagnostics.push(createDiagnostic("TSN4003", "error", `Ambiguous CLR binding for '${typeAlias}.${propertyName}'. Multiple CLR targets found: ${targets}.`, getSourceSpan(node), `This usually indicates multiple tsbindgen packages export the same TS type/member alias. Ensure the correct package is imported, or regenerate bindings to avoid collisions. (bindings.json: ${bindingsPath})`));
426
+ }
427
+ return undefined;
428
+ }
429
+ const getModifiersKey = (m) => {
430
+ const mods = m.parameterModifiers ?? [];
431
+ if (mods.length === 0)
432
+ return "";
433
+ return [...mods]
434
+ .slice()
435
+ .sort((a, b) => a.index - b.index)
436
+ .map((mod) => `${mod.index}:${mod.modifier}`)
437
+ .join(",");
438
+ };
439
+ const modsKey = getModifiersKey(first);
440
+ const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
321
441
  return {
322
- assembly: member.binding.assembly,
323
- type: member.binding.type,
324
- member: member.binding.member,
325
- parameterModifiers: member.parameterModifiers,
326
- isExtensionMethod: member.isExtensionMethod,
442
+ assembly: first.binding.assembly,
443
+ type: first.binding.type,
444
+ member: first.binding.member,
445
+ parameterModifiers: modsConsistent && first.parameterModifiers && first.parameterModifiers.length > 0
446
+ ? first.parameterModifiers
447
+ : undefined,
448
+ isExtensionMethod: first.isExtensionMethod,
327
449
  };
328
450
  };
329
451
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"access.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/access.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/access.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/calls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAwF/D;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,aAAa,EAC1C,KAAK,cAAc,EACnB,iBAAiB,MAAM,KACtB,MAAM,GAAG,SAqFX,CAAC;AAqCF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,EACvB,KAAK,cAAc,KAClB,gBAAgB,GAAG,mBAAmB,GAAG,sBA6Q3C,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,aAAa,EACtB,KAAK,cAAc,KAClB,eAuJF,CAAC"}
1
+ {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/calls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyF/D;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,aAAa,EAC1C,KAAK,cAAc,EACnB,iBAAiB,MAAM,KACtB,MAAM,GAAG,SAqFX,CAAC;AAkOF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,EACvB,KAAK,cAAc,KAClB,gBAAgB,GAAG,mBAAmB,GAAG,sBAkU3C,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,aAAa,EACtB,KAAK,cAAc,KAClB,eAyJF,CAAC"}
@@ -145,23 +145,9 @@ export const getDeclaredReturnType = (node, ctx, receiverIrType) => {
145
145
  // Return TypeSystem's answer directly - no fallbacks
146
146
  return resolved.returnType;
147
147
  };
148
- /**
149
- * Extract argument passing modes from member binding's parameter modifiers.
150
- * Converts parameterModifiers to the argumentPassing array format.
151
- * Returns undefined if no modifiers are present.
152
- */
153
- const extractArgumentPassingFromBinding = (callee, argCount) => {
154
- // Check if callee is a member access with parameter modifiers
155
- if (callee.kind !== "memberAccess" ||
156
- !callee.memberBinding?.parameterModifiers) {
157
- return undefined;
158
- }
159
- const modifiers = callee.memberBinding.parameterModifiers;
160
- if (modifiers.length === 0) {
148
+ const extractArgumentPassingFromParameterModifiers = (modifiers, argCount) => {
149
+ if (modifiers.length === 0)
161
150
  return undefined;
162
- }
163
- // Build the argumentPassing array
164
- // Initialize all as "value", then override based on modifiers
165
151
  const passing = Array(argCount).fill("value");
166
152
  for (const mod of modifiers) {
167
153
  if (mod.index >= 0 && mod.index < argCount) {
@@ -170,6 +156,208 @@ const extractArgumentPassingFromBinding = (callee, argCount) => {
170
156
  }
171
157
  return passing;
172
158
  };
159
+ /**
160
+ * Extract argument passing modes from CLR bindings for the *selected overload*.
161
+ *
162
+ * CRITICAL: Methods can be overloaded, and overloads can differ in ref/out/in modifiers.
163
+ * We must not attach a single overload's modifiers to the member access itself.
164
+ *
165
+ * This resolver selects the best-matching binding overload using the call's argument
166
+ * types, then applies that overload's parameterModifiers.
167
+ */
168
+ const extractArgumentPassingFromBinding = (callee, argCount, ctx, parameterTypes, argTypes) => {
169
+ if (callee.kind !== "memberAccess" || !callee.memberBinding)
170
+ return undefined;
171
+ // Fast path: already-resolved modifiers (extension methods or non-overloaded members).
172
+ const directMods = callee.memberBinding.parameterModifiers;
173
+ if (directMods && directMods.length > 0) {
174
+ return extractArgumentPassingFromParameterModifiers(directMods, argCount);
175
+ }
176
+ // No member binding → no CLR parameter modifiers.
177
+ const binding = callee.memberBinding;
178
+ const overloadsAll = ctx.bindings.getClrMemberOverloads(binding.assembly, binding.type, binding.member);
179
+ if (!overloadsAll || overloadsAll.length === 0)
180
+ return undefined;
181
+ const calledName = typeof callee.property === "string" ? callee.property : undefined;
182
+ const overloads = calledName
183
+ ? overloadsAll.filter((m) => m.alias === calledName || m.name === calledName)
184
+ : overloadsAll;
185
+ if (overloads.length === 0)
186
+ return undefined;
187
+ const matchTypes = parameterTypes ?? argTypes;
188
+ const hasMatchTypes = matchTypes && matchTypes.some((t) => t !== undefined);
189
+ const splitSignatureTypeList = (str) => {
190
+ const result = [];
191
+ let depth = 0;
192
+ let current = "";
193
+ for (const char of str) {
194
+ if (char === "[") {
195
+ depth++;
196
+ current += char;
197
+ }
198
+ else if (char === "]") {
199
+ depth--;
200
+ current += char;
201
+ }
202
+ else if (char === "," && depth === 0) {
203
+ result.push(current.trim());
204
+ current = "";
205
+ }
206
+ else {
207
+ current += char;
208
+ }
209
+ }
210
+ if (current.trim())
211
+ result.push(current.trim());
212
+ return result;
213
+ };
214
+ const parseParameterTypes = (sig) => {
215
+ if (!sig)
216
+ return [];
217
+ const paramsMatch = sig.match(/\|\(([^)]*)\):/);
218
+ const paramsStr = paramsMatch?.[1]?.trim();
219
+ if (!paramsStr)
220
+ return [];
221
+ return splitSignatureTypeList(paramsStr).map((s) => s.trim());
222
+ };
223
+ const extractSimpleClrName = (typeName) => {
224
+ let t = typeName.trim();
225
+ if (t.endsWith("&"))
226
+ t = t.slice(0, -1);
227
+ if (t.endsWith("[]"))
228
+ t = t.slice(0, -2);
229
+ const bracket = t.indexOf("[");
230
+ if (bracket >= 0)
231
+ t = t.slice(0, bracket);
232
+ const lastDot = t.lastIndexOf(".");
233
+ if (lastDot >= 0)
234
+ t = t.slice(lastDot + 1);
235
+ return t;
236
+ };
237
+ const primitiveToClrSimpleName = (name) => {
238
+ switch (name) {
239
+ case "string":
240
+ return "String";
241
+ case "boolean":
242
+ case "bool":
243
+ return "Boolean";
244
+ case "char":
245
+ return "Char";
246
+ case "byte":
247
+ return "Byte";
248
+ case "sbyte":
249
+ return "SByte";
250
+ case "short":
251
+ return "Int16";
252
+ case "ushort":
253
+ return "UInt16";
254
+ case "int":
255
+ return "Int32";
256
+ case "uint":
257
+ return "UInt32";
258
+ case "long":
259
+ return "Int64";
260
+ case "ulong":
261
+ return "UInt64";
262
+ case "float":
263
+ return "Single";
264
+ case "double":
265
+ return "Double";
266
+ case "decimal":
267
+ return "Decimal";
268
+ default:
269
+ return undefined;
270
+ }
271
+ };
272
+ const collectMatchNames = (t) => {
273
+ switch (t.kind) {
274
+ case "primitiveType": {
275
+ const mapped = primitiveToClrSimpleName(t.name);
276
+ return mapped ? [mapped] : [];
277
+ }
278
+ case "referenceType": {
279
+ const lastDot = t.name.lastIndexOf(".");
280
+ const simple = lastDot >= 0 ? t.name.slice(lastDot + 1) : t.name;
281
+ return [simple.replace(/\$instance$/, "").replace(/^\_\_/, "").replace(/\$views$/, "")];
282
+ }
283
+ case "unionType":
284
+ return Array.from(new Set(t.types.flatMap((x) => collectMatchNames(x))));
285
+ case "intersectionType":
286
+ return Array.from(new Set(t.types.flatMap((x) => collectMatchNames(x))));
287
+ default:
288
+ return [];
289
+ }
290
+ };
291
+ const modifiersKey = (m) => {
292
+ const mods = m.parameterModifiers ?? [];
293
+ if (mods.length === 0)
294
+ return "";
295
+ return [...mods]
296
+ .slice()
297
+ .sort((a, b) => a.index - b.index)
298
+ .map((mod) => `${mod.index}:${mod.modifier}`)
299
+ .join(",");
300
+ };
301
+ const scoreCandidate = (m) => {
302
+ if (!hasMatchTypes)
303
+ return 0;
304
+ const paramTypes = parseParameterTypes(m.signature);
305
+ let score = 0;
306
+ for (let i = 0; i < argCount; i++) {
307
+ const expected = matchTypes?.[i];
308
+ if (!expected)
309
+ continue;
310
+ const expectedNames = collectMatchNames(expected);
311
+ if (expectedNames.length === 0)
312
+ continue;
313
+ const paramType = paramTypes[i];
314
+ if (!paramType)
315
+ continue;
316
+ const paramName = extractSimpleClrName(paramType);
317
+ if (expectedNames.includes(paramName)) {
318
+ score += 10;
319
+ }
320
+ else {
321
+ score -= 3;
322
+ }
323
+ }
324
+ return score;
325
+ };
326
+ // Discard candidates that can't accept the provided arguments (best-effort, arity only).
327
+ const candidates = overloads.filter((m) => {
328
+ if (typeof m.parameterCount !== "number")
329
+ return true;
330
+ return m.parameterCount >= argCount;
331
+ });
332
+ if (candidates.length === 0)
333
+ return undefined;
334
+ let bestScore = Number.NEGATIVE_INFINITY;
335
+ let best = [];
336
+ for (const c of candidates) {
337
+ const score = scoreCandidate(c);
338
+ if (score > bestScore) {
339
+ bestScore = score;
340
+ best = [c];
341
+ }
342
+ else if (score === bestScore) {
343
+ best.push(c);
344
+ }
345
+ }
346
+ if (best.length === 0)
347
+ return undefined;
348
+ // If ambiguous, only accept when all best candidates agree on modifiers.
349
+ const first = best[0];
350
+ if (!first)
351
+ return undefined;
352
+ const key = modifiersKey(first);
353
+ if (best.some((m) => modifiersKey(m) !== key)) {
354
+ return undefined;
355
+ }
356
+ const chosenMods = first.parameterModifiers;
357
+ if (!chosenMods || chosenMods.length === 0)
358
+ return undefined;
359
+ return extractArgumentPassingFromParameterModifiers(chosenMods, argCount);
360
+ };
173
361
  /**
174
362
  * Convert call expression
175
363
  */
@@ -251,6 +439,55 @@ export const convertCallExpression = (node, ctx) => {
251
439
  const explicitTypeArgs = node.typeArguments
252
440
  ? node.typeArguments.map((ta) => typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(ta)))
253
441
  : undefined;
442
+ // If we can't resolve a signature handle (common for calls through function-typed
443
+ // variables), fall back to the callee's inferred function type.
444
+ const calleeFunctionType = (() => {
445
+ const t = callee.inferredType;
446
+ if (!t)
447
+ return undefined;
448
+ if (t.kind === "functionType")
449
+ return t;
450
+ return typeSystem.delegateToFunctionType(t) ?? undefined;
451
+ })();
452
+ if (!sigId && calleeFunctionType) {
453
+ const params = calleeFunctionType.parameters;
454
+ const paramTypesForArgs = [];
455
+ const hasRest = params.some((p) => p.isRest);
456
+ for (let i = 0; i < node.arguments.length; i++) {
457
+ const p = params[i] ?? (hasRest ? params[params.length - 1] : undefined);
458
+ paramTypesForArgs[i] = p?.type;
459
+ }
460
+ const args = [];
461
+ for (let i = 0; i < node.arguments.length; i++) {
462
+ const arg = node.arguments[i];
463
+ if (!arg)
464
+ continue;
465
+ const expectedType = paramTypesForArgs[i];
466
+ if (ts.isSpreadElement(arg)) {
467
+ const spreadExpr = convertExpression(arg.expression, ctx, undefined);
468
+ args.push({
469
+ kind: "spread",
470
+ expression: spreadExpr,
471
+ inferredType: spreadExpr.inferredType,
472
+ sourceSpan: getSourceSpan(arg),
473
+ });
474
+ continue;
475
+ }
476
+ args.push(convertExpression(arg, ctx, expectedType));
477
+ }
478
+ return {
479
+ kind: "call",
480
+ callee,
481
+ arguments: args,
482
+ isOptional: node.questionDotToken !== undefined,
483
+ inferredType: calleeFunctionType.returnType,
484
+ sourceSpan: getSourceSpan(node),
485
+ typeArguments,
486
+ requiresSpecialization,
487
+ argumentPassing: extractArgumentPassing(node, ctx),
488
+ parameterTypes: paramTypesForArgs,
489
+ };
490
+ }
254
491
  const initialResolved = sigId
255
492
  ? typeSystem.resolveCall({
256
493
  sigId,
@@ -260,9 +497,6 @@ export const convertCallExpression = (node, ctx) => {
260
497
  })
261
498
  : undefined;
262
499
  const initialParameterTypes = initialResolved?.parameterTypes;
263
- // Try to get argument passing from binding's parameter modifiers first (tsbindgen format),
264
- // then fall back to TypeScript declaration analysis (ref<T>/out<T>/in<T> wrapper types)
265
- const argumentPassingFromBinding = extractArgumentPassingFromBinding(callee, node.arguments.length);
266
500
  const isLambdaArg = (expr) => {
267
501
  if (ts.isArrowFunction(expr) || ts.isFunctionExpression(expr))
268
502
  return true;
@@ -359,6 +593,7 @@ export const convertCallExpression = (node, ctx) => {
359
593
  : lambdaContextResolved;
360
594
  const parameterTypes = finalResolved?.parameterTypes ?? initialParameterTypes;
361
595
  const inferredType = finalResolved?.returnType ?? { kind: "unknownType" };
596
+ const argumentPassingFromBinding = extractArgumentPassingFromBinding(callee, node.arguments.length, ctx, parameterTypes, argTypes);
362
597
  const argumentPassing = argumentPassingFromBinding ??
363
598
  (finalResolved
364
599
  ? finalResolved.parameterModes.slice(0, node.arguments.length)
@@ -513,6 +748,7 @@ export const convertNewExpression = (node, ctx) => {
513
748
  // Phase 15: inferredType MUST be finalResolved.returnType
514
749
  // If sigId is missing, use unknownType (do not fabricate a nominal type)
515
750
  const inferredType = finalResolved?.returnType ?? { kind: "unknownType" };
751
+ const parameterTypes = finalResolved?.parameterTypes ?? initialParameterTypes;
516
752
  // Phase 18: IrNewExpression.typeArguments must include inferred type arguments.
517
753
  // The emitter relies on this field to emit generic constructor calls (e.g., new Box<int>(...)).
518
754
  const inferredTypeArguments = inferredType.kind === "referenceType" ? inferredType.typeArguments : undefined;
@@ -526,6 +762,7 @@ export const convertNewExpression = (node, ctx) => {
526
762
  arguments: convertedArgs,
527
763
  inferredType,
528
764
  sourceSpan: getSourceSpan(node),
765
+ parameterTypes,
529
766
  typeArguments: typeArgumentsForIr,
530
767
  requiresSpecialization,
531
768
  };