@tsonic/frontend 0.0.15 → 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/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +3 -2
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/ir/binding/index.d.ts +21 -0
- package/dist/ir/binding/index.d.ts.map +1 -1
- package/dist/ir/binding/index.js +316 -6
- package/dist/ir/binding/index.js.map +1 -1
- package/dist/ir/bindings-disambiguation.test.d.ts +11 -0
- package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -0
- package/dist/ir/bindings-disambiguation.test.js +416 -0
- package/dist/ir/bindings-disambiguation.test.js.map +1 -0
- package/dist/ir/builder/orchestrator.d.ts.map +1 -1
- package/dist/ir/builder/orchestrator.js +8 -2
- package/dist/ir/builder/orchestrator.js.map +1 -1
- package/dist/ir/builder/types.d.ts +2 -3
- package/dist/ir/builder/types.d.ts.map +1 -1
- package/dist/ir/builder.test.js +1 -1
- package/dist/ir/converters/context.d.ts.map +1 -1
- package/dist/ir/converters/context.js +1 -0
- package/dist/ir/converters/context.js.map +1 -1
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +161 -39
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +256 -19
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
- package/dist/ir/converters/expressions/functions.js +30 -12
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
- package/dist/ir/converters/expressions/operators.js +5 -1
- package/dist/ir/converters/expressions/operators.js.map +1 -1
- package/dist/ir/converters/flow-narrowing.d.ts +27 -0
- package/dist/ir/converters/flow-narrowing.d.ts.map +1 -0
- package/dist/ir/converters/flow-narrowing.js +73 -0
- package/dist/ir/converters/flow-narrowing.js.map +1 -0
- package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.js +19 -2
- package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +11 -4
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/program-context.d.ts +17 -4
- package/dist/ir/program-context.d.ts.map +1 -1
- package/dist/ir/program-context.js +3 -0
- package/dist/ir/program-context.js.map +1 -1
- package/dist/ir/thisarg-inference.test.js +18 -18
- package/dist/ir/thisarg-inference.test.js.map +1 -1
- package/dist/ir/type-system/internal/handle-types.d.ts +7 -0
- package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts +3 -3
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/primitives.js +2 -2
- package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/references.js +5 -11
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
- package/dist/ir/type-system/internal/type-registry.d.ts +6 -1
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-registry.js +11 -10
- package/dist/ir/type-system/internal/type-registry.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.js +20 -4
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts +2 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/source-catalog.js +8 -3
- package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
- package/dist/ir/type-system/internal/universe/types.d.ts +1 -1
- package/dist/ir/type-system/type-system.d.ts.map +1 -1
- package/dist/ir/type-system/type-system.js +192 -33
- package/dist/ir/type-system/type-system.js.map +1 -1
- package/dist/ir/types/expressions.d.ts +2 -0
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/types/ir-types.d.ts +1 -1
- package/dist/ir/types/statements.d.ts +9 -0
- package/dist/ir/types/statements.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.js +1 -0
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
- package/dist/ir/validation/char-validation-pass.d.ts +26 -0
- package/dist/ir/validation/char-validation-pass.d.ts.map +1 -0
- package/dist/ir/validation/char-validation-pass.js +495 -0
- package/dist/ir/validation/char-validation-pass.js.map +1 -0
- package/dist/program/bindings.d.ts +16 -0
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +44 -0
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +11 -104
- package/dist/program/creation.js.map +1 -1
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +8 -1
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/program/diagnostics.d.ts.map +1 -1
- package/dist/program/diagnostics.js +0 -6
- package/dist/program/diagnostics.js.map +1 -1
- package/dist/program/types.d.ts +2 -3
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +5 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +121 -31
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/clr-bindings-resolver.test.d.ts +2 -0
- package/dist/resolver/clr-bindings-resolver.test.d.ts.map +1 -0
- package/dist/resolver/clr-bindings-resolver.test.js +161 -0
- package/dist/resolver/clr-bindings-resolver.test.js.map +1 -0
- package/dist/resolver/namespace.d.ts +2 -1
- package/dist/resolver/namespace.d.ts.map +1 -1
- package/dist/resolver/namespace.js +5 -2
- package/dist/resolver/namespace.js.map +1 -1
- package/dist/resolver/namespace.test.js +6 -6
- package/dist/resolver/naming-policy.d.ts +20 -0
- package/dist/resolver/naming-policy.d.ts.map +1 -0
- package/dist/resolver/naming-policy.js +40 -0
- package/dist/resolver/naming-policy.js.map +1 -0
- package/dist/resolver/naming.d.ts +2 -5
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +2 -30
- package/dist/resolver/naming.js.map +1 -1
- package/dist/resolver.d.ts +2 -0
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +1 -0
- package/dist/resolver.js.map +1 -1
- package/dist/resolver.test.js +7 -6
- 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/core-intrinsics.d.ts +18 -0
- package/dist/validation/core-intrinsics.d.ts.map +1 -0
- package/dist/validation/core-intrinsics.js +186 -0
- package/dist/validation/core-intrinsics.js.map +1 -0
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/orchestrator.d.ts.map +1 -1
- package/dist/validation/orchestrator.js +2 -0
- package/dist/validation/orchestrator.js.map +1 -1
- package/dist/validator.test.js +52 -6
- package/dist/validator.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/ir/clr-type-mappings.d.ts +0 -42
- package/dist/ir/clr-type-mappings.d.ts.map +0 -1
- package/dist/ir/clr-type-mappings.js +0 -139
- package/dist/ir/clr-type-mappings.js.map +0 -1
- package/dist/ir/type-converter.d.ts +0 -9
- package/dist/ir/type-converter.d.ts.map +0 -1
- package/dist/ir/type-converter.js +0 -9
- package/dist/ir/type-converter.js.map +0 -1
- package/dist/ir/type-system/core.d.ts +0 -29
- package/dist/ir/type-system/core.d.ts.map +0 -1
- package/dist/ir/type-system/core.js +0 -456
- package/dist/ir/type-system/core.js.map +0 -1
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts +0 -12
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts.map +0 -1
- package/dist/ir/type-system/internal/type-converter/patterns.js +0 -82
- package/dist/ir/type-system/internal/type-converter/patterns.js.map +0 -1
- package/dist/ir/type-universe/assembly-catalog.d.ts +0 -44
- package/dist/ir/type-universe/assembly-catalog.d.ts.map +0 -1
- package/dist/ir/type-universe/assembly-catalog.js +0 -532
- package/dist/ir/type-universe/assembly-catalog.js.map +0 -1
- package/dist/ir/type-universe/assembly-catalog.test.d.ts +0 -7
- package/dist/ir/type-universe/assembly-catalog.test.d.ts.map +0 -1
- package/dist/ir/type-universe/assembly-catalog.test.js +0 -105
- package/dist/ir/type-universe/assembly-catalog.test.js.map +0 -1
- package/dist/ir/type-universe/index.d.ts +0 -19
- package/dist/ir/type-universe/index.d.ts.map +0 -1
- package/dist/ir/type-universe/index.js +0 -21
- package/dist/ir/type-universe/index.js.map +0 -1
- package/dist/ir/type-universe/types.d.ts +0 -436
- package/dist/ir/type-universe/types.d.ts.map +0 -1
- package/dist/ir/type-universe/types.js +0 -69
- package/dist/ir/type-universe/types.js.map +0 -1
- package/dist/ir/type-universe/unified-catalog.d.ts +0 -70
- package/dist/ir/type-universe/unified-catalog.d.ts.map +0 -1
- package/dist/ir/type-universe/unified-catalog.js +0 -319
- package/dist/ir/type-universe/unified-catalog.js.map +0 -1
- package/dist/ir/type-universe/unified-catalog.test.d.ts +0 -7
- package/dist/ir/type-universe/unified-catalog.test.d.ts.map +0 -1
- package/dist/ir/type-universe/unified-catalog.test.js +0 -135
- package/dist/ir/type-universe/unified-catalog.test.js.map +0 -1
|
@@ -1,456 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TypeSystem Core Implementation
|
|
3
|
-
*
|
|
4
|
-
* Implements the TypeSystem interface using TypeRegistry, NominalEnv,
|
|
5
|
-
* and HandleRegistry. This is the single source of truth for all type queries.
|
|
6
|
-
*
|
|
7
|
-
* INVARIANT INV-0: No ts.Type or computed type APIs are used here.
|
|
8
|
-
* All type information comes from:
|
|
9
|
-
* 1. HandleRegistry (declaration TypeNodes from Binding layer)
|
|
10
|
-
* 2. TypeRegistry (nominal type declarations)
|
|
11
|
-
* 3. NominalEnv (inheritance chain + substitution)
|
|
12
|
-
*/
|
|
13
|
-
import { substituteIrType, typesEqual } from "../types/index.js";
|
|
14
|
-
import { typeOk, typeError, signatureOk, unknownType, voidType, } from "./types.js";
|
|
15
|
-
import { createDiagnostic } from "../../types/diagnostic.js";
|
|
16
|
-
/**
|
|
17
|
-
* Create a TypeSystem instance.
|
|
18
|
-
*/
|
|
19
|
-
export const createTypeSystem = (config) => {
|
|
20
|
-
const { registry, nominalEnv, handleRegistry, convertTypeNode, binding } = config;
|
|
21
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
22
|
-
// CORE QUERIES
|
|
23
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
24
|
-
const getDeclType = (decl) => {
|
|
25
|
-
const info = handleRegistry.getDecl(decl);
|
|
26
|
-
if (!info) {
|
|
27
|
-
return typeError([
|
|
28
|
-
createDiagnostic("TSN5203", "error", "Cannot resolve declaration type"),
|
|
29
|
-
]);
|
|
30
|
-
}
|
|
31
|
-
// If we have an explicit type annotation, convert it
|
|
32
|
-
if (info.typeNode) {
|
|
33
|
-
const irType = convertTypeNode(info.typeNode, binding);
|
|
34
|
-
return typeOk(irType);
|
|
35
|
-
}
|
|
36
|
-
// For declarations without explicit type, return unknownType with diagnostic
|
|
37
|
-
return typeError([
|
|
38
|
-
createDiagnostic("TSN5201", "error", `Declaration '${info.fqName ?? "unknown"}' requires explicit type annotation`),
|
|
39
|
-
]);
|
|
40
|
-
};
|
|
41
|
-
const getSignature = (sig) => {
|
|
42
|
-
const info = handleRegistry.getSignature(sig);
|
|
43
|
-
if (!info) {
|
|
44
|
-
return {
|
|
45
|
-
parameters: [],
|
|
46
|
-
returnType: unknownType,
|
|
47
|
-
diagnostics: [
|
|
48
|
-
createDiagnostic("TSN5203", "error", "Cannot resolve signature"),
|
|
49
|
-
],
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
// Convert parameters
|
|
53
|
-
const parameters = info.parameters.map((p) => ({
|
|
54
|
-
name: p.name,
|
|
55
|
-
type: p.typeNode
|
|
56
|
-
? convertTypeNode(p.typeNode, binding)
|
|
57
|
-
: unknownType,
|
|
58
|
-
isOptional: p.isOptional,
|
|
59
|
-
isRest: p.isRest,
|
|
60
|
-
}));
|
|
61
|
-
// Convert return type
|
|
62
|
-
const returnType = info.returnTypeNode
|
|
63
|
-
? convertTypeNode(info.returnTypeNode, binding)
|
|
64
|
-
: voidType;
|
|
65
|
-
// Convert type parameters
|
|
66
|
-
const typeParameters = info.typeParameters?.map((tp) => ({
|
|
67
|
-
name: tp.name,
|
|
68
|
-
constraint: tp.constraintNode
|
|
69
|
-
? convertTypeNode(tp.constraintNode, binding)
|
|
70
|
-
: undefined,
|
|
71
|
-
defaultType: tp.defaultNode
|
|
72
|
-
? convertTypeNode(tp.defaultNode, binding)
|
|
73
|
-
: undefined,
|
|
74
|
-
}));
|
|
75
|
-
return signatureOk(parameters, returnType, typeParameters);
|
|
76
|
-
};
|
|
77
|
-
const getMemberType = (_type, member) => {
|
|
78
|
-
const info = handleRegistry.getMember(member);
|
|
79
|
-
if (!info) {
|
|
80
|
-
return typeError([
|
|
81
|
-
createDiagnostic("TSN5203", "error", `Cannot resolve member '${member.name}'`),
|
|
82
|
-
]);
|
|
83
|
-
}
|
|
84
|
-
if (!info.typeNode) {
|
|
85
|
-
return typeError([
|
|
86
|
-
createDiagnostic("TSN5201", "error", `Member '${member.name}' requires explicit type annotation`),
|
|
87
|
-
]);
|
|
88
|
-
}
|
|
89
|
-
const irType = convertTypeNode(info.typeNode, binding);
|
|
90
|
-
return typeOk(irType);
|
|
91
|
-
};
|
|
92
|
-
const instantiate = (type, args) => {
|
|
93
|
-
if (type.kind !== "referenceType") {
|
|
94
|
-
return typeOk(type); // Non-reference types don't have type parameters
|
|
95
|
-
}
|
|
96
|
-
// Look up the type in registry to get its type parameters
|
|
97
|
-
const entry = registry.resolveBySimpleName(type.name);
|
|
98
|
-
if (!entry) {
|
|
99
|
-
// Type not in registry - just attach type arguments
|
|
100
|
-
return typeOk({
|
|
101
|
-
...type,
|
|
102
|
-
typeArguments: args,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
// Build substitution map
|
|
106
|
-
const subst = new Map();
|
|
107
|
-
entry.typeParameters.forEach((param, i) => {
|
|
108
|
-
const arg = args[i];
|
|
109
|
-
if (arg !== undefined) {
|
|
110
|
-
subst.set(param.name, arg);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
// Substitute in structural members if present
|
|
114
|
-
const substitutedMembers = type.structuralMembers?.map((m) => substituteIrMember(m, subst));
|
|
115
|
-
return typeOk({
|
|
116
|
-
...type,
|
|
117
|
-
typeArguments: args,
|
|
118
|
-
structuralMembers: substitutedMembers,
|
|
119
|
-
});
|
|
120
|
-
};
|
|
121
|
-
const getExpectedType = (_position) => {
|
|
122
|
-
// This is a simplified implementation
|
|
123
|
-
// The full implementation would walk up the AST to find contextual type
|
|
124
|
-
// For now, return unknownType - the actual implementation is in helpers.ts
|
|
125
|
-
return typeOk(unknownType);
|
|
126
|
-
};
|
|
127
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
128
|
-
// UTILITY TYPE EXPANSION
|
|
129
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
130
|
-
const expandUtilityType = (utilityName, typeArgs, _sourceTypeArgs) => {
|
|
131
|
-
const firstArg = typeArgs[0];
|
|
132
|
-
if (!firstArg) {
|
|
133
|
-
return typeError([
|
|
134
|
-
createDiagnostic("TSN7414", "error", `Utility type '${utilityName}' requires a type argument`),
|
|
135
|
-
]);
|
|
136
|
-
}
|
|
137
|
-
switch (utilityName) {
|
|
138
|
-
case "NonNullable":
|
|
139
|
-
return expandNonNullable(firstArg);
|
|
140
|
-
case "Partial":
|
|
141
|
-
case "Required":
|
|
142
|
-
case "Readonly":
|
|
143
|
-
return expandMappedUtility(utilityName, firstArg);
|
|
144
|
-
default:
|
|
145
|
-
return typeError([
|
|
146
|
-
createDiagnostic("TSN7414", "error", `Utility type '${utilityName}' expansion not yet implemented in TypeSystem`),
|
|
147
|
-
]);
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
151
|
-
// STRUCTURAL OPERATIONS
|
|
152
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
153
|
-
const getStructuralMembers = (type) => {
|
|
154
|
-
if (type.kind === "objectType") {
|
|
155
|
-
return type.members.map((m) => memberToResult(m, type));
|
|
156
|
-
}
|
|
157
|
-
if (type.kind === "referenceType" && type.structuralMembers) {
|
|
158
|
-
return type.structuralMembers.map((m) => memberToResult(m, type));
|
|
159
|
-
}
|
|
160
|
-
if (type.kind === "referenceType") {
|
|
161
|
-
// Look up in registry and get members
|
|
162
|
-
const entry = registry.resolveBySimpleName(type.name);
|
|
163
|
-
if (!entry)
|
|
164
|
-
return [];
|
|
165
|
-
const members = [];
|
|
166
|
-
entry.members.forEach((info, name) => {
|
|
167
|
-
if (info.kind === "property" && info.type) {
|
|
168
|
-
// MemberInfo.type is now pure IrType - no conversion needed
|
|
169
|
-
members.push({
|
|
170
|
-
name,
|
|
171
|
-
type: info.type,
|
|
172
|
-
isOptional: info.isOptional,
|
|
173
|
-
isReadonly: info.isReadonly,
|
|
174
|
-
declaringType: type,
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
// Include inherited members via NominalEnv
|
|
179
|
-
const fqName = registry.getFQName(type.name);
|
|
180
|
-
if (fqName) {
|
|
181
|
-
const chain = nominalEnv.getInheritanceChain(fqName);
|
|
182
|
-
for (const parentFqName of chain.slice(1)) {
|
|
183
|
-
const parentEntry = registry.resolveNominal(parentFqName);
|
|
184
|
-
if (!parentEntry)
|
|
185
|
-
continue;
|
|
186
|
-
// Get substitution for this parent
|
|
187
|
-
const subst = nominalEnv.getInstantiation(fqName, type.typeArguments ?? [], parentFqName);
|
|
188
|
-
parentEntry.members.forEach((info, name) => {
|
|
189
|
-
// Skip if already have this member (child overrides)
|
|
190
|
-
if (members.some((m) => m.name === name))
|
|
191
|
-
return;
|
|
192
|
-
if (info.kind === "property" && info.type) {
|
|
193
|
-
// MemberInfo.type is now pure IrType - apply substitution directly
|
|
194
|
-
const memberType = subst
|
|
195
|
-
? substituteIrType(info.type, subst)
|
|
196
|
-
: info.type;
|
|
197
|
-
members.push({
|
|
198
|
-
name,
|
|
199
|
-
type: memberType,
|
|
200
|
-
isOptional: info.isOptional,
|
|
201
|
-
isReadonly: info.isReadonly,
|
|
202
|
-
declaringType: {
|
|
203
|
-
kind: "referenceType",
|
|
204
|
-
name: parentEntry.name,
|
|
205
|
-
},
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return members;
|
|
212
|
-
}
|
|
213
|
-
return [];
|
|
214
|
-
};
|
|
215
|
-
const resolvePropertyAccess = (type, propertyName) => {
|
|
216
|
-
// Handle arrays
|
|
217
|
-
if (type.kind === "arrayType") {
|
|
218
|
-
if (propertyName === "length") {
|
|
219
|
-
return typeOk({ kind: "primitiveType", name: "int" });
|
|
220
|
-
}
|
|
221
|
-
return typeError([
|
|
222
|
-
createDiagnostic("TSN5203", "error", `Property '${propertyName}' not found on array type`),
|
|
223
|
-
]);
|
|
224
|
-
}
|
|
225
|
-
// Handle tuples
|
|
226
|
-
if (type.kind === "tupleType") {
|
|
227
|
-
const index = parseInt(propertyName, 10);
|
|
228
|
-
const element = type.elementTypes[index];
|
|
229
|
-
if (!isNaN(index) && index >= 0 && element !== undefined) {
|
|
230
|
-
return typeOk(element);
|
|
231
|
-
}
|
|
232
|
-
if (propertyName === "length") {
|
|
233
|
-
return typeOk({
|
|
234
|
-
kind: "literalType",
|
|
235
|
-
value: type.elementTypes.length,
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
// Handle objects and references
|
|
240
|
-
const members = getStructuralMembers(type);
|
|
241
|
-
const member = members.find((m) => m.name === propertyName);
|
|
242
|
-
if (member) {
|
|
243
|
-
return typeOk(member.type);
|
|
244
|
-
}
|
|
245
|
-
return typeError([
|
|
246
|
-
createDiagnostic("TSN5203", "error", `Property '${propertyName}' not found on type`),
|
|
247
|
-
]);
|
|
248
|
-
};
|
|
249
|
-
const synthesizeObjectType = (properties) => {
|
|
250
|
-
const members = properties.map((p) => ({
|
|
251
|
-
kind: "propertySignature",
|
|
252
|
-
name: p.name,
|
|
253
|
-
type: p.value,
|
|
254
|
-
isOptional: p.isOptional ?? false,
|
|
255
|
-
isReadonly: false,
|
|
256
|
-
}));
|
|
257
|
-
return typeOk({
|
|
258
|
-
kind: "objectType",
|
|
259
|
-
members,
|
|
260
|
-
});
|
|
261
|
-
};
|
|
262
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
263
|
-
// SUBSTITUTION & INHERITANCE
|
|
264
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
265
|
-
const substitute = (type, substitutions) => {
|
|
266
|
-
return substituteIrType(type, substitutions);
|
|
267
|
-
};
|
|
268
|
-
const getInheritanceChain = (type) => {
|
|
269
|
-
const fqName = registry.getFQName(type.name);
|
|
270
|
-
if (!fqName)
|
|
271
|
-
return [type];
|
|
272
|
-
const chain = nominalEnv.getInheritanceChain(fqName);
|
|
273
|
-
return chain.map((name) => {
|
|
274
|
-
const entry = registry.resolveNominal(name);
|
|
275
|
-
return {
|
|
276
|
-
kind: "referenceType",
|
|
277
|
-
name: entry?.name ?? name,
|
|
278
|
-
};
|
|
279
|
-
});
|
|
280
|
-
};
|
|
281
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
282
|
-
// TYPE COMPARISON
|
|
283
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
284
|
-
const typesEqualFn = (a, b) => {
|
|
285
|
-
return typesEqual(a, b);
|
|
286
|
-
};
|
|
287
|
-
const isAssignableTo = (source, target) => {
|
|
288
|
-
// Simple structural check for now
|
|
289
|
-
if (typesEqual(source, target))
|
|
290
|
-
return true;
|
|
291
|
-
// any is assignable to anything
|
|
292
|
-
if (source.kind === "anyType")
|
|
293
|
-
return true;
|
|
294
|
-
// anything is assignable to any
|
|
295
|
-
if (target.kind === "anyType")
|
|
296
|
-
return true;
|
|
297
|
-
// unknown accepts anything
|
|
298
|
-
if (target.kind === "unknownType")
|
|
299
|
-
return true;
|
|
300
|
-
// null/undefined assignable to optional types
|
|
301
|
-
if (source.kind === "primitiveType") {
|
|
302
|
-
if (source.name === "null" || source.name === "undefined") {
|
|
303
|
-
if (target.kind === "unionType") {
|
|
304
|
-
return target.types.some((t) => t.kind === "primitiveType" &&
|
|
305
|
-
(t.name === "null" || t.name === "undefined"));
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
// TODO: More complex subtype checks
|
|
310
|
-
return false;
|
|
311
|
-
};
|
|
312
|
-
return {
|
|
313
|
-
getDeclType,
|
|
314
|
-
getSignature,
|
|
315
|
-
getMemberType,
|
|
316
|
-
instantiate,
|
|
317
|
-
getExpectedType,
|
|
318
|
-
expandUtilityType,
|
|
319
|
-
getStructuralMembers,
|
|
320
|
-
resolvePropertyAccess,
|
|
321
|
-
synthesizeObjectType,
|
|
322
|
-
substitute,
|
|
323
|
-
getInheritanceChain,
|
|
324
|
-
typesEqual: typesEqualFn,
|
|
325
|
-
isAssignableTo,
|
|
326
|
-
};
|
|
327
|
-
};
|
|
328
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
329
|
-
// HELPER FUNCTIONS
|
|
330
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
331
|
-
const substituteIrMember = (member, subst) => {
|
|
332
|
-
if (member.kind === "propertySignature") {
|
|
333
|
-
return {
|
|
334
|
-
...member,
|
|
335
|
-
type: substituteIrType(member.type, subst),
|
|
336
|
-
};
|
|
337
|
-
}
|
|
338
|
-
if (member.kind === "methodSignature") {
|
|
339
|
-
return {
|
|
340
|
-
...member,
|
|
341
|
-
parameters: member.parameters.map((p) => ({
|
|
342
|
-
...p,
|
|
343
|
-
type: p.type ? substituteIrType(p.type, subst) : undefined,
|
|
344
|
-
})),
|
|
345
|
-
returnType: member.returnType
|
|
346
|
-
? substituteIrType(member.returnType, subst)
|
|
347
|
-
: undefined,
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
return member;
|
|
351
|
-
};
|
|
352
|
-
const memberToResult = (member, declaringType) => {
|
|
353
|
-
if (member.kind === "propertySignature") {
|
|
354
|
-
return {
|
|
355
|
-
name: member.name,
|
|
356
|
-
type: member.type,
|
|
357
|
-
isOptional: member.isOptional,
|
|
358
|
-
isReadonly: member.isReadonly,
|
|
359
|
-
declaringType,
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
// Method signature
|
|
363
|
-
return {
|
|
364
|
-
name: member.name,
|
|
365
|
-
type: getFunctionTypeForMethod(member),
|
|
366
|
-
isOptional: false,
|
|
367
|
-
isReadonly: false,
|
|
368
|
-
declaringType,
|
|
369
|
-
};
|
|
370
|
-
};
|
|
371
|
-
const getFunctionTypeForMethod = (method) => {
|
|
372
|
-
return {
|
|
373
|
-
kind: "functionType",
|
|
374
|
-
parameters: method.parameters.map((p) => ({
|
|
375
|
-
kind: "parameter",
|
|
376
|
-
pattern: {
|
|
377
|
-
kind: "identifierPattern",
|
|
378
|
-
name: getParameterName(p),
|
|
379
|
-
},
|
|
380
|
-
type: p.type,
|
|
381
|
-
isOptional: p.isOptional,
|
|
382
|
-
isRest: p.isRest,
|
|
383
|
-
passing: p.passing,
|
|
384
|
-
})),
|
|
385
|
-
returnType: method.returnType ?? voidType,
|
|
386
|
-
};
|
|
387
|
-
};
|
|
388
|
-
const getParameterName = (p) => {
|
|
389
|
-
if (p.pattern.kind === "identifierPattern" && p.pattern.name) {
|
|
390
|
-
return p.pattern.name;
|
|
391
|
-
}
|
|
392
|
-
return "param";
|
|
393
|
-
};
|
|
394
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
395
|
-
// UTILITY TYPE HELPERS
|
|
396
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
397
|
-
const expandNonNullable = (type) => {
|
|
398
|
-
if (type.kind !== "unionType") {
|
|
399
|
-
// Not a union, check if it's null/undefined directly
|
|
400
|
-
if (type.kind === "primitiveType") {
|
|
401
|
-
if (type.name === "null" || type.name === "undefined") {
|
|
402
|
-
return typeOk({ kind: "neverType" });
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
return typeOk(type);
|
|
406
|
-
}
|
|
407
|
-
// Filter out null and undefined from union
|
|
408
|
-
const filtered = type.types.filter((t) => {
|
|
409
|
-
if (t.kind === "primitiveType") {
|
|
410
|
-
return t.name !== "null" && t.name !== "undefined";
|
|
411
|
-
}
|
|
412
|
-
return true;
|
|
413
|
-
});
|
|
414
|
-
if (filtered.length === 0) {
|
|
415
|
-
return typeOk({ kind: "neverType" });
|
|
416
|
-
}
|
|
417
|
-
const first = filtered[0];
|
|
418
|
-
if (filtered.length === 1 && first !== undefined) {
|
|
419
|
-
return typeOk(first);
|
|
420
|
-
}
|
|
421
|
-
return typeOk({ kind: "unionType", types: filtered });
|
|
422
|
-
};
|
|
423
|
-
const expandMappedUtility = (utilityName, type) => {
|
|
424
|
-
// Only works on object/reference types
|
|
425
|
-
if (type.kind !== "objectType" && type.kind !== "referenceType") {
|
|
426
|
-
return typeError([
|
|
427
|
-
createDiagnostic("TSN7414", "error", `${utilityName} requires an object type argument`),
|
|
428
|
-
]);
|
|
429
|
-
}
|
|
430
|
-
// For reference types without structural members, we can't expand
|
|
431
|
-
if (type.kind === "referenceType" && !type.structuralMembers) {
|
|
432
|
-
return typeError([
|
|
433
|
-
createDiagnostic("TSN7414", "error", `${utilityName} requires a concrete object type, not a type parameter`),
|
|
434
|
-
]);
|
|
435
|
-
}
|
|
436
|
-
const members = type.kind === "objectType" ? type.members : (type.structuralMembers ?? []);
|
|
437
|
-
const transformedMembers = members.map((m) => {
|
|
438
|
-
if (m.kind !== "propertySignature")
|
|
439
|
-
return m;
|
|
440
|
-
const prop = m;
|
|
441
|
-
return {
|
|
442
|
-
...prop,
|
|
443
|
-
isOptional: utilityName === "Partial"
|
|
444
|
-
? true
|
|
445
|
-
: utilityName === "Required"
|
|
446
|
-
? false
|
|
447
|
-
: prop.isOptional,
|
|
448
|
-
isReadonly: utilityName === "Readonly" ? true : prop.isReadonly,
|
|
449
|
-
};
|
|
450
|
-
});
|
|
451
|
-
return typeOk({
|
|
452
|
-
kind: "objectType",
|
|
453
|
-
members: transformedMembers,
|
|
454
|
-
});
|
|
455
|
-
};
|
|
456
|
-
//# sourceMappingURL=core.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/ir/type-system/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Binding pattern converter - TypeScript patterns to IR patterns
|
|
3
|
-
*/
|
|
4
|
-
import * as ts from "typescript";
|
|
5
|
-
import { IrPattern } from "../../../types/helpers.js";
|
|
6
|
-
import type { Binding } from "../../../binding/index.js";
|
|
7
|
-
/**
|
|
8
|
-
* Convert TypeScript binding name to IR pattern.
|
|
9
|
-
* Optionally accepts a Binding for expression conversion (defaults, etc.)
|
|
10
|
-
*/
|
|
11
|
-
export declare const convertBindingName: (name: ts.BindingName, binding?: Binding) => IrPattern;
|
|
12
|
-
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/patterns.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,SAAS,EAGV,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,EAAE,CAAC,WAAW,EACpB,UAAU,OAAO,KAChB,SAgFF,CAAC"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Binding pattern converter - TypeScript patterns to IR patterns
|
|
3
|
-
*/
|
|
4
|
-
import * as ts from "typescript";
|
|
5
|
-
import { convertExpression } from "../../../expression-converter.js";
|
|
6
|
-
/**
|
|
7
|
-
* Convert TypeScript binding name to IR pattern.
|
|
8
|
-
* Optionally accepts a Binding for expression conversion (defaults, etc.)
|
|
9
|
-
*/
|
|
10
|
-
export const convertBindingName = (name, binding) => {
|
|
11
|
-
if (ts.isIdentifier(name)) {
|
|
12
|
-
return {
|
|
13
|
-
kind: "identifierPattern",
|
|
14
|
-
name: name.text,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
if (ts.isArrayBindingPattern(name)) {
|
|
18
|
-
return {
|
|
19
|
-
kind: "arrayPattern",
|
|
20
|
-
elements: name.elements.map((elem) => {
|
|
21
|
-
if (ts.isOmittedExpression(elem)) {
|
|
22
|
-
return undefined; // Hole in array pattern
|
|
23
|
-
}
|
|
24
|
-
if (ts.isBindingElement(elem)) {
|
|
25
|
-
const isRest = !!elem.dotDotDotToken;
|
|
26
|
-
const defaultExpr = elem.initializer && binding
|
|
27
|
-
? convertExpression(elem.initializer, binding, undefined)
|
|
28
|
-
: undefined;
|
|
29
|
-
return {
|
|
30
|
-
pattern: convertBindingName(elem.name, binding),
|
|
31
|
-
defaultExpr,
|
|
32
|
-
isRest: isRest || undefined,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
return undefined;
|
|
36
|
-
}),
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
if (ts.isObjectBindingPattern(name)) {
|
|
40
|
-
const properties = [];
|
|
41
|
-
name.elements.forEach((elem) => {
|
|
42
|
-
if (elem.dotDotDotToken) {
|
|
43
|
-
// Rest property: { ...rest }
|
|
44
|
-
// Note: restShapeMembers and restSynthTypeName are computed later
|
|
45
|
-
// during rest type synthesis pass
|
|
46
|
-
properties.push({
|
|
47
|
-
kind: "rest",
|
|
48
|
-
pattern: convertBindingName(elem.name, binding),
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
const key = elem.propertyName
|
|
53
|
-
? ts.isIdentifier(elem.propertyName)
|
|
54
|
-
? elem.propertyName.text
|
|
55
|
-
: elem.propertyName.getText()
|
|
56
|
-
: ts.isIdentifier(elem.name)
|
|
57
|
-
? elem.name.text
|
|
58
|
-
: "[computed]";
|
|
59
|
-
const defaultExpr = elem.initializer && binding
|
|
60
|
-
? convertExpression(elem.initializer, binding, undefined)
|
|
61
|
-
: undefined;
|
|
62
|
-
properties.push({
|
|
63
|
-
kind: "property",
|
|
64
|
-
key,
|
|
65
|
-
value: convertBindingName(elem.name, binding),
|
|
66
|
-
shorthand: !elem.propertyName,
|
|
67
|
-
defaultExpr,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return {
|
|
72
|
-
kind: "objectPattern",
|
|
73
|
-
properties,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
// Default to identifier pattern (should not reach here normally)
|
|
77
|
-
return {
|
|
78
|
-
kind: "identifierPattern",
|
|
79
|
-
name: "_unknown",
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=patterns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Assembly Type Catalog Loader
|
|
3
|
-
*
|
|
4
|
-
* Loads CLR type metadata from bindings.json and metadata.json files
|
|
5
|
-
* into a queryable catalog structure.
|
|
6
|
-
*
|
|
7
|
-
* INVARIANT INV-CLR: All assembly types loaded here become part of the
|
|
8
|
-
* unified type catalog. No parallel lookup paths allowed.
|
|
9
|
-
*
|
|
10
|
-
* The loader:
|
|
11
|
-
* 1. Scans node_modules/@tsonic/* packages for metadata files
|
|
12
|
-
* 2. Parses metadata.json for type definitions, members, signatures
|
|
13
|
-
* 3. Parses bindings.json for TS ↔ CLR name mappings
|
|
14
|
-
* 4. Converts to NominalEntry structures with proper IrType members
|
|
15
|
-
*/
|
|
16
|
-
import type { AssemblyTypeCatalog, NominalEntry, MemberEntry } from "./types.js";
|
|
17
|
-
/**
|
|
18
|
-
* Load all assembly types from node_modules/@tsonic packages.
|
|
19
|
-
*
|
|
20
|
-
* @param nodeModulesPath - Path to node_modules directory
|
|
21
|
-
* @returns AssemblyTypeCatalog with all loaded types
|
|
22
|
-
*/
|
|
23
|
-
export declare const loadAssemblyTypeCatalog: (nodeModulesPath: string) => AssemblyTypeCatalog;
|
|
24
|
-
/**
|
|
25
|
-
* Load assembly catalog from a specific package (for testing).
|
|
26
|
-
*/
|
|
27
|
-
export declare const loadSinglePackageMetadata: (metadataPath: string) => AssemblyTypeCatalog;
|
|
28
|
-
/**
|
|
29
|
-
* Get a type entry by stableId.
|
|
30
|
-
*/
|
|
31
|
-
export declare const getTypeByStableId: (catalog: AssemblyTypeCatalog, stableId: string) => NominalEntry | undefined;
|
|
32
|
-
/**
|
|
33
|
-
* Get a type entry by TS name.
|
|
34
|
-
*/
|
|
35
|
-
export declare const getTypeByTsName: (catalog: AssemblyTypeCatalog, tsName: string) => NominalEntry | undefined;
|
|
36
|
-
/**
|
|
37
|
-
* Get a type entry by CLR name.
|
|
38
|
-
*/
|
|
39
|
-
export declare const getTypeByClrName: (catalog: AssemblyTypeCatalog, clrName: string) => NominalEntry | undefined;
|
|
40
|
-
/**
|
|
41
|
-
* Get a member from a type by TS name.
|
|
42
|
-
*/
|
|
43
|
-
export declare const getMemberByTsName: (catalog: AssemblyTypeCatalog, typeStableId: string, memberTsName: string) => MemberEntry | undefined;
|
|
44
|
-
//# sourceMappingURL=assembly-catalog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assembly-catalog.d.ts","sourceRoot":"","sources":["../../../src/ir/type-universe/assembly-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EAEZ,WAAW,EAUZ,MAAM,YAAY,CAAC;AAudpB;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAClC,iBAAiB,MAAM,KACtB,mBA8CF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,MAAM,KACnB,mBA2BF,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,mBAAmB,EAC5B,UAAU,MAAM,KACf,YAAY,GAAG,SAEjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,mBAAmB,EAC5B,QAAQ,MAAM,KACb,YAAY,GAAG,SAGjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,mBAAmB,EAC5B,SAAS,MAAM,KACd,YAAY,GAAG,SAGjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,mBAAmB,EAC5B,cAAc,MAAM,EACpB,cAAc,MAAM,KACnB,WAAW,GAAG,SAGhB,CAAC"}
|