@tsonic/frontend 0.0.4 → 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.
Files changed (193) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/ir/builder/exports.d.ts.map +1 -1
  7. package/dist/ir/builder/exports.js +8 -6
  8. package/dist/ir/builder/exports.js.map +1 -1
  9. package/dist/ir/builder/imports.d.ts.map +1 -1
  10. package/dist/ir/builder/imports.js +6 -6
  11. package/dist/ir/builder/imports.js.map +1 -1
  12. package/dist/ir/builder/statements.d.ts +7 -1
  13. package/dist/ir/builder/statements.d.ts.map +1 -1
  14. package/dist/ir/builder/statements.js +18 -5
  15. package/dist/ir/builder/statements.js.map +1 -1
  16. package/dist/ir/builder.test.js +70 -5
  17. package/dist/ir/builder.test.js.map +1 -1
  18. package/dist/ir/converters/anonymous-synthesis.d.ts +76 -0
  19. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -0
  20. package/dist/ir/converters/anonymous-synthesis.js +307 -0
  21. package/dist/ir/converters/anonymous-synthesis.js.map +1 -0
  22. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  23. package/dist/ir/converters/expressions/access.js +65 -2
  24. package/dist/ir/converters/expressions/access.js.map +1 -1
  25. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  26. package/dist/ir/converters/expressions/calls.js +96 -1
  27. package/dist/ir/converters/expressions/calls.js.map +1 -1
  28. package/dist/ir/converters/expressions/collections.d.ts +3 -0
  29. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  30. package/dist/ir/converters/expressions/collections.js +43 -2
  31. package/dist/ir/converters/expressions/collections.js.map +1 -1
  32. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  33. package/dist/ir/converters/expressions/functions.js +52 -5
  34. package/dist/ir/converters/expressions/functions.js.map +1 -1
  35. package/dist/ir/converters/expressions/helpers.d.ts +10 -0
  36. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  37. package/dist/ir/converters/expressions/helpers.js +173 -7
  38. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  39. package/dist/ir/converters/expressions/index.d.ts +1 -1
  40. package/dist/ir/converters/expressions/index.d.ts.map +1 -1
  41. package/dist/ir/converters/expressions/index.js +1 -1
  42. package/dist/ir/converters/expressions/index.js.map +1 -1
  43. package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
  44. package/dist/ir/converters/expressions/literals.js +2 -1
  45. package/dist/ir/converters/expressions/literals.js.map +1 -1
  46. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +14 -0
  47. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -0
  48. package/dist/ir/converters/expressions/numeric-recovery.test.js +286 -0
  49. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -0
  50. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  51. package/dist/ir/converters/expressions/operators.js +16 -2
  52. package/dist/ir/converters/expressions/operators.js.map +1 -1
  53. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  54. package/dist/ir/converters/expressions/other.js +4 -1
  55. package/dist/ir/converters/expressions/other.js.map +1 -1
  56. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  57. package/dist/ir/converters/statements/control/conditionals.js +4 -6
  58. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  59. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  60. package/dist/ir/converters/statements/control/loops.js +6 -5
  61. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  62. package/dist/ir/converters/statements/declarations/interfaces.d.ts +4 -3
  63. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  64. package/dist/ir/converters/statements/declarations/interfaces.js +55 -1
  65. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  66. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +8 -3
  67. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  68. package/dist/ir/converters/statements/declarations/type-aliases.js +12 -2
  69. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  70. package/dist/ir/converters/synthetic-types.d.ts +38 -0
  71. package/dist/ir/converters/synthetic-types.d.ts.map +1 -0
  72. package/dist/ir/converters/synthetic-types.js +123 -0
  73. package/dist/ir/converters/synthetic-types.js.map +1 -0
  74. package/dist/ir/expression-converter.d.ts.map +1 -1
  75. package/dist/ir/expression-converter.js +81 -9
  76. package/dist/ir/expression-converter.js.map +1 -1
  77. package/dist/ir/statement-converter.d.ts +16 -1
  78. package/dist/ir/statement-converter.d.ts.map +1 -1
  79. package/dist/ir/statement-converter.js +32 -0
  80. package/dist/ir/statement-converter.js.map +1 -1
  81. package/dist/ir/type-converter/arrays.d.ts.map +1 -1
  82. package/dist/ir/type-converter/arrays.js +1 -0
  83. package/dist/ir/type-converter/arrays.js.map +1 -1
  84. package/dist/ir/type-converter/index.d.ts +1 -1
  85. package/dist/ir/type-converter/index.d.ts.map +1 -1
  86. package/dist/ir/type-converter/index.js +1 -1
  87. package/dist/ir/type-converter/index.js.map +1 -1
  88. package/dist/ir/type-converter/inference.d.ts +12 -0
  89. package/dist/ir/type-converter/inference.d.ts.map +1 -1
  90. package/dist/ir/type-converter/inference.js +172 -23
  91. package/dist/ir/type-converter/inference.js.map +1 -1
  92. package/dist/ir/type-converter/literals.d.ts.map +1 -1
  93. package/dist/ir/type-converter/literals.js +2 -1
  94. package/dist/ir/type-converter/literals.js.map +1 -1
  95. package/dist/ir/type-converter/objects.d.ts.map +1 -1
  96. package/dist/ir/type-converter/objects.js +2 -1
  97. package/dist/ir/type-converter/objects.js.map +1 -1
  98. package/dist/ir/type-converter/orchestrator.d.ts +2 -2
  99. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -1
  100. package/dist/ir/type-converter/orchestrator.js +55 -1
  101. package/dist/ir/type-converter/orchestrator.js.map +1 -1
  102. package/dist/ir/type-converter/references.d.ts.map +1 -1
  103. package/dist/ir/type-converter/references.js +14 -18
  104. package/dist/ir/type-converter/references.js.map +1 -1
  105. package/dist/ir/type-converter.d.ts +1 -1
  106. package/dist/ir/type-converter.d.ts.map +1 -1
  107. package/dist/ir/type-converter.js +1 -1
  108. package/dist/ir/type-converter.js.map +1 -1
  109. package/dist/ir/types/expressions.d.ts +110 -1
  110. package/dist/ir/types/expressions.d.ts.map +1 -1
  111. package/dist/ir/types/guards.d.ts.map +1 -1
  112. package/dist/ir/types/guards.js +2 -0
  113. package/dist/ir/types/guards.js.map +1 -1
  114. package/dist/ir/types/index.d.ts +5 -3
  115. package/dist/ir/types/index.d.ts.map +1 -1
  116. package/dist/ir/types/index.js +1 -0
  117. package/dist/ir/types/index.js.map +1 -1
  118. package/dist/ir/types/ir-types.d.ts +33 -1
  119. package/dist/ir/types/ir-types.d.ts.map +1 -1
  120. package/dist/ir/types/numeric-kind.d.ts +68 -0
  121. package/dist/ir/types/numeric-kind.d.ts.map +1 -0
  122. package/dist/ir/types/numeric-kind.js +170 -0
  123. package/dist/ir/types/numeric-kind.js.map +1 -0
  124. package/dist/ir/types/statements.d.ts +38 -1
  125. package/dist/ir/types/statements.d.ts.map +1 -1
  126. package/dist/ir/types.d.ts +2 -1
  127. package/dist/ir/types.d.ts.map +1 -1
  128. package/dist/ir/types.js +2 -0
  129. package/dist/ir/types.js.map +1 -1
  130. package/dist/ir/validation/index.d.ts +7 -0
  131. package/dist/ir/validation/index.d.ts.map +1 -0
  132. package/dist/ir/validation/index.js +7 -0
  133. package/dist/ir/validation/index.js.map +1 -0
  134. package/dist/ir/validation/numeric-invariants.test.d.ts +15 -0
  135. package/dist/ir/validation/numeric-invariants.test.d.ts.map +1 -0
  136. package/dist/ir/validation/numeric-invariants.test.js +598 -0
  137. package/dist/ir/validation/numeric-invariants.test.js.map +1 -0
  138. package/dist/ir/validation/numeric-proof-pass.d.ts +37 -0
  139. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -0
  140. package/dist/ir/validation/numeric-proof-pass.js +889 -0
  141. package/dist/ir/validation/numeric-proof-pass.js.map +1 -0
  142. package/dist/ir/validation/soundness-gate.d.ts +26 -0
  143. package/dist/ir/validation/soundness-gate.d.ts.map +1 -0
  144. package/dist/ir/validation/soundness-gate.js +551 -0
  145. package/dist/ir/validation/soundness-gate.js.map +1 -0
  146. package/dist/ir/validation/soundness-gate.test.d.ts +13 -0
  147. package/dist/ir/validation/soundness-gate.test.d.ts.map +1 -0
  148. package/dist/ir/validation/soundness-gate.test.js +315 -0
  149. package/dist/ir/validation/soundness-gate.test.js.map +1 -0
  150. package/dist/ir/validation/yield-lowering-pass.d.ts +40 -0
  151. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -0
  152. package/dist/ir/validation/yield-lowering-pass.js +548 -0
  153. package/dist/ir/validation/yield-lowering-pass.js.map +1 -0
  154. package/dist/ir/validation/yield-lowering-pass.test.d.ts +12 -0
  155. package/dist/ir/validation/yield-lowering-pass.test.d.ts.map +1 -0
  156. package/dist/ir/validation/yield-lowering-pass.test.js +761 -0
  157. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -0
  158. package/dist/program/bindings.d.ts +5 -0
  159. package/dist/program/bindings.d.ts.map +1 -1
  160. package/dist/program/bindings.js +12 -1
  161. package/dist/program/bindings.js.map +1 -1
  162. package/dist/program/dependency-graph.d.ts +3 -0
  163. package/dist/program/dependency-graph.d.ts.map +1 -1
  164. package/dist/program/dependency-graph.js +28 -4
  165. package/dist/program/dependency-graph.js.map +1 -1
  166. package/dist/program/index.d.ts +1 -1
  167. package/dist/program/index.d.ts.map +1 -1
  168. package/dist/program/index.js.map +1 -1
  169. package/dist/program.d.ts +1 -0
  170. package/dist/program.d.ts.map +1 -1
  171. package/dist/program.js.map +1 -1
  172. package/dist/resolver/clr-bindings-resolver.d.ts +9 -0
  173. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  174. package/dist/resolver/clr-bindings-resolver.js +52 -3
  175. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  176. package/dist/types/diagnostic.d.ts +1 -1
  177. package/dist/types/diagnostic.d.ts.map +1 -1
  178. package/dist/types/diagnostic.js.map +1 -1
  179. package/dist/validation/static-safety.d.ts +6 -1
  180. package/dist/validation/static-safety.d.ts.map +1 -1
  181. package/dist/validation/static-safety.js +144 -36
  182. package/dist/validation/static-safety.js.map +1 -1
  183. package/dist/validation/unsupported-utility-types.d.ts +38 -0
  184. package/dist/validation/unsupported-utility-types.d.ts.map +1 -0
  185. package/dist/validation/unsupported-utility-types.js +53 -0
  186. package/dist/validation/unsupported-utility-types.js.map +1 -0
  187. package/dist/validator.test.js +304 -14
  188. package/dist/validator.test.js.map +1 -1
  189. package/package.json +1 -1
  190. package/dist/types/parameter-modifiers.d.ts +0 -55
  191. package/dist/types/parameter-modifiers.d.ts.map +0 -1
  192. package/dist/types/parameter-modifiers.js +0 -148
  193. package/dist/types/parameter-modifiers.js.map +0 -1
@@ -2,29 +2,195 @@
2
2
  * Helper functions for expression conversion
3
3
  */
4
4
  import * as ts from "typescript";
5
+ import { TSONIC_TO_NUMERIC_KIND } from "../../types.js";
5
6
  import { convertType, convertTsTypeToIr } from "../../type-converter.js";
7
+ import { getSourceLocation } from "../../../program/diagnostics.js";
8
+ /**
9
+ * Get source span for a TypeScript node.
10
+ * Returns a SourceLocation that can be used for diagnostics.
11
+ */
12
+ export const getSourceSpan = (node) => {
13
+ try {
14
+ const sourceFile = node.getSourceFile();
15
+ if (!sourceFile) {
16
+ return undefined;
17
+ }
18
+ return getSourceLocation(sourceFile, node.getStart(sourceFile), node.getWidth(sourceFile));
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ };
24
+ /**
25
+ * Check if a TypeScript type is a numeric alias from @tsonic/types.
26
+ * Returns true for types like `int`, `byte`, `float`, etc.
27
+ *
28
+ * This is used to prevent numeric intent from leaking through contextual typing.
29
+ * When an expression like `a + b` is inside `(a + b) as int`, TypeScript's
30
+ * contextual type for the binary is `int`. We must NOT use this contextual type
31
+ * for inferredType because it would make the binary appear to have numeric intent
32
+ * when we haven't proven it does.
33
+ */
34
+ const isNumericAliasType = (tsType) => {
35
+ // Check if it's a type alias that resolves to a numeric kind
36
+ const symbol = tsType.aliasSymbol ?? tsType.getSymbol();
37
+ if (symbol) {
38
+ const name = symbol.getName();
39
+ if (TSONIC_TO_NUMERIC_KIND.has(name)) {
40
+ return true;
41
+ }
42
+ }
43
+ return false;
44
+ };
45
+ /**
46
+ * Attempt to recover numeric intent from a property declaration's type annotation.
47
+ *
48
+ * When TypeScript normalizes `int` to `number`, we can still find the original
49
+ * annotation in the property's declaration AST.
50
+ *
51
+ * GUARDRAILS:
52
+ * - Only accepts clean TypeReferenceNode with simple identifier (not qualified names)
53
+ * - Only returns if identifier is in TSONIC_TO_NUMERIC_KIND vocabulary
54
+ * - Rejects unions, intersections, or complex types
55
+ * - CONSERVATIVE: If multiple declarations have conflicting numeric annotations,
56
+ * returns undefined to avoid incorrect recovery from partial declaration merges
57
+ *
58
+ * NOTE: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
59
+ * not package-path based. Do not add special casing for @tsonic/types paths.
60
+ */
61
+ const tryRecoverNumericReferenceFromPropertyDecl = (propSymbol) => {
62
+ const declarations = propSymbol.declarations ?? [];
63
+ // Collect all numeric annotations found across declarations
64
+ const recoveredNames = new Set();
65
+ for (const decl of declarations) {
66
+ // Only handle PropertySignature and PropertyDeclaration with type annotation
67
+ if ((ts.isPropertySignature(decl) || ts.isPropertyDeclaration(decl)) &&
68
+ decl.type) {
69
+ const typeNode = decl.type;
70
+ // STRICT: Only accept TypeReferenceNode with simple identifier
71
+ if (ts.isTypeReferenceNode(typeNode) &&
72
+ ts.isIdentifier(typeNode.typeName)) {
73
+ const name = typeNode.typeName.text;
74
+ // Only if name is in numeric vocabulary
75
+ if (TSONIC_TO_NUMERIC_KIND.has(name)) {
76
+ recoveredNames.add(name);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ // CONSERVATIVE: Only return if exactly one numeric annotation was found
82
+ // If conflicting (e.g., one says `int`, another says `long`), return undefined
83
+ if (recoveredNames.size === 1) {
84
+ const names = [...recoveredNames];
85
+ const name = names[0];
86
+ if (name !== undefined) {
87
+ return { kind: "referenceType", name };
88
+ }
89
+ }
90
+ return undefined;
91
+ };
92
+ /**
93
+ * Attempt to recover numeric intent from a method/function's return type annotation.
94
+ *
95
+ * For calls like arr.indexOf("x"), if the declaration says `indexOf(...): int`,
96
+ * we recover "int" even if checker normalizes to "number".
97
+ *
98
+ * STRICT: Only handles common declaration types, not arrow functions or function types.
99
+ * CONSERVATIVE: If signature has multiple declarations with conflicting return types,
100
+ * returns undefined to avoid incorrect recovery.
101
+ *
102
+ * NOTE: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
103
+ * not package-path based. Do not add special casing for @tsonic/types paths.
104
+ */
105
+ const tryRecoverNumericReferenceFromSignatureReturnDecl = (signature) => {
106
+ const decl = signature.declaration;
107
+ if (!decl)
108
+ return undefined;
109
+ // Get the return type annotation from the declaration
110
+ // STRICT: Only accept method/function declarations, not arrow functions
111
+ const returnTypeNode = ts.isMethodSignature(decl) ||
112
+ ts.isMethodDeclaration(decl) ||
113
+ ts.isFunctionDeclaration(decl) ||
114
+ ts.isCallSignatureDeclaration(decl)
115
+ ? decl.type
116
+ : undefined;
117
+ if (!returnTypeNode)
118
+ return undefined;
119
+ // STRICT: Only accept TypeReferenceNode with simple identifier
120
+ if (ts.isTypeReferenceNode(returnTypeNode) &&
121
+ ts.isIdentifier(returnTypeNode.typeName)) {
122
+ const name = returnTypeNode.typeName.text;
123
+ if (TSONIC_TO_NUMERIC_KIND.has(name)) {
124
+ return { kind: "referenceType", name };
125
+ }
126
+ }
127
+ return undefined;
128
+ };
6
129
  /**
7
130
  * Helper to get inferred type from TypeScript node
8
131
  * Prefers contextual type (from assignment target, return position, etc.)
9
132
  * over literal type to handle cases like empty arrays `[]` correctly.
133
+ *
134
+ * IMPORTANT: For numeric types, we do NOT use contextual type. This prevents
135
+ * numeric intent from leaking through TypeScript's contextual typing.
136
+ * The `numericNarrowing` IR node is the ONLY source of numeric intent.
10
137
  */
11
138
  export const getInferredType = (node, checker) => {
12
139
  try {
13
- // Try contextual type first (from assignment target, parameter, return, etc.)
140
+ // Get the actual type first
141
+ const actualType = checker.getTypeAtLocation(node);
142
+ // Try contextual type (from assignment target, parameter, return, etc.)
14
143
  // This is essential for empty arrays: [] has literal type never[] but contextual
15
144
  // type Player[] when assigned to a Player[] variable
16
145
  const expr = ts.isExpression(node) ? node : undefined;
17
146
  const contextualType = expr ? checker.getContextualType(expr) : undefined;
18
- const tsType = contextualType ?? checker.getTypeAtLocation(node);
147
+ // CRITICAL: Do NOT use contextual type if it's a numeric alias.
148
+ // This prevents numeric intent from leaking into inner expressions.
149
+ // Example: (a + b) as int - the binary should NOT have int intent from contextual typing.
150
+ // Only the numericNarrowing node should carry the intent.
151
+ const tsType = contextualType && !isNumericAliasType(contextualType)
152
+ ? contextualType
153
+ : actualType;
19
154
  // First try typeToTypeNode for simple types
20
155
  const typeNode = checker.typeToTypeNode(tsType, node, ts.NodeBuilderFlags.None);
21
156
  // If typeNode conversion works, use convertType
22
- if (typeNode) {
23
- return convertType(typeNode, checker);
157
+ const result = typeNode
158
+ ? convertType(typeNode, checker)
159
+ : // Fallback: use convertTsTypeToIr directly for complex types
160
+ // This handles intersection types like List_1$instance<T> that can't be converted to TypeNodes
161
+ convertTsTypeToIr(tsType, checker);
162
+ // DECLARATION RECOVERY: If checker returned primitive "number", try to recover
163
+ // numeric intent from the declaration AST. TypeScript sometimes normalizes type
164
+ // aliases like `int` to plain `number`, losing the alias information.
165
+ //
166
+ // IMPORTANT: Recovery is intentionally VOCABULARY-BASED (TSONIC_TO_NUMERIC_KIND),
167
+ // not package-path based. We recognize `int`, `long`, `byte`, etc. by NAME only.
168
+ // Do not add special casing for "@tsonic/types" or other package paths.
169
+ if (result?.kind === "primitiveType" && result.name === "number") {
170
+ // For property access like arr.length, check the property declaration
171
+ if (ts.isPropertyAccessExpression(node)) {
172
+ const objType = checker.getTypeAtLocation(node.expression);
173
+ const propName = node.name.text;
174
+ const propSymbol = checker.getPropertyOfType(objType, propName);
175
+ if (propSymbol) {
176
+ const recovered = tryRecoverNumericReferenceFromPropertyDecl(propSymbol);
177
+ if (recovered) {
178
+ return recovered; // Return referenceType("int") instead of primitiveType("number")
179
+ }
180
+ }
181
+ }
182
+ // For call expressions like arr.indexOf("x"), check the signature return type
183
+ if (ts.isCallExpression(node)) {
184
+ const signature = checker.getResolvedSignature(node);
185
+ if (signature) {
186
+ const recovered = tryRecoverNumericReferenceFromSignatureReturnDecl(signature);
187
+ if (recovered) {
188
+ return recovered;
189
+ }
190
+ }
191
+ }
24
192
  }
25
- // Fallback: use convertTsTypeToIr directly for complex types
26
- // This handles intersection types like List_1$instance<T> that can't be converted to TypeNodes
27
- return convertTsTypeToIr(tsType, checker);
193
+ return result;
28
194
  }
29
195
  catch {
30
196
  // If type extraction fails, return undefined
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Expression converters barrel exports
3
3
  */
4
- export { getInferredType, extractTypeArguments, checkIfRequiresSpecialization, convertBinaryOperator, isAssignmentOperator, } from "./helpers.js";
4
+ export { getInferredType, getSourceSpan, extractTypeArguments, checkIfRequiresSpecialization, convertBinaryOperator, isAssignmentOperator, } from "./helpers.js";
5
5
  export { convertLiteral } from "./literals.js";
6
6
  export { convertArrayLiteral, convertObjectLiteral } from "./collections.js";
7
7
  export { convertMemberExpression } from "./access.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Expression converters barrel exports
3
3
  */
4
4
  // Helpers
5
- export { getInferredType, extractTypeArguments, checkIfRequiresSpecialization, convertBinaryOperator, isAssignmentOperator, } from "./helpers.js";
5
+ export { getInferredType, getSourceSpan, extractTypeArguments, checkIfRequiresSpecialization, convertBinaryOperator, isAssignmentOperator, } from "./helpers.js";
6
6
  // Literals
7
7
  export { convertLiteral } from "./literals.js";
8
8
  // Collections
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU;AACV,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzE,YAAY;AACZ,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,YAAY;AACZ,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,QAAQ;AACR,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU;AACV,OAAO,EACL,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzE,YAAY;AACZ,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,YAAY;AACZ,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,QAAQ;AACR,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,cAAc,EAC1C,SAAS,EAAE,CAAC,WAAW,KACtB,mBAOF,CAAC"}
1
+ {"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,cAAc,EAC1C,SAAS,EAAE,CAAC,WAAW,KACtB,mBAQF,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Literal expression converters
3
3
  */
4
4
  import * as ts from "typescript";
5
- import { getInferredType } from "./helpers.js";
5
+ import { getInferredType, getSourceSpan } from "./helpers.js";
6
6
  /**
7
7
  * Convert string or numeric literal
8
8
  */
@@ -12,6 +12,7 @@ export const convertLiteral = (node, checker) => {
12
12
  value: ts.isStringLiteral(node) ? node.text : Number(node.text),
13
13
  raw: node.getText(),
14
14
  inferredType: getInferredType(node, checker),
15
+ sourceSpan: getSourceSpan(node),
15
16
  };
16
17
  };
17
18
  //# sourceMappingURL=literals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAA0C,EAC1C,OAAuB,EACF,EAAE;IACvB,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/D,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;QACnB,YAAY,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;KAC7C,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAA0C,EAC1C,OAAuB,EACF,EAAE;IACvB,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/D,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;QACnB,YAAY,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;QAC5C,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Tests for Declaration-Based Numeric Intent Recovery
3
+ *
4
+ * When TypeScript normalizes type aliases like `int` to plain `number`,
5
+ * we recover the original numeric intent from the declaration AST.
6
+ *
7
+ * These tests verify:
8
+ * - Property access recovery (arr.length → int)
9
+ * - Call return type recovery (arr.indexOf() → int)
10
+ * - Negative cases (plain number stays number)
11
+ * - Guardrails (unions, complex types are NOT recovered)
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=numeric-recovery.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-recovery.test.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/numeric-recovery.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Tests for Declaration-Based Numeric Intent Recovery
3
+ *
4
+ * When TypeScript normalizes type aliases like `int` to plain `number`,
5
+ * we recover the original numeric intent from the declaration AST.
6
+ *
7
+ * These tests verify:
8
+ * - Property access recovery (arr.length → int)
9
+ * - Call return type recovery (arr.indexOf() → int)
10
+ * - Negative cases (plain number stays number)
11
+ * - Guardrails (unions, complex types are NOT recovered)
12
+ */
13
+ import { describe, it } from "mocha";
14
+ import { expect } from "chai";
15
+ import * as path from "path";
16
+ import * as fs from "fs";
17
+ import { fileURLToPath } from "url";
18
+ import { compile, runNumericProofPass } from "../../../index.js";
19
+ import { buildIr } from "../../builder.js";
20
+ const __filename = fileURLToPath(import.meta.url);
21
+ const __dirname = path.dirname(__filename);
22
+ // From dist/ir/converters/expressions/ go up to packages/frontend/, then up 2 more to monorepo root
23
+ const monorepoRoot = path.resolve(__dirname, "../../../../../..");
24
+ const jsGlobalsPath = path.join(monorepoRoot, "node_modules/@tsonic/js-globals");
25
+ const typesPath = path.join(monorepoRoot, "node_modules/@tsonic/types");
26
+ /**
27
+ * Helper to compile TypeScript code with js-globals and extract IR
28
+ */
29
+ const compileWithJsGlobals = (code) => {
30
+ const tmpDir = `/tmp/numeric-recovery-test-${Date.now()}`;
31
+ fs.mkdirSync(tmpDir, { recursive: true });
32
+ const filePath = path.join(tmpDir, "test.ts");
33
+ fs.writeFileSync(filePath, code);
34
+ const compileResult = compile([filePath], {
35
+ projectRoot: monorepoRoot,
36
+ sourceRoot: tmpDir,
37
+ rootNamespace: "Test",
38
+ typeRoots: [jsGlobalsPath, typesPath],
39
+ });
40
+ if (!compileResult.ok) {
41
+ const errorMsg = compileResult.error.diagnostics
42
+ .map((d) => `${d.code}: ${d.message}`)
43
+ .join("\n");
44
+ return { modules: [], ok: false, error: errorMsg };
45
+ }
46
+ const irResult = buildIr(compileResult.value.program, {
47
+ sourceRoot: tmpDir,
48
+ rootNamespace: "Test",
49
+ });
50
+ if (!irResult.ok) {
51
+ const errorMsg = irResult.error
52
+ .map((d) => `${d.code}: ${d.message}`)
53
+ .join("\n");
54
+ return { modules: [], ok: false, error: errorMsg };
55
+ }
56
+ return { modules: irResult.value, ok: true };
57
+ };
58
+ /**
59
+ * Helper to find an expression in the IR by predicate
60
+ */
61
+ const findExpression = (modules, predicate) => {
62
+ const visitExpression = (expr) => {
63
+ if (predicate(expr))
64
+ return expr;
65
+ // Recursively check nested expressions
66
+ if (expr.kind === "memberAccess") {
67
+ const result = visitExpression(expr.object);
68
+ if (result)
69
+ return result;
70
+ // Also check computed property if it's an expression
71
+ if (typeof expr.property !== "string") {
72
+ const propResult = visitExpression(expr.property);
73
+ if (propResult)
74
+ return propResult;
75
+ }
76
+ }
77
+ if (expr.kind === "call") {
78
+ const result = visitExpression(expr.callee);
79
+ if (result)
80
+ return result;
81
+ for (const arg of expr.arguments) {
82
+ if (arg.kind !== "spread") {
83
+ const argResult = visitExpression(arg);
84
+ if (argResult)
85
+ return argResult;
86
+ }
87
+ }
88
+ }
89
+ if (expr.kind === "binary") {
90
+ const leftResult = visitExpression(expr.left);
91
+ if (leftResult)
92
+ return leftResult;
93
+ const rightResult = visitExpression(expr.right);
94
+ if (rightResult)
95
+ return rightResult;
96
+ }
97
+ return undefined;
98
+ };
99
+ for (const module of modules) {
100
+ for (const stmt of module.body) {
101
+ if (stmt.kind === "variableDeclaration") {
102
+ for (const decl of stmt.declarations) {
103
+ if (decl.initializer) {
104
+ const result = visitExpression(decl.initializer);
105
+ if (result)
106
+ return result;
107
+ }
108
+ }
109
+ }
110
+ if (stmt.kind === "functionDeclaration" && stmt.body) {
111
+ for (const bodyStmt of stmt.body.statements) {
112
+ if (bodyStmt.kind === "returnStatement" && bodyStmt.expression) {
113
+ const result = visitExpression(bodyStmt.expression);
114
+ if (result)
115
+ return result;
116
+ }
117
+ if (bodyStmt.kind === "variableDeclaration") {
118
+ for (const decl of bodyStmt.declarations) {
119
+ if (decl.initializer) {
120
+ const result = visitExpression(decl.initializer);
121
+ if (result)
122
+ return result;
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ return undefined;
131
+ };
132
+ describe("Declaration-Based Numeric Intent Recovery", () => {
133
+ describe("Property Access Recovery", () => {
134
+ it("should recover 'int' from arr.length property declaration", () => {
135
+ const code = `
136
+ export function getLen(arr: string[]): number {
137
+ return arr.length;
138
+ }
139
+ `;
140
+ const { modules, ok } = compileWithJsGlobals(code);
141
+ expect(ok).to.be.true;
142
+ // Find arr.length member expression
143
+ const lengthExpr = findExpression(modules, (expr) => expr.kind === "memberAccess" && expr.property === "length");
144
+ expect(lengthExpr).to.not.be.undefined;
145
+ expect(lengthExpr?.inferredType).to.deep.equal({
146
+ kind: "referenceType",
147
+ name: "int",
148
+ });
149
+ });
150
+ it("should recover 'int' from string.length property declaration", () => {
151
+ const code = `
152
+ export function getLen(s: string): number {
153
+ return s.length;
154
+ }
155
+ `;
156
+ const { modules, ok } = compileWithJsGlobals(code);
157
+ expect(ok).to.be.true;
158
+ // Find s.length member expression
159
+ const lengthExpr = findExpression(modules, (expr) => expr.kind === "memberAccess" && expr.property === "length");
160
+ expect(lengthExpr).to.not.be.undefined;
161
+ expect(lengthExpr?.inferredType).to.deep.equal({
162
+ kind: "referenceType",
163
+ name: "int",
164
+ });
165
+ });
166
+ });
167
+ describe("Call Return Type Recovery", () => {
168
+ it("should recover 'int' from arr.indexOf() return type", () => {
169
+ const code = `
170
+ export function findIndex(arr: string[], item: string): number {
171
+ return arr.indexOf(item);
172
+ }
173
+ `;
174
+ const { modules, ok } = compileWithJsGlobals(code);
175
+ expect(ok).to.be.true;
176
+ // Find arr.indexOf() call expression
177
+ const indexOfCall = findExpression(modules, (expr) => {
178
+ if (expr.kind !== "call")
179
+ return false;
180
+ if (expr.callee.kind !== "memberAccess")
181
+ return false;
182
+ return expr.callee.property === "indexOf";
183
+ });
184
+ expect(indexOfCall).to.not.be.undefined;
185
+ expect(indexOfCall?.inferredType).to.deep.equal({
186
+ kind: "referenceType",
187
+ name: "int",
188
+ });
189
+ });
190
+ it("should recover 'int' from arr.lastIndexOf() return type", () => {
191
+ const code = `
192
+ export function findLast(arr: string[], item: string): number {
193
+ return arr.lastIndexOf(item);
194
+ }
195
+ `;
196
+ const { modules, ok } = compileWithJsGlobals(code);
197
+ expect(ok).to.be.true;
198
+ // Find arr.lastIndexOf() call expression
199
+ const lastIndexOfCall = findExpression(modules, (expr) => {
200
+ if (expr.kind !== "call")
201
+ return false;
202
+ if (expr.callee.kind !== "memberAccess")
203
+ return false;
204
+ return expr.callee.property === "lastIndexOf";
205
+ });
206
+ expect(lastIndexOfCall).to.not.be.undefined;
207
+ expect(lastIndexOfCall?.inferredType).to.deep.equal({
208
+ kind: "referenceType",
209
+ name: "int",
210
+ });
211
+ });
212
+ });
213
+ describe("Intent Honored at Source Site", () => {
214
+ it("should recover 'int' even when assigned to number variable", () => {
215
+ const code = `
216
+ export function assignToNumber(arr: string[]): void {
217
+ const len: number = arr.length;
218
+ }
219
+ `;
220
+ const { modules, ok } = compileWithJsGlobals(code);
221
+ expect(ok).to.be.true;
222
+ // Find arr.length member expression
223
+ const lengthExpr = findExpression(modules, (expr) => expr.kind === "memberAccess" && expr.property === "length");
224
+ expect(lengthExpr).to.not.be.undefined;
225
+ // The arr.length expression itself should have int, regardless of target
226
+ expect(lengthExpr?.inferredType).to.deep.equal({
227
+ kind: "referenceType",
228
+ name: "int",
229
+ });
230
+ });
231
+ });
232
+ describe("End-to-End Integration: arr[arr.length - 1]", () => {
233
+ it("should pass numeric proof validation for arr[arr.length - 1] pattern", () => {
234
+ // This is the specific regression guard for the original issue.
235
+ // The pattern arr[arr.length - 1] must:
236
+ // 1. Compile successfully
237
+ // 2. Build IR with arr.length having int intent
238
+ // 3. Pass numeric proof pass without TSN5107
239
+ const code = `
240
+ export function getLast(arr: string[]): string {
241
+ return arr[arr.length - 1];
242
+ }
243
+ `;
244
+ const { modules, ok, error } = compileWithJsGlobals(code);
245
+ expect(ok, `Compile failed: ${error}`).to.be.true;
246
+ expect(modules.length).to.be.greaterThan(0);
247
+ // Run numeric proof pass - this should NOT produce TSN5107
248
+ const proofResult = runNumericProofPass(modules);
249
+ // Check for TSN5107 specifically (cannot prove int for array index)
250
+ const tsn5107Errors = proofResult.diagnostics.filter((d) => d.code === "TSN5107");
251
+ expect(tsn5107Errors.length, `Expected no TSN5107 errors but got: ${tsn5107Errors.map((d) => d.message).join("; ")}`).to.equal(0);
252
+ // The proof pass should succeed (or have only non-blocking diagnostics)
253
+ expect(proofResult.ok, `Proof pass failed: ${proofResult.diagnostics.map((d) => `${d.code}: ${d.message}`).join("; ")}`).to.be.true;
254
+ });
255
+ it("should pass numeric proof for arr.indexOf() as index", () => {
256
+ // Another common pattern: using indexOf result as array index
257
+ const code = `
258
+ export function getAtIndex(arr: string[], search: string): string {
259
+ const idx = arr.indexOf(search);
260
+ return arr[idx];
261
+ }
262
+ `;
263
+ const { modules, ok, error } = compileWithJsGlobals(code);
264
+ expect(ok, `Compile failed: ${error}`).to.be.true;
265
+ const proofResult = runNumericProofPass(modules);
266
+ const tsn5107Errors = proofResult.diagnostics.filter((d) => d.code === "TSN5107");
267
+ expect(tsn5107Errors.length, `Expected no TSN5107 errors but got: ${tsn5107Errors.map((d) => d.message).join("; ")}`).to.equal(0);
268
+ expect(proofResult.ok).to.be.true;
269
+ });
270
+ it("should pass numeric proof for length-based arithmetic", () => {
271
+ // Pattern: arr.length in subtraction (common for last element access)
272
+ const code = `
273
+ export function getSecondLast(arr: string[]): string {
274
+ return arr[arr.length - 2];
275
+ }
276
+ `;
277
+ const { modules, ok, error } = compileWithJsGlobals(code);
278
+ expect(ok, `Compile failed: ${error}`).to.be.true;
279
+ const proofResult = runNumericProofPass(modules);
280
+ const tsn5107Errors = proofResult.diagnostics.filter((d) => d.code === "TSN5107");
281
+ expect(tsn5107Errors.length, `Expected no TSN5107 errors but got: ${tsn5107Errors.map((d) => d.message).join("; ")}`).to.equal(0);
282
+ expect(proofResult.ok).to.be.true;
283
+ });
284
+ });
285
+ });
286
+ //# sourceMappingURL=numeric-recovery.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-recovery.test.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/numeric-recovery.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/operators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AAQxB;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,gBAAgB,EACzB,SAAS,EAAE,CAAC,WAAW,KACtB,YAoCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,EAAE,CAAC,qBAAqB,EAC9B,SAAS,EAAE,CAAC,WAAW,KACtB,iBAAiB,GAAG,kBAyCtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC,qBAAqB,EAC1D,SAAS,EAAE,CAAC,WAAW,KACtB,kBA4BF,CAAC"}
1
+ {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/operators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AASxB;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,gBAAgB,EACzB,SAAS,EAAE,CAAC,WAAW,KACtB,YA4CF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,EAAE,CAAC,qBAAqB,EAC9B,SAAS,EAAE,CAAC,WAAW,KACtB,iBAAiB,GAAG,kBA4CtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC,qBAAqB,EAC1D,SAAS,EAAE,CAAC,WAAW,KACtB,kBA+BF,CAAC"}