@tsonic/emitter 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/array.test.d.ts +1 -1
  3. package/dist/array.test.js +17 -16
  4. package/dist/array.test.js.map +1 -1
  5. package/dist/core/attributes.test.js +2 -2
  6. package/dist/core/attributes.test.js.map +1 -1
  7. package/dist/core/imports.d.ts.map +1 -1
  8. package/dist/core/imports.js +1 -9
  9. package/dist/core/imports.js.map +1 -1
  10. package/dist/core/module-emitter/static-container.d.ts.map +1 -1
  11. package/dist/core/module-emitter/static-container.js +3 -1
  12. package/dist/core/module-emitter/static-container.js.map +1 -1
  13. package/dist/core/unsafe.d.ts +11 -0
  14. package/dist/core/unsafe.d.ts.map +1 -0
  15. package/dist/core/unsafe.js +264 -0
  16. package/dist/core/unsafe.js.map +1 -0
  17. package/dist/emitter-types/context.d.ts +1 -1
  18. package/dist/emitter-types/context.d.ts.map +1 -1
  19. package/dist/emitter-types/context.js +4 -3
  20. package/dist/emitter-types/context.js.map +1 -1
  21. package/dist/emitter-types/core.d.ts +4 -2
  22. package/dist/emitter-types/core.d.ts.map +1 -1
  23. package/dist/emitter-types/fqn.d.ts +0 -7
  24. package/dist/emitter-types/fqn.d.ts.map +1 -1
  25. package/dist/emitter-types/fqn.js +0 -8
  26. package/dist/emitter-types/fqn.js.map +1 -1
  27. package/dist/expression-emitter.d.ts.map +1 -1
  28. package/dist/expression-emitter.js +268 -63
  29. package/dist/expression-emitter.js.map +1 -1
  30. package/dist/expressions/access.d.ts.map +1 -1
  31. package/dist/expressions/access.js +36 -40
  32. package/dist/expressions/access.js.map +1 -1
  33. package/dist/expressions/calls.d.ts.map +1 -1
  34. package/dist/expressions/calls.js +233 -70
  35. package/dist/expressions/calls.js.map +1 -1
  36. package/dist/expressions/collections.d.ts.map +1 -1
  37. package/dist/expressions/collections.js +37 -41
  38. package/dist/expressions/collections.js.map +1 -1
  39. package/dist/expressions/functions.d.ts.map +1 -1
  40. package/dist/expressions/functions.js +30 -10
  41. package/dist/expressions/functions.js.map +1 -1
  42. package/dist/expressions/identifiers.d.ts.map +1 -1
  43. package/dist/expressions/identifiers.js +5 -30
  44. package/dist/expressions/identifiers.js.map +1 -1
  45. package/dist/expressions/index.test.js +87 -198
  46. package/dist/expressions/index.test.js.map +1 -1
  47. package/dist/expressions/literals.d.ts +4 -5
  48. package/dist/expressions/literals.d.ts.map +1 -1
  49. package/dist/expressions/literals.js +62 -15
  50. package/dist/expressions/literals.js.map +1 -1
  51. package/dist/expressions/operators.d.ts +0 -4
  52. package/dist/expressions/operators.d.ts.map +1 -1
  53. package/dist/expressions/operators.js +49 -19
  54. package/dist/expressions/operators.js.map +1 -1
  55. package/dist/expressions/other.d.ts.map +1 -1
  56. package/dist/expressions/other.js +21 -3
  57. package/dist/expressions/other.js.map +1 -1
  58. package/dist/extension-methods.test.d.ts +5 -0
  59. package/dist/extension-methods.test.d.ts.map +1 -0
  60. package/dist/extension-methods.test.js +110 -0
  61. package/dist/extension-methods.test.js.map +1 -0
  62. package/dist/generator-exchange.d.ts.map +1 -1
  63. package/dist/generator-exchange.js +2 -1
  64. package/dist/generator-exchange.js.map +1 -1
  65. package/dist/generator.test.js +9 -9
  66. package/dist/generator.test.js.map +1 -1
  67. package/dist/golden-tests/discovery.d.ts +6 -11
  68. package/dist/golden-tests/discovery.d.ts.map +1 -1
  69. package/dist/golden-tests/discovery.js +14 -79
  70. package/dist/golden-tests/discovery.js.map +1 -1
  71. package/dist/golden-tests/index.d.ts +1 -1
  72. package/dist/golden-tests/index.d.ts.map +1 -1
  73. package/dist/golden-tests/index.js.map +1 -1
  74. package/dist/golden-tests/runner.d.ts.map +1 -1
  75. package/dist/golden-tests/runner.js +6 -7
  76. package/dist/golden-tests/runner.js.map +1 -1
  77. package/dist/golden-tests/types.d.ts +0 -7
  78. package/dist/golden-tests/types.d.ts.map +1 -1
  79. package/dist/golden.test.d.ts +3 -10
  80. package/dist/golden.test.d.ts.map +1 -1
  81. package/dist/golden.test.js +8 -24
  82. package/dist/golden.test.js.map +1 -1
  83. package/dist/hierarchical-bindings.test.js +17 -11
  84. package/dist/hierarchical-bindings.test.js.map +1 -1
  85. package/dist/integration.test.js +61 -20
  86. package/dist/integration.test.js.map +1 -1
  87. package/dist/invariants/emitter-globals-subset.test.d.ts +1 -1
  88. package/dist/invariants/emitter-globals-subset.test.js +34 -74
  89. package/dist/invariants/emitter-globals-subset.test.js.map +1 -1
  90. package/dist/invariants/numeric-proof-contract.test.js +3 -3
  91. package/dist/invariants/numeric-proof-contract.test.js.map +1 -1
  92. package/dist/patterns.d.ts +98 -0
  93. package/dist/patterns.d.ts.map +1 -0
  94. package/dist/patterns.js +366 -0
  95. package/dist/patterns.js.map +1 -0
  96. package/dist/patterns.test.d.ts +15 -0
  97. package/dist/patterns.test.d.ts.map +1 -0
  98. package/dist/patterns.test.js +1262 -0
  99. package/dist/patterns.test.js.map +1 -0
  100. package/dist/specialization/generation.d.ts.map +1 -1
  101. package/dist/specialization/generation.js +2 -2
  102. package/dist/specialization/generation.js.map +1 -1
  103. package/dist/specialization/substitution.d.ts.map +1 -1
  104. package/dist/specialization/substitution.js +4 -0
  105. package/dist/specialization/substitution.js.map +1 -1
  106. package/dist/specialization/type-aliases.test.js +1 -1
  107. package/dist/specialization/type-aliases.test.js.map +1 -1
  108. package/dist/statement-emitter.d.ts.map +1 -1
  109. package/dist/statement-emitter.js +1 -1
  110. package/dist/statement-emitter.js.map +1 -1
  111. package/dist/statements/blocks.d.ts.map +1 -1
  112. package/dist/statements/blocks.js +14 -45
  113. package/dist/statements/blocks.js.map +1 -1
  114. package/dist/statements/classes/index.d.ts +1 -1
  115. package/dist/statements/classes/index.d.ts.map +1 -1
  116. package/dist/statements/classes/index.js +1 -1
  117. package/dist/statements/classes/index.js.map +1 -1
  118. package/dist/statements/classes/inline-types.d.ts.map +1 -1
  119. package/dist/statements/classes/inline-types.js +11 -1
  120. package/dist/statements/classes/inline-types.js.map +1 -1
  121. package/dist/statements/classes/members/constructors.d.ts.map +1 -1
  122. package/dist/statements/classes/members/constructors.js +30 -12
  123. package/dist/statements/classes/members/constructors.js.map +1 -1
  124. package/dist/statements/classes/members/methods.d.ts.map +1 -1
  125. package/dist/statements/classes/members/methods.js +51 -23
  126. package/dist/statements/classes/members/methods.js.map +1 -1
  127. package/dist/statements/classes/members/orchestrator.d.ts.map +1 -1
  128. package/dist/statements/classes/members/orchestrator.js +1 -3
  129. package/dist/statements/classes/members/orchestrator.js.map +1 -1
  130. package/dist/statements/classes/members/properties.d.ts.map +1 -1
  131. package/dist/statements/classes/members/properties.js +56 -9
  132. package/dist/statements/classes/members/properties.js.map +1 -1
  133. package/dist/statements/classes/parameters.d.ts +43 -1
  134. package/dist/statements/classes/parameters.d.ts.map +1 -1
  135. package/dist/statements/classes/parameters.js +73 -13
  136. package/dist/statements/classes/parameters.js.map +1 -1
  137. package/dist/statements/classes/properties.d.ts.map +1 -1
  138. package/dist/statements/classes/properties.js +1 -1
  139. package/dist/statements/classes/properties.js.map +1 -1
  140. package/dist/statements/classes.d.ts +1 -1
  141. package/dist/statements/classes.d.ts.map +1 -1
  142. package/dist/statements/classes.js +1 -1
  143. package/dist/statements/classes.js.map +1 -1
  144. package/dist/statements/control/conditionals.d.ts.map +1 -1
  145. package/dist/statements/control/conditionals.js +78 -23
  146. package/dist/statements/control/conditionals.js.map +1 -1
  147. package/dist/statements/control/loops.d.ts.map +1 -1
  148. package/dist/statements/control/loops.js +25 -5
  149. package/dist/statements/control/loops.js.map +1 -1
  150. package/dist/statements/declarations/classes.d.ts.map +1 -1
  151. package/dist/statements/declarations/classes.js +128 -10
  152. package/dist/statements/declarations/classes.js.map +1 -1
  153. package/dist/statements/declarations/functions.d.ts.map +1 -1
  154. package/dist/statements/declarations/functions.js +28 -12
  155. package/dist/statements/declarations/functions.js.map +1 -1
  156. package/dist/statements/declarations/interfaces.d.ts.map +1 -1
  157. package/dist/statements/declarations/interfaces.js +50 -7
  158. package/dist/statements/declarations/interfaces.js.map +1 -1
  159. package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
  160. package/dist/statements/declarations/type-aliases.js +6 -1
  161. package/dist/statements/declarations/type-aliases.js.map +1 -1
  162. package/dist/statements/declarations/variables.d.ts.map +1 -1
  163. package/dist/statements/declarations/variables.js +196 -38
  164. package/dist/statements/declarations/variables.js.map +1 -1
  165. package/dist/statements/index.test.js +7 -5
  166. package/dist/statements/index.test.js.map +1 -1
  167. package/dist/types/arrays.d.ts +3 -9
  168. package/dist/types/arrays.d.ts.map +1 -1
  169. package/dist/types/arrays.js +5 -19
  170. package/dist/types/arrays.js.map +1 -1
  171. package/dist/types/parameters.d.ts.map +1 -1
  172. package/dist/types/parameters.js +36 -1
  173. package/dist/types/parameters.js.map +1 -1
  174. package/dist/types/parameters.test.js +1 -1
  175. package/dist/types/parameters.test.js.map +1 -1
  176. package/dist/types/references.d.ts.map +1 -1
  177. package/dist/types/references.js +86 -51
  178. package/dist/types/references.js.map +1 -1
  179. package/dist/types/references.test.js +35 -95
  180. package/dist/types/references.test.js.map +1 -1
  181. package/dist/types/unions.d.ts.map +1 -1
  182. package/dist/types/unions.js +20 -0
  183. package/dist/types/unions.js.map +1 -1
  184. package/package.json +3 -3
@@ -1,19 +1,13 @@
1
1
  /**
2
2
  * Array type emission
3
3
  *
4
- * In dotnet mode:
5
- * - origin: "explicit" emit native CLR array (T[])
6
- * - origin: undefined → emit List<T>
7
- *
8
- * In js mode: always emit List<T> (JS semantics)
4
+ * All array types emit as native CLR arrays (T[]).
5
+ * List<T> is only used when explicitly requested via new List<T>().
9
6
  */
10
7
  import { IrType } from "@tsonic/frontend";
11
8
  import { EmitterContext } from "../types.js";
12
9
  /**
13
- * Emit array types
14
- *
15
- * - Explicit T[] annotation in dotnet mode → native T[]
16
- * - Otherwise → List<T>
10
+ * Emit array types as native CLR arrays
17
11
  */
18
12
  export declare const emitArrayType: (type: Extract<IrType, {
19
13
  kind: "arrayType";
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../src/types/arrays.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EAC5C,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAczB,CAAC"}
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../src/types/arrays.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EAC5C,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAKzB,CAAC"}
@@ -1,30 +1,16 @@
1
1
  /**
2
2
  * Array type emission
3
3
  *
4
- * In dotnet mode:
5
- * - origin: "explicit" emit native CLR array (T[])
6
- * - origin: undefined → emit List<T>
7
- *
8
- * In js mode: always emit List<T> (JS semantics)
4
+ * All array types emit as native CLR arrays (T[]).
5
+ * List<T> is only used when explicitly requested via new List<T>().
9
6
  */
10
7
  import { emitType } from "./emitter.js";
11
8
  /**
12
- * Emit array types
13
- *
14
- * - Explicit T[] annotation in dotnet mode → native T[]
15
- * - Otherwise → List<T>
9
+ * Emit array types as native CLR arrays
16
10
  */
17
11
  export const emitArrayType = (type, context) => {
18
12
  const [elementType, newContext] = emitType(type.elementType, context);
19
- const runtime = context.options.runtime ?? "js";
20
- // In dotnet mode with explicit array annotation, emit native CLR array
21
- if (runtime === "dotnet" && type.origin === "explicit") {
22
- return [`${elementType}[]`, newContext];
23
- }
24
- // Default: emit List<T> for JS semantics or inferred arrays
25
- return [
26
- `global::System.Collections.Generic.List<${elementType}>`,
27
- newContext,
28
- ];
13
+ // Always emit native CLR array
14
+ return [`${elementType}[]`, newContext];
29
15
  };
30
16
  //# sourceMappingURL=arrays.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../src/types/arrays.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAA4C,EAC5C,OAAuB,EACG,EAAE;IAC5B,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IAEhD,uEAAuE;IACvE,IAAI,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,WAAW,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,4DAA4D;IAC5D,OAAO;QACL,2CAA2C,WAAW,GAAG;QACzD,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../src/types/arrays.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAA4C,EAC5C,OAAuB,EACG,EAAE;IAC5B,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtE,+BAA+B;IAC/B,OAAO,CAAC,GAAG,WAAW,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/types/parameters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,SAAS,eAAe,EAAE,GAAG,SAAS,EAClD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,cAAc,CAgEnC,CAAC;AAwBF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,GAAG,SAAS,EACxB,YAAY,OAAO,EACnB,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAiBzB,CAAC"}
1
+ {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/types/parameters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAsC7C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,SAAS,eAAe,EAAE,GAAG,SAAS,EAClD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,cAAc,CA0EnC,CAAC;AAwBF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,GAAG,SAAS,EACxB,YAAY,OAAO,EACnB,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAiBzB,CAAC"}
@@ -2,6 +2,32 @@
2
2
  * Type parameter and parameter type emission
3
3
  */
4
4
  import { emitType } from "./emitter.js";
5
+ const inferTypeParamConstraintKind = (tp) => {
6
+ // No constraint → unconstrained (can be class or struct in C# terms)
7
+ if (!tp.constraint)
8
+ return "unconstrained";
9
+ // Structural constraints are object-shape constraints (reference-like).
10
+ if (tp.isStructuralConstraint)
11
+ return "class";
12
+ // Direct markers
13
+ if (tp.constraint.kind === "referenceType" && tp.constraint.name === "struct") {
14
+ return "struct";
15
+ }
16
+ if (tp.constraint.kind === "referenceType" && tp.constraint.name === "object") {
17
+ return "class";
18
+ }
19
+ // Intersection constraints may include object/struct markers
20
+ if (tp.constraint.kind === "intersectionType") {
21
+ const hasStruct = tp.constraint.types.some((t) => t.kind === "referenceType" && t.name === "struct");
22
+ const hasObject = tp.constraint.types.some((t) => t.kind === "referenceType" && t.name === "object");
23
+ if (hasStruct)
24
+ return "struct";
25
+ if (hasObject)
26
+ return "class";
27
+ }
28
+ // Interface/class constraints are not enough to determine reference vs value.
29
+ return "unconstrained";
30
+ };
5
31
  /**
6
32
  * Emit C# type parameters with constraints
7
33
  * Example: <T, U extends Foo> → <T, U> with where clauses
@@ -10,11 +36,20 @@ export const emitTypeParameters = (typeParams, context) => {
10
36
  if (!typeParams || typeParams.length === 0) {
11
37
  return ["", [], context];
12
38
  }
39
+ // Track constraint kinds for type parameters in this scope.
40
+ // Used by union emission to decide whether `T | null` can be represented as `T?`.
41
+ const mergedConstraints = new Map(context.typeParamConstraints ?? []);
42
+ for (const tp of typeParams) {
43
+ mergedConstraints.set(tp.name, inferTypeParamConstraintKind(tp));
44
+ }
13
45
  const paramNames = typeParams.map((tp) => tp.name).join(", ");
14
46
  const typeParamsStr = `<${paramNames}>`;
15
47
  // Build where clauses for constraints
16
48
  const whereClauses = [];
17
- let currentContext = context;
49
+ let currentContext = {
50
+ ...context,
51
+ typeParamConstraints: mergedConstraints,
52
+ };
18
53
  for (const tp of typeParams) {
19
54
  if (tp.constraint) {
20
55
  // Handle structural constraints specially - they generate adapter interfaces
@@ -1 +1 @@
1
- {"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/types/parameters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/types/parameters.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ describe("Parameter modifiers (ref/out/in)", () => {
9
9
  indentLevel: 0,
10
10
  isStatic: false,
11
11
  isAsync: false,
12
- options: { runtime: "dotnet", rootNamespace: "Test" },
12
+ options: { rootNamespace: "Test" },
13
13
  };
14
14
  it("should emit out parameter with out modifier", () => {
15
15
  const params = [
@@ -1 +1 @@
1
- {"version":3,"file":"parameters.test.js","sourceRoot":"","sources":["../../src/types/parameters.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAIrE,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,MAAM,WAAW,GAAmB;QAClC,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE;KACtD,CAAC;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAkB;YAC5B;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtD,IAAI,EAAE;oBACJ,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,KAAK;oBACX,aAAa,EAAE;wBACb;4BACE,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;gBACD,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,KAAK;aACf;SACF,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAkB;YAC5B;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;gBACrD,IAAI,EAAE;oBACJ,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,KAAK;oBACX,aAAa,EAAE;wBACb;4BACE,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;gBACD,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,KAAK;aACf;SACF,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAkB;YAC5B;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;gBACrD,IAAI,EAAE;oBACJ,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,IAAI;oBACV,aAAa,EAAE;wBACb;4BACE,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;gBACD,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI;aACd;SACF,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAkB;YAC5B;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;gBACrD,IAAI,EAAE;oBACJ,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,KAAK;iBACZ;gBACD,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,OAAO;aACjB;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtD,IAAI,EAAE;oBACJ,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,KAAK;oBACX,aAAa,EAAE;wBACb;4BACE,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;gBACD,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,KAAK;aACf;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;gBACvD,IAAI,EAAE;oBACJ,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,KAAK;oBACX,aAAa,EAAE;wBACb;4BACE,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;gBACD,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,KAAK;aACf;SACF,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"parameters.test.js","sourceRoot":"","sources":["../../src/types/parameters.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/types/references.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiG7C;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,EAChD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAyMzB,CAAC"}
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/types/references.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAsH7C;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,EAChD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA8NzB,CAAC"}
@@ -65,14 +65,32 @@ const getBindingClrName = (b) => {
65
65
  return undefined;
66
66
  };
67
67
  /**
68
- * Check if a type name indicates an unsupported support type.
68
+ * Convert CLR metadata type names into C#-emittable type names.
69
69
  *
70
- * TODO: This is a basic check. Full implementation requires:
71
- * 1. Access to TypeScript type checker
72
- * 2. Integration with support-types.ts helpers
73
- * 3. Proper diagnostic reporting
70
+ * tsbindgen bindings use CLR "full names" that include:
71
+ * - Generic arity markers: `Dictionary`2`, `Func`3`, etc.
72
+ * - Nested type separators: `Outer+Inner`
74
73
  *
75
- * For now, we check the type name string.
74
+ * C# source code must not include arity markers, and nested types use `.`
75
+ * in source (e.g. `Outer.Inner`).
76
+ */
77
+ const clrTypeNameToCSharp = (clr) => {
78
+ const prefix = "global::";
79
+ const hasGlobal = clr.startsWith(prefix);
80
+ const body = hasGlobal ? clr.slice(prefix.length) : clr;
81
+ const sanitized = body
82
+ // Strip generic arity markers (e.g. Dictionary`2 -> Dictionary)
83
+ .replace(/`\d+/g, "")
84
+ // CLR nested types use '+'; C# source uses '.'
85
+ .replace(/\+/g, ".");
86
+ return hasGlobal ? `${prefix}${sanitized}` : sanitized;
87
+ };
88
+ /**
89
+ * Check if a type name indicates an unsupported support type.
90
+ *
91
+ * NOTE: The emitter does not have access to the TypeScript checker. Support types
92
+ * should be rejected during frontend IR building. This is a defensive guard in case
93
+ * unsupported types leak into IR.
76
94
  */
77
95
  const checkUnsupportedSupportType = (typeName) => {
78
96
  if (typeName === "TSUnsafePointer" ||
@@ -112,6 +130,9 @@ export const emitReferenceType = (type, context) => {
112
130
  }
113
131
  // If the type has a pre-resolved CLR type (from IR), use it
114
132
  if (resolvedClrType) {
133
+ const qualifiedClr = CSHARP_PRIMITIVES.has(resolvedClrType)
134
+ ? resolvedClrType
135
+ : toGlobalClr(resolvedClrType);
115
136
  if (typeArguments && typeArguments.length > 0) {
116
137
  const typeParams = [];
117
138
  let currentContext = context;
@@ -120,9 +141,9 @@ export const emitReferenceType = (type, context) => {
120
141
  typeParams.push(paramType);
121
142
  currentContext = newContext;
122
143
  }
123
- return [`${resolvedClrType}<${typeParams.join(", ")}>`, currentContext];
144
+ return [`${qualifiedClr}<${typeParams.join(", ")}>`, currentContext];
124
145
  }
125
- return [resolvedClrType, context];
146
+ return [qualifiedClr, context];
126
147
  }
127
148
  // Check if this type is imported - use pre-computed CLR name directly
128
149
  const importBinding = context.importBindings?.get(name);
@@ -152,22 +173,18 @@ export const emitReferenceType = (type, context) => {
152
173
  // Check for unsupported support types
153
174
  const unsupportedError = checkUnsupportedSupportType(name);
154
175
  if (unsupportedError) {
155
- // TODO: Report diagnostic error instead of throwing
156
- // For now, emit a comment to make the error visible in generated code
157
- console.warn(`[Tsonic] ${unsupportedError}`);
158
- return [`/* ERROR: ${unsupportedError} */ object`, context];
176
+ throw new Error(`[Tsonic] ${unsupportedError}`);
159
177
  }
160
178
  // Handle built-in types
179
+ // Array<T> emits as native T[] array, same as T[] syntax
180
+ // Users must explicitly use List<T> to get a List
161
181
  if (name === "Array" && typeArguments && typeArguments.length > 0) {
162
182
  const firstArg = typeArguments[0];
163
183
  if (!firstArg) {
164
- return [`global::System.Collections.Generic.List<object>`, context];
184
+ return [`object[]`, context];
165
185
  }
166
186
  const [elementType, newContext] = emitType(firstArg, context);
167
- return [
168
- `global::System.Collections.Generic.List<${elementType}>`,
169
- newContext,
170
- ];
187
+ return [`${elementType}[]`, newContext];
171
188
  }
172
189
  if (name === "Promise" && typeArguments && typeArguments.length > 0) {
173
190
  const firstArg = typeArguments[0];
@@ -184,43 +201,37 @@ export const emitReferenceType = (type, context) => {
184
201
  if (name === "Promise") {
185
202
  return ["global::System.Threading.Tasks.Task", context];
186
203
  }
187
- // NOTE: Map and Set are in js-globals but not in base globals.
188
- // They must be explicitly imported in dotnet mode or will fail as unresolved types.
189
- // Per Alice's decision: no ambient Map/Set handling in dotnet mode.
190
- // Get runtime mode for conditional mappings
191
- const runtime = context.options.runtime ?? "js";
192
- // Map common JS types to .NET equivalents
193
- // Only types actually defined in the globals packages
194
- // Error: only in js-globals (not in base globals)
195
- // PromiseLike: in base globals (available in both modes)
196
- if (name === "Error" && runtime === "js") {
197
- return ["global::System.Exception", context];
204
+ // Map core Span<T> to System.Span<T>.
205
+ // This is used by stackalloc<T>(n) and other span-based APIs.
206
+ if (name === "Span") {
207
+ if (!typeArguments || typeArguments.length !== 1) {
208
+ throw new Error(`ICE: Span must have exactly 1 type argument, got ${typeArguments?.length ?? 0}`);
209
+ }
210
+ const inner = typeArguments[0];
211
+ if (!inner) {
212
+ throw new Error("ICE: Span<T> missing type argument");
213
+ }
214
+ const [innerType, newContext] = emitType(inner, context);
215
+ return [`global::System.Span<${innerType}>`, newContext];
216
+ }
217
+ // Map core ptr<T> to C# unsafe pointer type: T*
218
+ if (name === "ptr") {
219
+ if (!typeArguments || typeArguments.length !== 1) {
220
+ throw new Error(`ICE: ptr must have exactly 1 type argument, got ${typeArguments?.length ?? 0}`);
221
+ }
222
+ const inner = typeArguments[0];
223
+ if (!inner) {
224
+ throw new Error("ICE: ptr<T> missing type argument");
225
+ }
226
+ const [innerType, newContext] = emitType(inner, context);
227
+ return [`${innerType}*`, newContext];
198
228
  }
229
+ // NOTE: Map and Set must be explicitly imported (not ambient)
230
+ // Map PromiseLike to Task
199
231
  if (name === "PromiseLike") {
200
232
  // PromiseLike is in both globals packages - safe to map unconditionally
201
233
  return ["global::System.Threading.Tasks.Task", context];
202
234
  }
203
- // Resolve external types via binding registry (must be fully qualified)
204
- // This handles types from contextual inference (e.g., Action from Parallel.invoke)
205
- const regBinding = context.bindingsRegistry?.get(name);
206
- if (regBinding) {
207
- const clr = getBindingClrName(regBinding);
208
- if (!clr) {
209
- throw new Error(`ICE: Binding for '${name}' has no CLR name`);
210
- }
211
- const qualified = toGlobalClr(clr);
212
- if (typeArguments && typeArguments.length > 0) {
213
- const typeParams = [];
214
- let currentContext = context;
215
- for (const typeArg of typeArguments) {
216
- const [paramType, newContext] = emitType(typeArg, currentContext);
217
- typeParams.push(paramType);
218
- currentContext = newContext;
219
- }
220
- return [`${qualified}<${typeParams.join(", ")}>`, currentContext];
221
- }
222
- return [qualified, context];
223
- }
224
235
  // C# primitive types can be emitted directly
225
236
  if (CSHARP_PRIMITIVES.has(name)) {
226
237
  return [name, context];
@@ -229,8 +240,10 @@ export const emitReferenceType = (type, context) => {
229
240
  if (context.typeParameters?.has(name)) {
230
241
  return [name, context];
231
242
  }
232
- // FALLTHROUGH is only permitted for local types.
233
- // Emitting a bare external name is unsound and forbidden.
243
+ // IMPORTANT: Check local types BEFORE binding registry.
244
+ // Local types take precedence over .NET types with the same name.
245
+ // This ensures that a locally defined `Container<T>` is not resolved
246
+ // to `System.ComponentModel.Container` from the binding registry.
234
247
  const localTypeInfo = context.localTypes?.get(name);
235
248
  if (localTypeInfo) {
236
249
  // Convert nested type names (Outer$Inner → Outer.Inner)
@@ -253,6 +266,28 @@ export const emitReferenceType = (type, context) => {
253
266
  }
254
267
  return [csharpName, context];
255
268
  }
269
+ // Resolve external types via binding registry (must be fully qualified)
270
+ // This handles types from contextual inference (e.g., Action from Parallel.invoke)
271
+ // IMPORTANT: This is checked AFTER localTypes to ensure local types take precedence
272
+ const regBinding = context.bindingsRegistry?.get(name);
273
+ if (regBinding) {
274
+ const clr = getBindingClrName(regBinding);
275
+ if (!clr) {
276
+ throw new Error(`ICE: Binding for '${name}' has no CLR name`);
277
+ }
278
+ const qualified = toGlobalClr(clrTypeNameToCSharp(clr));
279
+ if (typeArguments && typeArguments.length > 0) {
280
+ const typeParams = [];
281
+ let currentContext = context;
282
+ for (const typeArg of typeArguments) {
283
+ const [paramType, newContext] = emitType(typeArg, currentContext);
284
+ typeParams.push(paramType);
285
+ currentContext = newContext;
286
+ }
287
+ return [`${qualified}<${typeParams.join(", ")}>`, currentContext];
288
+ }
289
+ return [qualified, context];
290
+ }
256
291
  // Hard failure: unresolved external reference type
257
292
  // This should never happen if the IR soundness gate is working correctly
258
293
  throw new Error(`ICE: Unresolved reference type '${name}' (no resolvedClrType, no import binding, no registry binding, not local)`);
@@ -1 +1 @@
1
- {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/types/references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/types/references.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,YAAY,EACZ,sBAAsB,GACvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,sCAAsC;IACtC,OAAO;IACP,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,wCAAwC;IACxC,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,SAAS;IACT,qCAAqC;IACrC,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,uCAAuC;IACvC,MAAM;IACN,MAAM;IACN,mDAAmD;IACnD,QAAQ;IACR,QAAQ;IACR,MAAM;CACP,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC;AACzE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAU,EAAsB,EAAE;IAC3D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAElD,iFAAiF;IACjF,MAAM,YAAY,GAAI,CAA2B,CAAC,OAAO,CAAC;IAC1D,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,0EAA0E;IAC1E,MAAM,SAAS,GAAI,CAAwB,CAAC,IAAI,CAAC;IACjD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAU,EAAE;IAClD,MAAM,MAAM,GAAG,UAAU,CAAC;IAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAExD,MAAM,SAAS,GAAG,IAAI;QACpB,gEAAgE;SAC/D,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACrB,+CAA+C;SAC9C,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvB,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,CAAC,QAAgB,EAAsB,EAAE;IAC3E,IACE,QAAQ,KAAK,iBAAiB;QAC9B,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,EACvC,CAAC;QACD,OAAO,6EAA6E,CAAC;IACvF,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,OAAO,uFAAuF,CAAC;IACjG,CAAC;IACD,IAAI,QAAQ,KAAK,cAAc,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACxE,OAAO,2EAA2E,CAAC;IACrF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAgD,EAChD,OAAuB,EACG,EAAE;IAC5B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAEtD,gHAAgH;IAChH,0FAA0F;IAC1F,kGAAkG;IAClG,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,oEAAoE;QACpE,MAAM,aAAa,GAAG,cAAc,KAAK,WAAW,CAAC;QAErD,IAAI,aAAa,EAAE,CAAC;YAClB,uCAAuC;YACvC,MAAM,cAAc,GAClB,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;gBACvC,CAAC,CAAC,kBAAkB,CAChB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,cAAc,EACvB,aAAa,CACd;gBACH,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpB,OAAO,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,6EAA6E;IAC/E,CAAC;IAED,4DAA4D;IAC5D,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;YACzD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACjC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,cAAc,GAAG,OAAO,CAAC;YAC7B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAClE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,cAAc,GAAG,UAAU,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,GAAG,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,sEAAsE;IACtE,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,aAAa,EAAE,CAAC;QAClB,2EAA2E;QAC3E,mFAAmF;QACnF,qEAAqE;QACrE,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,aAAa,GACjB,aAAa,CAAC,IAAI,KAAK,MAAM;YAC3B,CAAC,CAAC,aAAa,CAAC,OAAO;YACvB,CAAC,CAAC,aAAa,CAAC,MAAM;gBACpB,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE;gBACpD,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;QAE9B,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,cAAc,GAAG,OAAO,CAAC;YAC7B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAClE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,cAAc,GAAG,UAAU,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,GAAG,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,YAAY,gBAAgB,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,wBAAwB;IACxB,yDAAyD;IACzD,kDAAkD;IAClD,IAAI,IAAI,KAAK,OAAO,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,WAAW,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9D,oDAAoD;QACpD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,uCAAuC,WAAW,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,sCAAsC;IACtC,8DAA8D;IAC9D,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,oDAAoD,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CACjF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,CAAC,uBAAuB,SAAS,GAAG,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,gDAAgD;IAChD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,mDAAmD,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAChF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,SAAS,GAAG,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,8DAA8D;IAE9D,0BAA0B;IAC1B,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,wEAAwE;QACxE,OAAO,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,6CAA6C;IAC7C,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,wDAAwD;IACxD,kEAAkE;IAClE,qEAAqE;IACrE,kEAAkE;IAClE,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,aAAa,EAAE,CAAC;QAClB,wDAAwD;QACxD,IAAI,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1E,0FAA0F;QAC1F,6CAA6C;QAC7C,IACE,aAAa,CAAC,IAAI,KAAK,WAAW;YAClC,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EACxC,CAAC;YACD,UAAU,GAAG,GAAG,UAAU,SAAS,CAAC;QACtC,CAAC;QAED,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,cAAc,GAAG,OAAO,CAAC;YAE7B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAClE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,cAAc,GAAG,UAAU,CAAC;YAC9B,CAAC;YAED,OAAO,CAAC,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,wEAAwE;IACxE,mFAAmF;IACnF,oFAAoF;IACpF,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,mBAAmB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;QAExD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,cAAc,GAAG,OAAO,CAAC;YAC7B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAClE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,cAAc,GAAG,UAAU,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,GAAG,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,mDAAmD;IACnD,yEAAyE;IACzE,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,2EAA2E,CACnH,CAAC;AACJ,CAAC,CAAC"}
@@ -89,14 +89,15 @@ describe("Reference Type Emission", () => {
89
89
  });
90
90
  });
91
91
  describe("Known Builtin Types", () => {
92
- it("should emit Array<T> as List<T>", () => {
92
+ it("should emit Array<T> as native T[] array", () => {
93
93
  const module = createModuleWithType({
94
94
  kind: "referenceType",
95
95
  name: "Array",
96
96
  typeArguments: [{ kind: "primitiveType", name: "number" }],
97
97
  });
98
98
  const result = emitModule(module);
99
- expect(result).to.include("global::System.Collections.Generic.List<double>");
99
+ expect(result).to.include("double[]");
100
+ expect(result).not.to.include("List");
100
101
  });
101
102
  it("should emit Promise<T> as Task<T>", () => {
102
103
  const module = createModuleWithType({
@@ -107,30 +108,13 @@ describe("Reference Type Emission", () => {
107
108
  const result = emitModule(module);
108
109
  expect(result).to.include("global::System.Threading.Tasks.Task<string>");
109
110
  });
110
- it("should emit Error as System.Exception in js mode (default)", () => {
111
+ it("should fail for Error type (not supported)", () => {
111
112
  const module = createModuleWithType({
112
113
  kind: "referenceType",
113
114
  name: "Error",
114
115
  });
115
- // Default runtime is "js"
116
- const result = emitModule(module);
117
- expect(result).to.include("global::System.Exception");
118
- });
119
- it("should emit Error as System.Exception in js mode (explicit)", () => {
120
- const module = createModuleWithType({
121
- kind: "referenceType",
122
- name: "Error",
123
- });
124
- const result = emitModule(module, { runtime: "js" });
125
- expect(result).to.include("global::System.Exception");
126
- });
127
- it("should fail for Error in dotnet mode (not in base globals)", () => {
128
- const module = createModuleWithType({
129
- kind: "referenceType",
130
- name: "Error",
131
- });
132
- // Error is not in base globals, so it should fail as unresolved
133
- expect(() => emitModule(module, { runtime: "dotnet" })).to.throw("ICE: Unresolved reference type 'Error'");
116
+ // Error is not in globals, so it should fail as unresolved
117
+ expect(() => emitModule(module)).to.throw("ICE: Unresolved reference type 'Error'");
134
118
  });
135
119
  });
136
120
  describe("Pre-resolved CLR Types", () => {
@@ -157,6 +141,30 @@ describe("Reference Type Emission", () => {
157
141
  expect(result).to.include("global::System.Func<string, double>");
158
142
  });
159
143
  });
144
+ describe("Bindings Registry Types", () => {
145
+ it("should strip generic arity markers from CLR names", () => {
146
+ const module = createModuleWithType({
147
+ kind: "referenceType",
148
+ name: "Dictionary_2",
149
+ typeArguments: [
150
+ { kind: "primitiveType", name: "int" },
151
+ { kind: "primitiveType", name: "string" },
152
+ ],
153
+ });
154
+ const dictionaryBinding = {
155
+ name: "System.Collections.Generic.Dictionary`2",
156
+ alias: "Dictionary_2",
157
+ kind: "class",
158
+ members: [],
159
+ };
160
+ const clrBindings = new Map([
161
+ ["Dictionary_2", dictionaryBinding],
162
+ ]);
163
+ const result = emitModule(module, { clrBindings });
164
+ expect(result).to.include("global::System.Collections.Generic.Dictionary<int, string>");
165
+ expect(result).to.not.include("Dictionary`2");
166
+ });
167
+ });
160
168
  describe("Local Types", () => {
161
169
  it("should emit local class types without qualification", () => {
162
170
  const module = {
@@ -237,10 +245,10 @@ describe("Reference Type Emission", () => {
237
245
  expect(result).to.include("IUser user");
238
246
  });
239
247
  });
240
- describe("Runtime Mode Guards", () => {
241
- it("should NOT emit JSRuntime in dotnet mode for array indexing", () => {
248
+ describe("Array Indexing", () => {
249
+ it("should use native indexer for array indexing", () => {
242
250
  // This test creates a module with array index access
243
- // In dotnet mode, it should use native indexer, not JSRuntime.Array.get()
251
+ // Should use native indexer, not JSRuntime.Array.get()
244
252
  const module = {
245
253
  kind: "module",
246
254
  filePath: "/src/test.ts",
@@ -303,80 +311,12 @@ describe("Reference Type Emission", () => {
303
311
  ],
304
312
  exports: [],
305
313
  };
306
- const result = emitModule(module, { runtime: "dotnet" });
307
- // In dotnet mode, output should NOT contain JSRuntime
314
+ const result = emitModule(module);
315
+ // Output should NOT contain JSRuntime
308
316
  expect(result).to.not.include("Tsonic.JSRuntime");
309
317
  // Should use native indexer (no cast needed with proof marker)
310
318
  expect(result).to.include("arr[0]");
311
319
  });
312
- it("should emit JSRuntime in js mode for array indexing", () => {
313
- // Same module as above but in js mode
314
- const module = {
315
- kind: "module",
316
- filePath: "/src/test.ts",
317
- namespace: "Test",
318
- className: "test",
319
- isStaticContainer: true,
320
- imports: [],
321
- body: [
322
- {
323
- kind: "functionDeclaration",
324
- name: "getFirst",
325
- isExported: true,
326
- isAsync: false,
327
- isGenerator: false,
328
- parameters: [
329
- {
330
- kind: "parameter",
331
- pattern: { kind: "identifierPattern", name: "arr" },
332
- type: {
333
- kind: "arrayType",
334
- elementType: { kind: "primitiveType", name: "number" },
335
- },
336
- isOptional: false,
337
- isRest: false,
338
- passing: "value",
339
- },
340
- ],
341
- returnType: { kind: "primitiveType", name: "number" },
342
- body: {
343
- kind: "blockStatement",
344
- statements: [
345
- {
346
- kind: "returnStatement",
347
- expression: {
348
- kind: "memberAccess",
349
- object: {
350
- kind: "identifier",
351
- name: "arr",
352
- inferredType: {
353
- kind: "arrayType",
354
- elementType: { kind: "primitiveType", name: "number" },
355
- },
356
- },
357
- property: {
358
- kind: "literal",
359
- value: 0,
360
- // Proof marker: int literal
361
- inferredType: {
362
- kind: "primitiveType",
363
- name: "int",
364
- },
365
- },
366
- isComputed: true,
367
- isOptional: false,
368
- },
369
- },
370
- ],
371
- },
372
- },
373
- ],
374
- exports: [],
375
- };
376
- const result = emitModule(module, { runtime: "js" });
377
- // In js mode, output should use JSRuntime.Array.get()
378
- expect(result).to.include("global::Tsonic.JSRuntime.Array.get");
379
- });
380
320
  });
381
321
  });
382
322
  //# sourceMappingURL=references.test.js.map