@tsonic/emitter 0.0.6 → 0.0.12
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/array.test.js +6 -6
- package/dist/array.test.js.map +1 -1
- package/dist/core/imports.test.js +6 -3
- package/dist/core/imports.test.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/type-compatibility.d.ts +26 -0
- package/dist/core/type-compatibility.d.ts.map +1 -0
- package/dist/core/type-compatibility.js +109 -0
- package/dist/core/type-compatibility.js.map +1 -0
- package/dist/core/type-resolution.d.ts +81 -1
- package/dist/core/type-resolution.d.ts.map +1 -1
- package/dist/core/type-resolution.js +258 -0
- package/dist/core/type-resolution.js.map +1 -1
- package/dist/core/type-resolution.test.js +110 -1
- package/dist/core/type-resolution.test.js.map +1 -1
- package/dist/emitter-types/context.d.ts.map +1 -1
- package/dist/emitter-types/context.js +21 -1
- package/dist/emitter-types/context.js.map +1 -1
- package/dist/emitter-types/core.d.ts +26 -0
- package/dist/emitter-types/core.d.ts.map +1 -1
- package/dist/emitter-types/identifiers.d.ts.map +1 -1
- package/dist/emitter-types/identifiers.js +4 -43
- package/dist/emitter-types/identifiers.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/expression-emitter.d.ts.map +1 -1
- package/dist/expression-emitter.js +48 -0
- package/dist/expression-emitter.js.map +1 -1
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +97 -13
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/calls.d.ts.map +1 -1
- package/dist/expressions/calls.js +5 -1
- package/dist/expressions/calls.js.map +1 -1
- package/dist/expressions/collections.d.ts +3 -2
- package/dist/expressions/collections.d.ts.map +1 -1
- package/dist/expressions/collections.js +214 -24
- package/dist/expressions/collections.js.map +1 -1
- package/dist/expressions/functions.d.ts +2 -2
- package/dist/expressions/functions.d.ts.map +1 -1
- package/dist/expressions/functions.js +81 -38
- package/dist/expressions/functions.js.map +1 -1
- package/dist/expressions/identifiers.d.ts.map +1 -1
- package/dist/expressions/identifiers.js +27 -7
- package/dist/expressions/identifiers.js.map +1 -1
- package/dist/expressions/index.test.js +189 -4
- package/dist/expressions/index.test.js.map +1 -1
- package/dist/expressions/literals.d.ts +4 -6
- package/dist/expressions/literals.d.ts.map +1 -1
- package/dist/expressions/literals.js +41 -17
- package/dist/expressions/literals.js.map +1 -1
- package/dist/expressions/literals.test.js +41 -0
- package/dist/expressions/literals.test.js.map +1 -1
- package/dist/expressions/operators.d.ts +4 -0
- package/dist/expressions/operators.d.ts.map +1 -1
- package/dist/expressions/operators.js +145 -12
- package/dist/expressions/operators.js.map +1 -1
- package/dist/expressions/other.d.ts.map +1 -1
- package/dist/expressions/other.js +9 -2
- package/dist/expressions/other.js.map +1 -1
- package/dist/generator-exchange.d.ts +1 -1
- package/dist/generator-exchange.d.ts.map +1 -1
- package/dist/generator-exchange.js +15 -4
- package/dist/generator-exchange.js.map +1 -1
- package/dist/generator-wrapper.d.ts +84 -0
- package/dist/generator-wrapper.d.ts.map +1 -0
- package/dist/generator-wrapper.js +312 -0
- package/dist/generator-wrapper.js.map +1 -0
- package/dist/generator-wrapper.test.d.ts +12 -0
- package/dist/generator-wrapper.test.d.ts.map +1 -0
- package/dist/generator-wrapper.test.js +179 -0
- package/dist/generator-wrapper.test.js.map +1 -0
- package/dist/generator.test.js +596 -6
- package/dist/generator.test.js.map +1 -1
- package/dist/golden-tests/config-parser.d.ts.map +1 -1
- package/dist/golden-tests/config-parser.js +81 -11
- package/dist/golden-tests/config-parser.js.map +1 -1
- package/dist/golden-tests/discovery.d.ts.map +1 -1
- package/dist/golden-tests/discovery.js +15 -5
- package/dist/golden-tests/discovery.js.map +1 -1
- package/dist/golden-tests/runner.d.ts.map +1 -1
- package/dist/golden-tests/runner.js +62 -7
- package/dist/golden-tests/runner.js.map +1 -1
- package/dist/golden-tests/types.d.ts +11 -1
- package/dist/golden-tests/types.d.ts.map +1 -1
- package/dist/hierarchical-bindings.test.js +2 -2
- package/dist/hierarchical-bindings.test.js.map +1 -1
- package/dist/integration.test.js +49 -2
- package/dist/integration.test.js.map +1 -1
- package/dist/invariants/emitter-globals-subset.test.d.ts +15 -0
- package/dist/invariants/emitter-globals-subset.test.d.ts.map +1 -0
- package/dist/invariants/emitter-globals-subset.test.js +137 -0
- package/dist/invariants/emitter-globals-subset.test.js.map +1 -0
- package/dist/invariants/numeric-proof-contract.test.d.ts +19 -0
- package/dist/invariants/numeric-proof-contract.test.d.ts.map +1 -0
- package/dist/invariants/numeric-proof-contract.test.js +560 -0
- package/dist/invariants/numeric-proof-contract.test.js.map +1 -0
- package/dist/specialization/generic-functions.test.js +10 -0
- package/dist/specialization/generic-functions.test.js.map +1 -1
- package/dist/specialization/substitution.d.ts.map +1 -1
- package/dist/specialization/substitution.js +7 -0
- package/dist/specialization/substitution.js.map +1 -1
- package/dist/statement-emitter.d.ts.map +1 -1
- package/dist/statement-emitter.js +5 -1
- package/dist/statement-emitter.js.map +1 -1
- package/dist/statements/blocks.d.ts +39 -1
- package/dist/statements/blocks.d.ts.map +1 -1
- package/dist/statements/blocks.js +129 -3
- package/dist/statements/blocks.js.map +1 -1
- package/dist/statements/classes/members/methods.d.ts.map +1 -1
- package/dist/statements/classes/members/methods.js +3 -1
- package/dist/statements/classes/members/methods.js.map +1 -1
- package/dist/statements/control/conditionals.d.ts.map +1 -1
- package/dist/statements/control/conditionals.js +215 -1
- package/dist/statements/control/conditionals.js.map +1 -1
- package/dist/statements/control/loops.d.ts +6 -0
- package/dist/statements/control/loops.d.ts.map +1 -1
- package/dist/statements/control/loops.js +9 -2
- 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 +13 -5
- package/dist/statements/declarations/classes.js.map +1 -1
- package/dist/statements/declarations/functions.d.ts.map +1 -1
- package/dist/statements/declarations/functions.js +91 -25
- 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 +11 -1
- package/dist/statements/declarations/interfaces.js.map +1 -1
- package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/statements/declarations/type-aliases.js +11 -1
- package/dist/statements/declarations/type-aliases.js.map +1 -1
- package/dist/statements/index.test.js +165 -3
- package/dist/statements/index.test.js.map +1 -1
- package/dist/types/arrays.d.ts +10 -1
- package/dist/types/arrays.d.ts.map +1 -1
- package/dist/types/arrays.js +16 -1
- package/dist/types/arrays.js.map +1 -1
- package/dist/types/dictionaries.d.ts +3 -2
- package/dist/types/dictionaries.d.ts.map +1 -1
- package/dist/types/dictionaries.js +14 -8
- package/dist/types/dictionaries.js.map +1 -1
- package/dist/types/emitter.d.ts.map +1 -1
- package/dist/types/emitter.js +3 -0
- package/dist/types/emitter.js.map +1 -1
- package/dist/types/index.test.js +5 -2
- package/dist/types/index.test.js.map +1 -1
- package/dist/types/references.d.ts.map +1 -1
- package/dist/types/references.js +128 -29
- package/dist/types/references.js.map +1 -1
- package/dist/types/references.test.d.ts +11 -0
- package/dist/types/references.test.d.ts.map +1 -0
- package/dist/types/references.test.js +384 -0
- package/dist/types/references.test.js.map +1 -0
- package/dist/types/tuples.d.ts +23 -0
- package/dist/types/tuples.d.ts.map +1 -0
- package/dist/types/tuples.js +54 -0
- package/dist/types/tuples.js.map +1 -0
- package/dist/types/unions.test.js +62 -15
- package/dist/types/unions.test.js.map +1 -1
- 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 -2
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type compatibility helpers for integer type emission
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - isAssignable: Check if a source type is assignable to a target type
|
|
6
|
+
* - isIntegerType: Check if a type represents an integer
|
|
7
|
+
*
|
|
8
|
+
* Part of Alice's proposal to eliminate cosmetic casts.
|
|
9
|
+
*/
|
|
10
|
+
import type { IrType } from "@tsonic/frontend";
|
|
11
|
+
/**
|
|
12
|
+
* Check if an IR type represents an integer type
|
|
13
|
+
*/
|
|
14
|
+
export declare const isIntegerType: (type: IrType | undefined) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Check if a source type is assignable to a target type without requiring a cast.
|
|
17
|
+
*
|
|
18
|
+
* This implements Alice's invariant: "No cosmetic casts" - we only emit casts
|
|
19
|
+
* when the types are genuinely incompatible, not when they happen to match.
|
|
20
|
+
*
|
|
21
|
+
* @param fromType - The source type (what we have)
|
|
22
|
+
* @param toType - The target type (what we need)
|
|
23
|
+
* @returns true if fromType can be assigned to toType without a cast
|
|
24
|
+
*/
|
|
25
|
+
export declare const isAssignable: (fromType: IrType | undefined, toType: IrType | undefined) => boolean;
|
|
26
|
+
//# sourceMappingURL=type-compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-compatibility.d.ts","sourceRoot":"","sources":["../../src/core/type-compatibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA8C/C;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,GAAG,SAAS,KAAG,OAiBxD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,GACvB,UAAU,MAAM,GAAG,SAAS,EAC5B,QAAQ,MAAM,GAAG,SAAS,KACzB,OAgCF,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type compatibility helpers for integer type emission
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - isAssignable: Check if a source type is assignable to a target type
|
|
6
|
+
* - isIntegerType: Check if a type represents an integer
|
|
7
|
+
*
|
|
8
|
+
* Part of Alice's proposal to eliminate cosmetic casts.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Integer type names that map to C# integer types
|
|
12
|
+
*/
|
|
13
|
+
const INTEGER_TYPE_NAMES = new Set([
|
|
14
|
+
"int",
|
|
15
|
+
"Int32",
|
|
16
|
+
"System.Int32",
|
|
17
|
+
"long",
|
|
18
|
+
"Int64",
|
|
19
|
+
"System.Int64",
|
|
20
|
+
"short",
|
|
21
|
+
"Int16",
|
|
22
|
+
"System.Int16",
|
|
23
|
+
"byte",
|
|
24
|
+
"Byte",
|
|
25
|
+
"System.Byte",
|
|
26
|
+
"sbyte",
|
|
27
|
+
"SByte",
|
|
28
|
+
"System.SByte",
|
|
29
|
+
"uint",
|
|
30
|
+
"UInt32",
|
|
31
|
+
"System.UInt32",
|
|
32
|
+
"ulong",
|
|
33
|
+
"UInt64",
|
|
34
|
+
"System.UInt64",
|
|
35
|
+
"ushort",
|
|
36
|
+
"UInt16",
|
|
37
|
+
"System.UInt16",
|
|
38
|
+
]);
|
|
39
|
+
/**
|
|
40
|
+
* Integer NumericKinds - these are the NumericKind values that represent integer types
|
|
41
|
+
*/
|
|
42
|
+
const INTEGER_NUMERIC_KINDS = new Set([
|
|
43
|
+
"SByte",
|
|
44
|
+
"Byte",
|
|
45
|
+
"Int16",
|
|
46
|
+
"UInt16",
|
|
47
|
+
"Int32",
|
|
48
|
+
"UInt32",
|
|
49
|
+
"Int64",
|
|
50
|
+
"UInt64",
|
|
51
|
+
]);
|
|
52
|
+
/**
|
|
53
|
+
* Check if an IR type represents an integer type
|
|
54
|
+
*/
|
|
55
|
+
export const isIntegerType = (type) => {
|
|
56
|
+
if (!type)
|
|
57
|
+
return false;
|
|
58
|
+
// Reference type with integer name (e.g., "int" from @tsonic/types)
|
|
59
|
+
if (type.kind === "referenceType") {
|
|
60
|
+
return INTEGER_TYPE_NAMES.has(type.name);
|
|
61
|
+
}
|
|
62
|
+
// Primitive "number" type with integer numericIntent (from numericNarrowing)
|
|
63
|
+
if (type.kind === "primitiveType" && type.name === "number") {
|
|
64
|
+
const intent = type.numericIntent;
|
|
65
|
+
if (intent !== undefined) {
|
|
66
|
+
return INTEGER_NUMERIC_KINDS.has(intent);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Check if a source type is assignable to a target type without requiring a cast.
|
|
73
|
+
*
|
|
74
|
+
* This implements Alice's invariant: "No cosmetic casts" - we only emit casts
|
|
75
|
+
* when the types are genuinely incompatible, not when they happen to match.
|
|
76
|
+
*
|
|
77
|
+
* @param fromType - The source type (what we have)
|
|
78
|
+
* @param toType - The target type (what we need)
|
|
79
|
+
* @returns true if fromType can be assigned to toType without a cast
|
|
80
|
+
*/
|
|
81
|
+
export const isAssignable = (fromType, toType) => {
|
|
82
|
+
if (!fromType || !toType)
|
|
83
|
+
return false;
|
|
84
|
+
// Exact kind and name match
|
|
85
|
+
if (fromType.kind === toType.kind) {
|
|
86
|
+
if (fromType.kind === "primitiveType" && toType.kind === "primitiveType") {
|
|
87
|
+
return fromType.name === toType.name;
|
|
88
|
+
}
|
|
89
|
+
if (fromType.kind === "referenceType" && toType.kind === "referenceType") {
|
|
90
|
+
// Exact name match
|
|
91
|
+
if (fromType.name === toType.name) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
// Check resolved CLR type match
|
|
95
|
+
if (fromType.resolvedClrType &&
|
|
96
|
+
fromType.resolvedClrType === toType.resolvedClrType) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// int → number (widening is allowed)
|
|
102
|
+
if (isIntegerType(fromType) && toType.kind === "primitiveType") {
|
|
103
|
+
if (toType.name === "number") {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=type-compatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-compatibility.js","sourceRoot":"","sources":["../../src/core/type-compatibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,KAAK;IACL,OAAO;IACP,cAAc;IACd,MAAM;IACN,OAAO;IACP,cAAc;IACd,OAAO;IACP,OAAO;IACP,cAAc;IACd,MAAM;IACN,MAAM;IACN,aAAa;IACb,OAAO;IACP,OAAO;IACP,cAAc;IACd,MAAM;IACN,QAAQ;IACR,eAAe;IACf,OAAO;IACP,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,QAAQ;IACR,eAAe;CAChB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAwB,EAAW,EAAE;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,oEAAoE;IACpE,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAI,IAAmC,CAAC,aAAa,CAAC;QAClE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAA4B,EAC5B,MAA0B,EACjB,EAAE;IACX,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEvC,4BAA4B;IAC5B,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACzE,OAAO,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACzE,mBAAmB;YACnB,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,gCAAgC;YAChC,IACE,QAAQ,CAAC,eAAe;gBACxB,QAAQ,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,EACnD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
* - containsTypeParameter: Check if type contains any type parameter
|
|
6
6
|
* - substituteTypeArgs: Substitute type arguments into a type
|
|
7
7
|
* - getPropertyType: Look up property type from contextual type
|
|
8
|
+
* - stripNullish: Remove null/undefined from union types
|
|
9
|
+
* - isDefinitelyValueType: Check if type is a C# value type
|
|
8
10
|
*/
|
|
9
|
-
import type { IrType } from "@tsonic/frontend";
|
|
11
|
+
import type { IrType, IrPropertySignature } from "@tsonic/frontend";
|
|
10
12
|
import type { EmitterContext } from "../types.js";
|
|
11
13
|
/**
|
|
12
14
|
* Check if a type contains any type parameter.
|
|
@@ -44,4 +46,82 @@ export declare const substituteTypeArgs: (type: IrType, typeParamNames: readonly
|
|
|
44
46
|
* @returns The property type after substitution, or undefined if not found
|
|
45
47
|
*/
|
|
46
48
|
export declare const getPropertyType: (contextualType: IrType | undefined, propertyName: string, context: EmitterContext) => IrType | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Get all property signatures for a type, including inherited interface members.
|
|
51
|
+
*
|
|
52
|
+
* Notes:
|
|
53
|
+
* - Only supports referenceType → local interface lookup (synthetic union members are always interfaces).
|
|
54
|
+
* - Derived members override base members by name.
|
|
55
|
+
* - Cycle-safe via visitedTypes.
|
|
56
|
+
*/
|
|
57
|
+
export declare const getAllPropertySignatures: (type: IrType, context: EmitterContext) => readonly IrPropertySignature[] | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Select the best union member type to instantiate for an object literal.
|
|
60
|
+
*
|
|
61
|
+
* Example:
|
|
62
|
+
* type Result<T,E> = Result__0<T,E> | Result__1<T,E>
|
|
63
|
+
* return { ok: true, value } // keys: ["ok","value"]
|
|
64
|
+
* → choose Result__0<T,E>
|
|
65
|
+
*
|
|
66
|
+
* Matching rules (conservative):
|
|
67
|
+
* - Only considers union members that are referenceTypes to local interfaces.
|
|
68
|
+
* - Object literal keys must be a subset of the candidate's property names.
|
|
69
|
+
* - All *required* (non-optional) candidate properties must be present in the literal.
|
|
70
|
+
*
|
|
71
|
+
* Scoring (pick "most specific" deterministically):
|
|
72
|
+
* 1) Fewer extra properties (candidateProps - literalKeys)
|
|
73
|
+
* 2) More required properties (prefer tighter required shape)
|
|
74
|
+
* 3) Fewer total properties
|
|
75
|
+
* 4) Lexicographic by type name (stable tie-break)
|
|
76
|
+
*/
|
|
77
|
+
export declare const selectUnionMemberForObjectLiteral: (unionType: Extract<IrType, {
|
|
78
|
+
kind: "unionType";
|
|
79
|
+
}>, literalKeys: readonly string[], context: EmitterContext) => Extract<IrType, {
|
|
80
|
+
kind: "referenceType";
|
|
81
|
+
}> | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Strip null and undefined from a union type.
|
|
84
|
+
*
|
|
85
|
+
* Used when we need the non-nullable base type, e.g., for object instantiation
|
|
86
|
+
* where `new T? { ... }` is invalid C# but `new T { ... }` is valid.
|
|
87
|
+
*
|
|
88
|
+
* @param type - The type to strip nullish from
|
|
89
|
+
* @returns The non-nullish base type, or the original type if not a nullable union
|
|
90
|
+
*/
|
|
91
|
+
export declare const stripNullish: (type: IrType) => IrType;
|
|
92
|
+
/**
|
|
93
|
+
* Check if a type is definitely a C# value type.
|
|
94
|
+
*
|
|
95
|
+
* Value types require `default` instead of `null` in object initializers
|
|
96
|
+
* because `null` cannot be assigned to non-nullable value types.
|
|
97
|
+
*
|
|
98
|
+
* @param type - The type to check (should be non-nullish, use stripNullish first)
|
|
99
|
+
* @returns true if the type is a known value type
|
|
100
|
+
*/
|
|
101
|
+
export declare const isDefinitelyValueType: (type: IrType) => boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Resolve a type alias to its underlying type.
|
|
104
|
+
*
|
|
105
|
+
* If the type is a reference type that points to a type alias,
|
|
106
|
+
* returns the underlying type with type arguments substituted.
|
|
107
|
+
*
|
|
108
|
+
* @param type - The type to resolve
|
|
109
|
+
* @param context - Emitter context with localTypes map
|
|
110
|
+
* @returns The resolved underlying type, or the original type if not an alias
|
|
111
|
+
*/
|
|
112
|
+
export declare const resolveTypeAlias: (type: IrType, context: EmitterContext) => IrType;
|
|
113
|
+
/**
|
|
114
|
+
* Find the index of a union member that matches a predicate target type.
|
|
115
|
+
*
|
|
116
|
+
* Used for union narrowing: given `isUser(account)` where account is `Union<User, Admin>`,
|
|
117
|
+
* find which member index (0 or 1) corresponds to User.
|
|
118
|
+
*
|
|
119
|
+
* @param unionType - The union type to search
|
|
120
|
+
* @param target - The predicate target type to find
|
|
121
|
+
* @param context - Emitter context
|
|
122
|
+
* @returns The 0-based index of the matching member, or undefined if not found
|
|
123
|
+
*/
|
|
124
|
+
export declare const findUnionMemberIndex: (unionType: Extract<IrType, {
|
|
125
|
+
kind: "unionType";
|
|
126
|
+
}>, target: IrType, context: EmitterContext) => number | undefined;
|
|
47
127
|
//# sourceMappingURL=type-resolution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-resolution.d.ts","sourceRoot":"","sources":["../../src/core/type-resolution.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"type-resolution.d.ts","sourceRoot":"","sources":["../../src/core/type-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,MAAM,EAGN,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,YAAY,WAAW,CAAC,MAAM,CAAC,KAC9B,OA4EF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,gBAAgB,SAAS,MAAM,EAAE,EACjC,UAAU,SAAS,MAAM,EAAE,KAC1B,MAYF,CAAC;AA+GF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,MAAM,GAAG,SAAS,EAClC,cAAc,MAAM,EACpB,SAAS,cAAc,KACtB,MAAM,GAAG,SAWX,CAAC;AAsHF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,EACZ,SAAS,cAAc,KACtB,SAAS,mBAAmB,EAAE,GAAG,SAcnC,CAAC;AA6CF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iCAAiC,GAC5C,WAAW,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EACjD,aAAa,SAAS,MAAM,EAAE,EAC9B,SAAS,cAAc,KACtB,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,GAAG,SA2E/C,CAAC;AAiBF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAkB3C,CAAC;AAoBF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,OAkBpD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,SAAS,cAAc,KACtB,MAoBF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,WAAW,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EACjD,QAAQ,MAAM,EACd,SAAS,cAAc,KACtB,MAAM,GAAG,SAcX,CAAC"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* - containsTypeParameter: Check if type contains any type parameter
|
|
6
6
|
* - substituteTypeArgs: Substitute type arguments into a type
|
|
7
7
|
* - getPropertyType: Look up property type from contextual type
|
|
8
|
+
* - stripNullish: Remove null/undefined from union types
|
|
9
|
+
* - isDefinitelyValueType: Check if type is a C# value type
|
|
8
10
|
*/
|
|
9
11
|
/**
|
|
10
12
|
* Check if a type contains any type parameter.
|
|
@@ -40,6 +42,8 @@ export const containsTypeParameter = (type, typeParams) => {
|
|
|
40
42
|
case "unionType":
|
|
41
43
|
case "intersectionType":
|
|
42
44
|
return type.types.some((t) => containsTypeParameter(t, typeParams));
|
|
45
|
+
case "tupleType":
|
|
46
|
+
return type.elementTypes.some((t) => containsTypeParameter(t, typeParams));
|
|
43
47
|
case "functionType":
|
|
44
48
|
if (containsTypeParameter(type.returnType, typeParams)) {
|
|
45
49
|
return true;
|
|
@@ -133,6 +137,11 @@ const substituteType = (type, mapping) => {
|
|
|
133
137
|
...type,
|
|
134
138
|
types: type.types.map((t) => substituteType(t, mapping)),
|
|
135
139
|
};
|
|
140
|
+
case "tupleType":
|
|
141
|
+
return {
|
|
142
|
+
...type,
|
|
143
|
+
elementTypes: type.elementTypes.map((t) => substituteType(t, mapping)),
|
|
144
|
+
};
|
|
136
145
|
case "intersectionType":
|
|
137
146
|
return {
|
|
138
147
|
...type,
|
|
@@ -269,6 +278,143 @@ const findPropertyInMembers = (members, propertyName) => {
|
|
|
269
278
|
}
|
|
270
279
|
return undefined;
|
|
271
280
|
};
|
|
281
|
+
/**
|
|
282
|
+
* Get all property signatures for a type, including inherited interface members.
|
|
283
|
+
*
|
|
284
|
+
* Notes:
|
|
285
|
+
* - Only supports referenceType → local interface lookup (synthetic union members are always interfaces).
|
|
286
|
+
* - Derived members override base members by name.
|
|
287
|
+
* - Cycle-safe via visitedTypes.
|
|
288
|
+
*/
|
|
289
|
+
export const getAllPropertySignatures = (type, context) => {
|
|
290
|
+
if (!context.localTypes)
|
|
291
|
+
return undefined;
|
|
292
|
+
// We only expect nominal reference types here (Result__0<T,E>, etc.)
|
|
293
|
+
if (type.kind !== "referenceType")
|
|
294
|
+
return undefined;
|
|
295
|
+
const typeInfo = context.localTypes.get(type.name);
|
|
296
|
+
if (!typeInfo || typeInfo.kind !== "interface")
|
|
297
|
+
return undefined;
|
|
298
|
+
// Collect into a map so derived overrides base by name deterministically
|
|
299
|
+
const propMap = new Map();
|
|
300
|
+
collectInterfaceProps(type, typeInfo, context.localTypes, propMap, []);
|
|
301
|
+
return [...propMap.values()];
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Internal: collect interface props + props from extends (cycle-safe).
|
|
305
|
+
*
|
|
306
|
+
* Ordering is important:
|
|
307
|
+
* - Add own members first (so they override bases).
|
|
308
|
+
* - Then walk extends for missing names.
|
|
309
|
+
*/
|
|
310
|
+
const collectInterfaceProps = (ref, typeInfo, localTypes, out, visitedTypes) => {
|
|
311
|
+
// Prevent cycles
|
|
312
|
+
if (visitedTypes.includes(ref.name))
|
|
313
|
+
return;
|
|
314
|
+
const nextVisited = [...visitedTypes, ref.name];
|
|
315
|
+
// Add own properties first (derived overrides base)
|
|
316
|
+
for (const m of typeInfo.members) {
|
|
317
|
+
if (m.kind === "propertySignature") {
|
|
318
|
+
out.set(m.name, m);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// Walk base interfaces
|
|
322
|
+
for (const base of typeInfo.extends) {
|
|
323
|
+
if (base.kind !== "referenceType")
|
|
324
|
+
continue;
|
|
325
|
+
const baseInfo = localTypes.get(base.name);
|
|
326
|
+
if (!baseInfo || baseInfo.kind !== "interface")
|
|
327
|
+
continue;
|
|
328
|
+
// Recurse. If derived already set the name, we keep the derived one.
|
|
329
|
+
const basePropMap = new Map();
|
|
330
|
+
collectInterfaceProps(base, baseInfo, localTypes, basePropMap, nextVisited);
|
|
331
|
+
for (const [name, sig] of basePropMap.entries()) {
|
|
332
|
+
if (!out.has(name)) {
|
|
333
|
+
out.set(name, sig);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
/**
|
|
339
|
+
* Select the best union member type to instantiate for an object literal.
|
|
340
|
+
*
|
|
341
|
+
* Example:
|
|
342
|
+
* type Result<T,E> = Result__0<T,E> | Result__1<T,E>
|
|
343
|
+
* return { ok: true, value } // keys: ["ok","value"]
|
|
344
|
+
* → choose Result__0<T,E>
|
|
345
|
+
*
|
|
346
|
+
* Matching rules (conservative):
|
|
347
|
+
* - Only considers union members that are referenceTypes to local interfaces.
|
|
348
|
+
* - Object literal keys must be a subset of the candidate's property names.
|
|
349
|
+
* - All *required* (non-optional) candidate properties must be present in the literal.
|
|
350
|
+
*
|
|
351
|
+
* Scoring (pick "most specific" deterministically):
|
|
352
|
+
* 1) Fewer extra properties (candidateProps - literalKeys)
|
|
353
|
+
* 2) More required properties (prefer tighter required shape)
|
|
354
|
+
* 3) Fewer total properties
|
|
355
|
+
* 4) Lexicographic by type name (stable tie-break)
|
|
356
|
+
*/
|
|
357
|
+
export const selectUnionMemberForObjectLiteral = (unionType, literalKeys, context) => {
|
|
358
|
+
if (!context.localTypes)
|
|
359
|
+
return undefined;
|
|
360
|
+
// Normalize keys (defensive: dedupe)
|
|
361
|
+
const keySet = new Set(literalKeys.filter((k) => k.length > 0));
|
|
362
|
+
const keys = [...keySet];
|
|
363
|
+
const candidates = [];
|
|
364
|
+
for (const member of unionType.types) {
|
|
365
|
+
if (member.kind !== "referenceType")
|
|
366
|
+
continue;
|
|
367
|
+
// If a union member is itself an alias, chase once (rare, but safe)
|
|
368
|
+
const resolved = resolveTypeAlias(member, context);
|
|
369
|
+
const ref = resolved.kind === "referenceType" ? resolved : member;
|
|
370
|
+
const info = context.localTypes.get(ref.name);
|
|
371
|
+
if (!info || info.kind !== "interface")
|
|
372
|
+
continue;
|
|
373
|
+
const props = getAllPropertySignatures(ref, context);
|
|
374
|
+
if (!props)
|
|
375
|
+
continue;
|
|
376
|
+
const allProps = new Set(props.map((p) => p.name));
|
|
377
|
+
const requiredProps = new Set(props.filter((p) => !p.isOptional).map((p) => p.name));
|
|
378
|
+
candidates.push({ ref, allProps, requiredProps });
|
|
379
|
+
}
|
|
380
|
+
// Filter by match rules
|
|
381
|
+
const matches = candidates.filter((c) => {
|
|
382
|
+
// literal keys must exist on candidate
|
|
383
|
+
for (const k of keys) {
|
|
384
|
+
if (!c.allProps.has(k))
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
// candidate required props must be provided by literal
|
|
388
|
+
for (const r of c.requiredProps) {
|
|
389
|
+
if (!keySet.has(r))
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
return true;
|
|
393
|
+
});
|
|
394
|
+
if (matches.length === 0)
|
|
395
|
+
return undefined;
|
|
396
|
+
const firstMatch = matches[0];
|
|
397
|
+
if (matches.length === 1 && firstMatch)
|
|
398
|
+
return firstMatch.ref;
|
|
399
|
+
// Pick best by score
|
|
400
|
+
matches.sort((a, b) => {
|
|
401
|
+
const aTotal = a.allProps.size;
|
|
402
|
+
const bTotal = b.allProps.size;
|
|
403
|
+
const aExtra = aTotal - keySet.size;
|
|
404
|
+
const bExtra = bTotal - keySet.size;
|
|
405
|
+
if (aExtra !== bExtra)
|
|
406
|
+
return aExtra - bExtra; // fewer extras is better
|
|
407
|
+
const aReq = a.requiredProps.size;
|
|
408
|
+
const bReq = b.requiredProps.size;
|
|
409
|
+
if (aReq !== bReq)
|
|
410
|
+
return bReq - aReq; // more required is better
|
|
411
|
+
if (aTotal !== bTotal)
|
|
412
|
+
return aTotal - bTotal; // fewer total props is better
|
|
413
|
+
return a.ref.name.localeCompare(b.ref.name); // stable tie-break
|
|
414
|
+
});
|
|
415
|
+
const best = matches[0];
|
|
416
|
+
return best ? best.ref : undefined;
|
|
417
|
+
};
|
|
272
418
|
/**
|
|
273
419
|
* Find property type in class members
|
|
274
420
|
*/
|
|
@@ -280,4 +426,116 @@ const findPropertyInClassMembers = (members, propertyName) => {
|
|
|
280
426
|
}
|
|
281
427
|
return undefined;
|
|
282
428
|
};
|
|
429
|
+
/**
|
|
430
|
+
* Strip null and undefined from a union type.
|
|
431
|
+
*
|
|
432
|
+
* Used when we need the non-nullable base type, e.g., for object instantiation
|
|
433
|
+
* where `new T? { ... }` is invalid C# but `new T { ... }` is valid.
|
|
434
|
+
*
|
|
435
|
+
* @param type - The type to strip nullish from
|
|
436
|
+
* @returns The non-nullish base type, or the original type if not a nullable union
|
|
437
|
+
*/
|
|
438
|
+
export const stripNullish = (type) => {
|
|
439
|
+
if (type.kind !== "unionType")
|
|
440
|
+
return type;
|
|
441
|
+
const nonNullish = type.types.filter((t) => !(t.kind === "primitiveType" &&
|
|
442
|
+
(t.name === "null" || t.name === "undefined")));
|
|
443
|
+
// Single non-nullish type: return it (e.g., T | null → T)
|
|
444
|
+
if (nonNullish.length === 1 && nonNullish[0]) {
|
|
445
|
+
return nonNullish[0];
|
|
446
|
+
}
|
|
447
|
+
// Multi-type union or no non-nullish types: return original
|
|
448
|
+
return type;
|
|
449
|
+
};
|
|
450
|
+
/**
|
|
451
|
+
* Known CLR struct types that are value types.
|
|
452
|
+
*/
|
|
453
|
+
const CLR_VALUE_TYPES = new Set([
|
|
454
|
+
"global::System.DateTime",
|
|
455
|
+
"global::System.DateOnly",
|
|
456
|
+
"global::System.TimeOnly",
|
|
457
|
+
"global::System.TimeSpan",
|
|
458
|
+
"global::System.Guid",
|
|
459
|
+
"global::System.Decimal",
|
|
460
|
+
"System.DateTime",
|
|
461
|
+
"System.DateOnly",
|
|
462
|
+
"System.TimeOnly",
|
|
463
|
+
"System.TimeSpan",
|
|
464
|
+
"System.Guid",
|
|
465
|
+
"System.Decimal",
|
|
466
|
+
]);
|
|
467
|
+
/**
|
|
468
|
+
* Check if a type is definitely a C# value type.
|
|
469
|
+
*
|
|
470
|
+
* Value types require `default` instead of `null` in object initializers
|
|
471
|
+
* because `null` cannot be assigned to non-nullable value types.
|
|
472
|
+
*
|
|
473
|
+
* @param type - The type to check (should be non-nullish, use stripNullish first)
|
|
474
|
+
* @returns true if the type is a known value type
|
|
475
|
+
*/
|
|
476
|
+
export const isDefinitelyValueType = (type) => {
|
|
477
|
+
// Strip nullish first if caller forgot
|
|
478
|
+
const base = stripNullish(type);
|
|
479
|
+
// Primitive value types (number → double, boolean → bool)
|
|
480
|
+
if (base.kind === "primitiveType") {
|
|
481
|
+
return base.name === "number" || base.name === "boolean";
|
|
482
|
+
}
|
|
483
|
+
// Known CLR struct types
|
|
484
|
+
if (base.kind === "referenceType") {
|
|
485
|
+
const clr = base.resolvedClrType;
|
|
486
|
+
if (clr && CLR_VALUE_TYPES.has(clr)) {
|
|
487
|
+
return true;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return false;
|
|
491
|
+
};
|
|
492
|
+
/**
|
|
493
|
+
* Resolve a type alias to its underlying type.
|
|
494
|
+
*
|
|
495
|
+
* If the type is a reference type that points to a type alias,
|
|
496
|
+
* returns the underlying type with type arguments substituted.
|
|
497
|
+
*
|
|
498
|
+
* @param type - The type to resolve
|
|
499
|
+
* @param context - Emitter context with localTypes map
|
|
500
|
+
* @returns The resolved underlying type, or the original type if not an alias
|
|
501
|
+
*/
|
|
502
|
+
export const resolveTypeAlias = (type, context) => {
|
|
503
|
+
if (type.kind !== "referenceType" || !context.localTypes) {
|
|
504
|
+
return type;
|
|
505
|
+
}
|
|
506
|
+
const typeInfo = context.localTypes.get(type.name);
|
|
507
|
+
if (!typeInfo || typeInfo.kind !== "typeAlias") {
|
|
508
|
+
return type;
|
|
509
|
+
}
|
|
510
|
+
// Substitute type arguments if present
|
|
511
|
+
if (type.typeArguments && type.typeArguments.length > 0) {
|
|
512
|
+
return substituteTypeArgs(typeInfo.type, typeInfo.typeParameters, type.typeArguments);
|
|
513
|
+
}
|
|
514
|
+
return typeInfo.type;
|
|
515
|
+
};
|
|
516
|
+
/**
|
|
517
|
+
* Find the index of a union member that matches a predicate target type.
|
|
518
|
+
*
|
|
519
|
+
* Used for union narrowing: given `isUser(account)` where account is `Union<User, Admin>`,
|
|
520
|
+
* find which member index (0 or 1) corresponds to User.
|
|
521
|
+
*
|
|
522
|
+
* @param unionType - The union type to search
|
|
523
|
+
* @param target - The predicate target type to find
|
|
524
|
+
* @param context - Emitter context
|
|
525
|
+
* @returns The 0-based index of the matching member, or undefined if not found
|
|
526
|
+
*/
|
|
527
|
+
export const findUnionMemberIndex = (unionType, target, context) => {
|
|
528
|
+
const resolvedTarget = resolveTypeAlias(stripNullish(target), context);
|
|
529
|
+
// MVP: only handle reference-type targets
|
|
530
|
+
if (resolvedTarget.kind !== "referenceType")
|
|
531
|
+
return undefined;
|
|
532
|
+
for (let i = 0; i < unionType.types.length; i++) {
|
|
533
|
+
const m = unionType.types[i];
|
|
534
|
+
if (m?.kind === "referenceType" && m.name === resolvedTarget.name) {
|
|
535
|
+
// MVP: match by name; can tighten later to include typeArguments equality
|
|
536
|
+
return i;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
return undefined;
|
|
540
|
+
};
|
|
283
541
|
//# sourceMappingURL=type-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-resolution.js","sourceRoot":"","sources":["../../src/core/type-resolution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type-resolution.js","sourceRoot":"","sources":["../../src/core/type-resolution.ts"],"names":[],"mappings":"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"}
|