@tsonic/frontend 0.0.12 → 0.0.14
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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +61 -1
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls.d.ts +2 -2
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +318 -24
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +4 -4
- package/dist/ir/converters/expressions/helpers.js.map +1 -1
- package/dist/ir/converters/expressions/literals.d.ts +14 -0
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
- package/dist/ir/converters/expressions/literals.js +22 -2
- package/dist/ir/converters/expressions/literals.js.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.js +3 -2
- package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
- package/dist/ir/converters/statements/helpers.js +10 -4
- package/dist/ir/converters/statements/helpers.js.map +1 -1
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +59 -7
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/index.d.ts +1 -1
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js +1 -1
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/statement-converter.d.ts.map +1 -1
- package/dist/ir/statement-converter.js +12 -0
- package/dist/ir/statement-converter.js.map +1 -1
- package/dist/ir/type-converter/inference.d.ts.map +1 -1
- package/dist/ir/type-converter/inference.js +50 -7
- package/dist/ir/type-converter/inference.js.map +1 -1
- package/dist/ir/type-converter/primitives.d.ts +26 -4
- package/dist/ir/type-converter/primitives.d.ts.map +1 -1
- package/dist/ir/type-converter/primitives.js +36 -2
- package/dist/ir/type-converter/primitives.js.map +1 -1
- package/dist/ir/type-converter/references.d.ts.map +1 -1
- package/dist/ir/type-converter/references.js +324 -11
- package/dist/ir/type-converter/references.js.map +1 -1
- package/dist/ir/type-converter/utility-types.d.ts +93 -0
- package/dist/ir/type-converter/utility-types.d.ts.map +1 -0
- package/dist/ir/type-converter/utility-types.js +528 -0
- package/dist/ir/type-converter/utility-types.js.map +1 -0
- package/dist/ir/type-converter/utility-types.test.d.ts +10 -0
- package/dist/ir/type-converter/utility-types.test.d.ts.map +1 -0
- package/dist/ir/type-converter/utility-types.test.js +1030 -0
- package/dist/ir/type-converter/utility-types.test.js.map +1 -0
- package/dist/ir/types/expressions.d.ts +87 -3
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/types/helpers.d.ts +3 -1
- package/dist/ir/types/helpers.d.ts.map +1 -1
- package/dist/ir/types/index.d.ts +3 -2
- package/dist/ir/types/index.d.ts.map +1 -1
- package/dist/ir/types/index.js +2 -0
- package/dist/ir/types/index.js.map +1 -1
- package/dist/ir/types/ir-types.d.ts +69 -11
- package/dist/ir/types/ir-types.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.d.ts +46 -0
- package/dist/ir/types/numeric-helpers.d.ts.map +1 -0
- package/dist/ir/types/numeric-helpers.js +105 -0
- package/dist/ir/types/numeric-helpers.js.map +1 -0
- package/dist/ir/types/statements.d.ts +11 -1
- package/dist/ir/types/statements.d.ts.map +1 -1
- package/dist/ir/types.d.ts +2 -2
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js +3 -1
- package/dist/ir/types.js.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts +32 -0
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -0
- package/dist/ir/validation/anonymous-type-lowering-pass.js +868 -0
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts +37 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.js +282 -0
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.test.d.ts +5 -0
- package/dist/ir/validation/attribute-collection-pass.test.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.test.js +215 -0
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -0
- package/dist/ir/validation/index.d.ts +3 -0
- package/dist/ir/validation/index.d.ts.map +1 -1
- package/dist/ir/validation/index.js +3 -0
- package/dist/ir/validation/index.js.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.d.ts +77 -0
- package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -0
- package/dist/ir/validation/numeric-coercion-pass.js +686 -0
- package/dist/ir/validation/numeric-coercion-pass.js.map +1 -0
- package/dist/ir/validation/numeric-invariants.test.js +130 -14
- package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.js +68 -108
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +23 -12
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/yield-lowering-pass.test.js +21 -12
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
- package/dist/program/bindings.d.ts +20 -9
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +98 -36
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/bindings.test.js +3 -3
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +31 -5
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/resolver/import-resolution.d.ts +4 -0
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +18 -7
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver.test.js +2 -2
- package/dist/resolver.test.js.map +1 -1
- package/dist/types/diagnostic.d.ts +1 -1
- package/dist/types/diagnostic.d.ts.map +1 -1
- package/dist/types/diagnostic.js.map +1 -1
- package/dist/validation/generics.d.ts.map +1 -1
- package/dist/validation/generics.js +133 -1
- package/dist/validation/generics.js.map +1 -1
- package/dist/validation/static-safety.js +13 -0
- package/dist/validation/static-safety.js.map +1 -1
- package/dist/validation/unsupported-utility-types.d.ts +10 -8
- package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
- package/dist/validation/unsupported-utility-types.js +12 -19
- package/dist/validation/unsupported-utility-types.js.map +1 -1
- package/dist/validator.test.js +133 -28
- package/dist/validator.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -95,41 +95,280 @@ const extractNarrowing = (node, checker) => {
|
|
|
95
95
|
return undefined;
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
|
+
/**
|
|
99
|
+
* Build a substitution map from type parameter names to their instantiated TypeNodes.
|
|
100
|
+
*
|
|
101
|
+
* For a call like `dict.add(key, value)` where `dict: Dictionary<int, Todo>`,
|
|
102
|
+
* this returns a map: { "TKey" -> int TypeNode, "TValue" -> Todo TypeNode }
|
|
103
|
+
*
|
|
104
|
+
* The key insight is that the RECEIVER's type (Dictionary<int, Todo>) preserves
|
|
105
|
+
* the type arguments as TypeNodes, which in turn preserve CLR type aliases.
|
|
106
|
+
* TypeScript's type instantiation mechanism loses aliasSymbol, but TypeNodes don't.
|
|
107
|
+
*/
|
|
108
|
+
const buildTypeParameterSubstitutionMap = (node, checker) => {
|
|
109
|
+
// For method calls, get the receiver's type arguments
|
|
110
|
+
// e.g., for dict.add(...), get Dictionary<int, Todo>'s type arguments
|
|
111
|
+
if (ts.isCallExpression(node) &&
|
|
112
|
+
ts.isPropertyAccessExpression(node.expression)) {
|
|
113
|
+
const receiver = node.expression.expression;
|
|
114
|
+
const receiverType = checker.getTypeAtLocation(receiver);
|
|
115
|
+
// Get the class/interface/type alias declaration that defines the type parameters
|
|
116
|
+
// For type aliases like Dictionary_2<TKey, TValue>, use aliasSymbol
|
|
117
|
+
// For classes/interfaces, use getSymbol()
|
|
118
|
+
const symbol = receiverType.aliasSymbol ?? receiverType.getSymbol();
|
|
119
|
+
if (!symbol)
|
|
120
|
+
return undefined;
|
|
121
|
+
const declarations = symbol.getDeclarations();
|
|
122
|
+
if (!declarations || declarations.length === 0)
|
|
123
|
+
return undefined;
|
|
124
|
+
// Find the class/interface/type alias declaration with type parameters
|
|
125
|
+
let typeParamDecls;
|
|
126
|
+
for (const decl of declarations) {
|
|
127
|
+
if (ts.isClassDeclaration(decl) && decl.typeParameters) {
|
|
128
|
+
typeParamDecls = decl.typeParameters;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
if (ts.isInterfaceDeclaration(decl) && decl.typeParameters) {
|
|
132
|
+
typeParamDecls = decl.typeParameters;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
if (ts.isTypeAliasDeclaration(decl) && decl.typeParameters) {
|
|
136
|
+
typeParamDecls = decl.typeParameters;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (!typeParamDecls || typeParamDecls.length === 0)
|
|
141
|
+
return undefined;
|
|
142
|
+
// Get the type arguments from the receiver's type
|
|
143
|
+
// IMPORTANT: We must trace back to the ORIGINAL source code AST to preserve
|
|
144
|
+
// CLR type aliases like `int`. TypeScript's typeToTypeNode() does NOT preserve
|
|
145
|
+
// type aliases - it synthesizes primitive keywords like NumberKeyword instead.
|
|
146
|
+
//
|
|
147
|
+
// Look for the variable declaration that has type arguments in:
|
|
148
|
+
// 1. Explicit type annotation: const dict: Dictionary<int, Todo> = ...
|
|
149
|
+
// 2. NewExpression initializer: const dict = new Dictionary<int, Todo>()
|
|
150
|
+
// 3. Other declaration forms (property, parameter)
|
|
151
|
+
const receiverSymbol = checker.getSymbolAtLocation(receiver);
|
|
152
|
+
if (receiverSymbol) {
|
|
153
|
+
const receiverDecls = receiverSymbol.getDeclarations();
|
|
154
|
+
if (receiverDecls) {
|
|
155
|
+
for (const decl of receiverDecls) {
|
|
156
|
+
// Helper to build substitution map from type argument nodes
|
|
157
|
+
const buildMapFromTypeArgs = (typeArgNodes) => {
|
|
158
|
+
if (typeParamDecls &&
|
|
159
|
+
typeArgNodes.length === typeParamDecls.length) {
|
|
160
|
+
const substitutionMap = new Map();
|
|
161
|
+
for (let i = 0; i < typeParamDecls.length; i++) {
|
|
162
|
+
const paramDecl = typeParamDecls[i];
|
|
163
|
+
const argNode = typeArgNodes[i];
|
|
164
|
+
if (paramDecl && argNode) {
|
|
165
|
+
substitutionMap.set(paramDecl.name.text, argNode);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return substitutionMap;
|
|
169
|
+
}
|
|
170
|
+
return undefined;
|
|
171
|
+
};
|
|
172
|
+
// Check explicit type annotation first
|
|
173
|
+
if (ts.isVariableDeclaration(decl) && decl.type) {
|
|
174
|
+
if (ts.isTypeReferenceNode(decl.type) && decl.type.typeArguments) {
|
|
175
|
+
const result = buildMapFromTypeArgs(decl.type.typeArguments);
|
|
176
|
+
if (result)
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Check initializer: new Dictionary<int, Todo>()
|
|
181
|
+
// This handles: const todos = new Dictionary<int, Todo>();
|
|
182
|
+
if (ts.isVariableDeclaration(decl) && decl.initializer) {
|
|
183
|
+
// Handle direct NewExpression
|
|
184
|
+
if (ts.isNewExpression(decl.initializer) &&
|
|
185
|
+
decl.initializer.typeArguments) {
|
|
186
|
+
const result = buildMapFromTypeArgs(decl.initializer.typeArguments);
|
|
187
|
+
if (result)
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
// Handle AsExpression (type assertion): new List<int>() as List<int>
|
|
191
|
+
// The type arguments are in the AsExpression's type, not the NewExpression
|
|
192
|
+
if (ts.isAsExpression(decl.initializer)) {
|
|
193
|
+
const asType = decl.initializer.type;
|
|
194
|
+
if (ts.isTypeReferenceNode(asType) && asType.typeArguments) {
|
|
195
|
+
const result = buildMapFromTypeArgs(asType.typeArguments);
|
|
196
|
+
if (result)
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Also check property declarations with type annotation
|
|
202
|
+
if (ts.isPropertyDeclaration(decl) &&
|
|
203
|
+
decl.type &&
|
|
204
|
+
ts.isTypeReferenceNode(decl.type) &&
|
|
205
|
+
decl.type.typeArguments) {
|
|
206
|
+
const result = buildMapFromTypeArgs(decl.type.typeArguments);
|
|
207
|
+
if (result)
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
210
|
+
// Check property declaration initializer
|
|
211
|
+
if (ts.isPropertyDeclaration(decl) && decl.initializer) {
|
|
212
|
+
if (ts.isNewExpression(decl.initializer) &&
|
|
213
|
+
decl.initializer.typeArguments) {
|
|
214
|
+
const result = buildMapFromTypeArgs(decl.initializer.typeArguments);
|
|
215
|
+
if (result)
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Check parameter declarations
|
|
220
|
+
if (ts.isParameter(decl) &&
|
|
221
|
+
decl.type &&
|
|
222
|
+
ts.isTypeReferenceNode(decl.type) &&
|
|
223
|
+
decl.type.typeArguments) {
|
|
224
|
+
const result = buildMapFromTypeArgs(decl.type.typeArguments);
|
|
225
|
+
if (result)
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return undefined;
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* Substitute type parameters in a TypeNode using the substitution map.
|
|
236
|
+
* For a type like `TKey`, returns the substituted TypeNode (e.g., `int`).
|
|
237
|
+
* For complex types like `List<TKey>`, recursively substitutes.
|
|
238
|
+
*
|
|
239
|
+
* Returns the substituted TypeNode, or undefined if no substitution needed.
|
|
240
|
+
*/
|
|
241
|
+
const substituteTypeNode = (typeNode, substitutionMap, checker) => {
|
|
242
|
+
// Handle type reference nodes (most common case)
|
|
243
|
+
if (ts.isTypeReferenceNode(typeNode)) {
|
|
244
|
+
const typeName = ts.isIdentifier(typeNode.typeName)
|
|
245
|
+
? typeNode.typeName.text
|
|
246
|
+
: typeNode.typeName.getText();
|
|
247
|
+
// Direct substitution: if this is a type parameter, substitute it
|
|
248
|
+
const substitution = substitutionMap.get(typeName);
|
|
249
|
+
if (substitution) {
|
|
250
|
+
return substitution;
|
|
251
|
+
}
|
|
252
|
+
// Recursive substitution: if this is a generic type, substitute its type arguments
|
|
253
|
+
if (typeNode.typeArguments && typeNode.typeArguments.length > 0) {
|
|
254
|
+
let anySubstituted = false;
|
|
255
|
+
const newTypeArgs = [];
|
|
256
|
+
for (const arg of typeNode.typeArguments) {
|
|
257
|
+
const substituted = substituteTypeNode(arg, substitutionMap, checker);
|
|
258
|
+
if (substituted) {
|
|
259
|
+
newTypeArgs.push(substituted);
|
|
260
|
+
anySubstituted = true;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
newTypeArgs.push(arg);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (anySubstituted) {
|
|
267
|
+
// Create a new type reference with substituted type arguments
|
|
268
|
+
// We use the factory to create a new node
|
|
269
|
+
return ts.factory.createTypeReferenceNode(typeNode.typeName, newTypeArgs);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Handle array types: T[] -> int[]
|
|
274
|
+
if (ts.isArrayTypeNode(typeNode)) {
|
|
275
|
+
const substituted = substituteTypeNode(typeNode.elementType, substitutionMap, checker);
|
|
276
|
+
if (substituted) {
|
|
277
|
+
return ts.factory.createArrayTypeNode(substituted);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// Handle union types: T | null -> int | null
|
|
281
|
+
if (ts.isUnionTypeNode(typeNode)) {
|
|
282
|
+
let anySubstituted = false;
|
|
283
|
+
const newTypes = [];
|
|
284
|
+
for (const member of typeNode.types) {
|
|
285
|
+
const substituted = substituteTypeNode(member, substitutionMap, checker);
|
|
286
|
+
if (substituted) {
|
|
287
|
+
newTypes.push(substituted);
|
|
288
|
+
anySubstituted = true;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
newTypes.push(member);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
if (anySubstituted) {
|
|
295
|
+
return ts.factory.createUnionTypeNode(newTypes);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return undefined;
|
|
299
|
+
};
|
|
98
300
|
/**
|
|
99
301
|
* Extract parameter types from resolved signature.
|
|
100
302
|
* Used for threading expectedType to array literal arguments etc.
|
|
303
|
+
*
|
|
304
|
+
* Uses the resolved signature to get INSTANTIATED parameter types.
|
|
305
|
+
* For example, for `dict.add(key, value)` where `dict: Dictionary<int, Todo>`,
|
|
306
|
+
* this returns the instantiated types [int, Todo], not the formal types [TKey, TValue].
|
|
307
|
+
*
|
|
308
|
+
* CLR type aliases (like `int`) are preserved by:
|
|
309
|
+
* 1. For non-type-parameter declarations: use the declaration's type node directly
|
|
310
|
+
* 2. For type parameters: use TypeNode substitution to preserve CLR aliases
|
|
311
|
+
*
|
|
312
|
+
* The key insight is that TypeScript's type instantiation mechanism loses
|
|
313
|
+
* aliasSymbol, but the original TypeNodes in variable declarations preserve
|
|
314
|
+
* the type aliases. We trace back to those TypeNodes and substitute.
|
|
101
315
|
*/
|
|
102
316
|
const extractParameterTypes = (node, checker) => {
|
|
103
317
|
try {
|
|
104
318
|
const signature = checker.getResolvedSignature(node);
|
|
105
|
-
if (!signature
|
|
319
|
+
if (!signature) {
|
|
106
320
|
return undefined;
|
|
107
321
|
}
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
// Extract parameters from declaration
|
|
111
|
-
if (ts.isFunctionDeclaration(decl) ||
|
|
112
|
-
ts.isMethodDeclaration(decl) ||
|
|
113
|
-
ts.isMethodSignature(decl) ||
|
|
114
|
-
ts.isConstructorDeclaration(decl) ||
|
|
115
|
-
ts.isArrowFunction(decl) ||
|
|
116
|
-
ts.isFunctionExpression(decl) ||
|
|
117
|
-
ts.isCallSignatureDeclaration(decl)) {
|
|
118
|
-
parameters = decl.parameters;
|
|
119
|
-
}
|
|
120
|
-
if (parameters.length === 0) {
|
|
322
|
+
const sigParams = signature.getParameters();
|
|
323
|
+
if (sigParams.length === 0) {
|
|
121
324
|
return undefined;
|
|
122
325
|
}
|
|
123
|
-
// Build parameter type
|
|
326
|
+
// Build type parameter substitution map from receiver's type arguments
|
|
327
|
+
// This preserves CLR type aliases through generic instantiation
|
|
328
|
+
const substitutionMap = buildTypeParameterSubstitutionMap(node, checker);
|
|
329
|
+
// Build parameter type array using instantiated types from signature
|
|
124
330
|
const paramTypes = [];
|
|
125
|
-
for (const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
331
|
+
for (const sigParam of sigParams) {
|
|
332
|
+
const decl = sigParam.valueDeclaration;
|
|
333
|
+
// Get the declaration's type node if available
|
|
334
|
+
if (decl && ts.isParameter(decl) && decl.type) {
|
|
335
|
+
// Check if the declaration type is a type parameter
|
|
336
|
+
const declType = checker.getTypeAtLocation(decl.type);
|
|
337
|
+
const isTypeParameter = Boolean(declType.flags & ts.TypeFlags.TypeParameter);
|
|
338
|
+
if (isTypeParameter) {
|
|
339
|
+
if (substitutionMap) {
|
|
340
|
+
// Type parameter case: use substitution map to preserve CLR aliases
|
|
341
|
+
const substituted = substituteTypeNode(decl.type, substitutionMap, checker);
|
|
342
|
+
if (substituted) {
|
|
343
|
+
const irType = convertType(substituted, checker);
|
|
344
|
+
if (irType) {
|
|
345
|
+
paramTypes.push(irType);
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// Type parameter without substitution (e.g., generic function call with inferred types)
|
|
351
|
+
// The type parameter is INFERRED from the argument, so don't validate against
|
|
352
|
+
// TypeScript's instantiated type (which loses CLR type aliases like `int`).
|
|
353
|
+
// Push undefined to skip validation for this parameter.
|
|
354
|
+
paramTypes.push(undefined);
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
// Non-type-parameter: use declaration type node directly
|
|
359
|
+
// This preserves imported CLR type aliases like `int`
|
|
360
|
+
const irType = convertType(decl.type, checker);
|
|
361
|
+
if (irType) {
|
|
362
|
+
paramTypes.push(irType);
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
132
366
|
}
|
|
367
|
+
// Fallback: Use instantiated type from getTypeOfSymbolAtLocation
|
|
368
|
+
// This handles cases where we couldn't get the declaration type
|
|
369
|
+
const paramType = checker.getTypeOfSymbolAtLocation(sigParam, decl ?? node);
|
|
370
|
+
const irType = convertTsTypeToIr(paramType, checker);
|
|
371
|
+
paramTypes.push(irType);
|
|
133
372
|
}
|
|
134
373
|
return paramTypes;
|
|
135
374
|
}
|
|
@@ -137,19 +376,74 @@ const extractParameterTypes = (node, checker) => {
|
|
|
137
376
|
return undefined;
|
|
138
377
|
}
|
|
139
378
|
};
|
|
379
|
+
/**
|
|
380
|
+
* Extract argument passing modes from member binding's parameter modifiers.
|
|
381
|
+
* Converts parameterModifiers to the argumentPassing array format.
|
|
382
|
+
* Returns undefined if no modifiers are present.
|
|
383
|
+
*/
|
|
384
|
+
const extractArgumentPassingFromBinding = (callee, argCount) => {
|
|
385
|
+
// Check if callee is a member access with parameter modifiers
|
|
386
|
+
if (callee.kind !== "memberAccess" ||
|
|
387
|
+
!callee.memberBinding?.parameterModifiers) {
|
|
388
|
+
return undefined;
|
|
389
|
+
}
|
|
390
|
+
const modifiers = callee.memberBinding.parameterModifiers;
|
|
391
|
+
if (modifiers.length === 0) {
|
|
392
|
+
return undefined;
|
|
393
|
+
}
|
|
394
|
+
// Build the argumentPassing array
|
|
395
|
+
// Initialize all as "value", then override based on modifiers
|
|
396
|
+
const passing = Array(argCount).fill("value");
|
|
397
|
+
for (const mod of modifiers) {
|
|
398
|
+
if (mod.index >= 0 && mod.index < argCount) {
|
|
399
|
+
passing[mod.index] = mod.modifier;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return passing;
|
|
403
|
+
};
|
|
140
404
|
/**
|
|
141
405
|
* Convert call expression
|
|
142
406
|
*/
|
|
143
407
|
export const convertCallExpression = (node, checker) => {
|
|
408
|
+
// Check for tryCast<T>(x) - special intrinsic for safe casting
|
|
409
|
+
// tryCast<T>(x) compiles to C#: x as T (safe cast, returns null on failure)
|
|
410
|
+
if (ts.isIdentifier(node.expression) &&
|
|
411
|
+
node.expression.text === "tryCast" &&
|
|
412
|
+
node.typeArguments &&
|
|
413
|
+
node.typeArguments.length === 1 &&
|
|
414
|
+
node.arguments.length === 1) {
|
|
415
|
+
// We've verified length === 1 above, so these are guaranteed to exist
|
|
416
|
+
const targetTypeNode = node.typeArguments[0];
|
|
417
|
+
const targetType = convertType(targetTypeNode, checker);
|
|
418
|
+
const argExpr = convertExpression(node.arguments[0], checker);
|
|
419
|
+
// Build union type T | null for inferredType
|
|
420
|
+
const nullType = { kind: "primitiveType", name: "null" };
|
|
421
|
+
const unionType = {
|
|
422
|
+
kind: "unionType",
|
|
423
|
+
types: [targetType, nullType],
|
|
424
|
+
};
|
|
425
|
+
return {
|
|
426
|
+
kind: "tryCast",
|
|
427
|
+
expression: argExpr,
|
|
428
|
+
targetType,
|
|
429
|
+
inferredType: unionType,
|
|
430
|
+
sourceSpan: getSourceSpan(node),
|
|
431
|
+
};
|
|
432
|
+
}
|
|
144
433
|
// Extract type arguments from the call signature
|
|
145
434
|
const typeArguments = extractTypeArguments(node, checker);
|
|
146
435
|
const requiresSpecialization = checkIfRequiresSpecialization(node, checker);
|
|
147
|
-
const argumentPassing = extractArgumentPassing(node, checker);
|
|
148
436
|
const narrowing = extractNarrowing(node, checker);
|
|
149
437
|
const parameterTypes = extractParameterTypes(node, checker);
|
|
438
|
+
// Convert callee first so we can access its memberBinding
|
|
439
|
+
const callee = convertExpression(node.expression, checker);
|
|
440
|
+
// Try to get argument passing from binding's parameter modifiers first (tsbindgen format),
|
|
441
|
+
// then fall back to TypeScript declaration analysis (ref<T>/out<T>/in<T> wrapper types)
|
|
442
|
+
const argumentPassing = extractArgumentPassingFromBinding(callee, node.arguments.length) ??
|
|
443
|
+
extractArgumentPassing(node, checker);
|
|
150
444
|
return {
|
|
151
445
|
kind: "call",
|
|
152
|
-
callee
|
|
446
|
+
callee,
|
|
153
447
|
arguments: node.arguments.map((arg) => {
|
|
154
448
|
if (ts.isSpreadElement(arg)) {
|
|
155
449
|
return {
|
|
@@ -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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"}
|
|
@@ -22,7 +22,7 @@ export const getSourceSpan = (node) => {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
|
-
* Check if a TypeScript type is a numeric alias from @tsonic/
|
|
25
|
+
* Check if a TypeScript type is a numeric alias from @tsonic/core.
|
|
26
26
|
* Returns true for types like `int`, `byte`, `float`, etc.
|
|
27
27
|
*
|
|
28
28
|
* This is used to prevent numeric intent from leaking through contextual typing.
|
|
@@ -56,7 +56,7 @@ const isNumericAliasType = (tsType) => {
|
|
|
56
56
|
* returns undefined to avoid incorrect recovery from partial declaration merges
|
|
57
57
|
*
|
|
58
58
|
* NOTE: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
|
|
59
|
-
* not package-path based. Do not add special casing for @tsonic/
|
|
59
|
+
* not package-path based. Do not add special casing for @tsonic/core paths.
|
|
60
60
|
*/
|
|
61
61
|
const tryRecoverNumericReferenceFromPropertyDecl = (propSymbol) => {
|
|
62
62
|
const declarations = propSymbol.declarations ?? [];
|
|
@@ -100,7 +100,7 @@ const tryRecoverNumericReferenceFromPropertyDecl = (propSymbol) => {
|
|
|
100
100
|
* returns undefined to avoid incorrect recovery.
|
|
101
101
|
*
|
|
102
102
|
* NOTE: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
|
|
103
|
-
* not package-path based. Do not add special casing for @tsonic/
|
|
103
|
+
* not package-path based. Do not add special casing for @tsonic/core paths.
|
|
104
104
|
*/
|
|
105
105
|
const tryRecoverNumericReferenceFromSignatureReturnDecl = (signature) => {
|
|
106
106
|
const decl = signature.declaration;
|
|
@@ -165,7 +165,7 @@ export const getInferredType = (node, checker) => {
|
|
|
165
165
|
//
|
|
166
166
|
// IMPORTANT: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
|
|
167
167
|
// not package-path based. We recognize `int`, `long`, `byte`, etc. by NAME only.
|
|
168
|
-
// Do not add special casing for "@tsonic/
|
|
168
|
+
// Do not add special casing for "@tsonic/core" or other package paths.
|
|
169
169
|
if (result?.kind === "primitiveType" && result.name === "number") {
|
|
170
170
|
// For property access like arr.length, check the property declaration
|
|
171
171
|
if (ts.isPropertyAccessExpression(node)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Literal expression converters
|
|
3
|
+
*
|
|
4
|
+
* Numeric literals get numericIntent attached based on their lexeme:
|
|
5
|
+
* - Integer literals (42, 0xFF) → Int32
|
|
6
|
+
* - Floating literals (42.0, 3.14, 1e3) → Double
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: numericIntent is expression-level, NOT type-level.
|
|
9
|
+
* The inferredType remains unchanged (number → double semantically).
|
|
10
|
+
* The numericIntent field on the expression enables:
|
|
11
|
+
* 1. Emitter to emit `42` vs `42.0` appropriately
|
|
12
|
+
* 2. Coercion pass to detect int→double conversions
|
|
3
13
|
*/
|
|
4
14
|
import * as ts from "typescript";
|
|
5
15
|
import { IrLiteralExpression } from "../../types.js";
|
|
6
16
|
/**
|
|
7
17
|
* Convert string or numeric literal
|
|
18
|
+
*
|
|
19
|
+
* For numeric literals, attaches numericIntent directly on the expression
|
|
20
|
+
* based on the raw lexeme. This is expression-level information that does
|
|
21
|
+
* NOT modify the inferredType (which remains "number" = double semantically).
|
|
8
22
|
*/
|
|
9
23
|
export declare const convertLiteral: (node: ts.StringLiteral | ts.NumericLiteral, checker: ts.TypeChecker) => IrLiteralExpression;
|
|
10
24
|
//# sourceMappingURL=literals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,cAAc,EAC1C,SAAS,EAAE,CAAC,WAAW,KACtB,mBAeF,CAAC"}
|
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Literal expression converters
|
|
3
|
+
*
|
|
4
|
+
* Numeric literals get numericIntent attached based on their lexeme:
|
|
5
|
+
* - Integer literals (42, 0xFF) → Int32
|
|
6
|
+
* - Floating literals (42.0, 3.14, 1e3) → Double
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: numericIntent is expression-level, NOT type-level.
|
|
9
|
+
* The inferredType remains unchanged (number → double semantically).
|
|
10
|
+
* The numericIntent field on the expression enables:
|
|
11
|
+
* 1. Emitter to emit `42` vs `42.0` appropriately
|
|
12
|
+
* 2. Coercion pass to detect int→double conversions
|
|
3
13
|
*/
|
|
4
14
|
import * as ts from "typescript";
|
|
5
15
|
import { getInferredType, getSourceSpan } from "./helpers.js";
|
|
16
|
+
import { inferNumericKindFromRaw } from "../../types/numeric-helpers.js";
|
|
6
17
|
/**
|
|
7
18
|
* Convert string or numeric literal
|
|
19
|
+
*
|
|
20
|
+
* For numeric literals, attaches numericIntent directly on the expression
|
|
21
|
+
* based on the raw lexeme. This is expression-level information that does
|
|
22
|
+
* NOT modify the inferredType (which remains "number" = double semantically).
|
|
8
23
|
*/
|
|
9
24
|
export const convertLiteral = (node, checker) => {
|
|
25
|
+
const raw = node.getText();
|
|
26
|
+
const value = ts.isStringLiteral(node) ? node.text : Number(node.text);
|
|
10
27
|
return {
|
|
11
28
|
kind: "literal",
|
|
12
|
-
value
|
|
13
|
-
raw
|
|
29
|
+
value,
|
|
30
|
+
raw,
|
|
14
31
|
inferredType: getInferredType(node, checker),
|
|
15
32
|
sourceSpan: getSourceSpan(node),
|
|
33
|
+
// For numeric literals, infer numeric kind from lexeme form
|
|
34
|
+
// This is expression-level, not type-level
|
|
35
|
+
numericIntent: typeof value === "number" ? inferNumericKindFromRaw(raw) : undefined,
|
|
16
36
|
};
|
|
17
37
|
};
|
|
18
38
|
//# sourceMappingURL=literals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAA0C,EAC1C,OAAuB,EACF,EAAE;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvE,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK;QACL,GAAG;QACH,YAAY,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;QAC5C,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;QAC/B,4DAA4D;QAC5D,2CAA2C;QAC3C,aAAa,EACX,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KACvE,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -21,8 +21,9 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
21
21
|
const __dirname = path.dirname(__filename);
|
|
22
22
|
// From dist/ir/converters/expressions/ go up to packages/frontend/, then up 2 more to monorepo root
|
|
23
23
|
const monorepoRoot = path.resolve(__dirname, "../../../../../..");
|
|
24
|
+
const globalsPath = path.join(monorepoRoot, "node_modules/@tsonic/globals");
|
|
24
25
|
const jsGlobalsPath = path.join(monorepoRoot, "node_modules/@tsonic/js-globals");
|
|
25
|
-
const
|
|
26
|
+
const corePath = path.join(monorepoRoot, "node_modules/@tsonic/core");
|
|
26
27
|
/**
|
|
27
28
|
* Helper to compile TypeScript code with js-globals and extract IR
|
|
28
29
|
*/
|
|
@@ -35,7 +36,7 @@ const compileWithJsGlobals = (code) => {
|
|
|
35
36
|
projectRoot: monorepoRoot,
|
|
36
37
|
sourceRoot: tmpDir,
|
|
37
38
|
rootNamespace: "Test",
|
|
38
|
-
typeRoots: [jsGlobalsPath,
|
|
39
|
+
typeRoots: [globalsPath, jsGlobalsPath, corePath],
|
|
39
40
|
});
|
|
40
41
|
if (!compileResult.ok) {
|
|
41
42
|
const errorMsg = compileResult.error.diagnostics
|