@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapter-generator.js +3 -3
- package/dist/adapter-generator.js.map +1 -1
- package/dist/array.test.d.ts +1 -1
- package/dist/array.test.js +18 -17
- package/dist/array.test.js.map +1 -1
- package/dist/core/attributes.test.js +2 -2
- package/dist/core/attributes.test.js.map +1 -1
- package/dist/core/imports.d.ts.map +1 -1
- package/dist/core/imports.js +7 -12
- package/dist/core/imports.js.map +1 -1
- package/dist/core/local-types.d.ts.map +1 -1
- package/dist/core/local-types.js +12 -0
- package/dist/core/local-types.js.map +1 -1
- package/dist/core/module-emitter/orchestrator.d.ts.map +1 -1
- package/dist/core/module-emitter/orchestrator.js +15 -2
- package/dist/core/module-emitter/orchestrator.js.map +1 -1
- package/dist/core/module-emitter/static-container.d.ts.map +1 -1
- package/dist/core/module-emitter/static-container.js +30 -4
- package/dist/core/module-emitter/static-container.js.map +1 -1
- package/dist/core/module-emitter.test.js +6 -6
- package/dist/core/module-map.d.ts.map +1 -1
- package/dist/core/module-map.js +42 -0
- package/dist/core/module-map.js.map +1 -1
- package/dist/core/naming-collisions.d.ts +4 -0
- package/dist/core/naming-collisions.d.ts.map +1 -0
- package/dist/core/naming-collisions.js +191 -0
- package/dist/core/naming-collisions.js.map +1 -0
- package/dist/core/type-member-index.d.ts +4 -0
- package/dist/core/type-member-index.d.ts.map +1 -0
- package/dist/core/type-member-index.js +62 -0
- package/dist/core/type-member-index.js.map +1 -0
- package/dist/core/unsafe.d.ts +11 -0
- package/dist/core/unsafe.d.ts.map +1 -0
- package/dist/core/unsafe.js +264 -0
- package/dist/core/unsafe.js.map +1 -0
- package/dist/emitter-types/context.d.ts +1 -1
- package/dist/emitter-types/context.d.ts.map +1 -1
- package/dist/emitter-types/context.js +5 -3
- package/dist/emitter-types/context.js.map +1 -1
- package/dist/emitter-types/core.d.ts +45 -2
- package/dist/emitter-types/core.d.ts.map +1 -1
- package/dist/emitter-types/fqn.d.ts +0 -7
- package/dist/emitter-types/fqn.d.ts.map +1 -1
- package/dist/emitter-types/fqn.js +0 -8
- package/dist/emitter-types/fqn.js.map +1 -1
- package/dist/emitter-types/index.d.ts +1 -1
- package/dist/emitter-types/index.d.ts.map +1 -1
- package/dist/emitter-types/index.js.map +1 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +12 -1
- package/dist/emitter.js.map +1 -1
- package/dist/expression-emitter.d.ts.map +1 -1
- package/dist/expression-emitter.js +255 -73
- package/dist/expression-emitter.js.map +1 -1
- package/dist/expressions/access.d.ts +3 -1
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +144 -50
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/calls.d.ts.map +1 -1
- package/dist/expressions/calls.js +266 -88
- package/dist/expressions/calls.js.map +1 -1
- package/dist/expressions/collections.d.ts.map +1 -1
- package/dist/expressions/collections.js +169 -57
- package/dist/expressions/collections.js.map +1 -1
- package/dist/expressions/functions.d.ts.map +1 -1
- package/dist/expressions/functions.js +30 -10
- package/dist/expressions/functions.js.map +1 -1
- package/dist/expressions/identifiers.d.ts.map +1 -1
- package/dist/expressions/identifiers.js +11 -30
- package/dist/expressions/identifiers.js.map +1 -1
- package/dist/expressions/index.test.js +89 -200
- package/dist/expressions/index.test.js.map +1 -1
- package/dist/expressions/literals.d.ts +4 -5
- package/dist/expressions/literals.d.ts.map +1 -1
- package/dist/expressions/literals.js +94 -15
- package/dist/expressions/literals.js.map +1 -1
- package/dist/expressions/operators.d.ts +0 -4
- package/dist/expressions/operators.d.ts.map +1 -1
- package/dist/expressions/operators.js +84 -24
- package/dist/expressions/operators.js.map +1 -1
- package/dist/expressions/other.d.ts.map +1 -1
- package/dist/expressions/other.js +21 -3
- package/dist/expressions/other.js.map +1 -1
- package/dist/expressions/parentheses.d.ts +4 -0
- package/dist/expressions/parentheses.d.ts.map +1 -0
- package/dist/expressions/parentheses.js +83 -0
- package/dist/expressions/parentheses.js.map +1 -0
- package/dist/extension-methods.test.d.ts +5 -0
- package/dist/extension-methods.test.d.ts.map +1 -0
- package/dist/extension-methods.test.js +110 -0
- package/dist/extension-methods.test.js.map +1 -0
- package/dist/generator-exchange.d.ts.map +1 -1
- package/dist/generator-exchange.js +5 -2
- package/dist/generator-exchange.js.map +1 -1
- package/dist/generator-wrapper.d.ts.map +1 -1
- package/dist/generator-wrapper.js +13 -7
- package/dist/generator-wrapper.js.map +1 -1
- package/dist/generator-wrapper.test.js +12 -12
- package/dist/generator-wrapper.test.js.map +1 -1
- package/dist/generator.test.js +42 -42
- package/dist/generator.test.js.map +1 -1
- package/dist/golden-tests/discovery.d.ts +6 -11
- package/dist/golden-tests/discovery.d.ts.map +1 -1
- package/dist/golden-tests/discovery.js +14 -79
- package/dist/golden-tests/discovery.js.map +1 -1
- package/dist/golden-tests/index.d.ts +1 -1
- package/dist/golden-tests/index.d.ts.map +1 -1
- package/dist/golden-tests/index.js.map +1 -1
- package/dist/golden-tests/runner.d.ts.map +1 -1
- package/dist/golden-tests/runner.js +6 -7
- package/dist/golden-tests/runner.js.map +1 -1
- package/dist/golden-tests/types.d.ts +0 -7
- package/dist/golden-tests/types.d.ts.map +1 -1
- package/dist/golden.test.d.ts +3 -10
- package/dist/golden.test.d.ts.map +1 -1
- package/dist/golden.test.js +8 -24
- package/dist/golden.test.js.map +1 -1
- package/dist/hierarchical-bindings.test.js +18 -12
- package/dist/hierarchical-bindings.test.js.map +1 -1
- package/dist/integration.test.js +76 -35
- package/dist/integration.test.js.map +1 -1
- package/dist/invariants/emitter-globals-subset.test.d.ts +1 -1
- package/dist/invariants/emitter-globals-subset.test.js +34 -74
- package/dist/invariants/emitter-globals-subset.test.js.map +1 -1
- package/dist/invariants/numeric-proof-contract.test.js +3 -3
- package/dist/invariants/numeric-proof-contract.test.js.map +1 -1
- package/dist/naming-policy.d.ts +5 -0
- package/dist/naming-policy.d.ts.map +1 -0
- package/dist/naming-policy.js +10 -0
- package/dist/naming-policy.js.map +1 -0
- package/dist/patterns.d.ts +98 -0
- package/dist/patterns.d.ts.map +1 -0
- package/dist/patterns.js +366 -0
- package/dist/patterns.js.map +1 -0
- package/dist/patterns.test.d.ts +15 -0
- package/dist/patterns.test.d.ts.map +1 -0
- package/dist/patterns.test.js +1262 -0
- package/dist/patterns.test.js.map +1 -0
- package/dist/specialization/generation.d.ts.map +1 -1
- package/dist/specialization/generation.js +2 -2
- package/dist/specialization/generation.js.map +1 -1
- package/dist/specialization/generic-classes.test.js +1 -1
- package/dist/specialization/generic-functions.test.js +6 -6
- package/dist/specialization/interfaces.test.js +5 -5
- package/dist/specialization/substitution.d.ts.map +1 -1
- package/dist/specialization/substitution.js +4 -0
- package/dist/specialization/substitution.js.map +1 -1
- package/dist/specialization/type-aliases.test.js +6 -6
- package/dist/specialization/type-aliases.test.js.map +1 -1
- package/dist/statement-emitter.d.ts.map +1 -1
- package/dist/statement-emitter.js +1 -1
- package/dist/statement-emitter.js.map +1 -1
- package/dist/statements/blocks.d.ts.map +1 -1
- package/dist/statements/blocks.js +14 -45
- package/dist/statements/blocks.js.map +1 -1
- package/dist/statements/classes/index.d.ts +1 -1
- package/dist/statements/classes/index.d.ts.map +1 -1
- package/dist/statements/classes/index.js +1 -1
- package/dist/statements/classes/index.js.map +1 -1
- package/dist/statements/classes/inline-types.d.ts +1 -1
- package/dist/statements/classes/inline-types.d.ts.map +1 -1
- package/dist/statements/classes/inline-types.js +15 -5
- package/dist/statements/classes/inline-types.js.map +1 -1
- package/dist/statements/classes/members/constructors.d.ts.map +1 -1
- package/dist/statements/classes/members/constructors.js +40 -14
- package/dist/statements/classes/members/constructors.js.map +1 -1
- package/dist/statements/classes/members/methods.d.ts.map +1 -1
- package/dist/statements/classes/members/methods.js +62 -25
- package/dist/statements/classes/members/methods.js.map +1 -1
- package/dist/statements/classes/members/orchestrator.d.ts.map +1 -1
- package/dist/statements/classes/members/orchestrator.js +1 -3
- package/dist/statements/classes/members/orchestrator.js.map +1 -1
- package/dist/statements/classes/members/properties.d.ts.map +1 -1
- package/dist/statements/classes/members/properties.js +70 -10
- package/dist/statements/classes/members/properties.js.map +1 -1
- package/dist/statements/classes/parameters.d.ts +43 -1
- package/dist/statements/classes/parameters.d.ts.map +1 -1
- package/dist/statements/classes/parameters.js +73 -13
- package/dist/statements/classes/parameters.js.map +1 -1
- package/dist/statements/classes/properties.d.ts.map +1 -1
- package/dist/statements/classes/properties.js +6 -7
- package/dist/statements/classes/properties.js.map +1 -1
- package/dist/statements/classes.d.ts +1 -1
- package/dist/statements/classes.d.ts.map +1 -1
- package/dist/statements/classes.js +1 -1
- package/dist/statements/classes.js.map +1 -1
- package/dist/statements/control/conditionals.d.ts.map +1 -1
- package/dist/statements/control/conditionals.js +193 -23
- package/dist/statements/control/conditionals.js.map +1 -1
- package/dist/statements/control/loops.d.ts.map +1 -1
- package/dist/statements/control/loops.js +25 -5
- package/dist/statements/control/loops.js.map +1 -1
- package/dist/statements/declarations/classes.d.ts.map +1 -1
- package/dist/statements/declarations/classes.js +150 -12
- package/dist/statements/declarations/classes.js.map +1 -1
- package/dist/statements/declarations/enums.d.ts.map +1 -1
- package/dist/statements/declarations/enums.js +2 -1
- package/dist/statements/declarations/enums.js.map +1 -1
- package/dist/statements/declarations/functions.d.ts.map +1 -1
- package/dist/statements/declarations/functions.js +44 -19
- package/dist/statements/declarations/functions.js.map +1 -1
- package/dist/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/statements/declarations/interfaces.js +71 -10
- package/dist/statements/declarations/interfaces.js.map +1 -1
- package/dist/statements/declarations/structs.test.js +5 -5
- package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/statements/declarations/type-aliases.js +24 -5
- package/dist/statements/declarations/type-aliases.js.map +1 -1
- package/dist/statements/declarations/variables.d.ts.map +1 -1
- package/dist/statements/declarations/variables.js +194 -37
- package/dist/statements/declarations/variables.js.map +1 -1
- package/dist/statements/index.test.js +7 -5
- package/dist/statements/index.test.js.map +1 -1
- package/dist/type-assertion.test.js +1 -1
- package/dist/types/arrays.d.ts +3 -9
- package/dist/types/arrays.d.ts.map +1 -1
- package/dist/types/arrays.js +5 -19
- package/dist/types/arrays.js.map +1 -1
- package/dist/types/emitter.d.ts.map +1 -1
- package/dist/types/emitter.js +3 -2
- package/dist/types/emitter.js.map +1 -1
- package/dist/types/index.test.js +3 -3
- package/dist/types/parameters.d.ts +1 -1
- package/dist/types/parameters.d.ts.map +1 -1
- package/dist/types/parameters.js +77 -8
- package/dist/types/parameters.js.map +1 -1
- package/dist/types/parameters.test.js +1 -1
- package/dist/types/parameters.test.js.map +1 -1
- package/dist/types/references.d.ts.map +1 -1
- package/dist/types/references.js +126 -55
- package/dist/types/references.js.map +1 -1
- package/dist/types/references.test.js +46 -106
- package/dist/types/references.test.js.map +1 -1
- package/dist/types/unions.d.ts.map +1 -1
- package/dist/types/unions.js +20 -0
- package/dist/types/unions.js.map +1 -1
- package/dist/types/unions.test.js +9 -9
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
package/dist/types/references.js
CHANGED
|
@@ -65,14 +65,32 @@ const getBindingClrName = (b) => {
|
|
|
65
65
|
return undefined;
|
|
66
66
|
};
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* Convert CLR metadata type names into C#-emittable type names.
|
|
69
69
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* 3. Proper diagnostic reporting
|
|
70
|
+
* tsbindgen bindings use CLR "full names" that include:
|
|
71
|
+
* - Generic arity markers: `Dictionary`2`, `Func`3`, etc.
|
|
72
|
+
* - Nested type separators: `Outer+Inner`
|
|
74
73
|
*
|
|
75
|
-
*
|
|
74
|
+
* C# source code must not include arity markers, and nested types use `.`
|
|
75
|
+
* in source (e.g. `Outer.Inner`).
|
|
76
|
+
*/
|
|
77
|
+
const clrTypeNameToCSharp = (clr) => {
|
|
78
|
+
const prefix = "global::";
|
|
79
|
+
const hasGlobal = clr.startsWith(prefix);
|
|
80
|
+
const body = hasGlobal ? clr.slice(prefix.length) : clr;
|
|
81
|
+
const sanitized = body
|
|
82
|
+
// Strip generic arity markers (e.g. Dictionary`2 -> Dictionary)
|
|
83
|
+
.replace(/`\d+/g, "")
|
|
84
|
+
// CLR nested types use '+'; C# source uses '.'
|
|
85
|
+
.replace(/\+/g, ".");
|
|
86
|
+
return hasGlobal ? `${prefix}${sanitized}` : sanitized;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Check if a type name indicates an unsupported support type.
|
|
90
|
+
*
|
|
91
|
+
* NOTE: The emitter does not have access to the TypeScript checker. Support types
|
|
92
|
+
* should be rejected during frontend IR building. This is a defensive guard in case
|
|
93
|
+
* unsupported types leak into IR.
|
|
76
94
|
*/
|
|
77
95
|
const checkUnsupportedSupportType = (typeName) => {
|
|
78
96
|
if (typeName === "TSUnsafePointer" ||
|
|
@@ -91,7 +109,7 @@ const checkUnsupportedSupportType = (typeName) => {
|
|
|
91
109
|
* Emit reference types with type arguments
|
|
92
110
|
*/
|
|
93
111
|
export const emitReferenceType = (type, context) => {
|
|
94
|
-
const { name, typeArguments, resolvedClrType } = type;
|
|
112
|
+
const { name, typeArguments, resolvedClrType, typeId } = type;
|
|
95
113
|
// Check if this is a local type alias for a tuple type - must resolve since C# has no type alias for ValueTuple
|
|
96
114
|
// Tuple type aliases: RESOLVE to ValueTuple<...> (C# has no equivalent type alias syntax)
|
|
97
115
|
// Union/intersection type aliases: PRESERVE names for readability (emitted as comments elsewhere)
|
|
@@ -112,6 +130,9 @@ export const emitReferenceType = (type, context) => {
|
|
|
112
130
|
}
|
|
113
131
|
// If the type has a pre-resolved CLR type (from IR), use it
|
|
114
132
|
if (resolvedClrType) {
|
|
133
|
+
const qualifiedClr = CSHARP_PRIMITIVES.has(resolvedClrType)
|
|
134
|
+
? resolvedClrType
|
|
135
|
+
: toGlobalClr(resolvedClrType);
|
|
115
136
|
if (typeArguments && typeArguments.length > 0) {
|
|
116
137
|
const typeParams = [];
|
|
117
138
|
let currentContext = context;
|
|
@@ -120,9 +141,9 @@ export const emitReferenceType = (type, context) => {
|
|
|
120
141
|
typeParams.push(paramType);
|
|
121
142
|
currentContext = newContext;
|
|
122
143
|
}
|
|
123
|
-
return [`${
|
|
144
|
+
return [`${qualifiedClr}<${typeParams.join(", ")}>`, currentContext];
|
|
124
145
|
}
|
|
125
|
-
return [
|
|
146
|
+
return [qualifiedClr, context];
|
|
126
147
|
}
|
|
127
148
|
// Check if this type is imported - use pre-computed CLR name directly
|
|
128
149
|
const importBinding = context.importBindings?.get(name);
|
|
@@ -152,22 +173,18 @@ export const emitReferenceType = (type, context) => {
|
|
|
152
173
|
// Check for unsupported support types
|
|
153
174
|
const unsupportedError = checkUnsupportedSupportType(name);
|
|
154
175
|
if (unsupportedError) {
|
|
155
|
-
|
|
156
|
-
// For now, emit a comment to make the error visible in generated code
|
|
157
|
-
console.warn(`[Tsonic] ${unsupportedError}`);
|
|
158
|
-
return [`/* ERROR: ${unsupportedError} */ object`, context];
|
|
176
|
+
throw new Error(`[Tsonic] ${unsupportedError}`);
|
|
159
177
|
}
|
|
160
178
|
// Handle built-in types
|
|
179
|
+
// Array<T> emits as native T[] array, same as T[] syntax
|
|
180
|
+
// Users must explicitly use List<T> to get a List
|
|
161
181
|
if (name === "Array" && typeArguments && typeArguments.length > 0) {
|
|
162
182
|
const firstArg = typeArguments[0];
|
|
163
183
|
if (!firstArg) {
|
|
164
|
-
return [`
|
|
184
|
+
return [`object[]`, context];
|
|
165
185
|
}
|
|
166
186
|
const [elementType, newContext] = emitType(firstArg, context);
|
|
167
|
-
return [
|
|
168
|
-
`global::System.Collections.Generic.List<${elementType}>`,
|
|
169
|
-
newContext,
|
|
170
|
-
];
|
|
187
|
+
return [`${elementType}[]`, newContext];
|
|
171
188
|
}
|
|
172
189
|
if (name === "Promise" && typeArguments && typeArguments.length > 0) {
|
|
173
190
|
const firstArg = typeArguments[0];
|
|
@@ -184,53 +201,49 @@ export const emitReferenceType = (type, context) => {
|
|
|
184
201
|
if (name === "Promise") {
|
|
185
202
|
return ["global::System.Threading.Tasks.Task", context];
|
|
186
203
|
}
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
204
|
+
// Map core Span<T> to System.Span<T>.
|
|
205
|
+
// This is used by stackalloc<T>(n) and other span-based APIs.
|
|
206
|
+
if (name === "Span") {
|
|
207
|
+
if (!typeArguments || typeArguments.length !== 1) {
|
|
208
|
+
throw new Error(`ICE: Span must have exactly 1 type argument, got ${typeArguments?.length ?? 0}`);
|
|
209
|
+
}
|
|
210
|
+
const inner = typeArguments[0];
|
|
211
|
+
if (!inner) {
|
|
212
|
+
throw new Error("ICE: Span<T> missing type argument");
|
|
213
|
+
}
|
|
214
|
+
const [innerType, newContext] = emitType(inner, context);
|
|
215
|
+
return [`global::System.Span<${innerType}>`, newContext];
|
|
198
216
|
}
|
|
217
|
+
// Map core ptr<T> to C# unsafe pointer type: T*
|
|
218
|
+
if (name === "ptr") {
|
|
219
|
+
if (!typeArguments || typeArguments.length !== 1) {
|
|
220
|
+
throw new Error(`ICE: ptr must have exactly 1 type argument, got ${typeArguments?.length ?? 0}`);
|
|
221
|
+
}
|
|
222
|
+
const inner = typeArguments[0];
|
|
223
|
+
if (!inner) {
|
|
224
|
+
throw new Error("ICE: ptr<T> missing type argument");
|
|
225
|
+
}
|
|
226
|
+
const [innerType, newContext] = emitType(inner, context);
|
|
227
|
+
return [`${innerType}*`, newContext];
|
|
228
|
+
}
|
|
229
|
+
// NOTE: Map and Set must be explicitly imported (not ambient)
|
|
230
|
+
// Map PromiseLike to Task
|
|
199
231
|
if (name === "PromiseLike") {
|
|
200
232
|
// PromiseLike is in both globals packages - safe to map unconditionally
|
|
201
233
|
return ["global::System.Threading.Tasks.Task", context];
|
|
202
234
|
}
|
|
203
|
-
// Resolve external types via binding registry (must be fully qualified)
|
|
204
|
-
// This handles types from contextual inference (e.g., Action from Parallel.invoke)
|
|
205
|
-
const regBinding = context.bindingsRegistry?.get(name);
|
|
206
|
-
if (regBinding) {
|
|
207
|
-
const clr = getBindingClrName(regBinding);
|
|
208
|
-
if (!clr) {
|
|
209
|
-
throw new Error(`ICE: Binding for '${name}' has no CLR name`);
|
|
210
|
-
}
|
|
211
|
-
const qualified = toGlobalClr(clr);
|
|
212
|
-
if (typeArguments && typeArguments.length > 0) {
|
|
213
|
-
const typeParams = [];
|
|
214
|
-
let currentContext = context;
|
|
215
|
-
for (const typeArg of typeArguments) {
|
|
216
|
-
const [paramType, newContext] = emitType(typeArg, currentContext);
|
|
217
|
-
typeParams.push(paramType);
|
|
218
|
-
currentContext = newContext;
|
|
219
|
-
}
|
|
220
|
-
return [`${qualified}<${typeParams.join(", ")}>`, currentContext];
|
|
221
|
-
}
|
|
222
|
-
return [qualified, context];
|
|
223
|
-
}
|
|
224
235
|
// C# primitive types can be emitted directly
|
|
225
236
|
if (CSHARP_PRIMITIVES.has(name)) {
|
|
226
237
|
return [name, context];
|
|
227
238
|
}
|
|
228
239
|
// Type parameters in scope can be emitted directly
|
|
229
240
|
if (context.typeParameters?.has(name)) {
|
|
230
|
-
return [name, context];
|
|
241
|
+
return [context.typeParameterNameMap?.get(name) ?? name, context];
|
|
231
242
|
}
|
|
232
|
-
//
|
|
233
|
-
//
|
|
243
|
+
// IMPORTANT: Check local types BEFORE binding registry.
|
|
244
|
+
// Local types take precedence over .NET types with the same name.
|
|
245
|
+
// This ensures that a locally defined `Container<T>` is not resolved
|
|
246
|
+
// to `System.ComponentModel.Container` from the binding registry.
|
|
234
247
|
const localTypeInfo = context.localTypes?.get(name);
|
|
235
248
|
if (localTypeInfo) {
|
|
236
249
|
// Convert nested type names (Outer$Inner → Outer.Inner)
|
|
@@ -249,9 +262,67 @@ export const emitReferenceType = (type, context) => {
|
|
|
249
262
|
typeParams.push(paramType);
|
|
250
263
|
currentContext = newContext;
|
|
251
264
|
}
|
|
252
|
-
|
|
265
|
+
const generic = `${csharpName}<${typeParams.join(", ")}>`;
|
|
266
|
+
if (!context.qualifyLocalTypes) {
|
|
267
|
+
return [generic, currentContext];
|
|
268
|
+
}
|
|
269
|
+
const moduleNamespace = context.moduleNamespace ?? context.options.rootNamespace;
|
|
270
|
+
const container = context.moduleStaticClassName;
|
|
271
|
+
const isNestedInStaticContainer = localTypeInfo.kind === "typeAlias" || localTypeInfo.kind === "enum";
|
|
272
|
+
const qualifiedPrefix = isNestedInStaticContainer && container
|
|
273
|
+
? `${moduleNamespace}.${container}`
|
|
274
|
+
: moduleNamespace;
|
|
275
|
+
return [`global::${qualifiedPrefix}.${generic}`, currentContext];
|
|
276
|
+
}
|
|
277
|
+
if (!context.qualifyLocalTypes) {
|
|
278
|
+
return [csharpName, context];
|
|
279
|
+
}
|
|
280
|
+
const moduleNamespace = context.moduleNamespace ?? context.options.rootNamespace;
|
|
281
|
+
const container = context.moduleStaticClassName;
|
|
282
|
+
const isNestedInStaticContainer = localTypeInfo.kind === "typeAlias" || localTypeInfo.kind === "enum";
|
|
283
|
+
const qualifiedPrefix = isNestedInStaticContainer && container
|
|
284
|
+
? `${moduleNamespace}.${container}`
|
|
285
|
+
: moduleNamespace;
|
|
286
|
+
return [`global::${qualifiedPrefix}.${csharpName}`, context];
|
|
287
|
+
}
|
|
288
|
+
// Canonical nominal identity from the UnifiedUniverse.
|
|
289
|
+
// When present, this is the authoritative source for CLR emission and
|
|
290
|
+
// avoids relying on emitter-side registry plumbing for basic type names.
|
|
291
|
+
if (typeId) {
|
|
292
|
+
const qualified = toGlobalClr(clrTypeNameToCSharp(typeId.clrName));
|
|
293
|
+
if (typeArguments && typeArguments.length > 0) {
|
|
294
|
+
const typeParams = [];
|
|
295
|
+
let currentContext = context;
|
|
296
|
+
for (const typeArg of typeArguments) {
|
|
297
|
+
const [paramType, newContext] = emitType(typeArg, currentContext);
|
|
298
|
+
typeParams.push(paramType);
|
|
299
|
+
currentContext = newContext;
|
|
300
|
+
}
|
|
301
|
+
return [`${qualified}<${typeParams.join(", ")}>`, currentContext];
|
|
253
302
|
}
|
|
254
|
-
return [
|
|
303
|
+
return [qualified, context];
|
|
304
|
+
}
|
|
305
|
+
// Resolve external types via binding registry (must be fully qualified)
|
|
306
|
+
// This handles types from contextual inference (e.g., Action from Parallel.invoke)
|
|
307
|
+
// IMPORTANT: This is checked AFTER localTypes to ensure local types take precedence
|
|
308
|
+
const regBinding = context.bindingsRegistry?.get(name);
|
|
309
|
+
if (regBinding) {
|
|
310
|
+
const clr = getBindingClrName(regBinding);
|
|
311
|
+
if (!clr) {
|
|
312
|
+
throw new Error(`ICE: Binding for '${name}' has no CLR name`);
|
|
313
|
+
}
|
|
314
|
+
const qualified = toGlobalClr(clrTypeNameToCSharp(clr));
|
|
315
|
+
if (typeArguments && typeArguments.length > 0) {
|
|
316
|
+
const typeParams = [];
|
|
317
|
+
let currentContext = context;
|
|
318
|
+
for (const typeArg of typeArguments) {
|
|
319
|
+
const [paramType, newContext] = emitType(typeArg, currentContext);
|
|
320
|
+
typeParams.push(paramType);
|
|
321
|
+
currentContext = newContext;
|
|
322
|
+
}
|
|
323
|
+
return [`${qualified}<${typeParams.join(", ")}>`, currentContext];
|
|
324
|
+
}
|
|
325
|
+
return [qualified, context];
|
|
255
326
|
}
|
|
256
327
|
// Hard failure: unresolved external reference type
|
|
257
328
|
// This should never happen if the IR soundness gate is working correctly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/types/references.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/types/references.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ const createModuleWithType = (varType) => ({
|
|
|
17
17
|
kind: "module",
|
|
18
18
|
filePath: "/src/test.ts",
|
|
19
19
|
namespace: "Test",
|
|
20
|
-
className: "
|
|
20
|
+
className: "Test",
|
|
21
21
|
isStaticContainer: true,
|
|
22
22
|
imports: [],
|
|
23
23
|
body: [
|
|
@@ -45,7 +45,7 @@ describe("Reference Type Emission", () => {
|
|
|
45
45
|
name: "int",
|
|
46
46
|
});
|
|
47
47
|
const result = emitModule(module);
|
|
48
|
-
expect(result).to.include("int
|
|
48
|
+
expect(result).to.include("int X");
|
|
49
49
|
});
|
|
50
50
|
it("should emit long without qualification", () => {
|
|
51
51
|
const module = createModuleWithType({
|
|
@@ -53,7 +53,7 @@ describe("Reference Type Emission", () => {
|
|
|
53
53
|
name: "long",
|
|
54
54
|
});
|
|
55
55
|
const result = emitModule(module);
|
|
56
|
-
expect(result).to.include("long
|
|
56
|
+
expect(result).to.include("long X");
|
|
57
57
|
});
|
|
58
58
|
it("should emit double without qualification", () => {
|
|
59
59
|
const module = createModuleWithType({
|
|
@@ -61,7 +61,7 @@ describe("Reference Type Emission", () => {
|
|
|
61
61
|
name: "double",
|
|
62
62
|
});
|
|
63
63
|
const result = emitModule(module);
|
|
64
|
-
expect(result).to.include("double
|
|
64
|
+
expect(result).to.include("double X");
|
|
65
65
|
});
|
|
66
66
|
it("should emit decimal without qualification", () => {
|
|
67
67
|
const module = createModuleWithType({
|
|
@@ -69,7 +69,7 @@ describe("Reference Type Emission", () => {
|
|
|
69
69
|
name: "decimal",
|
|
70
70
|
});
|
|
71
71
|
const result = emitModule(module);
|
|
72
|
-
expect(result).to.include("decimal
|
|
72
|
+
expect(result).to.include("decimal X");
|
|
73
73
|
});
|
|
74
74
|
it("should emit bool without qualification", () => {
|
|
75
75
|
const module = createModuleWithType({
|
|
@@ -77,7 +77,7 @@ describe("Reference Type Emission", () => {
|
|
|
77
77
|
name: "bool",
|
|
78
78
|
});
|
|
79
79
|
const result = emitModule(module);
|
|
80
|
-
expect(result).to.include("bool
|
|
80
|
+
expect(result).to.include("bool X");
|
|
81
81
|
});
|
|
82
82
|
it("should emit nint (native int) without qualification", () => {
|
|
83
83
|
const module = createModuleWithType({
|
|
@@ -85,18 +85,19 @@ describe("Reference Type Emission", () => {
|
|
|
85
85
|
name: "nint",
|
|
86
86
|
});
|
|
87
87
|
const result = emitModule(module);
|
|
88
|
-
expect(result).to.include("nint
|
|
88
|
+
expect(result).to.include("nint X");
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
describe("Known Builtin Types", () => {
|
|
92
|
-
it("should emit Array<T> as
|
|
92
|
+
it("should emit Array<T> as native T[] array", () => {
|
|
93
93
|
const module = createModuleWithType({
|
|
94
94
|
kind: "referenceType",
|
|
95
95
|
name: "Array",
|
|
96
96
|
typeArguments: [{ kind: "primitiveType", name: "number" }],
|
|
97
97
|
});
|
|
98
98
|
const result = emitModule(module);
|
|
99
|
-
expect(result).to.include("
|
|
99
|
+
expect(result).to.include("double[]");
|
|
100
|
+
expect(result).not.to.include("List");
|
|
100
101
|
});
|
|
101
102
|
it("should emit Promise<T> as Task<T>", () => {
|
|
102
103
|
const module = createModuleWithType({
|
|
@@ -107,30 +108,13 @@ describe("Reference Type Emission", () => {
|
|
|
107
108
|
const result = emitModule(module);
|
|
108
109
|
expect(result).to.include("global::System.Threading.Tasks.Task<string>");
|
|
109
110
|
});
|
|
110
|
-
it("should
|
|
111
|
+
it("should fail for Error type (not supported)", () => {
|
|
111
112
|
const module = createModuleWithType({
|
|
112
113
|
kind: "referenceType",
|
|
113
114
|
name: "Error",
|
|
114
115
|
});
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
expect(result).to.include("global::System.Exception");
|
|
118
|
-
});
|
|
119
|
-
it("should emit Error as System.Exception in js mode (explicit)", () => {
|
|
120
|
-
const module = createModuleWithType({
|
|
121
|
-
kind: "referenceType",
|
|
122
|
-
name: "Error",
|
|
123
|
-
});
|
|
124
|
-
const result = emitModule(module, { runtime: "js" });
|
|
125
|
-
expect(result).to.include("global::System.Exception");
|
|
126
|
-
});
|
|
127
|
-
it("should fail for Error in dotnet mode (not in base globals)", () => {
|
|
128
|
-
const module = createModuleWithType({
|
|
129
|
-
kind: "referenceType",
|
|
130
|
-
name: "Error",
|
|
131
|
-
});
|
|
132
|
-
// Error is not in base globals, so it should fail as unresolved
|
|
133
|
-
expect(() => emitModule(module, { runtime: "dotnet" })).to.throw("ICE: Unresolved reference type 'Error'");
|
|
116
|
+
// Error is not in globals, so it should fail as unresolved
|
|
117
|
+
expect(() => emitModule(module)).to.throw("ICE: Unresolved reference type 'Error'");
|
|
134
118
|
});
|
|
135
119
|
});
|
|
136
120
|
describe("Pre-resolved CLR Types", () => {
|
|
@@ -157,13 +141,37 @@ describe("Reference Type Emission", () => {
|
|
|
157
141
|
expect(result).to.include("global::System.Func<string, double>");
|
|
158
142
|
});
|
|
159
143
|
});
|
|
144
|
+
describe("Bindings Registry Types", () => {
|
|
145
|
+
it("should strip generic arity markers from CLR names", () => {
|
|
146
|
+
const module = createModuleWithType({
|
|
147
|
+
kind: "referenceType",
|
|
148
|
+
name: "Dictionary_2",
|
|
149
|
+
typeArguments: [
|
|
150
|
+
{ kind: "primitiveType", name: "int" },
|
|
151
|
+
{ kind: "primitiveType", name: "string" },
|
|
152
|
+
],
|
|
153
|
+
});
|
|
154
|
+
const dictionaryBinding = {
|
|
155
|
+
name: "System.Collections.Generic.Dictionary`2",
|
|
156
|
+
alias: "Dictionary_2",
|
|
157
|
+
kind: "class",
|
|
158
|
+
members: [],
|
|
159
|
+
};
|
|
160
|
+
const clrBindings = new Map([
|
|
161
|
+
["Dictionary_2", dictionaryBinding],
|
|
162
|
+
]);
|
|
163
|
+
const result = emitModule(module, { clrBindings });
|
|
164
|
+
expect(result).to.include("global::System.Collections.Generic.Dictionary<int, string>");
|
|
165
|
+
expect(result).to.not.include("Dictionary`2");
|
|
166
|
+
});
|
|
167
|
+
});
|
|
160
168
|
describe("Local Types", () => {
|
|
161
169
|
it("should emit local class types without qualification", () => {
|
|
162
170
|
const module = {
|
|
163
171
|
kind: "module",
|
|
164
172
|
filePath: "/src/test.ts",
|
|
165
173
|
namespace: "Test",
|
|
166
|
-
className: "
|
|
174
|
+
className: "Test",
|
|
167
175
|
isStaticContainer: true,
|
|
168
176
|
imports: [],
|
|
169
177
|
body: [
|
|
@@ -195,14 +203,14 @@ describe("Reference Type Emission", () => {
|
|
|
195
203
|
exports: [],
|
|
196
204
|
};
|
|
197
205
|
const result = emitModule(module);
|
|
198
|
-
expect(result).to.include("User
|
|
206
|
+
expect(result).to.include("User User");
|
|
199
207
|
});
|
|
200
208
|
it("should emit local interface types without qualification", () => {
|
|
201
209
|
const module = {
|
|
202
210
|
kind: "module",
|
|
203
211
|
filePath: "/src/test.ts",
|
|
204
212
|
namespace: "Test",
|
|
205
|
-
className: "
|
|
213
|
+
className: "Test",
|
|
206
214
|
isStaticContainer: true,
|
|
207
215
|
imports: [],
|
|
208
216
|
body: [
|
|
@@ -234,13 +242,13 @@ describe("Reference Type Emission", () => {
|
|
|
234
242
|
exports: [],
|
|
235
243
|
};
|
|
236
244
|
const result = emitModule(module);
|
|
237
|
-
expect(result).to.include("IUser
|
|
245
|
+
expect(result).to.include("IUser User");
|
|
238
246
|
});
|
|
239
247
|
});
|
|
240
|
-
describe("
|
|
241
|
-
it("should
|
|
248
|
+
describe("Array Indexing", () => {
|
|
249
|
+
it("should use native indexer for array indexing", () => {
|
|
242
250
|
// This test creates a module with array index access
|
|
243
|
-
//
|
|
251
|
+
// Should use native indexer, not JSRuntime.Array.get()
|
|
244
252
|
const module = {
|
|
245
253
|
kind: "module",
|
|
246
254
|
filePath: "/src/test.ts",
|
|
@@ -303,80 +311,12 @@ describe("Reference Type Emission", () => {
|
|
|
303
311
|
],
|
|
304
312
|
exports: [],
|
|
305
313
|
};
|
|
306
|
-
const result = emitModule(module
|
|
307
|
-
//
|
|
314
|
+
const result = emitModule(module);
|
|
315
|
+
// Output should NOT contain JSRuntime
|
|
308
316
|
expect(result).to.not.include("Tsonic.JSRuntime");
|
|
309
317
|
// Should use native indexer (no cast needed with proof marker)
|
|
310
318
|
expect(result).to.include("arr[0]");
|
|
311
319
|
});
|
|
312
|
-
it("should emit JSRuntime in js mode for array indexing", () => {
|
|
313
|
-
// Same module as above but in js mode
|
|
314
|
-
const module = {
|
|
315
|
-
kind: "module",
|
|
316
|
-
filePath: "/src/test.ts",
|
|
317
|
-
namespace: "Test",
|
|
318
|
-
className: "test",
|
|
319
|
-
isStaticContainer: true,
|
|
320
|
-
imports: [],
|
|
321
|
-
body: [
|
|
322
|
-
{
|
|
323
|
-
kind: "functionDeclaration",
|
|
324
|
-
name: "getFirst",
|
|
325
|
-
isExported: true,
|
|
326
|
-
isAsync: false,
|
|
327
|
-
isGenerator: false,
|
|
328
|
-
parameters: [
|
|
329
|
-
{
|
|
330
|
-
kind: "parameter",
|
|
331
|
-
pattern: { kind: "identifierPattern", name: "arr" },
|
|
332
|
-
type: {
|
|
333
|
-
kind: "arrayType",
|
|
334
|
-
elementType: { kind: "primitiveType", name: "number" },
|
|
335
|
-
},
|
|
336
|
-
isOptional: false,
|
|
337
|
-
isRest: false,
|
|
338
|
-
passing: "value",
|
|
339
|
-
},
|
|
340
|
-
],
|
|
341
|
-
returnType: { kind: "primitiveType", name: "number" },
|
|
342
|
-
body: {
|
|
343
|
-
kind: "blockStatement",
|
|
344
|
-
statements: [
|
|
345
|
-
{
|
|
346
|
-
kind: "returnStatement",
|
|
347
|
-
expression: {
|
|
348
|
-
kind: "memberAccess",
|
|
349
|
-
object: {
|
|
350
|
-
kind: "identifier",
|
|
351
|
-
name: "arr",
|
|
352
|
-
inferredType: {
|
|
353
|
-
kind: "arrayType",
|
|
354
|
-
elementType: { kind: "primitiveType", name: "number" },
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
property: {
|
|
358
|
-
kind: "literal",
|
|
359
|
-
value: 0,
|
|
360
|
-
// Proof marker: int literal
|
|
361
|
-
inferredType: {
|
|
362
|
-
kind: "primitiveType",
|
|
363
|
-
name: "int",
|
|
364
|
-
},
|
|
365
|
-
},
|
|
366
|
-
isComputed: true,
|
|
367
|
-
isOptional: false,
|
|
368
|
-
},
|
|
369
|
-
},
|
|
370
|
-
],
|
|
371
|
-
},
|
|
372
|
-
},
|
|
373
|
-
],
|
|
374
|
-
exports: [],
|
|
375
|
-
};
|
|
376
|
-
const result = emitModule(module, { runtime: "js" });
|
|
377
|
-
// In js mode, output should use JSRuntime.Array.get()
|
|
378
|
-
expect(result).to.include("global::Tsonic.JSRuntime.Array.get");
|
|
379
|
-
});
|
|
380
320
|
});
|
|
381
321
|
});
|
|
382
322
|
//# sourceMappingURL=references.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.test.js","sourceRoot":"","sources":["../../src/types/references.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"references.test.js","sourceRoot":"","sources":["../../src/types/references.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unions.d.ts","sourceRoot":"","sources":["../../src/types/unions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"unions.d.ts","sourceRoot":"","sources":["../../src/types/unions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAqB7C;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EAC5C,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA2DzB,CAAC"}
|