@tsonic/emitter 0.0.14 → 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 (242) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapter-generator.js +3 -3
  3. package/dist/adapter-generator.js.map +1 -1
  4. package/dist/array.test.d.ts +1 -1
  5. package/dist/array.test.js +18 -17
  6. package/dist/array.test.js.map +1 -1
  7. package/dist/core/attributes.test.js +2 -2
  8. package/dist/core/attributes.test.js.map +1 -1
  9. package/dist/core/imports.d.ts.map +1 -1
  10. package/dist/core/imports.js +7 -12
  11. package/dist/core/imports.js.map +1 -1
  12. package/dist/core/local-types.d.ts.map +1 -1
  13. package/dist/core/local-types.js +12 -0
  14. package/dist/core/local-types.js.map +1 -1
  15. package/dist/core/module-emitter/orchestrator.d.ts.map +1 -1
  16. package/dist/core/module-emitter/orchestrator.js +15 -2
  17. package/dist/core/module-emitter/orchestrator.js.map +1 -1
  18. package/dist/core/module-emitter/static-container.d.ts.map +1 -1
  19. package/dist/core/module-emitter/static-container.js +30 -4
  20. package/dist/core/module-emitter/static-container.js.map +1 -1
  21. package/dist/core/module-emitter.test.js +6 -6
  22. package/dist/core/module-map.d.ts.map +1 -1
  23. package/dist/core/module-map.js +42 -0
  24. package/dist/core/module-map.js.map +1 -1
  25. package/dist/core/naming-collisions.d.ts +4 -0
  26. package/dist/core/naming-collisions.d.ts.map +1 -0
  27. package/dist/core/naming-collisions.js +191 -0
  28. package/dist/core/naming-collisions.js.map +1 -0
  29. package/dist/core/type-member-index.d.ts +4 -0
  30. package/dist/core/type-member-index.d.ts.map +1 -0
  31. package/dist/core/type-member-index.js +62 -0
  32. package/dist/core/type-member-index.js.map +1 -0
  33. package/dist/core/unsafe.d.ts +11 -0
  34. package/dist/core/unsafe.d.ts.map +1 -0
  35. package/dist/core/unsafe.js +264 -0
  36. package/dist/core/unsafe.js.map +1 -0
  37. package/dist/emitter-types/context.d.ts +1 -1
  38. package/dist/emitter-types/context.d.ts.map +1 -1
  39. package/dist/emitter-types/context.js +5 -3
  40. package/dist/emitter-types/context.js.map +1 -1
  41. package/dist/emitter-types/core.d.ts +45 -2
  42. package/dist/emitter-types/core.d.ts.map +1 -1
  43. package/dist/emitter-types/fqn.d.ts +0 -7
  44. package/dist/emitter-types/fqn.d.ts.map +1 -1
  45. package/dist/emitter-types/fqn.js +0 -8
  46. package/dist/emitter-types/fqn.js.map +1 -1
  47. package/dist/emitter-types/index.d.ts +1 -1
  48. package/dist/emitter-types/index.d.ts.map +1 -1
  49. package/dist/emitter-types/index.js.map +1 -1
  50. package/dist/emitter.d.ts.map +1 -1
  51. package/dist/emitter.js +12 -1
  52. package/dist/emitter.js.map +1 -1
  53. package/dist/expression-emitter.d.ts.map +1 -1
  54. package/dist/expression-emitter.js +255 -73
  55. package/dist/expression-emitter.js.map +1 -1
  56. package/dist/expressions/access.d.ts +3 -1
  57. package/dist/expressions/access.d.ts.map +1 -1
  58. package/dist/expressions/access.js +144 -50
  59. package/dist/expressions/access.js.map +1 -1
  60. package/dist/expressions/calls.d.ts.map +1 -1
  61. package/dist/expressions/calls.js +266 -88
  62. package/dist/expressions/calls.js.map +1 -1
  63. package/dist/expressions/collections.d.ts.map +1 -1
  64. package/dist/expressions/collections.js +169 -57
  65. package/dist/expressions/collections.js.map +1 -1
  66. package/dist/expressions/functions.d.ts.map +1 -1
  67. package/dist/expressions/functions.js +30 -10
  68. package/dist/expressions/functions.js.map +1 -1
  69. package/dist/expressions/identifiers.d.ts.map +1 -1
  70. package/dist/expressions/identifiers.js +11 -30
  71. package/dist/expressions/identifiers.js.map +1 -1
  72. package/dist/expressions/index.test.js +89 -200
  73. package/dist/expressions/index.test.js.map +1 -1
  74. package/dist/expressions/literals.d.ts +4 -5
  75. package/dist/expressions/literals.d.ts.map +1 -1
  76. package/dist/expressions/literals.js +94 -15
  77. package/dist/expressions/literals.js.map +1 -1
  78. package/dist/expressions/operators.d.ts +0 -4
  79. package/dist/expressions/operators.d.ts.map +1 -1
  80. package/dist/expressions/operators.js +84 -24
  81. package/dist/expressions/operators.js.map +1 -1
  82. package/dist/expressions/other.d.ts.map +1 -1
  83. package/dist/expressions/other.js +21 -3
  84. package/dist/expressions/other.js.map +1 -1
  85. package/dist/expressions/parentheses.d.ts +4 -0
  86. package/dist/expressions/parentheses.d.ts.map +1 -0
  87. package/dist/expressions/parentheses.js +83 -0
  88. package/dist/expressions/parentheses.js.map +1 -0
  89. package/dist/extension-methods.test.d.ts +5 -0
  90. package/dist/extension-methods.test.d.ts.map +1 -0
  91. package/dist/extension-methods.test.js +110 -0
  92. package/dist/extension-methods.test.js.map +1 -0
  93. package/dist/generator-exchange.d.ts.map +1 -1
  94. package/dist/generator-exchange.js +5 -2
  95. package/dist/generator-exchange.js.map +1 -1
  96. package/dist/generator-wrapper.d.ts.map +1 -1
  97. package/dist/generator-wrapper.js +13 -7
  98. package/dist/generator-wrapper.js.map +1 -1
  99. package/dist/generator-wrapper.test.js +12 -12
  100. package/dist/generator-wrapper.test.js.map +1 -1
  101. package/dist/generator.test.js +42 -42
  102. package/dist/generator.test.js.map +1 -1
  103. package/dist/golden-tests/discovery.d.ts +6 -11
  104. package/dist/golden-tests/discovery.d.ts.map +1 -1
  105. package/dist/golden-tests/discovery.js +14 -79
  106. package/dist/golden-tests/discovery.js.map +1 -1
  107. package/dist/golden-tests/index.d.ts +1 -1
  108. package/dist/golden-tests/index.d.ts.map +1 -1
  109. package/dist/golden-tests/index.js.map +1 -1
  110. package/dist/golden-tests/runner.d.ts.map +1 -1
  111. package/dist/golden-tests/runner.js +6 -7
  112. package/dist/golden-tests/runner.js.map +1 -1
  113. package/dist/golden-tests/types.d.ts +0 -7
  114. package/dist/golden-tests/types.d.ts.map +1 -1
  115. package/dist/golden.test.d.ts +3 -10
  116. package/dist/golden.test.d.ts.map +1 -1
  117. package/dist/golden.test.js +8 -24
  118. package/dist/golden.test.js.map +1 -1
  119. package/dist/hierarchical-bindings.test.js +18 -12
  120. package/dist/hierarchical-bindings.test.js.map +1 -1
  121. package/dist/integration.test.js +76 -35
  122. package/dist/integration.test.js.map +1 -1
  123. package/dist/invariants/emitter-globals-subset.test.d.ts +1 -1
  124. package/dist/invariants/emitter-globals-subset.test.js +34 -74
  125. package/dist/invariants/emitter-globals-subset.test.js.map +1 -1
  126. package/dist/invariants/numeric-proof-contract.test.js +3 -3
  127. package/dist/invariants/numeric-proof-contract.test.js.map +1 -1
  128. package/dist/naming-policy.d.ts +5 -0
  129. package/dist/naming-policy.d.ts.map +1 -0
  130. package/dist/naming-policy.js +10 -0
  131. package/dist/naming-policy.js.map +1 -0
  132. package/dist/patterns.d.ts +98 -0
  133. package/dist/patterns.d.ts.map +1 -0
  134. package/dist/patterns.js +366 -0
  135. package/dist/patterns.js.map +1 -0
  136. package/dist/patterns.test.d.ts +15 -0
  137. package/dist/patterns.test.d.ts.map +1 -0
  138. package/dist/patterns.test.js +1262 -0
  139. package/dist/patterns.test.js.map +1 -0
  140. package/dist/specialization/generation.d.ts.map +1 -1
  141. package/dist/specialization/generation.js +2 -2
  142. package/dist/specialization/generation.js.map +1 -1
  143. package/dist/specialization/generic-classes.test.js +1 -1
  144. package/dist/specialization/generic-functions.test.js +6 -6
  145. package/dist/specialization/interfaces.test.js +5 -5
  146. package/dist/specialization/substitution.d.ts.map +1 -1
  147. package/dist/specialization/substitution.js +4 -0
  148. package/dist/specialization/substitution.js.map +1 -1
  149. package/dist/specialization/type-aliases.test.js +6 -6
  150. package/dist/specialization/type-aliases.test.js.map +1 -1
  151. package/dist/statement-emitter.d.ts.map +1 -1
  152. package/dist/statement-emitter.js +1 -1
  153. package/dist/statement-emitter.js.map +1 -1
  154. package/dist/statements/blocks.d.ts.map +1 -1
  155. package/dist/statements/blocks.js +14 -45
  156. package/dist/statements/blocks.js.map +1 -1
  157. package/dist/statements/classes/index.d.ts +1 -1
  158. package/dist/statements/classes/index.d.ts.map +1 -1
  159. package/dist/statements/classes/index.js +1 -1
  160. package/dist/statements/classes/index.js.map +1 -1
  161. package/dist/statements/classes/inline-types.d.ts +1 -1
  162. package/dist/statements/classes/inline-types.d.ts.map +1 -1
  163. package/dist/statements/classes/inline-types.js +15 -5
  164. package/dist/statements/classes/inline-types.js.map +1 -1
  165. package/dist/statements/classes/members/constructors.d.ts.map +1 -1
  166. package/dist/statements/classes/members/constructors.js +40 -14
  167. package/dist/statements/classes/members/constructors.js.map +1 -1
  168. package/dist/statements/classes/members/methods.d.ts.map +1 -1
  169. package/dist/statements/classes/members/methods.js +62 -25
  170. package/dist/statements/classes/members/methods.js.map +1 -1
  171. package/dist/statements/classes/members/orchestrator.d.ts.map +1 -1
  172. package/dist/statements/classes/members/orchestrator.js +1 -3
  173. package/dist/statements/classes/members/orchestrator.js.map +1 -1
  174. package/dist/statements/classes/members/properties.d.ts.map +1 -1
  175. package/dist/statements/classes/members/properties.js +70 -10
  176. package/dist/statements/classes/members/properties.js.map +1 -1
  177. package/dist/statements/classes/parameters.d.ts +43 -1
  178. package/dist/statements/classes/parameters.d.ts.map +1 -1
  179. package/dist/statements/classes/parameters.js +73 -13
  180. package/dist/statements/classes/parameters.js.map +1 -1
  181. package/dist/statements/classes/properties.d.ts.map +1 -1
  182. package/dist/statements/classes/properties.js +6 -7
  183. package/dist/statements/classes/properties.js.map +1 -1
  184. package/dist/statements/classes.d.ts +1 -1
  185. package/dist/statements/classes.d.ts.map +1 -1
  186. package/dist/statements/classes.js +1 -1
  187. package/dist/statements/classes.js.map +1 -1
  188. package/dist/statements/control/conditionals.d.ts.map +1 -1
  189. package/dist/statements/control/conditionals.js +193 -23
  190. package/dist/statements/control/conditionals.js.map +1 -1
  191. package/dist/statements/control/loops.d.ts.map +1 -1
  192. package/dist/statements/control/loops.js +25 -5
  193. package/dist/statements/control/loops.js.map +1 -1
  194. package/dist/statements/declarations/classes.d.ts.map +1 -1
  195. package/dist/statements/declarations/classes.js +150 -12
  196. package/dist/statements/declarations/classes.js.map +1 -1
  197. package/dist/statements/declarations/enums.d.ts.map +1 -1
  198. package/dist/statements/declarations/enums.js +2 -1
  199. package/dist/statements/declarations/enums.js.map +1 -1
  200. package/dist/statements/declarations/functions.d.ts.map +1 -1
  201. package/dist/statements/declarations/functions.js +44 -19
  202. package/dist/statements/declarations/functions.js.map +1 -1
  203. package/dist/statements/declarations/interfaces.d.ts.map +1 -1
  204. package/dist/statements/declarations/interfaces.js +71 -10
  205. package/dist/statements/declarations/interfaces.js.map +1 -1
  206. package/dist/statements/declarations/structs.test.js +5 -5
  207. package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
  208. package/dist/statements/declarations/type-aliases.js +24 -5
  209. package/dist/statements/declarations/type-aliases.js.map +1 -1
  210. package/dist/statements/declarations/variables.d.ts.map +1 -1
  211. package/dist/statements/declarations/variables.js +194 -37
  212. package/dist/statements/declarations/variables.js.map +1 -1
  213. package/dist/statements/index.test.js +7 -5
  214. package/dist/statements/index.test.js.map +1 -1
  215. package/dist/type-assertion.test.js +1 -1
  216. package/dist/types/arrays.d.ts +3 -9
  217. package/dist/types/arrays.d.ts.map +1 -1
  218. package/dist/types/arrays.js +5 -19
  219. package/dist/types/arrays.js.map +1 -1
  220. package/dist/types/emitter.d.ts.map +1 -1
  221. package/dist/types/emitter.js +3 -2
  222. package/dist/types/emitter.js.map +1 -1
  223. package/dist/types/index.test.js +3 -3
  224. package/dist/types/parameters.d.ts +1 -1
  225. package/dist/types/parameters.d.ts.map +1 -1
  226. package/dist/types/parameters.js +77 -8
  227. package/dist/types/parameters.js.map +1 -1
  228. package/dist/types/parameters.test.js +1 -1
  229. package/dist/types/parameters.test.js.map +1 -1
  230. package/dist/types/references.d.ts.map +1 -1
  231. package/dist/types/references.js +126 -55
  232. package/dist/types/references.js.map +1 -1
  233. package/dist/types/references.test.js +46 -106
  234. package/dist/types/references.test.js.map +1 -1
  235. package/dist/types/unions.d.ts.map +1 -1
  236. package/dist/types/unions.js +20 -0
  237. package/dist/types/unions.js.map +1 -1
  238. package/dist/types/unions.test.js +9 -9
  239. package/dist/types.d.ts +1 -1
  240. package/dist/types.d.ts.map +1 -1
  241. package/dist/types.js.map +1 -1
  242. package/package.json +3 -3
@@ -4,6 +4,97 @@
4
4
  import { emitType } from "../type-emitter.js";
5
5
  import { emitExpression } from "../expression-emitter.js";
6
6
  import { getPropertyType, stripNullish, resolveTypeAlias, selectUnionMemberForObjectLiteral, } from "../core/type-resolution.js";
7
+ import { emitCSharpName } from "../naming-policy.js";
8
+ const bucketFromMemberKind = (kind) => {
9
+ switch (kind) {
10
+ case "method":
11
+ return "methods";
12
+ case "field":
13
+ return "fields";
14
+ case "enumMember":
15
+ return "enumMembers";
16
+ default:
17
+ return "properties";
18
+ }
19
+ };
20
+ const stripGlobalPrefix = (name) => name.startsWith("global::") ? name.slice("global::".length) : name;
21
+ const lookupMemberKindFromLocalTypes = (receiverTypeName, memberName, context) => {
22
+ const local = context.localTypes?.get(receiverTypeName);
23
+ if (!local)
24
+ return undefined;
25
+ if (local.kind === "enum") {
26
+ return local.members.includes(memberName) ? "enumMember" : undefined;
27
+ }
28
+ if (local.kind === "typeAlias") {
29
+ if (local.type.kind !== "objectType")
30
+ return undefined;
31
+ const found = local.type.members.find((m) => m.name === memberName);
32
+ if (!found)
33
+ return undefined;
34
+ return found.kind === "methodSignature" ? "method" : "property";
35
+ }
36
+ // class/interface
37
+ const members = local.members;
38
+ for (const m of members) {
39
+ if (!("name" in m) || m.name !== memberName)
40
+ continue;
41
+ if (m.kind === "methodDeclaration" || m.kind === "methodSignature") {
42
+ return "method";
43
+ }
44
+ if (m.kind === "propertySignature")
45
+ return "property";
46
+ if (m.kind === "propertyDeclaration") {
47
+ const hasAccessors = !!(m.getterBody || m.setterBody);
48
+ return hasAccessors ? "property" : "field";
49
+ }
50
+ }
51
+ return undefined;
52
+ };
53
+ const resolveReceiverTypeFqn = (receiverType, context) => {
54
+ if (!receiverType)
55
+ return undefined;
56
+ const resolved = resolveTypeAlias(stripNullish(receiverType), context);
57
+ if (resolved.kind !== "referenceType")
58
+ return undefined;
59
+ if (resolved.resolvedClrType) {
60
+ return stripGlobalPrefix(resolved.resolvedClrType);
61
+ }
62
+ const binding = context.importBindings?.get(resolved.name);
63
+ if (binding?.kind === "type") {
64
+ return stripGlobalPrefix(binding.clrName);
65
+ }
66
+ return undefined;
67
+ };
68
+ const lookupMemberKindFromIndex = (receiverTypeFqn, memberName, context) => {
69
+ const perType = context.options.typeMemberIndex?.get(receiverTypeFqn);
70
+ const kind = perType?.get(memberName);
71
+ return kind;
72
+ };
73
+ const getMemberKind = (receiverType, memberName, context) => {
74
+ if (!receiverType)
75
+ return undefined;
76
+ const resolved = resolveTypeAlias(stripNullish(receiverType), context);
77
+ if (resolved.kind === "objectType") {
78
+ const found = resolved.members.find((m) => m.name === memberName);
79
+ if (!found)
80
+ return undefined;
81
+ return found.kind === "methodSignature" ? "method" : "property";
82
+ }
83
+ if (resolved.kind === "referenceType") {
84
+ const localKind = lookupMemberKindFromLocalTypes(resolved.name, memberName, context);
85
+ if (localKind)
86
+ return localKind;
87
+ const receiverFqn = resolveReceiverTypeFqn(resolved, context);
88
+ if (receiverFqn) {
89
+ return lookupMemberKindFromIndex(receiverFqn, memberName, context);
90
+ }
91
+ }
92
+ return undefined;
93
+ };
94
+ const emitObjectMemberName = (receiverType, memberName, context) => {
95
+ const kind = getMemberKind(receiverType, memberName, context);
96
+ return emitCSharpName(memberName, bucketFromMemberKind(kind), context);
97
+ };
7
98
  /**
8
99
  * Escape a string for use in a C# string literal.
9
100
  * Handles backslashes, quotes, newlines, carriage returns, and tabs.
@@ -34,21 +125,27 @@ export const emitArray = (expr, context, expectedType) => {
34
125
  let currentContext = context;
35
126
  const elements = [];
36
127
  // Determine element type from expected type or inferred type
128
+ // We track both the IR type (for threading to elements) and C# string (for emission)
37
129
  let elementType = "object";
130
+ let expectedElementType = undefined;
38
131
  // Priority 1: Use explicit type annotation if provided (e.g., const arr: number[] = [1, 2, 3])
39
132
  // This ensures the array type matches the declared variable type
133
+ // IMPORTANT: Resolve aliases and strip nullish to handle type Longs = long[] etc.
40
134
  if (expectedType) {
41
- if (expectedType.kind === "arrayType") {
42
- const [elemTypeStr, newContext] = emitType(expectedType.elementType, currentContext);
135
+ const resolvedExpected = resolveTypeAlias(stripNullish(expectedType), context);
136
+ if (resolvedExpected.kind === "arrayType") {
137
+ expectedElementType = resolvedExpected.elementType;
138
+ const [elemTypeStr, newContext] = emitType(resolvedExpected.elementType, currentContext);
43
139
  elementType = elemTypeStr;
44
140
  currentContext = newContext;
45
141
  }
46
- else if (expectedType.kind === "referenceType" &&
47
- expectedType.name === "Array" &&
48
- expectedType.typeArguments &&
49
- expectedType.typeArguments.length > 0) {
50
- const firstArg = expectedType.typeArguments[0];
142
+ else if (resolvedExpected.kind === "referenceType" &&
143
+ resolvedExpected.name === "Array" &&
144
+ resolvedExpected.typeArguments &&
145
+ resolvedExpected.typeArguments.length > 0) {
146
+ const firstArg = resolvedExpected.typeArguments[0];
51
147
  if (firstArg) {
148
+ expectedElementType = firstArg;
52
149
  const [elemTypeStr, newContext] = emitType(firstArg, currentContext);
53
150
  elementType = elemTypeStr;
54
151
  currentContext = newContext;
@@ -66,10 +163,19 @@ export const emitArray = (expr, context, expectedType) => {
66
163
  // Check if all are numbers
67
164
  const allNumbers = literals.every((lit) => typeof lit.value === "number");
68
165
  if (allNumbers) {
69
- // Infer int vs double from numericIntent (based on raw lexeme)
70
- // All Int32int, any Doubledouble
166
+ // Infer int vs long vs double from numericIntent (based on raw lexeme)
167
+ // Any Doubledouble, any Int64long, otherwise → int
71
168
  const hasDouble = literals.some((lit) => lit.numericIntent === "Double");
72
- elementType = hasDouble ? "double" : "int";
169
+ const hasLong = literals.some((lit) => lit.numericIntent === "Int64");
170
+ if (hasDouble) {
171
+ elementType = "double";
172
+ }
173
+ else if (hasLong) {
174
+ elementType = "long";
175
+ }
176
+ else {
177
+ elementType = "int";
178
+ }
73
179
  }
74
180
  // Check if all are strings
75
181
  else if (literals.every((lit) => typeof lit.value === "string")) {
@@ -83,8 +189,10 @@ export const emitArray = (expr, context, expectedType) => {
83
189
  }
84
190
  }
85
191
  // Priority 3: Fall back to inferred type from expression
192
+ // IMPORTANT: Also set expectedElementType so literals get proper suffixes
86
193
  if (elementType === "object") {
87
194
  if (expr.inferredType && expr.inferredType.kind === "arrayType") {
195
+ expectedElementType = expr.inferredType.elementType;
88
196
  const [elemTypeStr, newContext] = emitType(expr.inferredType.elementType, currentContext);
89
197
  elementType = elemTypeStr;
90
198
  currentContext = newContext;
@@ -99,10 +207,7 @@ export const emitArray = (expr, context, expectedType) => {
99
207
  const firstSpread = spreadElements[0];
100
208
  if (!firstSpread) {
101
209
  // Should never happen due to allSpreads check, but satisfy TypeScript
102
- return [
103
- { text: "new global::System.Collections.Generic.List<object>()" },
104
- currentContext,
105
- ];
210
+ return [{ text: "new object[0]" }, currentContext];
106
211
  }
107
212
  const [firstFrag, firstContext] = emitExpression(firstSpread.expression, currentContext);
108
213
  currentContext = firstContext;
@@ -116,15 +221,9 @@ export const emitArray = (expr, context, expectedType) => {
116
221
  currentContext = newContext;
117
222
  }
118
223
  }
119
- // Determine whether to emit native CLR array or List
120
- const runtime = currentContext.options.runtime ?? "js";
121
- const shouldEmitNativeArray = runtime === "dotnet" &&
122
- expectedType?.kind === "arrayType" &&
123
- expectedType.origin === "explicit";
124
- // Wrap in ToArray() or ToList() depending on expected type
125
- const wrapperMethod = shouldEmitNativeArray ? "ToArray" : "ToList";
224
+ // Always emit native array via ToArray()
126
225
  return [
127
- { text: `global::System.Linq.Enumerable.${wrapperMethod}(${result})` },
226
+ { text: `global::System.Linq.Enumerable.ToArray(${result})` },
128
227
  currentContext,
129
228
  ];
130
229
  }
@@ -139,29 +238,17 @@ export const emitArray = (expr, context, expectedType) => {
139
238
  elements.push("/* ...spread */");
140
239
  }
141
240
  else {
142
- const [elemFrag, newContext] = emitExpression(element, currentContext);
241
+ const [elemFrag, newContext] = emitExpression(element, currentContext, expectedElementType);
143
242
  elements.push(elemFrag.text);
144
243
  currentContext = newContext;
145
244
  }
146
245
  }
147
- // Determine whether to emit native CLR array or List
148
- const runtime = currentContext.options.runtime ?? "js";
149
- const shouldEmitNativeArray = runtime === "dotnet" &&
150
- expectedType?.kind === "arrayType" &&
151
- expectedType.origin === "explicit";
152
- // In dotnet mode, use new[] { } syntax to let C# infer array type
153
- // This works for non-empty arrays with literal values
154
- const useInferredArraySyntax = runtime === "dotnet" && elements.length > 0 && !shouldEmitNativeArray;
155
- // Use constructor syntax for empty arrays, initializer syntax for non-empty
156
- const text = useInferredArraySyntax
157
- ? `new[] { ${elements.join(", ")} }`
158
- : shouldEmitNativeArray
159
- ? elements.length === 0
160
- ? `new ${elementType}[0]`
161
- : `new ${elementType}[] { ${elements.join(", ")} }`
162
- : elements.length === 0
163
- ? `new global::System.Collections.Generic.List<${elementType}>()`
164
- : `new global::System.Collections.Generic.List<${elementType}> { ${elements.join(", ")} }`;
246
+ // Always emit native CLR array
247
+ // Use new T[] { } syntax for non-empty arrays (explicit type for correct suffix handling)
248
+ // Use Array.Empty<T>() for empty arrays (cached singleton, no allocation)
249
+ const text = elements.length === 0
250
+ ? `global::System.Array.Empty<${elementType}>()`
251
+ : `new ${elementType}[] { ${elements.join(", ")} }`;
165
252
  return [{ text }, currentContext];
166
253
  };
167
254
  /**
@@ -223,7 +310,7 @@ export const emitObject = (expr, context, expectedType) => {
223
310
  : typeName;
224
311
  // Check if object has spreads - use IIFE pattern for spread lowering
225
312
  if (expr.hasSpreads) {
226
- return emitObjectWithSpreads(expr, currentContext, effectiveType, safeTypeName);
313
+ return emitObjectWithSpreads(expr, currentContext, effectiveType, safeTypeName, instantiationType);
227
314
  }
228
315
  // Regular object literal with nominal type - no spreads
229
316
  const properties = [];
@@ -233,7 +320,9 @@ export const emitObject = (expr, context, expectedType) => {
233
320
  throw new Error("ICE: Spread in object literal but hasSpreads is false");
234
321
  }
235
322
  else {
236
- const key = typeof prop.key === "string" ? prop.key : "/* computed */";
323
+ const key = typeof prop.key === "string"
324
+ ? emitObjectMemberName(instantiationType, prop.key, currentContext)
325
+ : "/* computed */";
237
326
  // Resolve property type from contextual type for generic null→default handling
238
327
  const propertyExpectedType = typeof prop.key === "string"
239
328
  ? getPropertyType(effectiveType, prop.key, currentContext)
@@ -255,19 +344,21 @@ export const emitObject = (expr, context, expectedType) => {
255
344
  * Properties are set in order: spread properties first, then explicit properties.
256
345
  * Later properties override earlier ones (JavaScript semantics).
257
346
  */
258
- const emitObjectWithSpreads = (expr, context, effectiveType, typeName) => {
347
+ const emitObjectWithSpreads = (expr, context, effectiveType, typeName, targetType) => {
259
348
  let currentContext = context;
260
349
  const assignments = [];
261
350
  for (const prop of expr.properties) {
262
351
  if (prop.kind === "spread") {
263
352
  // Spread: copy all properties from spread source
264
- const [spreadAssignments, newContext] = emitSpreadPropertyCopies(prop.expression, currentContext);
353
+ const [spreadAssignments, newContext] = emitSpreadPropertyCopies(targetType, prop.expression, currentContext);
265
354
  assignments.push(...spreadAssignments);
266
355
  currentContext = newContext;
267
356
  }
268
357
  else {
269
358
  // Explicit property assignment
270
- const key = typeof prop.key === "string" ? prop.key : "/* computed */";
359
+ const key = typeof prop.key === "string"
360
+ ? emitObjectMemberName(targetType, prop.key, currentContext)
361
+ : "/* computed */";
271
362
  const propertyExpectedType = typeof prop.key === "string"
272
363
  ? getPropertyType(effectiveType, prop.key, currentContext)
273
364
  : undefined;
@@ -291,7 +382,7 @@ const emitObjectWithSpreads = (expr, context, effectiveType, typeName) => {
291
382
  * For `...base` where base has type { x: number, y: string }:
292
383
  * Returns ["__tmp.x = base.x", "__tmp.y = base.y"]
293
384
  */
294
- const emitSpreadPropertyCopies = (spreadExpr, context) => {
385
+ const emitSpreadPropertyCopies = (targetType, spreadExpr, context) => {
295
386
  let currentContext = context;
296
387
  const assignments = [];
297
388
  // Get the spread expression's type to know which properties to copy
@@ -309,7 +400,9 @@ const emitSpreadPropertyCopies = (spreadExpr, context) => {
309
400
  // Extract properties from the spread type
310
401
  const propertyNames = getObjectTypePropertyNames(spreadType, currentContext);
311
402
  for (const propName of propertyNames) {
312
- assignments.push(`__tmp.${propName} = ${sourceExpr}.${propName}`);
403
+ const targetMember = emitObjectMemberName(targetType, propName, currentContext);
404
+ const sourceMember = emitObjectMemberName(spreadType, propName, currentContext);
405
+ assignments.push(`__tmp.${targetMember} = ${sourceExpr}.${sourceMember}`);
313
406
  }
314
407
  return [assignments, currentContext];
315
408
  };
@@ -318,27 +411,46 @@ const emitSpreadPropertyCopies = (spreadExpr, context) => {
318
411
  * Handles objectType, referenceType (to interfaces/classes), and resolved type aliases.
319
412
  */
320
413
  const getObjectTypePropertyNames = (type, context) => {
414
+ const resolved = resolveTypeAlias(stripNullish(type), context);
321
415
  // Direct object type
322
- if (type.kind === "objectType") {
323
- return type.members
416
+ if (resolved.kind === "objectType") {
417
+ return resolved.members
324
418
  .filter((m) => m.kind === "propertySignature")
325
419
  .map((m) => m.name);
326
420
  }
327
421
  // Reference type - check type aliases registry
328
- if (type.kind === "referenceType") {
329
- const resolved = resolveTypeAlias(type, context);
330
- if (resolved.kind === "objectType") {
331
- return resolved.members
422
+ if (resolved.kind === "referenceType") {
423
+ // Check localTypes for class/interface/typeAlias members
424
+ const localType = context.localTypes?.get(resolved.name);
425
+ if (localType?.kind === "interface") {
426
+ return localType.members
332
427
  .filter((m) => m.kind === "propertySignature")
333
428
  .map((m) => m.name);
334
429
  }
335
- // Check localTypes for interface members
336
- const localType = context.localTypes?.get(type.name);
337
- if (localType?.kind === "interface") {
430
+ if (localType?.kind === "class") {
338
431
  return localType.members
432
+ .filter((m) => m.kind === "propertyDeclaration" && !m.isStatic)
433
+ .map((m) => m.name);
434
+ }
435
+ if (localType?.kind === "typeAlias" && localType.type.kind === "objectType") {
436
+ return localType.type.members
339
437
  .filter((m) => m.kind === "propertySignature")
340
438
  .map((m) => m.name);
341
439
  }
440
+ // Cross-module: fall back to global member kind index when available
441
+ const receiverFqn = resolveReceiverTypeFqn(resolved, context);
442
+ if (receiverFqn) {
443
+ const perType = context.options.typeMemberIndex?.get(receiverFqn);
444
+ if (perType) {
445
+ const names = [];
446
+ for (const [memberName, kind] of perType.entries()) {
447
+ if (kind === "property" || kind === "field") {
448
+ names.push(memberName);
449
+ }
450
+ }
451
+ return names;
452
+ }
453
+ }
342
454
  }
343
455
  // Unknown type structure - return empty
344
456
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/expressions/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/expressions/collections.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/expressions/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAU,MAAM,aAAa,CAAC;AA+ErE;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC,EAC3D,SAAS,cAAc,KACtB,CAAC,cAAc,EAAE,cAAc,CAejC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,EACtD,SAAS,cAAc,KACtB,CAAC,cAAc,EAAE,cAAc,CAsBjC,CAAC"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/expressions/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAsB,MAAM,aAAa,CAAC;AAqGjF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC,EAC3D,SAAS,cAAc,KACtB,CAAC,cAAc,EAAE,cAAc,CAmBjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,EACtD,SAAS,cAAc,KACtB,CAAC,cAAc,EAAE,cAAc,CA2BjC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Function expression emitters (function expressions and arrow functions)
3
3
  */
4
- import { indent } from "../types.js";
4
+ import { indent, withStatic } from "../types.js";
5
5
  import { emitExpression } from "../expression-emitter.js";
6
6
  import { emitStatement } from "../statement-emitter.js";
7
7
  import { emitType } from "../type-emitter.js";
@@ -24,6 +24,16 @@ const unwrapParameterModifierType = (type) => {
24
24
  }
25
25
  return null;
26
26
  };
27
+ const isTypeParameterLike = (type, context) => {
28
+ if (type.kind === "typeParameterType")
29
+ return true;
30
+ if (type.kind === "referenceType" &&
31
+ (context.typeParameters?.has(type.name) ?? false) &&
32
+ (!type.typeArguments || type.typeArguments.length === 0)) {
33
+ return true;
34
+ }
35
+ return false;
36
+ };
27
37
  /**
28
38
  * Emit lambda parameters.
29
39
  * Rules:
@@ -36,7 +46,15 @@ const emitLambdaParameters = (parameters, context) => {
36
46
  let currentContext = context;
37
47
  // Check if ALL parameters have types - "all-or-nothing" rule
38
48
  // C# doesn't allow mixing typed and untyped lambda parameters
39
- const allHaveTypes = parameters.every((p) => p.type !== undefined);
49
+ const allHaveConcreteTypes = parameters.every((p) => {
50
+ if (!p.type)
51
+ return false;
52
+ const unwrapped = unwrapParameterModifierType(p.type);
53
+ const actualType = unwrapped ?? p.type;
54
+ // If the "type" is a type parameter (or references one), omit all types and let C# infer.
55
+ // This avoids emitting invalid C# like `(T x) => ...` in non-generic scopes.
56
+ return !isTypeParameterLike(actualType, currentContext);
57
+ });
40
58
  const parts = [];
41
59
  for (const param of parameters) {
42
60
  // Get parameter name
@@ -46,7 +64,7 @@ const emitLambdaParameters = (parameters, context) => {
46
64
  }
47
65
  // Get modifier (ref/out/in)
48
66
  const modifier = param.passing !== "value" ? `${param.passing} ` : "";
49
- if (allHaveTypes && param.type) {
67
+ if (allHaveConcreteTypes && param.type) {
50
68
  // Emit typed parameter
51
69
  // Unwrap ref/out/in wrapper types if present
52
70
  const unwrapped = unwrapParameterModifierType(param.type);
@@ -70,11 +88,12 @@ export const emitFunctionExpression = (expr, context) => {
70
88
  // Emit parameters
71
89
  const [paramList, paramContext] = emitLambdaParameters(expr.parameters, context);
72
90
  // Function expressions always have block bodies
73
- const blockContext = paramContext.isStatic
91
+ const blockContextBase = paramContext.isStatic
74
92
  ? indent(paramContext)
75
93
  : paramContext;
76
- const [blockCode] = emitStatement(expr.body, blockContext);
77
- const text = `(${paramList}) =>\n${blockCode}`;
94
+ const [blockCode] = emitStatement(expr.body, withStatic(blockContextBase, false));
95
+ const asyncPrefix = expr.isAsync ? "async " : "";
96
+ const text = `${asyncPrefix}(${paramList}) =>\n${blockCode}`;
78
97
  return [{ text }, paramContext];
79
98
  };
80
99
  /**
@@ -83,20 +102,21 @@ export const emitFunctionExpression = (expr, context) => {
83
102
  export const emitArrowFunction = (expr, context) => {
84
103
  // Emit parameters
85
104
  const [paramList, paramContext] = emitLambdaParameters(expr.parameters, context);
105
+ const asyncPrefix = expr.isAsync ? "async " : "";
86
106
  // Arrow function body can be block or expression
87
107
  if (expr.body.kind === "blockStatement") {
88
108
  // Block body: (params) => { ... }
89
- const blockContext = paramContext.isStatic
109
+ const blockContextBase = paramContext.isStatic
90
110
  ? indent(paramContext)
91
111
  : paramContext;
92
- const [blockCode] = emitStatement(expr.body, blockContext);
93
- const text = `(${paramList}) =>\n${blockCode}`;
112
+ const [blockCode] = emitStatement(expr.body, withStatic(blockContextBase, false));
113
+ const text = `${asyncPrefix}(${paramList}) =>\n${blockCode}`;
94
114
  return [{ text }, paramContext];
95
115
  }
96
116
  else {
97
117
  // Expression body: (params) => expression
98
118
  const [exprCode, newContext] = emitExpression(expr.body, paramContext);
99
- const text = `(${paramList}) => ${exprCode.text}`;
119
+ const text = `${asyncPrefix}(${paramList}) => ${exprCode.text}`;
100
120
  return [{ text }, newContext];
101
121
  }
102
122
  };
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/expressions/functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/expressions/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkC,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;GAGG;AACH,MAAM,2BAA2B,GAAG,CAAC,IAAY,EAAiB,EAAE;IAClE,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,iDAAiD;IACjD,IACE,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC;QACnD,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAC/B,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,SAAS,IAAI,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,IAAY,EACZ,OAAuB,EACd,EAAE;IACX,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IACnD,IACE,IAAI,CAAC,IAAI,KAAK,eAAe;QAC7B,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EACxD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,CAC3B,UAAkC,EAClC,OAAuB,EACG,EAAE;IAC5B,IAAI,cAAc,GAAG,OAAO,CAAC;IAE7B,6DAA6D;IAC7D,8DAA8D;IAC9D,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAClD,IAAI,CAAC,CAAC,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,SAAS,GAAG,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC;QACvC,0FAA0F;QAC1F,6EAA6E;QAC7E,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,qBAAqB;QACrB,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC/C,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtE,IAAI,oBAAoB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACvC,uBAAuB;YACvB,6CAA6C;YAC7C,MAAM,SAAS,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;YAE3C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YACnE,cAAc,GAAG,UAAU,CAAC;YAE5B,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,yDAAyD;YACzD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA2D,EAC3D,OAAuB,EACW,EAAE;IACpC,kBAAkB;IAClB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,oBAAoB,CACpD,IAAI,CAAC,UAAU,EACf,OAAO,CACR,CAAC;IAEF,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ;QAC5C,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACtB,CAAC,CAAC,YAAY,CAAC;IACjB,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,CAC/B,IAAI,CAAC,IAAI,EACT,UAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CACpC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,GAAG,WAAW,IAAI,SAAS,SAAS,SAAS,EAAE,CAAC;IAC7D,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAsD,EACtD,OAAuB,EACW,EAAE;IACpC,kBAAkB;IAClB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,oBAAoB,CACpD,IAAI,CAAC,UAAU,EACf,OAAO,CACR,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjD,iDAAiD;IACjD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACxC,kCAAkC;QAClC,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ;YAC5C,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YACtB,CAAC,CAAC,YAAY,CAAC;QACjB,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,CAC/B,IAAI,CAAC,IAAI,EACT,UAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CACpC,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,WAAW,IAAI,SAAS,SAAS,SAAS,EAAE,CAAC;QAC7D,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,0CAA0C;QAC1C,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,GAAG,WAAW,IAAI,SAAS,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/expressions/identifiers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyB7D;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,EACnD,SAAS,cAAc,KACtB,CAAC,cAAc,EAAE,cAAc,CA8DjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,SAAS,MAAM,EAAE,EAC3B,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAezB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,EAChB,UAAU,SAAS,MAAM,EAAE,EAC3B,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAczB,CAAC"}
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/expressions/identifiers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7D;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,EACnD,SAAS,cAAc,KACtB,CAAC,cAAc,EAAE,cAAc,CAgEjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,SAAS,MAAM,EAAE,EAC3B,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAezB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,EAChB,UAAU,SAAS,MAAM,EAAE,EAC3B,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAczB,CAAC"}
@@ -3,26 +3,6 @@
3
3
  */
4
4
  import { emitType } from "../type-emitter.js";
5
5
  import { escapeCSharpIdentifier } from "../emitter-types/index.js";
6
- /**
7
- * Fallback mappings for well-known runtime globals.
8
- * ONLY includes globals actually declared in @tsonic/js-globals.
9
- * Per Alice's decision: no ambient knowledge of undeclared types.
10
- */
11
- const RUNTIME_FALLBACKS = {
12
- // Objects with methods
13
- console: "global::Tsonic.JSRuntime.console",
14
- Math: "global::Tsonic.JSRuntime.Math",
15
- JSON: "global::Tsonic.JSRuntime.JSON",
16
- Number: "global::Tsonic.JSRuntime.Number",
17
- // Constructors
18
- Map: "global::Tsonic.JSRuntime.Map",
19
- Set: "global::Tsonic.JSRuntime.Set",
20
- // Timer functions (static methods on Timers class)
21
- setTimeout: "global::Tsonic.JSRuntime.Timers.setTimeout",
22
- clearTimeout: "global::Tsonic.JSRuntime.Timers.clearTimeout",
23
- setInterval: "global::Tsonic.JSRuntime.Timers.setInterval",
24
- clearInterval: "global::Tsonic.JSRuntime.Timers.clearInterval",
25
- };
26
6
  /**
27
7
  * Emit an identifier, using resolved binding info if available
28
8
  */
@@ -46,6 +26,11 @@ export const emitIdentifier = (expr, context) => {
46
26
  }
47
27
  }
48
28
  }
29
+ // Lexical remap for locals/parameters (prevents C# CS0136 shadowing errors).
30
+ const remappedLocal = context.localNameMap?.get(expr.name);
31
+ if (remappedLocal) {
32
+ return [{ text: remappedLocal }, context];
33
+ }
49
34
  // Check if this identifier is from an import
50
35
  if (context.importBindings) {
51
36
  const binding = context.importBindings.get(expr.name);
@@ -60,6 +45,12 @@ export const emitIdentifier = (expr, context) => {
60
45
  return [{ text: binding.clrName }, context];
61
46
  }
62
47
  }
48
+ // Static module members (functions/fields) in the current file's container class.
49
+ // These are emitted with namingPolicy (e.g., `main` → `Main` under `clr`).
50
+ const valueSymbol = context.valueSymbols?.get(expr.name);
51
+ if (valueSymbol) {
52
+ return [{ text: escapeCSharpIdentifier(valueSymbol.csharpName) }, context];
53
+ }
63
54
  // Use custom C# name from binding if specified (with global:: prefix)
64
55
  if (expr.csharpName && expr.resolvedAssembly) {
65
56
  const fqn = `global::${expr.resolvedAssembly}.${expr.csharpName}`;
@@ -71,16 +62,6 @@ export const emitIdentifier = (expr, context) => {
71
62
  const fqn = `global::${expr.resolvedClrType}`;
72
63
  return [{ text: fqn }, context];
73
64
  }
74
- // Fallback for well-known runtime globals (only in js mode)
75
- // In dotnet mode, there is no JS emulation - these globals don't exist
76
- const runtime = context.options.runtime ?? "js";
77
- if (runtime === "js") {
78
- const fallback = RUNTIME_FALLBACKS[expr.name];
79
- if (fallback) {
80
- // RUNTIME_FALLBACKS already have global:: prefix
81
- return [{ text: fallback }, context];
82
- }
83
- }
84
65
  // Fallback: use identifier as-is (escape C# keywords)
85
66
  return [{ text: escapeCSharpIdentifier(expr.name) }, context];
86
67
  };