@tsonic/frontend 0.0.5 → 0.0.11
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +0 -5
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder.test.js +60 -0
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +65 -2
- 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 +49 -1
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
- package/dist/ir/converters/expressions/collections.js +4 -1
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
- package/dist/ir/converters/expressions/functions.js +3 -1
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.d.ts +10 -0
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +173 -7
- package/dist/ir/converters/expressions/helpers.js.map +1 -1
- package/dist/ir/converters/expressions/index.d.ts +1 -1
- package/dist/ir/converters/expressions/index.d.ts.map +1 -1
- package/dist/ir/converters/expressions/index.js +1 -1
- package/dist/ir/converters/expressions/index.js.map +1 -1
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
- package/dist/ir/converters/expressions/literals.js +2 -1
- package/dist/ir/converters/expressions/literals.js.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +14 -0
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -0
- package/dist/ir/converters/expressions/numeric-recovery.test.js +286 -0
- package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -0
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
- package/dist/ir/converters/expressions/operators.js +16 -2
- package/dist/ir/converters/expressions/operators.js.map +1 -1
- package/dist/ir/converters/expressions/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +4 -1
- package/dist/ir/converters/expressions/other.js.map +1 -1
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/loops.js +1 -0
- package/dist/ir/converters/statements/control/loops.js.map +1 -1
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +81 -9
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/type-converter/arrays.d.ts.map +1 -1
- package/dist/ir/type-converter/arrays.js +1 -0
- package/dist/ir/type-converter/arrays.js.map +1 -1
- package/dist/ir/type-converter/inference.d.ts.map +1 -1
- package/dist/ir/type-converter/inference.js +31 -20
- package/dist/ir/type-converter/inference.js.map +1 -1
- package/dist/ir/type-converter/literals.d.ts.map +1 -1
- package/dist/ir/type-converter/literals.js +2 -1
- package/dist/ir/type-converter/literals.js.map +1 -1
- package/dist/ir/type-converter/objects.d.ts.map +1 -1
- package/dist/ir/type-converter/objects.js +2 -1
- package/dist/ir/type-converter/objects.js.map +1 -1
- package/dist/ir/type-converter/orchestrator.d.ts.map +1 -1
- package/dist/ir/type-converter/orchestrator.js +18 -1
- package/dist/ir/type-converter/orchestrator.js.map +1 -1
- package/dist/ir/type-converter/references.d.ts.map +1 -1
- package/dist/ir/type-converter/references.js +14 -18
- package/dist/ir/type-converter/references.js.map +1 -1
- package/dist/ir/types/expressions.d.ts +102 -1
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/types/guards.d.ts.map +1 -1
- package/dist/ir/types/guards.js +2 -0
- package/dist/ir/types/guards.js.map +1 -1
- package/dist/ir/types/index.d.ts +4 -2
- package/dist/ir/types/index.d.ts.map +1 -1
- package/dist/ir/types/index.js +1 -0
- package/dist/ir/types/index.js.map +1 -1
- package/dist/ir/types/ir-types.d.ts +19 -0
- package/dist/ir/types/ir-types.d.ts.map +1 -1
- package/dist/ir/types/numeric-kind.d.ts +68 -0
- package/dist/ir/types/numeric-kind.d.ts.map +1 -0
- package/dist/ir/types/numeric-kind.js +170 -0
- package/dist/ir/types/numeric-kind.js.map +1 -0
- package/dist/ir/types/statements.d.ts +38 -1
- package/dist/ir/types/statements.d.ts.map +1 -1
- package/dist/ir/types.d.ts +2 -1
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js +2 -0
- package/dist/ir/types.js.map +1 -1
- package/dist/ir/validation/index.d.ts +7 -0
- package/dist/ir/validation/index.d.ts.map +1 -0
- package/dist/ir/validation/index.js +7 -0
- package/dist/ir/validation/index.js.map +1 -0
- package/dist/ir/validation/numeric-invariants.test.d.ts +15 -0
- package/dist/ir/validation/numeric-invariants.test.d.ts.map +1 -0
- package/dist/ir/validation/numeric-invariants.test.js +598 -0
- package/dist/ir/validation/numeric-invariants.test.js.map +1 -0
- package/dist/ir/validation/numeric-proof-pass.d.ts +37 -0
- package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -0
- package/dist/ir/validation/numeric-proof-pass.js +889 -0
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -0
- package/dist/ir/validation/soundness-gate.d.ts +26 -0
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -0
- package/dist/ir/validation/soundness-gate.js +551 -0
- package/dist/ir/validation/soundness-gate.js.map +1 -0
- package/dist/ir/validation/soundness-gate.test.d.ts +13 -0
- package/dist/ir/validation/soundness-gate.test.d.ts.map +1 -0
- package/dist/ir/validation/soundness-gate.test.js +315 -0
- package/dist/ir/validation/soundness-gate.test.js.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.d.ts +40 -0
- package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.js +548 -0
- package/dist/ir/validation/yield-lowering-pass.js.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.test.d.ts +12 -0
- package/dist/ir/validation/yield-lowering-pass.test.d.ts.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.test.js +761 -0
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -0
- package/dist/program/bindings.d.ts +5 -0
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +12 -1
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/dependency-graph.d.ts +3 -0
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +28 -4
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/program/index.d.ts +1 -1
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/index.js.map +1 -1
- package/dist/program.d.ts +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.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/package.json +1 -1
- package/dist/types/parameter-modifiers.d.ts +0 -55
- package/dist/types/parameter-modifiers.d.ts.map +0 -1
- package/dist/types/parameter-modifiers.js +0 -148
- package/dist/types/parameter-modifiers.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ir/type-converter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,MAAM,EACN,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,aAAa,CAAC;AAYrB;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,UAAU,EAAE,CAAC,QAAQ,EACrB,SAAS,EAAE,CAAC,WAAW,KACtB,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ir/type-converter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,MAAM,EACN,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,aAAa,CAAC;AAYrB;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,UAAU,EAAE,CAAC,QAAQ,EACrB,SAAS,EAAE,CAAC,WAAW,KACtB,MAkHF,CAAC;AAGF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -43,6 +43,7 @@ export const convertType = (typeNode, checker) => {
|
|
|
43
43
|
return {
|
|
44
44
|
kind: "arrayType",
|
|
45
45
|
elementType: convertType(firstElement.type.elementType, checker),
|
|
46
|
+
origin: "explicit",
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -87,7 +88,23 @@ export const convertType = (typeNode, checker) => {
|
|
|
87
88
|
if (ts.isTypePredicateNode(typeNode)) {
|
|
88
89
|
return { kind: "primitiveType", name: "boolean" };
|
|
89
90
|
}
|
|
90
|
-
//
|
|
91
|
+
// TypeQuery: typeof X - resolve to the type of the referenced value
|
|
92
|
+
if (ts.isTypeQueryNode(typeNode)) {
|
|
93
|
+
// Get the type of the referenced expression
|
|
94
|
+
const symbol = checker.getSymbolAtLocation(typeNode.exprName);
|
|
95
|
+
if (symbol) {
|
|
96
|
+
const type = checker.getTypeOfSymbolAtLocation(symbol, typeNode.exprName);
|
|
97
|
+
// Convert the resolved type
|
|
98
|
+
const typeNodeResolved = checker.typeToTypeNode(type, typeNode, ts.NodeBuilderFlags.None);
|
|
99
|
+
if (typeNodeResolved && !ts.isTypeQueryNode(typeNodeResolved)) {
|
|
100
|
+
return convertType(typeNodeResolved, checker);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Fallback: use anyType as marker - IR soundness gate will emit TSN7414
|
|
104
|
+
return { kind: "anyType" };
|
|
105
|
+
}
|
|
106
|
+
// Default: use anyType as marker for unsupported types
|
|
107
|
+
// The IR soundness gate will catch this and emit TSN7414
|
|
91
108
|
return { kind: "anyType" };
|
|
92
109
|
};
|
|
93
110
|
// Re-export specialized converters for backward compatibility
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ir/type-converter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAQjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAqB,EACrB,OAAuB,EACf,EAAE;IACV,mDAAmD;IACnD,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IAED,qBAAqB;IACrB,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,cAAc;IACd,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,cAAc;IACd,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,iEAAiE;QACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAEtE,IAAI,OAAO,EAAE,CAAC;YACZ,iEAAiE;YACjE,qEAAqE;YACrE,0DAA0D;YAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1C,IACE,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAC9B,YAAY;gBACZ,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,EAC/B,CAAC;gBACD,IAAI,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,iBAAiB;oBACjB,OAAO;wBACL,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ir/type-converter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAQjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAqB,EACrB,OAAuB,EACf,EAAE;IACV,mDAAmD;IACnD,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IAED,qBAAqB;IACrB,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,cAAc;IACd,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,cAAc;IACd,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,iEAAiE;QACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAEtE,IAAI,OAAO,EAAE,CAAC;YACZ,iEAAiE;YACjE,qEAAqE;YACrE,0DAA0D;YAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1C,IACE,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAC9B,YAAY;gBACZ,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,EAC/B,CAAC;gBACD,IAAI,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,iBAAiB;oBACjB,OAAO;wBACL,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;wBAChE,MAAM,EAAE,UAAU;qBACnB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,gEAAgE;YAChE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACrD,kEAAkE;YAClE,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAiB,CAAC;IAC5D,CAAC;IAED,iBAAiB;IACjB,IAAI,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,yBAAyB;IACzB,IAAI,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;IACd,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAqB;IACrB,IAAI,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,gBAAgB;IAChB,IAAI,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,sBAAsB;IACtB,IAAI,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,gFAAgF;IAChF,uEAAuE;IACvE,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,oEAAoE;IACpE,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,4CAA4C;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC1E,4BAA4B;YAC5B,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAC7C,IAAI,EACJ,QAAQ,EACR,EAAE,CAAC,gBAAgB,CAAC,IAAI,CACzB,CAAC;YACF,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC9D,OAAO,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,wEAAwE;QACxE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,uDAAuD;IACvD,yDAAyD;IACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,8DAA8D;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../src/ir/type-converter/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../src/ir/type-converter/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AAGvD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,iBAAiB,EAC1B,SAAS,EAAE,CAAC,WAAW,EACvB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,KAAK,MAAM,KAClE,MAsDF,CAAC"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
5
|
import { isPrimitiveTypeName, getPrimitiveType } from "./primitives.js";
|
|
6
|
-
import { getParameterModifierRegistry } from "../../types/parameter-modifiers.js";
|
|
7
6
|
/**
|
|
8
7
|
* Convert TypeScript type reference to IR type
|
|
9
8
|
* Handles both primitive type names and user-defined types
|
|
@@ -16,6 +15,16 @@ export const convertTypeReference = (node, checker, convertType) => {
|
|
|
16
15
|
if (isPrimitiveTypeName(typeName)) {
|
|
17
16
|
return getPrimitiveType(typeName);
|
|
18
17
|
}
|
|
18
|
+
// Check for Array<T> utility type → convert to arrayType with explicit origin
|
|
19
|
+
// This ensures Array<T> and T[] are treated identically
|
|
20
|
+
const firstTypeArg = node.typeArguments?.[0];
|
|
21
|
+
if (typeName === "Array" && firstTypeArg) {
|
|
22
|
+
return {
|
|
23
|
+
kind: "arrayType",
|
|
24
|
+
elementType: convertType(firstTypeArg, checker),
|
|
25
|
+
origin: "explicit",
|
|
26
|
+
};
|
|
27
|
+
}
|
|
19
28
|
// Check for Record<K, V> utility type → convert to IrDictionaryType
|
|
20
29
|
const typeArgsForRecord = node.typeArguments;
|
|
21
30
|
const keyTypeNode = typeArgsForRecord?.[0];
|
|
@@ -29,23 +38,10 @@ export const convertTypeReference = (node, checker, convertType) => {
|
|
|
29
38
|
valueType,
|
|
30
39
|
};
|
|
31
40
|
}
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const firstModifierArg = typeArgsForModifier?.[0];
|
|
37
|
-
if (modifierKind && firstModifierArg !== undefined) {
|
|
38
|
-
// This is ref<T>, out<T>, or In<T> from @tsonic/types
|
|
39
|
-
// Convert it to a special IR type that preserves the modifier
|
|
40
|
-
const wrappedType = convertType(firstModifierArg, checker);
|
|
41
|
-
return {
|
|
42
|
-
kind: "referenceType",
|
|
43
|
-
name: typeName,
|
|
44
|
-
typeArguments: [wrappedType],
|
|
45
|
-
// Add metadata to indicate this is a parameter modifier
|
|
46
|
-
parameterModifier: modifierKind,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
41
|
+
// NOTE: ref<T>, out<T>, In<T> are no longer supported as types.
|
|
42
|
+
// Parameter modifiers will be expressed via syntax in the future.
|
|
43
|
+
// If someone uses ref<T> etc., it will fall through to referenceType
|
|
44
|
+
// and the validation pass will reject it with a hard error.
|
|
49
45
|
// Check if this is a type parameter reference (e.g., T in Container<T>)
|
|
50
46
|
// Use the type checker to determine if the reference resolves to a type parameter
|
|
51
47
|
const type = checker.getTypeAtLocation(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/ir/type-converter/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/ir/type-converter/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAA0B,EAC1B,OAAuB,EACvB,WAAmE,EAC3D,EAAE;IACV,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;QACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAE5B,iCAAiC;IACjC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,8EAA8E;IAC9E,wDAAwD;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,OAAO,IAAI,YAAY,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC;YAC/C,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;IAC7C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,QAAQ,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEtD,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,OAAO;YACP,SAAS;SACU,CAAC;IACxB,CAAC;IAED,gEAAgE;IAChE,kEAAkE;IAClE,qEAAqE;IACrE,4DAA4D;IAE5D,wEAAwE;IACxE,kFAAkF;IAClF,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAED,2CAA2C;IAC3C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KACvE,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -4,17 +4,21 @@
|
|
|
4
4
|
import { IrType } from "./ir-types.js";
|
|
5
5
|
import { IrParameter, IrPattern, IrBinaryOperator, IrAssignmentOperator } from "./helpers.js";
|
|
6
6
|
import { IrBlockStatement } from "./statements.js";
|
|
7
|
-
|
|
7
|
+
import { NumericKind } from "./numeric-kind.js";
|
|
8
|
+
import { SourceLocation } from "../../types/diagnostic.js";
|
|
9
|
+
export type IrExpression = IrLiteralExpression | IrIdentifierExpression | IrArrayExpression | IrObjectExpression | IrFunctionExpression | IrArrowFunctionExpression | IrMemberExpression | IrCallExpression | IrNewExpression | IrThisExpression | IrUpdateExpression | IrUnaryExpression | IrBinaryExpression | IrLogicalExpression | IrConditionalExpression | IrAssignmentExpression | IrTemplateLiteralExpression | IrSpreadExpression | IrAwaitExpression | IrYieldExpression | IrNumericNarrowingExpression;
|
|
8
10
|
export type IrLiteralExpression = {
|
|
9
11
|
readonly kind: "literal";
|
|
10
12
|
readonly value: string | number | boolean | null | undefined;
|
|
11
13
|
readonly raw?: string;
|
|
12
14
|
readonly inferredType?: IrType;
|
|
15
|
+
readonly sourceSpan?: SourceLocation;
|
|
13
16
|
};
|
|
14
17
|
export type IrIdentifierExpression = {
|
|
15
18
|
readonly kind: "identifier";
|
|
16
19
|
readonly name: string;
|
|
17
20
|
readonly inferredType?: IrType;
|
|
21
|
+
readonly sourceSpan?: SourceLocation;
|
|
18
22
|
readonly resolvedClrType?: string;
|
|
19
23
|
readonly resolvedAssembly?: string;
|
|
20
24
|
readonly csharpName?: string;
|
|
@@ -28,11 +32,13 @@ export type IrArrayExpression = {
|
|
|
28
32
|
readonly kind: "array";
|
|
29
33
|
readonly elements: readonly (IrExpression | IrSpreadExpression | undefined)[];
|
|
30
34
|
readonly inferredType?: IrType;
|
|
35
|
+
readonly sourceSpan?: SourceLocation;
|
|
31
36
|
};
|
|
32
37
|
export type IrObjectExpression = {
|
|
33
38
|
readonly kind: "object";
|
|
34
39
|
readonly properties: readonly IrObjectProperty[];
|
|
35
40
|
readonly inferredType?: IrType;
|
|
41
|
+
readonly sourceSpan?: SourceLocation;
|
|
36
42
|
/** Contextual type for object literals in typed positions (return, assignment, etc.) */
|
|
37
43
|
readonly contextualType?: IrType;
|
|
38
44
|
/** True if this object literal contains spread expressions (for IIFE lowering) */
|
|
@@ -56,6 +62,7 @@ export type IrFunctionExpression = {
|
|
|
56
62
|
readonly isAsync: boolean;
|
|
57
63
|
readonly isGenerator: boolean;
|
|
58
64
|
readonly inferredType?: IrType;
|
|
65
|
+
readonly sourceSpan?: SourceLocation;
|
|
59
66
|
};
|
|
60
67
|
export type IrArrowFunctionExpression = {
|
|
61
68
|
readonly kind: "arrowFunction";
|
|
@@ -64,7 +71,19 @@ export type IrArrowFunctionExpression = {
|
|
|
64
71
|
readonly body: IrBlockStatement | IrExpression;
|
|
65
72
|
readonly isAsync: boolean;
|
|
66
73
|
readonly inferredType?: IrType;
|
|
74
|
+
readonly sourceSpan?: SourceLocation;
|
|
67
75
|
};
|
|
76
|
+
/**
|
|
77
|
+
* Classification for computed member access lowering.
|
|
78
|
+
* Determines whether TSN5107 (Int32 proof) is required.
|
|
79
|
+
*
|
|
80
|
+
* - clrIndexer: CLR indexer (obj[int]) - requires Int32 proof
|
|
81
|
+
* - dictionary: Dictionary<K,V>[key] - NO Int32 requirement (key is typed)
|
|
82
|
+
* - jsRuntimeArray: Tsonic.JSRuntime.Array.get() - requires Int32 proof
|
|
83
|
+
* - stringChar: string[int] character access - requires Int32 proof
|
|
84
|
+
* - unknown: Fallback for unclassified access - emit error
|
|
85
|
+
*/
|
|
86
|
+
export type ComputedAccessKind = "clrIndexer" | "dictionary" | "jsRuntimeArray" | "stringChar" | "unknown";
|
|
68
87
|
export type IrMemberExpression = {
|
|
69
88
|
readonly kind: "memberAccess";
|
|
70
89
|
readonly object: IrExpression;
|
|
@@ -72,11 +91,13 @@ export type IrMemberExpression = {
|
|
|
72
91
|
readonly isComputed: boolean;
|
|
73
92
|
readonly isOptional: boolean;
|
|
74
93
|
readonly inferredType?: IrType;
|
|
94
|
+
readonly sourceSpan?: SourceLocation;
|
|
75
95
|
readonly memberBinding?: {
|
|
76
96
|
readonly assembly: string;
|
|
77
97
|
readonly type: string;
|
|
78
98
|
readonly member: string;
|
|
79
99
|
};
|
|
100
|
+
readonly accessKind?: ComputedAccessKind;
|
|
80
101
|
};
|
|
81
102
|
export type IrCallExpression = {
|
|
82
103
|
readonly kind: "call";
|
|
@@ -84,9 +105,12 @@ export type IrCallExpression = {
|
|
|
84
105
|
readonly arguments: readonly (IrExpression | IrSpreadExpression)[];
|
|
85
106
|
readonly isOptional: boolean;
|
|
86
107
|
readonly inferredType?: IrType;
|
|
108
|
+
readonly sourceSpan?: SourceLocation;
|
|
87
109
|
readonly typeArguments?: readonly IrType[];
|
|
88
110
|
readonly requiresSpecialization?: boolean;
|
|
89
111
|
readonly argumentPassing?: readonly ("value" | "ref" | "out" | "in")[];
|
|
112
|
+
/** Parameter types from resolved signature (for expectedType threading to array literals etc.) */
|
|
113
|
+
readonly parameterTypes?: readonly (IrType | undefined)[];
|
|
90
114
|
/** Type predicate narrowing metadata (for `x is T` predicates) */
|
|
91
115
|
readonly narrowing?: {
|
|
92
116
|
readonly kind: "typePredicate";
|
|
@@ -99,12 +123,14 @@ export type IrNewExpression = {
|
|
|
99
123
|
readonly callee: IrExpression;
|
|
100
124
|
readonly arguments: readonly (IrExpression | IrSpreadExpression)[];
|
|
101
125
|
readonly inferredType?: IrType;
|
|
126
|
+
readonly sourceSpan?: SourceLocation;
|
|
102
127
|
readonly typeArguments?: readonly IrType[];
|
|
103
128
|
readonly requiresSpecialization?: boolean;
|
|
104
129
|
};
|
|
105
130
|
export type IrThisExpression = {
|
|
106
131
|
readonly kind: "this";
|
|
107
132
|
readonly inferredType?: IrType;
|
|
133
|
+
readonly sourceSpan?: SourceLocation;
|
|
108
134
|
};
|
|
109
135
|
export type IrUpdateExpression = {
|
|
110
136
|
readonly kind: "update";
|
|
@@ -112,12 +138,14 @@ export type IrUpdateExpression = {
|
|
|
112
138
|
readonly prefix: boolean;
|
|
113
139
|
readonly expression: IrExpression;
|
|
114
140
|
readonly inferredType?: IrType;
|
|
141
|
+
readonly sourceSpan?: SourceLocation;
|
|
115
142
|
};
|
|
116
143
|
export type IrUnaryExpression = {
|
|
117
144
|
readonly kind: "unary";
|
|
118
145
|
readonly operator: "+" | "-" | "!" | "~" | "typeof" | "void" | "delete";
|
|
119
146
|
readonly expression: IrExpression;
|
|
120
147
|
readonly inferredType?: IrType;
|
|
148
|
+
readonly sourceSpan?: SourceLocation;
|
|
121
149
|
};
|
|
122
150
|
export type IrBinaryExpression = {
|
|
123
151
|
readonly kind: "binary";
|
|
@@ -125,6 +153,7 @@ export type IrBinaryExpression = {
|
|
|
125
153
|
readonly left: IrExpression;
|
|
126
154
|
readonly right: IrExpression;
|
|
127
155
|
readonly inferredType?: IrType;
|
|
156
|
+
readonly sourceSpan?: SourceLocation;
|
|
128
157
|
};
|
|
129
158
|
export type IrLogicalExpression = {
|
|
130
159
|
readonly kind: "logical";
|
|
@@ -132,6 +161,7 @@ export type IrLogicalExpression = {
|
|
|
132
161
|
readonly left: IrExpression;
|
|
133
162
|
readonly right: IrExpression;
|
|
134
163
|
readonly inferredType?: IrType;
|
|
164
|
+
readonly sourceSpan?: SourceLocation;
|
|
135
165
|
};
|
|
136
166
|
export type IrConditionalExpression = {
|
|
137
167
|
readonly kind: "conditional";
|
|
@@ -139,6 +169,7 @@ export type IrConditionalExpression = {
|
|
|
139
169
|
readonly whenTrue: IrExpression;
|
|
140
170
|
readonly whenFalse: IrExpression;
|
|
141
171
|
readonly inferredType?: IrType;
|
|
172
|
+
readonly sourceSpan?: SourceLocation;
|
|
142
173
|
};
|
|
143
174
|
export type IrAssignmentExpression = {
|
|
144
175
|
readonly kind: "assignment";
|
|
@@ -146,27 +177,97 @@ export type IrAssignmentExpression = {
|
|
|
146
177
|
readonly left: IrExpression | IrPattern;
|
|
147
178
|
readonly right: IrExpression;
|
|
148
179
|
readonly inferredType?: IrType;
|
|
180
|
+
readonly sourceSpan?: SourceLocation;
|
|
149
181
|
};
|
|
150
182
|
export type IrTemplateLiteralExpression = {
|
|
151
183
|
readonly kind: "templateLiteral";
|
|
152
184
|
readonly quasis: readonly string[];
|
|
153
185
|
readonly expressions: readonly IrExpression[];
|
|
154
186
|
readonly inferredType?: IrType;
|
|
187
|
+
readonly sourceSpan?: SourceLocation;
|
|
155
188
|
};
|
|
156
189
|
export type IrSpreadExpression = {
|
|
157
190
|
readonly kind: "spread";
|
|
158
191
|
readonly expression: IrExpression;
|
|
159
192
|
readonly inferredType?: IrType;
|
|
193
|
+
readonly sourceSpan?: SourceLocation;
|
|
160
194
|
};
|
|
161
195
|
export type IrAwaitExpression = {
|
|
162
196
|
readonly kind: "await";
|
|
163
197
|
readonly expression: IrExpression;
|
|
164
198
|
readonly inferredType?: IrType;
|
|
199
|
+
readonly sourceSpan?: SourceLocation;
|
|
165
200
|
};
|
|
166
201
|
export type IrYieldExpression = {
|
|
167
202
|
readonly kind: "yield";
|
|
168
203
|
readonly expression?: IrExpression;
|
|
169
204
|
readonly delegate: boolean;
|
|
170
205
|
readonly inferredType?: IrType;
|
|
206
|
+
readonly sourceSpan?: SourceLocation;
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Represents a numeric type narrowing (e.g., `x as int`, `<int>x`).
|
|
210
|
+
*
|
|
211
|
+
* This captures explicit numeric intent from the source code while preserving
|
|
212
|
+
* the inner expression. The proof system validates that the narrowing is sound.
|
|
213
|
+
*
|
|
214
|
+
* Examples:
|
|
215
|
+
* - `10 as int` → IrNumericNarrowingExpression(literal 10, targetKind: "Int32")
|
|
216
|
+
* - `x as byte` → IrNumericNarrowingExpression(identifier x, targetKind: "Byte")
|
|
217
|
+
*/
|
|
218
|
+
export type IrNumericNarrowingExpression = {
|
|
219
|
+
readonly kind: "numericNarrowing";
|
|
220
|
+
/** The expression being narrowed */
|
|
221
|
+
readonly expression: IrExpression;
|
|
222
|
+
/** The target CLR numeric kind */
|
|
223
|
+
readonly targetKind: NumericKind;
|
|
224
|
+
/** Type after narrowing (always a number with numericIntent set) */
|
|
225
|
+
readonly inferredType: IrType;
|
|
226
|
+
readonly sourceSpan?: SourceLocation;
|
|
227
|
+
/**
|
|
228
|
+
* Attached by the Numeric Proof Pass.
|
|
229
|
+
* If present and valid, the narrowing has been proven sound.
|
|
230
|
+
* If undefined, the proof pass hasn't run yet or couldn't prove it.
|
|
231
|
+
*/
|
|
232
|
+
readonly proof?: NumericProof;
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* Proof that an expression produces a specific numeric kind.
|
|
236
|
+
* Attached to expressions by the Numeric Proof Pass.
|
|
237
|
+
*/
|
|
238
|
+
export type NumericProof = {
|
|
239
|
+
/** The proven numeric kind */
|
|
240
|
+
readonly kind: NumericKind;
|
|
241
|
+
/** How the proof was established */
|
|
242
|
+
readonly source: ProofSource;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Describes how a numeric proof was established.
|
|
246
|
+
*/
|
|
247
|
+
export type ProofSource = {
|
|
248
|
+
readonly type: "literal";
|
|
249
|
+
readonly value: number | bigint;
|
|
250
|
+
} | {
|
|
251
|
+
readonly type: "parameter";
|
|
252
|
+
readonly name: string;
|
|
253
|
+
} | {
|
|
254
|
+
readonly type: "dotnetReturn";
|
|
255
|
+
readonly method: string;
|
|
256
|
+
readonly returnKind: NumericKind;
|
|
257
|
+
} | {
|
|
258
|
+
readonly type: "binaryOp";
|
|
259
|
+
readonly operator: string;
|
|
260
|
+
readonly leftKind: NumericKind;
|
|
261
|
+
readonly rightKind: NumericKind;
|
|
262
|
+
} | {
|
|
263
|
+
readonly type: "unaryOp";
|
|
264
|
+
readonly operator: string;
|
|
265
|
+
readonly operandKind: NumericKind;
|
|
266
|
+
} | {
|
|
267
|
+
readonly type: "narrowing";
|
|
268
|
+
readonly from: NumericKind;
|
|
269
|
+
} | {
|
|
270
|
+
readonly type: "variable";
|
|
271
|
+
readonly name: string;
|
|
171
272
|
};
|
|
172
273
|
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/ir/types/expressions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/ir/types/expressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/ir/types/guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,WAAW,GACtB,MAAM,WAAW,GAAG,YAAY,KAC/B,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/ir/types/guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,WAAW,GACtB,MAAM,WAAW,GAAG,YAAY,KAC/B,IAAI,IAAI,WAyBV,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,MAAM,WAAW,GAAG,YAAY,KAC/B,IAAI,IAAI,YAEV,CAAC"}
|
package/dist/ir/types/guards.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/ir/types/guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAgC,EACX,EAAE;IACvB,MAAM,cAAc,GAAa;QAC/B,qBAAqB;QACrB,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,iBAAiB;QACjB,sBAAsB;QACtB,qBAAqB;QACrB,iBAAiB;QACjB,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/ir/types/guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAgC,EACX,EAAE;IACvB,MAAM,cAAc,GAAa;QAC/B,qBAAqB;QACrB,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,iBAAiB;QACjB,sBAAsB;QACtB,qBAAqB;QACrB,iBAAiB;QACjB,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,0BAA0B;KAC3B,CAAC;IACF,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAgC,EACV,EAAE;IACxB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC"}
|
package/dist/ir/types/index.d.ts
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Intermediate Representation (IR) types for Tsonic compiler
|
|
4
4
|
*/
|
|
5
5
|
export type { IrModule, IrImport, IrImportSpecifier, IrExport, } from "./module.js";
|
|
6
|
-
export type { IrStatement, IrVariableDeclaration, IrVariableDeclarator, IrFunctionDeclaration, IrClassDeclaration, IrClassMember, IrMethodDeclaration, IrPropertyDeclaration, IrConstructorDeclaration, IrInterfaceDeclaration, IrEnumDeclaration, IrEnumMember, IrTypeAliasDeclaration, IrExpressionStatement, IrReturnStatement, IrIfStatement, IrWhileStatement, IrForStatement, IrForOfStatement, IrSwitchStatement, IrSwitchCase, IrThrowStatement, IrTryStatement, IrCatchClause, IrBlockStatement, IrBreakStatement, IrContinueStatement, IrEmptyStatement, } from "./statements.js";
|
|
7
|
-
export type { IrExpression, IrLiteralExpression, IrIdentifierExpression, IrArrayExpression, IrObjectExpression, IrObjectProperty, IrFunctionExpression, IrArrowFunctionExpression, IrMemberExpression, IrCallExpression, IrNewExpression, IrThisExpression, IrUpdateExpression, IrUnaryExpression, IrBinaryExpression, IrLogicalExpression, IrConditionalExpression, IrAssignmentExpression, IrTemplateLiteralExpression, IrSpreadExpression, IrAwaitExpression, IrYieldExpression, } from "./expressions.js";
|
|
6
|
+
export type { IrStatement, IrVariableDeclaration, IrVariableDeclarator, IrFunctionDeclaration, IrClassDeclaration, IrClassMember, IrMethodDeclaration, IrPropertyDeclaration, IrConstructorDeclaration, IrInterfaceDeclaration, IrEnumDeclaration, IrEnumMember, IrTypeAliasDeclaration, IrExpressionStatement, IrReturnStatement, IrIfStatement, IrWhileStatement, IrForStatement, IrForOfStatement, IrSwitchStatement, IrSwitchCase, IrThrowStatement, IrTryStatement, IrCatchClause, IrBlockStatement, IrBreakStatement, IrContinueStatement, IrEmptyStatement, IrYieldStatement, IrGeneratorReturnStatement, } from "./statements.js";
|
|
7
|
+
export type { IrExpression, IrLiteralExpression, IrIdentifierExpression, IrArrayExpression, IrObjectExpression, IrObjectProperty, IrFunctionExpression, IrArrowFunctionExpression, IrMemberExpression, IrCallExpression, IrNewExpression, IrThisExpression, IrUpdateExpression, IrUnaryExpression, IrBinaryExpression, IrLogicalExpression, IrConditionalExpression, IrAssignmentExpression, IrTemplateLiteralExpression, IrSpreadExpression, IrAwaitExpression, IrYieldExpression, IrNumericNarrowingExpression, NumericProof, ProofSource, ComputedAccessKind, } from "./expressions.js";
|
|
8
8
|
export type { IrType, IrPrimitiveType, IrReferenceType, IrTypeParameterType, IrArrayType, IrTupleType, IrFunctionType, IrObjectType, IrDictionaryType, IrUnionType, IrIntersectionType, IrLiteralType, IrAnyType, IrUnknownType, IrVoidType, IrNeverType, } from "./ir-types.js";
|
|
9
9
|
export type { IrPattern, IrIdentifierPattern, IrArrayPattern, IrObjectPattern, IrObjectPatternProperty, IrTypeParameter, IrParameter, IrInterfaceMember, IrPropertySignature, IrMethodSignature, IrAccessibility, IrBinaryOperator, IrAssignmentOperator, } from "./helpers.js";
|
|
10
10
|
export { isStatement, isExpression } from "./guards.js";
|
|
11
|
+
export type { NumericKind } from "./numeric-kind.js";
|
|
12
|
+
export { TSONIC_TO_NUMERIC_KIND, NUMERIC_KIND_TO_CSHARP, NUMERIC_RANGES, isIntegerKind, isSignedKind, getBinaryResultKind, literalFitsInKind, isWideningConversion, } from "./numeric-kind.js";
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ir/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GACT,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ir/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GACT,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,MAAM,EACN,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
|
package/dist/ir/types/index.js
CHANGED
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
*/
|
|
5
5
|
// Type guards
|
|
6
6
|
export { isStatement, isExpression } from "./guards.js";
|
|
7
|
+
export { TSONIC_TO_NUMERIC_KIND, NUMERIC_KIND_TO_CSHARP, NUMERIC_RANGES, isIntegerKind, isSignedKind, getBinaryResultKind, literalFitsInKind, isWideningConversion, } from "./numeric-kind.js";
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+GH,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIxD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
|
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
* Type system types for IR (IrType and its variants)
|
|
3
3
|
*/
|
|
4
4
|
import { IrParameter, IrInterfaceMember } from "./helpers.js";
|
|
5
|
+
import { NumericKind } from "./numeric-kind.js";
|
|
5
6
|
export type IrType = IrPrimitiveType | IrReferenceType | IrTypeParameterType | IrArrayType | IrTupleType | IrFunctionType | IrObjectType | IrDictionaryType | IrUnionType | IrIntersectionType | IrLiteralType | IrAnyType | IrUnknownType | IrVoidType | IrNeverType;
|
|
6
7
|
export type IrPrimitiveType = {
|
|
7
8
|
readonly kind: "primitiveType";
|
|
8
9
|
readonly name: "string" | "number" | "boolean" | "null" | "undefined";
|
|
10
|
+
/**
|
|
11
|
+
* For "number" primitives, captures the programmer's declared numeric intent.
|
|
12
|
+
* This is populated when the TypeScript source uses a type annotation like
|
|
13
|
+
* `int`, `long`, `byte`, etc. from @tsonic/types.
|
|
14
|
+
*
|
|
15
|
+
* undefined means generic number (emits as double).
|
|
16
|
+
* Only meaningful when name is "number".
|
|
17
|
+
*/
|
|
18
|
+
readonly numericIntent?: NumericKind;
|
|
9
19
|
};
|
|
10
20
|
export type IrReferenceType = {
|
|
11
21
|
readonly kind: "referenceType";
|
|
@@ -27,6 +37,15 @@ export type IrTypeParameterType = {
|
|
|
27
37
|
export type IrArrayType = {
|
|
28
38
|
readonly kind: "arrayType";
|
|
29
39
|
readonly elementType: IrType;
|
|
40
|
+
/**
|
|
41
|
+
* Set to "explicit" when the array type came from an explicit T[] annotation.
|
|
42
|
+
* Undefined when the type was inferred.
|
|
43
|
+
*
|
|
44
|
+
* In dotnet mode:
|
|
45
|
+
* - origin: "explicit" → emit native CLR array (T[])
|
|
46
|
+
* - origin: undefined → emit List<T>
|
|
47
|
+
*/
|
|
48
|
+
readonly origin?: "explicit";
|
|
30
49
|
};
|
|
31
50
|
/**
|
|
32
51
|
* Tuple type for fixed-length arrays with heterogeneous element types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir-types.d.ts","sourceRoot":"","sources":["../../../src/ir/types/ir-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ir-types.d.ts","sourceRoot":"","sources":["../../../src/ir/types/ir-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NumericKind - Represents all CLR numeric types that Tsonic supports.
|
|
3
|
+
*
|
|
4
|
+
* This module provides:
|
|
5
|
+
* - NumericKind type union
|
|
6
|
+
* - Mapping from Tsonic type names to CLR kinds
|
|
7
|
+
* - Range bounds for compile-time literal validation
|
|
8
|
+
* - C# binary operator promotion rules
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Represents all CLR numeric types that Tsonic supports.
|
|
12
|
+
* These map to specific C# primitive types.
|
|
13
|
+
*/
|
|
14
|
+
export type NumericKind = "SByte" | "Byte" | "Int16" | "UInt16" | "Int32" | "UInt32" | "Int64" | "UInt64" | "Single" | "Double";
|
|
15
|
+
/**
|
|
16
|
+
* Maps Tsonic type alias names to CLR numeric kinds.
|
|
17
|
+
* Used to recognize numeric intent from TypeScript annotations.
|
|
18
|
+
*/
|
|
19
|
+
export declare const TSONIC_TO_NUMERIC_KIND: ReadonlyMap<string, NumericKind>;
|
|
20
|
+
/**
|
|
21
|
+
* Maps CLR numeric kinds back to C# type names for emission.
|
|
22
|
+
*/
|
|
23
|
+
export declare const NUMERIC_KIND_TO_CSHARP: ReadonlyMap<NumericKind, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Range bounds for compile-time literal validation.
|
|
26
|
+
* Uses bigint for exact integer range checking.
|
|
27
|
+
* Float ranges are marked as 0n - they require different validation.
|
|
28
|
+
*/
|
|
29
|
+
export declare const NUMERIC_RANGES: ReadonlyMap<NumericKind, {
|
|
30
|
+
readonly min: bigint;
|
|
31
|
+
readonly max: bigint;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Check if a numeric kind is an integer type (not floating point).
|
|
35
|
+
*/
|
|
36
|
+
export declare const isIntegerKind: (kind: NumericKind) => boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Check if a numeric kind is a signed type.
|
|
39
|
+
*/
|
|
40
|
+
export declare const isSignedKind: (kind: NumericKind) => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* C# binary operator result type promotion.
|
|
43
|
+
* Returns the result type when two numeric kinds are combined with +, -, *, /, %.
|
|
44
|
+
*
|
|
45
|
+
* Rules (per C# spec):
|
|
46
|
+
* 1. If either is double, result is double
|
|
47
|
+
* 2. If either is float, result is float
|
|
48
|
+
* 3. If either is ulong, result is ulong
|
|
49
|
+
* 4. If either is long, result is long
|
|
50
|
+
* 5. If either is uint and other is sbyte/short/int, result is long
|
|
51
|
+
* 6. If either is uint, result is uint
|
|
52
|
+
* 7. Otherwise, result is int (byte, sbyte, short, ushort all promote to int)
|
|
53
|
+
*/
|
|
54
|
+
export declare const getBinaryResultKind: (left: NumericKind, right: NumericKind) => NumericKind;
|
|
55
|
+
/**
|
|
56
|
+
* Check if a literal value fits within the range of a numeric kind.
|
|
57
|
+
* Returns true if the value is valid for the target kind.
|
|
58
|
+
*
|
|
59
|
+
* For integer kinds: checks exact range
|
|
60
|
+
* For floating kinds: currently always returns true (could add precision checks)
|
|
61
|
+
*/
|
|
62
|
+
export declare const literalFitsInKind: (value: number, kind: NumericKind) => boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Check if conversion from source to target is a widening (safe) conversion.
|
|
65
|
+
* Widening never loses data; narrowing may.
|
|
66
|
+
*/
|
|
67
|
+
export declare const isWideningConversion: (source: NumericKind, target: NumericKind) => boolean;
|
|
68
|
+
//# sourceMappingURL=numeric-kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numeric-kind.d.ts","sourceRoot":"","sources":["../../../src/ir/types/numeric-kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAEb;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAanE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,CAanE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CACtC,WAAW,EACX;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAY9C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,WAAW,KAAG,OACV,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,WAAW,KAAG,OAM9B,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,WAAW,EACjB,OAAO,WAAW,KACjB,WAuBF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EACb,MAAM,WAAW,KAChB,OAoBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,WAAW,EACnB,QAAQ,WAAW,KAClB,OAiCF,CAAC"}
|