@tsonic/frontend 0.0.2 → 0.0.5

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 (167) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/graph/extraction/imports.js +3 -3
  3. package/dist/graph/extraction/imports.js.map +1 -1
  4. package/dist/ir/binding-resolution.test.js +8 -3
  5. package/dist/ir/binding-resolution.test.js.map +1 -1
  6. package/dist/ir/builder/exports.d.ts.map +1 -1
  7. package/dist/ir/builder/exports.js +8 -6
  8. package/dist/ir/builder/exports.js.map +1 -1
  9. package/dist/ir/builder/imports.d.ts +3 -3
  10. package/dist/ir/builder/imports.d.ts.map +1 -1
  11. package/dist/ir/builder/imports.js +16 -9
  12. package/dist/ir/builder/imports.js.map +1 -1
  13. package/dist/ir/builder/orchestrator.js +1 -1
  14. package/dist/ir/builder/orchestrator.js.map +1 -1
  15. package/dist/ir/builder/statements.d.ts +7 -1
  16. package/dist/ir/builder/statements.d.ts.map +1 -1
  17. package/dist/ir/builder/statements.js +18 -5
  18. package/dist/ir/builder/statements.js.map +1 -1
  19. package/dist/ir/builder.test.js +20 -10
  20. package/dist/ir/builder.test.js.map +1 -1
  21. package/dist/ir/converters/anonymous-synthesis.d.ts +76 -0
  22. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -0
  23. package/dist/ir/converters/anonymous-synthesis.js +307 -0
  24. package/dist/ir/converters/anonymous-synthesis.js.map +1 -0
  25. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  26. package/dist/ir/converters/expressions/access.js +48 -1
  27. package/dist/ir/converters/expressions/access.js.map +1 -1
  28. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  29. package/dist/ir/converters/expressions/calls.js +47 -0
  30. package/dist/ir/converters/expressions/calls.js.map +1 -1
  31. package/dist/ir/converters/expressions/collections.d.ts +3 -0
  32. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  33. package/dist/ir/converters/expressions/collections.js +39 -1
  34. package/dist/ir/converters/expressions/collections.js.map +1 -1
  35. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  36. package/dist/ir/converters/expressions/functions.js +49 -4
  37. package/dist/ir/converters/expressions/functions.js.map +1 -1
  38. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  39. package/dist/ir/converters/expressions/helpers.js +8 -1
  40. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  41. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  42. package/dist/ir/converters/statements/control/conditionals.js +4 -6
  43. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  44. package/dist/ir/converters/statements/control/loops.js +5 -5
  45. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  46. package/dist/ir/converters/statements/declarations/interfaces.d.ts +4 -3
  47. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  48. package/dist/ir/converters/statements/declarations/interfaces.js +55 -1
  49. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  50. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +8 -3
  51. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  52. package/dist/ir/converters/statements/declarations/type-aliases.js +12 -2
  53. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  54. package/dist/ir/converters/synthetic-types.d.ts +38 -0
  55. package/dist/ir/converters/synthetic-types.d.ts.map +1 -0
  56. package/dist/ir/converters/synthetic-types.js +123 -0
  57. package/dist/ir/converters/synthetic-types.js.map +1 -0
  58. package/dist/ir/hierarchical-bindings-e2e.test.js +8 -3
  59. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
  60. package/dist/ir/statement-converter.d.ts +16 -1
  61. package/dist/ir/statement-converter.d.ts.map +1 -1
  62. package/dist/ir/statement-converter.js +32 -0
  63. package/dist/ir/statement-converter.js.map +1 -1
  64. package/dist/ir/type-converter/index.d.ts +1 -1
  65. package/dist/ir/type-converter/index.d.ts.map +1 -1
  66. package/dist/ir/type-converter/index.js +1 -1
  67. package/dist/ir/type-converter/index.js.map +1 -1
  68. package/dist/ir/type-converter/inference.d.ts +12 -0
  69. package/dist/ir/type-converter/inference.d.ts.map +1 -1
  70. package/dist/ir/type-converter/inference.js +145 -6
  71. package/dist/ir/type-converter/inference.js.map +1 -1
  72. package/dist/ir/type-converter/objects.d.ts.map +1 -1
  73. package/dist/ir/type-converter/objects.js +3 -2
  74. package/dist/ir/type-converter/objects.js.map +1 -1
  75. package/dist/ir/type-converter/orchestrator.d.ts +2 -2
  76. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -1
  77. package/dist/ir/type-converter/orchestrator.js +37 -0
  78. package/dist/ir/type-converter/orchestrator.js.map +1 -1
  79. package/dist/ir/type-converter/references.d.ts.map +1 -1
  80. package/dist/ir/type-converter/references.js +16 -5
  81. package/dist/ir/type-converter/references.js.map +1 -1
  82. package/dist/ir/type-converter.d.ts +1 -1
  83. package/dist/ir/type-converter.d.ts.map +1 -1
  84. package/dist/ir/type-converter.js +1 -1
  85. package/dist/ir/type-converter.js.map +1 -1
  86. package/dist/ir/types/expressions.d.ts +8 -0
  87. package/dist/ir/types/expressions.d.ts.map +1 -1
  88. package/dist/ir/types/index.d.ts +1 -1
  89. package/dist/ir/types/index.d.ts.map +1 -1
  90. package/dist/ir/types/index.js.map +1 -1
  91. package/dist/ir/types/ir-types.d.ts +24 -1
  92. package/dist/ir/types/ir-types.d.ts.map +1 -1
  93. package/dist/ir/types/module.d.ts +1 -1
  94. package/dist/ir/types/module.d.ts.map +1 -1
  95. package/dist/ir/types.d.ts +1 -1
  96. package/dist/ir/types.d.ts.map +1 -1
  97. package/dist/ir/types.js.map +1 -1
  98. package/dist/program/bindings.d.ts +51 -3
  99. package/dist/program/bindings.d.ts.map +1 -1
  100. package/dist/program/bindings.js +181 -19
  101. package/dist/program/bindings.js.map +1 -1
  102. package/dist/program/creation.d.ts.map +1 -1
  103. package/dist/program/creation.js +11 -9
  104. package/dist/program/creation.js.map +1 -1
  105. package/dist/program/dependency-graph.d.ts.map +1 -1
  106. package/dist/program/dependency-graph.js +65 -1
  107. package/dist/program/dependency-graph.js.map +1 -1
  108. package/dist/program/types.d.ts +4 -3
  109. package/dist/program/types.d.ts.map +1 -1
  110. package/dist/resolver/clr-bindings-resolver.d.ts +93 -0
  111. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -0
  112. package/dist/resolver/{dotnet-import-resolver.js → clr-bindings-resolver.js} +114 -24
  113. package/dist/resolver/clr-bindings-resolver.js.map +1 -0
  114. package/dist/resolver/import-resolution.d.ts +4 -4
  115. package/dist/resolver/import-resolution.d.ts.map +1 -1
  116. package/dist/resolver/import-resolution.js +17 -17
  117. package/dist/resolver/import-resolution.js.map +1 -1
  118. package/dist/resolver/index.d.ts +2 -2
  119. package/dist/resolver/index.d.ts.map +1 -1
  120. package/dist/resolver/index.js +2 -2
  121. package/dist/resolver/index.js.map +1 -1
  122. package/dist/resolver/types.d.ts +1 -1
  123. package/dist/resolver/types.d.ts.map +1 -1
  124. package/dist/resolver.d.ts +2 -2
  125. package/dist/resolver.d.ts.map +1 -1
  126. package/dist/resolver.js +1 -1
  127. package/dist/resolver.js.map +1 -1
  128. package/dist/resolver.test.js +1 -1
  129. package/dist/resolver.test.js.map +1 -1
  130. package/dist/types/diagnostic.d.ts +1 -1
  131. package/dist/types/diagnostic.d.ts.map +1 -1
  132. package/dist/types/diagnostic.js.map +1 -1
  133. package/dist/types/metadata.d.ts +1 -1
  134. package/dist/types/metadata.d.ts.map +1 -1
  135. package/dist/types/module.d.ts +1 -1
  136. package/dist/types/module.d.ts.map +1 -1
  137. package/dist/types/parameter-modifiers.d.ts.map +1 -1
  138. package/dist/types/parameter-modifiers.js +7 -3
  139. package/dist/types/parameter-modifiers.js.map +1 -1
  140. package/dist/types/support-types.test.js +6 -3
  141. package/dist/types/support-types.test.js.map +1 -1
  142. package/dist/validation/imports.js +1 -1
  143. package/dist/validation/imports.js.map +1 -1
  144. package/dist/validation/static-safety.d.ts +6 -1
  145. package/dist/validation/static-safety.d.ts.map +1 -1
  146. package/dist/validation/static-safety.js +146 -38
  147. package/dist/validation/static-safety.js.map +1 -1
  148. package/dist/validation/unsupported-utility-types.d.ts +38 -0
  149. package/dist/validation/unsupported-utility-types.d.ts.map +1 -0
  150. package/dist/validation/unsupported-utility-types.js +53 -0
  151. package/dist/validation/unsupported-utility-types.js.map +1 -0
  152. package/dist/validator.test.js +307 -16
  153. package/dist/validator.test.js.map +1 -1
  154. package/package.json +1 -1
  155. package/dist/ir/type-converter/clr-type-resolver.d.ts +0 -15
  156. package/dist/ir/type-converter/clr-type-resolver.d.ts.map +0 -1
  157. package/dist/ir/type-converter/clr-type-resolver.js +0 -120
  158. package/dist/ir/type-converter/clr-type-resolver.js.map +0 -1
  159. package/dist/resolver/dotnet-import-resolver.d.ts +0 -74
  160. package/dist/resolver/dotnet-import-resolver.d.ts.map +0 -1
  161. package/dist/resolver/dotnet-import-resolver.js.map +0 -1
  162. package/dist/types/test-debug.d.ts.map +0 -1
  163. package/dist/types/test-debug.js.map +0 -1
  164. package/dist/validation/aot-safety.d.ts +0 -24
  165. package/dist/validation/aot-safety.d.ts.map +0 -1
  166. package/dist/validation/aot-safety.js +0 -114
  167. package/dist/validation/aot-safety.js.map +0 -1
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Anonymous Object Literal Synthesis (TSN7403)
3
+ *
4
+ * When an object literal has no contextual nominal type, we synthesize a
5
+ * nominal type from the TypeScript-inferred type. This enables:
6
+ * - Object literals without explicit type annotations
7
+ * - Spread expressions in object literals
8
+ * - Function-valued properties (as delegates)
9
+ *
10
+ * Eligibility:
11
+ * ✅ Allowed: identifier keys, string literal keys, spreads, arrow functions
12
+ * ❌ Rejected: computed keys, symbol keys, method shorthand, getters/setters
13
+ */
14
+ import * as ts from "typescript";
15
+ import { convertType } from "../type-converter.js";
16
+ /**
17
+ * Extract property info from a TypeScript object type
18
+ */
19
+ const extractPropertyInfo = (type, checker) => {
20
+ const properties = type.getProperties();
21
+ const result = [];
22
+ for (const prop of properties) {
23
+ const propType = checker.getTypeOfSymbolAtLocation(prop, prop.valueDeclaration ?? prop.declarations?.[0] ?? {});
24
+ const flags = prop.flags;
25
+ const optional = (flags & ts.SymbolFlags.Optional) !== 0;
26
+ // Check readonly via declaration modifiers
27
+ const decl = prop.valueDeclaration;
28
+ const readonly = decl !== undefined &&
29
+ ts.isPropertySignature(decl) &&
30
+ decl.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword) ===
31
+ true;
32
+ const typeNode = checker.typeToTypeNode(propType, undefined, undefined);
33
+ if (typeNode) {
34
+ result.push({
35
+ name: prop.name,
36
+ type: convertType(typeNode, checker),
37
+ optional,
38
+ readonly,
39
+ });
40
+ }
41
+ }
42
+ // Sort by name for stable signature
43
+ return result.sort((a, b) => a.name.localeCompare(b.name));
44
+ };
45
+ /**
46
+ * Serialize an IrType to a stable string for shape signature
47
+ */
48
+ const serializeType = (type) => {
49
+ switch (type.kind) {
50
+ case "primitiveType":
51
+ return type.name;
52
+ case "literalType":
53
+ return `lit:${typeof type.value}:${String(type.value)}`;
54
+ case "referenceType":
55
+ if (type.typeArguments && type.typeArguments.length > 0) {
56
+ return `ref:${type.name}<${type.typeArguments.map(serializeType).join(",")}>`;
57
+ }
58
+ return `ref:${type.name}`;
59
+ case "arrayType":
60
+ return `arr:${serializeType(type.elementType)}`;
61
+ case "tupleType":
62
+ return `tup:[${type.elementTypes.map(serializeType).join(",")}]`;
63
+ case "functionType": {
64
+ const params = type.parameters
65
+ .map((p) => (p.type ? serializeType(p.type) : "any"))
66
+ .join(",");
67
+ return `fn:(${params})=>${serializeType(type.returnType)}`;
68
+ }
69
+ case "unionType":
70
+ return `union:[${type.types.map(serializeType).join("|")}]`;
71
+ case "typeParameterType":
72
+ return `tp:${type.name}`;
73
+ case "voidType":
74
+ return "void";
75
+ case "anyType":
76
+ return "any";
77
+ case "unknownType":
78
+ return "unknown";
79
+ case "neverType":
80
+ return "never";
81
+ case "objectType": {
82
+ // Nested object types - serialize members (only property signatures)
83
+ const members = type.members
84
+ .filter((m) => m.kind === "propertySignature")
85
+ .map((m) => `${m.name}${m.isOptional ? "?" : ""}:${serializeType(m.type)}`)
86
+ .sort()
87
+ .join(";");
88
+ return `obj:{${members}}`;
89
+ }
90
+ case "dictionaryType":
91
+ return `dict:[${serializeType(type.keyType)}]:${serializeType(type.valueType)}`;
92
+ case "intersectionType":
93
+ return `intersection:[${type.types.map(serializeType).join("&")}]`;
94
+ default:
95
+ return "unknown";
96
+ }
97
+ };
98
+ /**
99
+ * Compute a stable shape signature from property info
100
+ *
101
+ * Format: sorted properties with their types, optionality, and readonly flags
102
+ * Example: "count:number;name?:string;readonly:id:string"
103
+ */
104
+ export const computeShapeSignature = (type, checker) => {
105
+ const props = extractPropertyInfo(type, checker);
106
+ return props
107
+ .map((p) => {
108
+ const prefix = p.readonly ? "ro:" : "";
109
+ const suffix = p.optional ? "?" : "";
110
+ return `${prefix}${p.name}${suffix}:${serializeType(p.type)}`;
111
+ })
112
+ .join(";");
113
+ };
114
+ /**
115
+ * Mutable registry for synthetic types (module-scoped)
116
+ * Key: shape signature, Value: synthetic type entry
117
+ */
118
+ const syntheticTypeRegistry = new Map();
119
+ /**
120
+ * Reset the registry (call at the start of each file/module compilation)
121
+ */
122
+ export const resetSyntheticRegistry = () => {
123
+ syntheticTypeRegistry.clear();
124
+ };
125
+ /**
126
+ * Generate a synthetic type name from location
127
+ *
128
+ * Format: __Anon_<FileStem>_<Line>_<Col>
129
+ */
130
+ export const generateSyntheticName = (fileStem, line, col) => {
131
+ // Sanitize file stem (remove special chars)
132
+ const safeStem = fileStem.replace(/[^a-zA-Z0-9_]/g, "_");
133
+ return `__Anon_${safeStem}_${line}_${col}`;
134
+ };
135
+ /**
136
+ * Get or create a synthetic type for a shape
137
+ *
138
+ * Returns existing type if shape was seen before (deduplication)
139
+ */
140
+ export const getOrCreateSyntheticType = (shapeSignature, name, type, checker, capturedTypeParams) => {
141
+ // Check if we already have a synthetic for this shape
142
+ const existing = syntheticTypeRegistry.get(shapeSignature);
143
+ if (existing) {
144
+ return existing;
145
+ }
146
+ // Create new synthetic interface declaration
147
+ const props = extractPropertyInfo(type, checker);
148
+ const members = props.map((p) => ({
149
+ kind: "propertySignature",
150
+ name: p.name,
151
+ type: p.type,
152
+ isOptional: p.optional,
153
+ isReadonly: p.readonly,
154
+ }));
155
+ const declaration = {
156
+ kind: "interfaceDeclaration",
157
+ name,
158
+ typeParameters: capturedTypeParams.length > 0 ? capturedTypeParams : undefined,
159
+ extends: [],
160
+ members,
161
+ isExported: true, // Synthetic types are always exported for accessibility
162
+ isStruct: false,
163
+ };
164
+ const entry = {
165
+ name,
166
+ declaration,
167
+ typeParameters: capturedTypeParams,
168
+ };
169
+ syntheticTypeRegistry.set(shapeSignature, entry);
170
+ return entry;
171
+ };
172
+ /**
173
+ * Get all synthetic type declarations (call after processing a file)
174
+ */
175
+ export const getSyntheticDeclarations = () => {
176
+ return Array.from(syntheticTypeRegistry.values()).map((e) => e.declaration);
177
+ };
178
+ /**
179
+ * Check if an object literal expression is eligible for synthesis
180
+ *
181
+ * Eligible:
182
+ * - All property keys are identifiers or string literals
183
+ * - Spread expressions have resolvable object types
184
+ * - No method shorthand (arrow functions are ok)
185
+ * - No getters/setters
186
+ * - No computed keys with non-literal expressions
187
+ */
188
+ export const checkSynthesisEligibility = (node, checker) => {
189
+ for (const prop of node.properties) {
190
+ // Property assignment: check key type
191
+ if (ts.isPropertyAssignment(prop)) {
192
+ if (ts.isComputedPropertyName(prop.name)) {
193
+ // Computed key - check if it's a string literal
194
+ const expr = prop.name.expression;
195
+ if (!ts.isStringLiteral(expr)) {
196
+ return {
197
+ eligible: false,
198
+ reason: `Computed property key is not a string literal`,
199
+ };
200
+ }
201
+ }
202
+ // Check for symbol keys
203
+ if (ts.isPrivateIdentifier(prop.name)) {
204
+ return {
205
+ eligible: false,
206
+ reason: `Private identifier (symbol) keys are not supported`,
207
+ };
208
+ }
209
+ }
210
+ // Shorthand property: always ok (identifier key)
211
+ if (ts.isShorthandPropertyAssignment(prop)) {
212
+ continue;
213
+ }
214
+ // Spread: check that the spread expression has a resolvable type
215
+ if (ts.isSpreadAssignment(prop)) {
216
+ const spreadType = checker.getTypeAtLocation(prop.expression);
217
+ if (spreadType.flags & ts.TypeFlags.Any) {
218
+ return {
219
+ eligible: false,
220
+ reason: `Spread expression has type 'any' which cannot be synthesized`,
221
+ };
222
+ }
223
+ if (spreadType.flags & ts.TypeFlags.Unknown) {
224
+ return {
225
+ eligible: false,
226
+ reason: `Spread expression has type 'unknown' which cannot be synthesized`,
227
+ };
228
+ }
229
+ continue;
230
+ }
231
+ // Method declaration: reject (use arrow functions instead)
232
+ if (ts.isMethodDeclaration(prop)) {
233
+ return {
234
+ eligible: false,
235
+ reason: `Method shorthand is not supported. Use arrow function syntax: 'name: () => ...'`,
236
+ };
237
+ }
238
+ // Getter/setter: reject
239
+ if (ts.isGetAccessorDeclaration(prop) ||
240
+ ts.isSetAccessorDeclaration(prop)) {
241
+ return {
242
+ eligible: false,
243
+ reason: `Getters and setters are not supported in synthesized types`,
244
+ };
245
+ }
246
+ }
247
+ return { eligible: true };
248
+ };
249
+ // ============================================================================
250
+ // Type Parameter Capture
251
+ // ============================================================================
252
+ /**
253
+ * Find type parameters used in a type
254
+ */
255
+ export const findUsedTypeParameters = (type, inScopeParams) => {
256
+ const used = new Set();
257
+ const visit = (t) => {
258
+ switch (t.kind) {
259
+ case "typeParameterType":
260
+ if (inScopeParams.has(t.name)) {
261
+ used.add(t.name);
262
+ }
263
+ break;
264
+ case "referenceType":
265
+ t.typeArguments?.forEach(visit);
266
+ break;
267
+ case "arrayType":
268
+ visit(t.elementType);
269
+ break;
270
+ case "tupleType":
271
+ t.elementTypes.forEach(visit);
272
+ break;
273
+ case "functionType":
274
+ t.parameters.forEach((p) => {
275
+ if (p.type)
276
+ visit(p.type);
277
+ });
278
+ visit(t.returnType);
279
+ break;
280
+ case "unionType":
281
+ t.types.forEach(visit);
282
+ break;
283
+ case "objectType":
284
+ t.members.forEach((m) => {
285
+ if (m.kind === "propertySignature") {
286
+ visit(m.type);
287
+ }
288
+ else if (m.kind === "methodSignature") {
289
+ m.parameters.forEach((p) => {
290
+ if (p.type)
291
+ visit(p.type);
292
+ });
293
+ if (m.returnType)
294
+ visit(m.returnType);
295
+ }
296
+ });
297
+ break;
298
+ case "dictionaryType":
299
+ visit(t.keyType);
300
+ visit(t.valueType);
301
+ break;
302
+ }
303
+ };
304
+ visit(type);
305
+ return used;
306
+ };
307
+ //# sourceMappingURL=anonymous-synthesis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymous-synthesis.js","sourceRoot":"","sources":["../../../src/ir/converters/anonymous-synthesis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/access.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAyDpD;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC,uBAAuB,EAC9D,SAAS,EAAE,CAAC,WAAW,KACtB,kBA8BF,CAAC"}
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/access.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAiHpD;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC,uBAAuB,EAC9D,SAAS,EAAE,CAAC,WAAW,KACtB,kBA8BF,CAAC"}
@@ -5,9 +5,28 @@ import * as ts from "typescript";
5
5
  import { getInferredType } from "./helpers.js";
6
6
  import { convertExpression } from "../../expression-converter.js";
7
7
  import { getBindingRegistry } from "../statements/declarations/registry.js";
8
+ /**
9
+ * Extract the type name from an inferred type for binding lookup.
10
+ * Handles tsbindgen's naming convention where instance types are suffixed with $instance
11
+ * (e.g., List_1$instance → List_1 for binding lookup)
12
+ */
13
+ const extractTypeName = (inferredType) => {
14
+ if (!inferredType)
15
+ return undefined;
16
+ if (inferredType.kind === "referenceType") {
17
+ const name = inferredType.name;
18
+ // Strip $instance suffix from tsbindgen-generated type names
19
+ // e.g., "List_1$instance" → "List_1" for binding lookup
20
+ if (name.endsWith("$instance")) {
21
+ return name.slice(0, -"$instance".length);
22
+ }
23
+ return name;
24
+ }
25
+ return undefined;
26
+ };
8
27
  /**
9
28
  * Resolve hierarchical binding for a member access
10
- * Handles namespace.type and type.member patterns
29
+ * Handles namespace.type, type.member, directType.member, and instance.member patterns
11
30
  */
12
31
  const resolveHierarchicalBinding = (object, propertyName) => {
13
32
  const registry = getBindingRegistry();
@@ -24,6 +43,20 @@ const resolveHierarchicalBinding = (object, propertyName) => {
24
43
  return undefined;
25
44
  }
26
45
  }
46
+ // Case 1b: object is a direct type import (like `Console` imported directly)
47
+ // Check if the identifier is a type alias, and if so, look up the member
48
+ const directType = registry.getType(object.name);
49
+ if (directType) {
50
+ const member = directType.members.find((m) => m.alias === propertyName);
51
+ if (member) {
52
+ // Found a member binding for direct type import!
53
+ return {
54
+ assembly: member.binding.assembly,
55
+ type: member.binding.type,
56
+ member: member.binding.member,
57
+ };
58
+ }
59
+ }
27
60
  }
28
61
  // Case 2: object is member expression with a type reference → check if property is a member
29
62
  if (object.kind === "memberAccess" && !object.isComputed) {
@@ -48,6 +81,20 @@ const resolveHierarchicalBinding = (object, propertyName) => {
48
81
  }
49
82
  }
50
83
  }
84
+ // Case 3: Instance member access (e.g., numbers.add where numbers is List<T>)
85
+ // Use the object's inferred type to look up the member binding
86
+ const objectTypeName = extractTypeName(object.inferredType);
87
+ if (objectTypeName) {
88
+ // Look up member by type alias and property name
89
+ const member = registry.getMember(objectTypeName, propertyName);
90
+ if (member) {
91
+ return {
92
+ assembly: member.binding.assembly,
93
+ type: member.binding.type,
94
+ member: member.binding.member,
95
+ };
96
+ }
97
+ }
51
98
  return undefined;
52
99
  };
53
100
  /**
@@ -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;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAuEnE;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,EACvB,SAAS,EAAE,CAAC,WAAW,KACtB,gBAwBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,aAAa,EACtB,SAAS,EAAE,CAAC,WAAW,KACtB,eAsBF,CAAC"}
1
+ {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/calls.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAkInE;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,EACvB,SAAS,EAAE,CAAC,WAAW,KACtB,gBA0BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,aAAa,EACtB,SAAS,EAAE,CAAC,WAAW,KACtB,eAsBF,CAAC"}
@@ -4,6 +4,7 @@
4
4
  import * as ts from "typescript";
5
5
  import { getInferredType, extractTypeArguments, checkIfRequiresSpecialization, } from "./helpers.js";
6
6
  import { convertExpression } from "../../expression-converter.js";
7
+ import { convertType, convertTsTypeToIr } from "../../type-converter.js";
7
8
  /**
8
9
  * Extract argument passing modes from resolved signature
9
10
  * Returns array aligned with arguments, indicating ref/out/in/value for each
@@ -50,6 +51,50 @@ const extractArgumentPassing = (node, checker) => {
50
51
  return undefined;
51
52
  }
52
53
  };
54
+ /**
55
+ * Safely convert a ts.Type to IrType
56
+ */
57
+ const convertTsTypeToIrSafe = (tsType, node, checker) => {
58
+ try {
59
+ const typeNode = checker.typeToTypeNode(tsType, node, ts.NodeBuilderFlags.None);
60
+ return typeNode
61
+ ? convertType(typeNode, checker)
62
+ : convertTsTypeToIr(tsType, checker);
63
+ }
64
+ catch {
65
+ return undefined;
66
+ }
67
+ };
68
+ /**
69
+ * Extract type predicate narrowing metadata from a call expression.
70
+ * Returns narrowing info if the callee is a type predicate function (x is T).
71
+ */
72
+ const extractNarrowing = (node, checker) => {
73
+ try {
74
+ const sig = checker.getResolvedSignature(node);
75
+ if (!sig)
76
+ return undefined;
77
+ const pred = checker.getTypePredicateOfSignature(sig);
78
+ // We only handle "param is T" predicates (not "this is T")
79
+ if (pred &&
80
+ pred.kind === ts.TypePredicateKind.Identifier &&
81
+ pred.parameterIndex !== undefined &&
82
+ pred.type) {
83
+ const targetType = convertTsTypeToIrSafe(pred.type, node, checker);
84
+ if (targetType) {
85
+ return {
86
+ kind: "typePredicate",
87
+ argIndex: pred.parameterIndex,
88
+ targetType,
89
+ };
90
+ }
91
+ }
92
+ return undefined;
93
+ }
94
+ catch {
95
+ return undefined;
96
+ }
97
+ };
53
98
  /**
54
99
  * Convert call expression
55
100
  */
@@ -58,6 +103,7 @@ export const convertCallExpression = (node, checker) => {
58
103
  const typeArguments = extractTypeArguments(node, checker);
59
104
  const requiresSpecialization = checkIfRequiresSpecialization(node, checker);
60
105
  const argumentPassing = extractArgumentPassing(node, checker);
106
+ const narrowing = extractNarrowing(node, checker);
61
107
  return {
62
108
  kind: "call",
63
109
  callee: convertExpression(node.expression, checker),
@@ -75,6 +121,7 @@ export const convertCallExpression = (node, checker) => {
75
121
  typeArguments,
76
122
  requiresSpecialization,
77
123
  argumentPassing,
124
+ narrowing,
78
125
  };
79
126
  };
80
127
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/calls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/calls.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,9 @@ import { IrArrayExpression, IrObjectExpression } from "../../types.js";
9
9
  export declare const convertArrayLiteral: (node: ts.ArrayLiteralExpression, checker: ts.TypeChecker) => IrArrayExpression;
10
10
  /**
11
11
  * Convert object literal expression
12
+ *
13
+ * If no contextual nominal type exists and the literal is eligible for synthesis,
14
+ * a synthetic type is generated and used as the contextual type.
12
15
  */
13
16
  export declare const convertObjectLiteral: (node: ts.ObjectLiteralExpression, checker: ts.TypeChecker) => IrObjectExpression;
14
17
  //# sourceMappingURL=collections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/collections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,EAAE,CAAC,sBAAsB,EAC/B,SAAS,EAAE,CAAC,WAAW,KACtB,iBAiBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,uBAAuB,EAChC,SAAS,EAAE,CAAC,WAAW,KACtB,kBAuCF,CAAC"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/collections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AAUxB;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,EAAE,CAAC,sBAAsB,EAC/B,SAAS,EAAE,CAAC,WAAW,KACtB,iBAiBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,uBAAuB,EAChC,SAAS,EAAE,CAAC,WAAW,KACtB,kBA+FF,CAAC"}
@@ -2,8 +2,10 @@
2
2
  * Collection expression converters (arrays and objects)
3
3
  */
4
4
  import * as ts from "typescript";
5
+ import * as path from "path";
5
6
  import { getInferredType, getContextualType } from "./helpers.js";
6
7
  import { convertExpression } from "../../expression-converter.js";
8
+ import { computeShapeSignature, generateSyntheticName, getOrCreateSyntheticType, checkSynthesisEligibility, } from "../anonymous-synthesis.js";
7
9
  /**
8
10
  * Convert array literal expression
9
11
  */
@@ -27,9 +29,14 @@ export const convertArrayLiteral = (node, checker) => {
27
29
  };
28
30
  /**
29
31
  * Convert object literal expression
32
+ *
33
+ * If no contextual nominal type exists and the literal is eligible for synthesis,
34
+ * a synthetic type is generated and used as the contextual type.
30
35
  */
31
36
  export const convertObjectLiteral = (node, checker) => {
32
37
  const properties = [];
38
+ // Track if we have any spreads (needed for emitter IIFE lowering)
39
+ let hasSpreads = false;
33
40
  node.properties.forEach((prop) => {
34
41
  if (ts.isPropertyAssignment(prop)) {
35
42
  const key = ts.isComputedPropertyName(prop.name)
@@ -53,6 +60,7 @@ export const convertObjectLiteral = (node, checker) => {
53
60
  });
54
61
  }
55
62
  else if (ts.isSpreadAssignment(prop)) {
63
+ hasSpreads = true;
56
64
  properties.push({
57
65
  kind: "spread",
58
66
  expression: convertExpression(prop.expression, checker),
@@ -60,11 +68,41 @@ export const convertObjectLiteral = (node, checker) => {
60
68
  }
61
69
  // Skip getters/setters/methods for now (can add later if needed)
62
70
  });
71
+ // Try to get contextual type first
72
+ let contextualType = getContextualType(node, checker);
73
+ // If no contextual type, check if eligible for synthesis
74
+ if (!contextualType) {
75
+ const eligibility = checkSynthesisEligibility(node, checker);
76
+ if (eligibility.eligible) {
77
+ // Get the inferred type from TypeScript
78
+ const tsType = checker.getTypeAtLocation(node);
79
+ // Compute shape signature for deduplication
80
+ const shapeSignature = computeShapeSignature(tsType, checker);
81
+ // Get source file info for synthetic name
82
+ const sourceFile = node.getSourceFile();
83
+ const fileStem = path.basename(sourceFile.fileName, path.extname(sourceFile.fileName));
84
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
85
+ // Generate synthetic name
86
+ const syntheticName = generateSyntheticName(fileStem, line + 1, character + 1);
87
+ // Get or create synthetic type (handles deduplication)
88
+ // TODO: Handle generic type parameter capture
89
+ const syntheticEntry = getOrCreateSyntheticType(shapeSignature, syntheticName, tsType, checker, [] // No captured type params for now
90
+ );
91
+ // Create reference to synthetic type
92
+ const syntheticRef = {
93
+ kind: "referenceType",
94
+ name: syntheticEntry.name,
95
+ typeArguments: undefined, // TODO: Add type args if capturing generic params
96
+ };
97
+ contextualType = syntheticRef;
98
+ }
99
+ }
63
100
  return {
64
101
  kind: "object",
65
102
  properties,
66
103
  inferredType: getInferredType(node, checker),
67
- contextualType: getContextualType(node, checker),
104
+ contextualType,
105
+ hasSpreads, // Add flag for emitter to know about spreads
68
106
  };
69
107
  };
70
108
  //# sourceMappingURL=collections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/collections.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AASxB;;GAEG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,EAAE,CAAC,kBAAkB,EAC3B,SAAS,EAAE,CAAC,WAAW,KACtB,oBAeF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,aAAa,EACtB,SAAS,EAAE,CAAC,WAAW,KACtB,yBAeF,CAAC"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,MAAM,gBAAgB,CAAC;AAkExB;;GAEG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,EAAE,CAAC,kBAAkB,EAC3B,SAAS,EAAE,CAAC,WAAW,KACtB,oBAeF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,aAAa,EACtB,SAAS,EAAE,CAAC,WAAW,KACtB,yBAeF,CAAC"}