@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,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type Universe Type Definitions
|
|
3
|
-
*
|
|
4
|
-
* This module defines the types for the unified type catalog that merges
|
|
5
|
-
* source-authored types (from TS AST) and assembly-authored types (from
|
|
6
|
-
* CLR metadata in bindings.json/metadata.json).
|
|
7
|
-
*
|
|
8
|
-
* INVARIANT INV-CLR: All nominal type identities come from ONE unified catalog.
|
|
9
|
-
* No type query is allowed to "fall back" to parallel logic or parallel stores.
|
|
10
|
-
*
|
|
11
|
-
* Key Types:
|
|
12
|
-
* - TypeId: Canonical identity for any nominal type
|
|
13
|
-
* - NominalEntry: Complete type information from either source or assembly
|
|
14
|
-
* - MemberEntry: Property/method/field information
|
|
15
|
-
* - MethodSignatureEntry: Full method signature with parameters
|
|
16
|
-
*/
|
|
17
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
18
|
-
// FACTORY FUNCTIONS
|
|
19
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
20
|
-
/**
|
|
21
|
-
* Create a TypeId from components.
|
|
22
|
-
*/
|
|
23
|
-
export const makeTypeId = (stableId, clrName, assemblyName, tsName) => ({
|
|
24
|
-
stableId,
|
|
25
|
-
clrName,
|
|
26
|
-
assemblyName,
|
|
27
|
-
tsName,
|
|
28
|
-
});
|
|
29
|
-
/**
|
|
30
|
-
* Parse a stableId into assemblyName and clrName.
|
|
31
|
-
*/
|
|
32
|
-
export const parseStableId = (stableId) => {
|
|
33
|
-
const colonIndex = stableId.indexOf(":");
|
|
34
|
-
if (colonIndex === -1)
|
|
35
|
-
return undefined;
|
|
36
|
-
return {
|
|
37
|
-
assemblyName: stableId.slice(0, colonIndex),
|
|
38
|
-
clrName: stableId.slice(colonIndex + 1),
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
42
|
-
// PRIMITIVE ↔ NOMINAL MAPPINGS
|
|
43
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
44
|
-
/**
|
|
45
|
-
* Mapping from TS primitive type names to their CLR stableIds.
|
|
46
|
-
*
|
|
47
|
-
* This enables normalizing `primitiveType("string")` to the canonical
|
|
48
|
-
* `System.String` nominal type for member lookups.
|
|
49
|
-
*/
|
|
50
|
-
export const PRIMITIVE_TO_STABLE_ID = new Map([
|
|
51
|
-
["string", "System.Private.CoreLib:System.String"],
|
|
52
|
-
["number", "System.Private.CoreLib:System.Double"],
|
|
53
|
-
["int", "System.Private.CoreLib:System.Int32"],
|
|
54
|
-
["boolean", "System.Private.CoreLib:System.Boolean"],
|
|
55
|
-
["char", "System.Private.CoreLib:System.Char"],
|
|
56
|
-
]);
|
|
57
|
-
/**
|
|
58
|
-
* Mapping from CLR stableIds back to TS primitive type names.
|
|
59
|
-
*
|
|
60
|
-
* This enables the emitter to use primitive syntax when appropriate.
|
|
61
|
-
*/
|
|
62
|
-
export const STABLE_ID_TO_PRIMITIVE = new Map([
|
|
63
|
-
["System.Private.CoreLib:System.String", "string"],
|
|
64
|
-
["System.Private.CoreLib:System.Double", "number"],
|
|
65
|
-
["System.Private.CoreLib:System.Int32", "int"],
|
|
66
|
-
["System.Private.CoreLib:System.Boolean", "boolean"],
|
|
67
|
-
["System.Private.CoreLib:System.Char", "char"],
|
|
68
|
-
]);
|
|
69
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ir/type-universe/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwdH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAAgB,EAChB,OAAe,EACf,YAAoB,EACpB,MAAc,EACN,EAAE,CAAC,CAAC;IACZ,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,MAAM;CACP,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgB,EACuC,EAAE;IACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QAC3C,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;KACxC,CAAC;AACJ,CAAC,CAAC;AAEF,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAgC,IAAI,GAAG,CAAC;IACzE,CAAC,QAAQ,EAAE,sCAAsC,CAAC;IAClD,CAAC,QAAQ,EAAE,sCAAsC,CAAC;IAClD,CAAC,KAAK,EAAE,qCAAqC,CAAC;IAC9C,CAAC,SAAS,EAAE,uCAAuC,CAAC;IACpD,CAAC,MAAM,EAAE,oCAAoC,CAAC;CAC/C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAgC,IAAI,GAAG,CAAC;IACzE,CAAC,sCAAsC,EAAE,QAAQ,CAAC;IAClD,CAAC,sCAAsC,EAAE,QAAQ,CAAC;IAClD,CAAC,qCAAqC,EAAE,KAAK,CAAC;IAC9C,CAAC,uCAAuC,EAAE,SAAS,CAAC;IACpD,CAAC,oCAAoC,EAAE,MAAM,CAAC;CAC/C,CAAC,CAAC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified Type Catalog
|
|
3
|
-
*
|
|
4
|
-
* Merges source-authored types (from TypeRegistry) and assembly-authored
|
|
5
|
-
* types (from AssemblyTypeCatalog) into a single unified lookup table.
|
|
6
|
-
*
|
|
7
|
-
* INVARIANT INV-CLR: This is THE source of truth for all type queries.
|
|
8
|
-
* No fallback paths allowed. If a type isn't in this catalog, it doesn't exist.
|
|
9
|
-
*
|
|
10
|
-
* Design:
|
|
11
|
-
* - Source types get stableIds generated as "{projectName}:{fullyQualifiedName}"
|
|
12
|
-
* - Assembly types keep their original stableIds from metadata.json
|
|
13
|
-
* - Lookups by tsName, clrName, or stableId all work uniformly
|
|
14
|
-
*/
|
|
15
|
-
import type { IrType } from "../types/index.js";
|
|
16
|
-
import type { TypeId, MemberEntry, AssemblyTypeCatalog, UnifiedTypeCatalog } from "./types.js";
|
|
17
|
-
import type { TypeRegistry } from "../type-system/internal/type-registry.js";
|
|
18
|
-
/**
|
|
19
|
-
* Build a unified type catalog from source and assembly catalogs.
|
|
20
|
-
*
|
|
21
|
-
* @param sourceRegistry - TypeRegistry containing source-authored types
|
|
22
|
-
* @param assemblyCatalog - AssemblyTypeCatalog containing CLR metadata types
|
|
23
|
-
* @param projectName - Project name for generating source type stableIds
|
|
24
|
-
* @returns UnifiedTypeCatalog with merged type information
|
|
25
|
-
*/
|
|
26
|
-
export declare const buildUnifiedTypeCatalog: (sourceRegistry: TypeRegistry | undefined, assemblyCatalog: AssemblyTypeCatalog, projectName?: string) => UnifiedTypeCatalog;
|
|
27
|
-
/**
|
|
28
|
-
* Normalize a primitive IrType to its canonical nominal TypeId.
|
|
29
|
-
*
|
|
30
|
-
* This is the key function for unifying primitive types with their CLR counterparts:
|
|
31
|
-
* - primitiveType("string") → TypeId for System.String
|
|
32
|
-
* - primitiveType("int") → TypeId for System.Int32
|
|
33
|
-
* - primitiveType("number") → TypeId for System.Double
|
|
34
|
-
* - primitiveType("boolean") → TypeId for System.Boolean
|
|
35
|
-
*
|
|
36
|
-
* @param type - The IrType to normalize
|
|
37
|
-
* @param catalog - The unified catalog to look up TypeIds
|
|
38
|
-
* @returns The TypeId if this is a primitive that maps to a nominal, undefined otherwise
|
|
39
|
-
*/
|
|
40
|
-
export declare const normalizePrimitiveToTypeId: (type: IrType, catalog: UnifiedTypeCatalog) => TypeId | undefined;
|
|
41
|
-
/**
|
|
42
|
-
* Get the TypeId for an IrType, normalizing primitives as needed.
|
|
43
|
-
*
|
|
44
|
-
* @param type - The IrType to get a TypeId for
|
|
45
|
-
* @param catalog - The unified catalog
|
|
46
|
-
* @returns The TypeId if this type has one, undefined for structural types
|
|
47
|
-
*/
|
|
48
|
-
export declare const getTypeId: (type: IrType, catalog: UnifiedTypeCatalog) => TypeId | undefined;
|
|
49
|
-
/**
|
|
50
|
-
* Look up a member on a type, walking the inheritance chain if necessary.
|
|
51
|
-
*
|
|
52
|
-
* @param typeId - The type to start from
|
|
53
|
-
* @param memberName - The member name (TS name)
|
|
54
|
-
* @param catalog - The unified catalog
|
|
55
|
-
* @returns The member entry if found, undefined otherwise
|
|
56
|
-
*/
|
|
57
|
-
export declare const lookupMemberWithInheritance: (typeId: TypeId, memberName: string, catalog: UnifiedTypeCatalog) => MemberEntry | undefined;
|
|
58
|
-
/**
|
|
59
|
-
* Get the declared type of a member, normalizing primitives.
|
|
60
|
-
*
|
|
61
|
-
* This is the primary entry point for type queries about members.
|
|
62
|
-
* Returns the IrType of the member, with primitives normalized.
|
|
63
|
-
*
|
|
64
|
-
* @param receiverType - The type of the receiver (object being accessed)
|
|
65
|
-
* @param memberName - The member name (TS name)
|
|
66
|
-
* @param catalog - The unified catalog
|
|
67
|
-
* @returns The member's IrType if found, undefined otherwise
|
|
68
|
-
*/
|
|
69
|
-
export declare const getMemberDeclaredType: (receiverType: IrType, memberName: string, catalog: UnifiedTypeCatalog) => IrType | undefined;
|
|
70
|
-
//# sourceMappingURL=unified-catalog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unified-catalog.d.ts","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EACV,MAAM,EAGN,WAAW,EAIX,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,0CAA0C,CAAC;AA8LlD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,gBAAgB,YAAY,GAAG,SAAS,EACxC,iBAAiB,mBAAmB,EACpC,cAAa,MAAkB,KAC9B,kBAmEF,CAAC;AAMF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,GACrC,MAAM,MAAM,EACZ,SAAS,kBAAkB,KAC1B,MAAM,GAAG,SAQX,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GACpB,MAAM,MAAM,EACZ,SAAS,kBAAkB,KAC1B,MAAM,GAAG,SAwBX,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,SAAS,kBAAkB,KAC1B,WAAW,GAAG,SAoBhB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,EACpB,YAAY,MAAM,EAClB,SAAS,kBAAkB,KAC1B,MAAM,GAAG,SAUX,CAAC"}
|
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified Type Catalog
|
|
3
|
-
*
|
|
4
|
-
* Merges source-authored types (from TypeRegistry) and assembly-authored
|
|
5
|
-
* types (from AssemblyTypeCatalog) into a single unified lookup table.
|
|
6
|
-
*
|
|
7
|
-
* INVARIANT INV-CLR: This is THE source of truth for all type queries.
|
|
8
|
-
* No fallback paths allowed. If a type isn't in this catalog, it doesn't exist.
|
|
9
|
-
*
|
|
10
|
-
* Design:
|
|
11
|
-
* - Source types get stableIds generated as "{projectName}:{fullyQualifiedName}"
|
|
12
|
-
* - Assembly types keep their original stableIds from metadata.json
|
|
13
|
-
* - Lookups by tsName, clrName, or stableId all work uniformly
|
|
14
|
-
*/
|
|
15
|
-
import { makeTypeId, PRIMITIVE_TO_STABLE_ID } from "./types.js";
|
|
16
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
17
|
-
// SOURCE TYPE → NOMINAL ENTRY CONVERSION
|
|
18
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
19
|
-
/**
|
|
20
|
-
* Generate stableId for a source type.
|
|
21
|
-
*/
|
|
22
|
-
const makeSourceStableId = (projectName, fullyQualifiedName) => {
|
|
23
|
-
return `${projectName}:${fullyQualifiedName}`;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Extract name from IrParameter pattern.
|
|
27
|
-
*/
|
|
28
|
-
const getParameterName = (param, index) => {
|
|
29
|
-
if (param.pattern.kind === "identifierPattern" && param.pattern.name) {
|
|
30
|
-
return param.pattern.name;
|
|
31
|
-
}
|
|
32
|
-
return `p${index}`;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Convert MemberInfo from TypeRegistry to MemberEntry for unified catalog.
|
|
36
|
-
*/
|
|
37
|
-
const convertMemberInfo = (memberInfo, parentFQName) => {
|
|
38
|
-
// Determine member kind
|
|
39
|
-
const memberKind = memberInfo.kind === "method"
|
|
40
|
-
? "method"
|
|
41
|
-
: memberInfo.kind === "indexSignature"
|
|
42
|
-
? "property" // Treat index signatures as properties
|
|
43
|
-
: "property";
|
|
44
|
-
return {
|
|
45
|
-
tsName: memberInfo.name,
|
|
46
|
-
clrName: toPascalCase(memberInfo.name), // Convert to C# naming convention
|
|
47
|
-
memberKind,
|
|
48
|
-
type: memberInfo.type,
|
|
49
|
-
signatures: memberInfo.methodSignatures?.map((sig) => ({
|
|
50
|
-
stableId: `${parentFQName}::${memberInfo.name}`,
|
|
51
|
-
parameters: sig.parameters.map((p, i) => ({
|
|
52
|
-
name: getParameterName(p, i),
|
|
53
|
-
type: p.type ?? { kind: "unknownType" }, // Default to unknown if no type
|
|
54
|
-
mode: "value",
|
|
55
|
-
isOptional: p.isOptional ?? false,
|
|
56
|
-
isRest: p.isRest ?? false,
|
|
57
|
-
})),
|
|
58
|
-
returnType: sig.returnType ?? { kind: "voidType" },
|
|
59
|
-
typeParameters: sig.typeParameters?.map((tp) => ({
|
|
60
|
-
name: tp.name,
|
|
61
|
-
constraint: tp.constraint,
|
|
62
|
-
defaultType: tp.default,
|
|
63
|
-
})) ?? [],
|
|
64
|
-
parameterCount: sig.parameters.length,
|
|
65
|
-
isStatic: false, // Source methods are instance by default unless marked
|
|
66
|
-
isExtensionMethod: false,
|
|
67
|
-
normalizedSignature: `${memberInfo.name}|${sig.parameters.map((p) => p.type?.kind ?? "unknown").join(",")}`,
|
|
68
|
-
})),
|
|
69
|
-
isStatic: false, // Would need to check actual declaration
|
|
70
|
-
isReadonly: memberInfo.isReadonly,
|
|
71
|
-
isAbstract: false,
|
|
72
|
-
isVirtual: false,
|
|
73
|
-
isOverride: false,
|
|
74
|
-
isIndexer: memberInfo.kind === "indexSignature",
|
|
75
|
-
hasGetter: true,
|
|
76
|
-
hasSetter: !memberInfo.isReadonly,
|
|
77
|
-
stableId: `${parentFQName}::${memberInfo.name}`,
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Convert HeritageInfo from TypeRegistry to HeritageEdge for unified catalog.
|
|
82
|
-
*/
|
|
83
|
-
const convertHeritageInfo = (heritageInfo, projectName) => {
|
|
84
|
-
// Determine the target type's stableId
|
|
85
|
-
// This is tricky - we need to figure out if it's a source type or assembly type
|
|
86
|
-
const targetName = heritageInfo.typeName;
|
|
87
|
-
// Check if it's a primitive that maps to a CLR type
|
|
88
|
-
const primitiveStableId = PRIMITIVE_TO_STABLE_ID.get(targetName.toLowerCase());
|
|
89
|
-
// For now, assume source types for unresolved names
|
|
90
|
-
const targetStableId = primitiveStableId
|
|
91
|
-
? primitiveStableId
|
|
92
|
-
: makeSourceStableId(projectName, targetName);
|
|
93
|
-
// Extract type arguments from the baseType if it's a reference type
|
|
94
|
-
const typeArguments = [];
|
|
95
|
-
if (heritageInfo.baseType.kind === "referenceType" &&
|
|
96
|
-
heritageInfo.baseType.typeArguments) {
|
|
97
|
-
typeArguments.push(...heritageInfo.baseType.typeArguments);
|
|
98
|
-
}
|
|
99
|
-
return {
|
|
100
|
-
kind: heritageInfo.kind,
|
|
101
|
-
targetStableId,
|
|
102
|
-
typeArguments,
|
|
103
|
-
};
|
|
104
|
-
};
|
|
105
|
-
/**
|
|
106
|
-
* Convert TypeRegistryEntry to NominalEntry for unified catalog.
|
|
107
|
-
*/
|
|
108
|
-
const convertRegistryEntry = (entry, projectName) => {
|
|
109
|
-
const stableId = makeSourceStableId(projectName, entry.fullyQualifiedName);
|
|
110
|
-
const typeId = makeTypeId(stableId, entry.fullyQualifiedName, // CLR name = FQ name for source types
|
|
111
|
-
projectName, entry.name // TS name = simple name
|
|
112
|
-
);
|
|
113
|
-
// Convert kind
|
|
114
|
-
const kindMap = {
|
|
115
|
-
class: "class",
|
|
116
|
-
interface: "interface",
|
|
117
|
-
typeAlias: "interface", // Type aliases treated as interfaces
|
|
118
|
-
};
|
|
119
|
-
const kind = kindMap[entry.kind] ?? "class";
|
|
120
|
-
// Convert members
|
|
121
|
-
const members = new Map();
|
|
122
|
-
for (const [name, memberInfo] of entry.members) {
|
|
123
|
-
members.set(name, convertMemberInfo(memberInfo, entry.fullyQualifiedName));
|
|
124
|
-
}
|
|
125
|
-
// Convert heritage
|
|
126
|
-
const heritage = entry.heritage.map((h) => convertHeritageInfo(h, projectName));
|
|
127
|
-
// Convert type parameters
|
|
128
|
-
const typeParameters = entry.typeParameters.map((tp) => ({
|
|
129
|
-
name: tp.name,
|
|
130
|
-
constraint: tp.constraint,
|
|
131
|
-
defaultType: tp.defaultType,
|
|
132
|
-
}));
|
|
133
|
-
return {
|
|
134
|
-
typeId,
|
|
135
|
-
kind,
|
|
136
|
-
typeParameters,
|
|
137
|
-
heritage,
|
|
138
|
-
members,
|
|
139
|
-
origin: "source",
|
|
140
|
-
accessibility: "public", // Source types are public by default
|
|
141
|
-
isAbstract: false, // Would need AST info
|
|
142
|
-
isSealed: false,
|
|
143
|
-
isStatic: false,
|
|
144
|
-
};
|
|
145
|
-
};
|
|
146
|
-
/**
|
|
147
|
-
* Convert camelCase to PascalCase for C# naming.
|
|
148
|
-
*/
|
|
149
|
-
const toPascalCase = (name) => {
|
|
150
|
-
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
151
|
-
};
|
|
152
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
153
|
-
// UNIFIED CATALOG BUILDER
|
|
154
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
155
|
-
/**
|
|
156
|
-
* Build a unified type catalog from source and assembly catalogs.
|
|
157
|
-
*
|
|
158
|
-
* @param sourceRegistry - TypeRegistry containing source-authored types
|
|
159
|
-
* @param assemblyCatalog - AssemblyTypeCatalog containing CLR metadata types
|
|
160
|
-
* @param projectName - Project name for generating source type stableIds
|
|
161
|
-
* @returns UnifiedTypeCatalog with merged type information
|
|
162
|
-
*/
|
|
163
|
-
export const buildUnifiedTypeCatalog = (sourceRegistry, assemblyCatalog, projectName = "project") => {
|
|
164
|
-
// Start with assembly entries (these are the "ground truth" for CLR types)
|
|
165
|
-
const entries = new Map(assemblyCatalog.entries);
|
|
166
|
-
const tsNameToTypeId = new Map(assemblyCatalog.tsNameToTypeId);
|
|
167
|
-
const clrNameToTypeId = new Map(assemblyCatalog.clrNameToTypeId);
|
|
168
|
-
// Add source types if registry is provided
|
|
169
|
-
if (sourceRegistry) {
|
|
170
|
-
for (const fqName of sourceRegistry.getAllTypeNames()) {
|
|
171
|
-
const entry = sourceRegistry.resolveNominal(fqName);
|
|
172
|
-
if (!entry)
|
|
173
|
-
continue;
|
|
174
|
-
const nominalEntry = convertRegistryEntry(entry, projectName);
|
|
175
|
-
// Add to maps (source types won't collide with assembly types by stableId)
|
|
176
|
-
entries.set(nominalEntry.typeId.stableId, nominalEntry);
|
|
177
|
-
tsNameToTypeId.set(nominalEntry.typeId.tsName, nominalEntry.typeId);
|
|
178
|
-
clrNameToTypeId.set(nominalEntry.typeId.clrName, nominalEntry.typeId);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// Build the catalog interface
|
|
182
|
-
const catalog = {
|
|
183
|
-
getByTypeId: (typeId) => entries.get(typeId.stableId),
|
|
184
|
-
getByStableId: (stableId) => entries.get(stableId),
|
|
185
|
-
resolveTsName: (tsName) => tsNameToTypeId.get(tsName),
|
|
186
|
-
resolveClrName: (clrName) => clrNameToTypeId.get(clrName),
|
|
187
|
-
getMembers: (typeId) => {
|
|
188
|
-
const entry = entries.get(typeId.stableId);
|
|
189
|
-
return entry?.members ?? new Map();
|
|
190
|
-
},
|
|
191
|
-
getMember: (typeId, memberName) => {
|
|
192
|
-
const entry = entries.get(typeId.stableId);
|
|
193
|
-
return entry?.members.get(memberName);
|
|
194
|
-
},
|
|
195
|
-
getHeritage: (typeId) => {
|
|
196
|
-
const entry = entries.get(typeId.stableId);
|
|
197
|
-
return entry?.heritage ?? [];
|
|
198
|
-
},
|
|
199
|
-
getTypeParameters: (typeId) => {
|
|
200
|
-
const entry = entries.get(typeId.stableId);
|
|
201
|
-
return entry?.typeParameters ?? [];
|
|
202
|
-
},
|
|
203
|
-
hasType: (stableId) => entries.has(stableId),
|
|
204
|
-
getAllTypeIds: () => {
|
|
205
|
-
const typeIds = [];
|
|
206
|
-
for (const entry of entries.values()) {
|
|
207
|
-
typeIds.push(entry.typeId);
|
|
208
|
-
}
|
|
209
|
-
return typeIds;
|
|
210
|
-
},
|
|
211
|
-
};
|
|
212
|
-
return catalog;
|
|
213
|
-
};
|
|
214
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
215
|
-
// PRIMITIVE TYPE NORMALIZATION
|
|
216
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
217
|
-
/**
|
|
218
|
-
* Normalize a primitive IrType to its canonical nominal TypeId.
|
|
219
|
-
*
|
|
220
|
-
* This is the key function for unifying primitive types with their CLR counterparts:
|
|
221
|
-
* - primitiveType("string") → TypeId for System.String
|
|
222
|
-
* - primitiveType("int") → TypeId for System.Int32
|
|
223
|
-
* - primitiveType("number") → TypeId for System.Double
|
|
224
|
-
* - primitiveType("boolean") → TypeId for System.Boolean
|
|
225
|
-
*
|
|
226
|
-
* @param type - The IrType to normalize
|
|
227
|
-
* @param catalog - The unified catalog to look up TypeIds
|
|
228
|
-
* @returns The TypeId if this is a primitive that maps to a nominal, undefined otherwise
|
|
229
|
-
*/
|
|
230
|
-
export const normalizePrimitiveToTypeId = (type, catalog) => {
|
|
231
|
-
if (type.kind !== "primitiveType")
|
|
232
|
-
return undefined;
|
|
233
|
-
const stableId = PRIMITIVE_TO_STABLE_ID.get(type.name);
|
|
234
|
-
if (!stableId)
|
|
235
|
-
return undefined;
|
|
236
|
-
const entry = catalog.getByStableId(stableId);
|
|
237
|
-
return entry?.typeId;
|
|
238
|
-
};
|
|
239
|
-
/**
|
|
240
|
-
* Get the TypeId for an IrType, normalizing primitives as needed.
|
|
241
|
-
*
|
|
242
|
-
* @param type - The IrType to get a TypeId for
|
|
243
|
-
* @param catalog - The unified catalog
|
|
244
|
-
* @returns The TypeId if this type has one, undefined for structural types
|
|
245
|
-
*/
|
|
246
|
-
export const getTypeId = (type, catalog) => {
|
|
247
|
-
// Handle primitives by normalizing to nominal
|
|
248
|
-
if (type.kind === "primitiveType") {
|
|
249
|
-
return normalizePrimitiveToTypeId(type, catalog);
|
|
250
|
-
}
|
|
251
|
-
// Handle reference types - look up by name
|
|
252
|
-
if (type.kind === "referenceType") {
|
|
253
|
-
// Try clrName first (most specific)
|
|
254
|
-
if (type.resolvedClrType) {
|
|
255
|
-
const typeId = catalog.resolveClrName(type.resolvedClrType);
|
|
256
|
-
if (typeId)
|
|
257
|
-
return typeId;
|
|
258
|
-
}
|
|
259
|
-
// Try tsName
|
|
260
|
-
const typeId = catalog.resolveTsName(type.name);
|
|
261
|
-
if (typeId)
|
|
262
|
-
return typeId;
|
|
263
|
-
// Try as clrName
|
|
264
|
-
return catalog.resolveClrName(type.name);
|
|
265
|
-
}
|
|
266
|
-
// Arrays, tuples, functions, unions, intersections, etc. don't have TypeIds
|
|
267
|
-
return undefined;
|
|
268
|
-
};
|
|
269
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
270
|
-
// MEMBER LOOKUP WITH INHERITANCE
|
|
271
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
272
|
-
/**
|
|
273
|
-
* Look up a member on a type, walking the inheritance chain if necessary.
|
|
274
|
-
*
|
|
275
|
-
* @param typeId - The type to start from
|
|
276
|
-
* @param memberName - The member name (TS name)
|
|
277
|
-
* @param catalog - The unified catalog
|
|
278
|
-
* @returns The member entry if found, undefined otherwise
|
|
279
|
-
*/
|
|
280
|
-
export const lookupMemberWithInheritance = (typeId, memberName, catalog) => {
|
|
281
|
-
// Check this type first
|
|
282
|
-
const member = catalog.getMember(typeId, memberName);
|
|
283
|
-
if (member)
|
|
284
|
-
return member;
|
|
285
|
-
// Walk inheritance chain
|
|
286
|
-
const heritage = catalog.getHeritage(typeId);
|
|
287
|
-
for (const edge of heritage) {
|
|
288
|
-
const parentEntry = catalog.getByStableId(edge.targetStableId);
|
|
289
|
-
if (!parentEntry)
|
|
290
|
-
continue;
|
|
291
|
-
const result = lookupMemberWithInheritance(parentEntry.typeId, memberName, catalog);
|
|
292
|
-
if (result)
|
|
293
|
-
return result;
|
|
294
|
-
}
|
|
295
|
-
return undefined;
|
|
296
|
-
};
|
|
297
|
-
/**
|
|
298
|
-
* Get the declared type of a member, normalizing primitives.
|
|
299
|
-
*
|
|
300
|
-
* This is the primary entry point for type queries about members.
|
|
301
|
-
* Returns the IrType of the member, with primitives normalized.
|
|
302
|
-
*
|
|
303
|
-
* @param receiverType - The type of the receiver (object being accessed)
|
|
304
|
-
* @param memberName - The member name (TS name)
|
|
305
|
-
* @param catalog - The unified catalog
|
|
306
|
-
* @returns The member's IrType if found, undefined otherwise
|
|
307
|
-
*/
|
|
308
|
-
export const getMemberDeclaredType = (receiverType, memberName, catalog) => {
|
|
309
|
-
// Get TypeId for the receiver (normalizing primitives)
|
|
310
|
-
const typeId = getTypeId(receiverType, catalog);
|
|
311
|
-
if (!typeId)
|
|
312
|
-
return undefined;
|
|
313
|
-
// Look up member with inheritance
|
|
314
|
-
const member = lookupMemberWithInheritance(typeId, memberName, catalog);
|
|
315
|
-
if (!member)
|
|
316
|
-
return undefined;
|
|
317
|
-
return member.type;
|
|
318
|
-
};
|
|
319
|
-
//# sourceMappingURL=unified-catalog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unified-catalog.js","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unified-catalog.test.d.ts","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified Type Catalog Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests for the unified type catalog that merges source and assembly types.
|
|
5
|
-
*/
|
|
6
|
-
import { expect } from "chai";
|
|
7
|
-
import * as path from "path";
|
|
8
|
-
import { loadSinglePackageMetadata } from "./assembly-catalog.js";
|
|
9
|
-
import { buildUnifiedTypeCatalog, normalizePrimitiveToTypeId, getTypeId, getMemberDeclaredType, } from "./unified-catalog.js";
|
|
10
|
-
import { PRIMITIVE_TO_STABLE_ID } from "./types.js";
|
|
11
|
-
describe("UnifiedTypeCatalog", () => {
|
|
12
|
-
// Path to System metadata
|
|
13
|
-
const systemMetadataPath = path.resolve(process.cwd(), "../..", "node_modules/@tsonic/dotnet/System/internal/metadata.json");
|
|
14
|
-
describe("buildUnifiedTypeCatalog", () => {
|
|
15
|
-
it("should build catalog from assembly metadata", () => {
|
|
16
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
17
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
18
|
-
// Check that we can look up System.String
|
|
19
|
-
const stringTypeId = catalog.resolveTsName("String");
|
|
20
|
-
expect(stringTypeId).to.not.be.undefined;
|
|
21
|
-
expect(stringTypeId?.clrName).to.equal("System.String");
|
|
22
|
-
});
|
|
23
|
-
it("should provide member lookup for assembly types", () => {
|
|
24
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
25
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
26
|
-
const stringTypeId = catalog.resolveTsName("String");
|
|
27
|
-
expect(stringTypeId).to.not.be.undefined;
|
|
28
|
-
if (stringTypeId) {
|
|
29
|
-
const lengthMember = catalog.getMember(stringTypeId, "length");
|
|
30
|
-
expect(lengthMember).to.not.be.undefined;
|
|
31
|
-
expect(lengthMember?.tsName).to.equal("length");
|
|
32
|
-
expect(lengthMember?.type).to.deep.equal({
|
|
33
|
-
kind: "primitiveType",
|
|
34
|
-
name: "int",
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
describe("normalizePrimitiveToTypeId", () => {
|
|
40
|
-
it("should normalize string primitive to System.String TypeId", () => {
|
|
41
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
42
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
43
|
-
const stringType = { kind: "primitiveType", name: "string" };
|
|
44
|
-
const typeId = normalizePrimitiveToTypeId(stringType, catalog);
|
|
45
|
-
expect(typeId).to.not.be.undefined;
|
|
46
|
-
expect(typeId?.stableId).to.equal("System.Private.CoreLib:System.String");
|
|
47
|
-
expect(typeId?.clrName).to.equal("System.String");
|
|
48
|
-
});
|
|
49
|
-
it("should normalize int primitive to System.Int32 TypeId", () => {
|
|
50
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
51
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
52
|
-
const intType = { kind: "primitiveType", name: "int" };
|
|
53
|
-
const typeId = normalizePrimitiveToTypeId(intType, catalog);
|
|
54
|
-
expect(typeId).to.not.be.undefined;
|
|
55
|
-
expect(typeId?.stableId).to.equal("System.Private.CoreLib:System.Int32");
|
|
56
|
-
});
|
|
57
|
-
it("should return undefined for non-primitive types", () => {
|
|
58
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
59
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
60
|
-
const refType = { kind: "referenceType", name: "SomeClass" };
|
|
61
|
-
const typeId = normalizePrimitiveToTypeId(refType, catalog);
|
|
62
|
-
expect(typeId).to.be.undefined;
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe("getTypeId", () => {
|
|
66
|
-
it("should get TypeId for primitive types via normalization", () => {
|
|
67
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
68
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
69
|
-
const stringType = { kind: "primitiveType", name: "string" };
|
|
70
|
-
const typeId = getTypeId(stringType, catalog);
|
|
71
|
-
expect(typeId).to.not.be.undefined;
|
|
72
|
-
expect(typeId?.clrName).to.equal("System.String");
|
|
73
|
-
});
|
|
74
|
-
it("should get TypeId for reference types by name", () => {
|
|
75
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
76
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
77
|
-
// Console is a type in System namespace
|
|
78
|
-
const consoleType = { kind: "referenceType", name: "Console" };
|
|
79
|
-
const typeId = getTypeId(consoleType, catalog);
|
|
80
|
-
expect(typeId).to.not.be.undefined;
|
|
81
|
-
expect(typeId?.clrName).to.equal("System.Console");
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
describe("getMemberDeclaredType", () => {
|
|
85
|
-
it("should get member type for string.length", () => {
|
|
86
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
87
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
88
|
-
const stringType = { kind: "primitiveType", name: "string" };
|
|
89
|
-
const memberType = getMemberDeclaredType(stringType, "length", catalog);
|
|
90
|
-
expect(memberType).to.not.be.undefined;
|
|
91
|
-
expect(memberType).to.deep.equal({
|
|
92
|
-
kind: "primitiveType",
|
|
93
|
-
name: "int",
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
it("should get member type for string.chars (indexer)", () => {
|
|
97
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
98
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
99
|
-
const stringType = { kind: "primitiveType", name: "string" };
|
|
100
|
-
const memberType = getMemberDeclaredType(stringType, "chars", catalog);
|
|
101
|
-
expect(memberType).to.not.be.undefined;
|
|
102
|
-
expect(memberType).to.deep.equal({
|
|
103
|
-
kind: "primitiveType",
|
|
104
|
-
name: "char",
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
it("should return undefined for non-existent members", () => {
|
|
108
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
109
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
110
|
-
const stringType = { kind: "primitiveType", name: "string" };
|
|
111
|
-
const memberType = getMemberDeclaredType(stringType, "nonExistentMember", catalog);
|
|
112
|
-
expect(memberType).to.be.undefined;
|
|
113
|
-
});
|
|
114
|
-
it("should return undefined for types not in catalog", () => {
|
|
115
|
-
const assemblyCatalog = loadSinglePackageMetadata(systemMetadataPath);
|
|
116
|
-
const catalog = buildUnifiedTypeCatalog(undefined, assemblyCatalog, "test");
|
|
117
|
-
const unknownType = {
|
|
118
|
-
kind: "referenceType",
|
|
119
|
-
name: "UnknownType",
|
|
120
|
-
};
|
|
121
|
-
const memberType = getMemberDeclaredType(unknownType, "foo", catalog);
|
|
122
|
-
expect(memberType).to.be.undefined;
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
describe("PRIMITIVE_TO_STABLE_ID mapping", () => {
|
|
126
|
-
it("should have correct mappings for all primitives", () => {
|
|
127
|
-
expect(PRIMITIVE_TO_STABLE_ID.get("string")).to.equal("System.Private.CoreLib:System.String");
|
|
128
|
-
expect(PRIMITIVE_TO_STABLE_ID.get("number")).to.equal("System.Private.CoreLib:System.Double");
|
|
129
|
-
expect(PRIMITIVE_TO_STABLE_ID.get("int")).to.equal("System.Private.CoreLib:System.Int32");
|
|
130
|
-
expect(PRIMITIVE_TO_STABLE_ID.get("boolean")).to.equal("System.Private.CoreLib:System.Boolean");
|
|
131
|
-
expect(PRIMITIVE_TO_STABLE_ID.get("char")).to.equal("System.Private.CoreLib:System.Char");
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
//# sourceMappingURL=unified-catalog.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unified-catalog.test.js","sourceRoot":"","sources":["../../../src/ir/type-universe/unified-catalog.test.ts"],"names":[],"mappings":"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"}
|