@tsonic/frontend 0.0.11 → 0.0.13

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 (125) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  3. package/dist/ir/converters/expressions/access.js +61 -1
  4. package/dist/ir/converters/expressions/access.js.map +1 -1
  5. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  6. package/dist/ir/converters/expressions/calls.js +293 -24
  7. package/dist/ir/converters/expressions/calls.js.map +1 -1
  8. package/dist/ir/converters/expressions/helpers.js +4 -4
  9. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  10. package/dist/ir/converters/expressions/literals.d.ts +14 -0
  11. package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
  12. package/dist/ir/converters/expressions/literals.js +22 -2
  13. package/dist/ir/converters/expressions/literals.js.map +1 -1
  14. package/dist/ir/converters/expressions/numeric-recovery.test.js +3 -2
  15. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
  16. package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
  17. package/dist/ir/converters/statements/helpers.js +10 -4
  18. package/dist/ir/converters/statements/helpers.js.map +1 -1
  19. package/dist/ir/expression-converter.d.ts.map +1 -1
  20. package/dist/ir/expression-converter.js +38 -5
  21. package/dist/ir/expression-converter.js.map +1 -1
  22. package/dist/ir/index.d.ts +1 -1
  23. package/dist/ir/index.d.ts.map +1 -1
  24. package/dist/ir/index.js +1 -1
  25. package/dist/ir/index.js.map +1 -1
  26. package/dist/ir/statement-converter.d.ts.map +1 -1
  27. package/dist/ir/statement-converter.js +12 -0
  28. package/dist/ir/statement-converter.js.map +1 -1
  29. package/dist/ir/type-converter/inference.d.ts.map +1 -1
  30. package/dist/ir/type-converter/inference.js +50 -7
  31. package/dist/ir/type-converter/inference.js.map +1 -1
  32. package/dist/ir/type-converter/primitives.d.ts +26 -4
  33. package/dist/ir/type-converter/primitives.d.ts.map +1 -1
  34. package/dist/ir/type-converter/primitives.js +36 -2
  35. package/dist/ir/type-converter/primitives.js.map +1 -1
  36. package/dist/ir/type-converter/references.d.ts.map +1 -1
  37. package/dist/ir/type-converter/references.js +324 -11
  38. package/dist/ir/type-converter/references.js.map +1 -1
  39. package/dist/ir/type-converter/utility-types.d.ts +93 -0
  40. package/dist/ir/type-converter/utility-types.d.ts.map +1 -0
  41. package/dist/ir/type-converter/utility-types.js +528 -0
  42. package/dist/ir/type-converter/utility-types.js.map +1 -0
  43. package/dist/ir/type-converter/utility-types.test.d.ts +10 -0
  44. package/dist/ir/type-converter/utility-types.test.d.ts.map +1 -0
  45. package/dist/ir/type-converter/utility-types.test.js +1030 -0
  46. package/dist/ir/type-converter/utility-types.test.js.map +1 -0
  47. package/dist/ir/types/expressions.d.ts +40 -2
  48. package/dist/ir/types/expressions.d.ts.map +1 -1
  49. package/dist/ir/types/helpers.d.ts +3 -1
  50. package/dist/ir/types/helpers.d.ts.map +1 -1
  51. package/dist/ir/types/index.d.ts +2 -1
  52. package/dist/ir/types/index.d.ts.map +1 -1
  53. package/dist/ir/types/index.js +2 -0
  54. package/dist/ir/types/index.js.map +1 -1
  55. package/dist/ir/types/ir-types.d.ts +69 -11
  56. package/dist/ir/types/ir-types.d.ts.map +1 -1
  57. package/dist/ir/types/numeric-helpers.d.ts +46 -0
  58. package/dist/ir/types/numeric-helpers.d.ts.map +1 -0
  59. package/dist/ir/types/numeric-helpers.js +105 -0
  60. package/dist/ir/types/numeric-helpers.js.map +1 -0
  61. package/dist/ir/types/statements.d.ts +11 -1
  62. package/dist/ir/types/statements.d.ts.map +1 -1
  63. package/dist/ir/types.d.ts +2 -2
  64. package/dist/ir/types.d.ts.map +1 -1
  65. package/dist/ir/types.js +3 -1
  66. package/dist/ir/types.js.map +1 -1
  67. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts +32 -0
  68. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -0
  69. package/dist/ir/validation/anonymous-type-lowering-pass.js +854 -0
  70. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -0
  71. package/dist/ir/validation/attribute-collection-pass.d.ts +37 -0
  72. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -0
  73. package/dist/ir/validation/attribute-collection-pass.js +282 -0
  74. package/dist/ir/validation/attribute-collection-pass.js.map +1 -0
  75. package/dist/ir/validation/attribute-collection-pass.test.d.ts +5 -0
  76. package/dist/ir/validation/attribute-collection-pass.test.d.ts.map +1 -0
  77. package/dist/ir/validation/attribute-collection-pass.test.js +215 -0
  78. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -0
  79. package/dist/ir/validation/index.d.ts +3 -0
  80. package/dist/ir/validation/index.d.ts.map +1 -1
  81. package/dist/ir/validation/index.js +3 -0
  82. package/dist/ir/validation/index.js.map +1 -1
  83. package/dist/ir/validation/numeric-coercion-pass.d.ts +77 -0
  84. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -0
  85. package/dist/ir/validation/numeric-coercion-pass.js +686 -0
  86. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -0
  87. package/dist/ir/validation/numeric-invariants.test.js +130 -14
  88. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  89. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  90. package/dist/ir/validation/numeric-proof-pass.js +68 -108
  91. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  92. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  93. package/dist/ir/validation/soundness-gate.js +23 -12
  94. package/dist/ir/validation/soundness-gate.js.map +1 -1
  95. package/dist/ir/validation/yield-lowering-pass.test.js +21 -12
  96. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  97. package/dist/program/bindings.d.ts +20 -9
  98. package/dist/program/bindings.d.ts.map +1 -1
  99. package/dist/program/bindings.js +98 -36
  100. package/dist/program/bindings.js.map +1 -1
  101. package/dist/program/bindings.test.js +3 -3
  102. package/dist/program/dependency-graph.d.ts.map +1 -1
  103. package/dist/program/dependency-graph.js +31 -5
  104. package/dist/program/dependency-graph.js.map +1 -1
  105. package/dist/resolver/import-resolution.d.ts +4 -0
  106. package/dist/resolver/import-resolution.d.ts.map +1 -1
  107. package/dist/resolver/import-resolution.js +18 -7
  108. package/dist/resolver/import-resolution.js.map +1 -1
  109. package/dist/resolver.test.js +2 -2
  110. package/dist/resolver.test.js.map +1 -1
  111. package/dist/types/diagnostic.d.ts +1 -1
  112. package/dist/types/diagnostic.d.ts.map +1 -1
  113. package/dist/types/diagnostic.js.map +1 -1
  114. package/dist/validation/generics.d.ts.map +1 -1
  115. package/dist/validation/generics.js +133 -1
  116. package/dist/validation/generics.js.map +1 -1
  117. package/dist/validation/static-safety.js +13 -0
  118. package/dist/validation/static-safety.js.map +1 -1
  119. package/dist/validation/unsupported-utility-types.d.ts +10 -8
  120. package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
  121. package/dist/validation/unsupported-utility-types.js +12 -19
  122. package/dist/validation/unsupported-utility-types.js.map +1 -1
  123. package/dist/validator.test.js +133 -28
  124. package/dist/validator.test.js.map +1 -1
  125. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-types.test.js","sourceRoot":"","sources":["../../../src/ir/type-converter/utility-types.test.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,17 @@ import { IrParameter, IrPattern, IrBinaryOperator, IrAssignmentOperator } from "
6
6
  import { IrBlockStatement } from "./statements.js";
7
7
  import { NumericKind } from "./numeric-kind.js";
8
8
  import { SourceLocation } from "../../types/diagnostic.js";
9
+ /**
10
+ * Base fields shared by all expression types.
11
+ * - inferredType: The type TypeScript infers for this expression
12
+ * - contextualType: The type expected from context (assignment target, return type, etc.)
13
+ * - sourceSpan: Source location for error reporting
14
+ */
15
+ export type IrExpressionBase = {
16
+ readonly inferredType?: IrType;
17
+ readonly contextualType?: IrType;
18
+ readonly sourceSpan?: SourceLocation;
19
+ };
9
20
  export type IrExpression = IrLiteralExpression | IrIdentifierExpression | IrArrayExpression | IrObjectExpression | IrFunctionExpression | IrArrowFunctionExpression | IrMemberExpression | IrCallExpression | IrNewExpression | IrThisExpression | IrUpdateExpression | IrUnaryExpression | IrBinaryExpression | IrLogicalExpression | IrConditionalExpression | IrAssignmentExpression | IrTemplateLiteralExpression | IrSpreadExpression | IrAwaitExpression | IrYieldExpression | IrNumericNarrowingExpression;
10
21
  export type IrLiteralExpression = {
11
22
  readonly kind: "literal";
@@ -13,6 +24,17 @@ export type IrLiteralExpression = {
13
24
  readonly raw?: string;
14
25
  readonly inferredType?: IrType;
15
26
  readonly sourceSpan?: SourceLocation;
27
+ /**
28
+ * For numeric literals, the inferred numeric kind based on lexeme form.
29
+ * - Integer literals (42, 0xFF) → "Int32"
30
+ * - Floating literals (42.0, 3.14, 1e3) → "Double"
31
+ *
32
+ * This is expression-level information, NOT type-level.
33
+ * The type system still sees this as "number" (which means double).
34
+ * This field enables the emitter to emit `42` vs `42.0` appropriately
35
+ * and the coercion pass to detect int→double conversions.
36
+ */
37
+ readonly numericIntent?: NumericKind;
16
38
  };
17
39
  export type IrIdentifierExpression = {
18
40
  readonly kind: "identifier";
@@ -27,6 +49,7 @@ export type IrIdentifierExpression = {
27
49
  readonly exportName: string;
28
50
  readonly namespace: string;
29
51
  };
52
+ readonly originalName?: string;
30
53
  };
31
54
  export type IrArrayExpression = {
32
55
  readonly kind: "array";
@@ -96,6 +119,10 @@ export type IrMemberExpression = {
96
119
  readonly assembly: string;
97
120
  readonly type: string;
98
121
  readonly member: string;
122
+ readonly parameterModifiers?: readonly {
123
+ readonly index: number;
124
+ readonly modifier: "ref" | "out" | "in";
125
+ }[];
99
126
  };
100
127
  readonly accessKind?: ComputedAccessKind;
101
128
  };
@@ -206,14 +233,25 @@ export type IrYieldExpression = {
206
233
  readonly sourceSpan?: SourceLocation;
207
234
  };
208
235
  /**
209
- * Represents a numeric type narrowing (e.g., `x as int`, `<int>x`).
236
+ * Represents an explicit numeric conversion intent (narrowing OR widening).
210
237
  *
211
238
  * This captures explicit numeric intent from the source code while preserving
212
- * the inner expression. The proof system validates that the narrowing is sound.
239
+ * the inner expression. The coercion pass uses this to distinguish explicit
240
+ * user intent from implicit conversions.
241
+ *
242
+ * SEMANTICS:
243
+ * - This node indicates **explicit user intent** to convert between numeric types
244
+ * - May be narrowing (e.g., `x as int`) or widening (e.g., `42 as number`)
245
+ * - Used by TSN5110 to exempt explicit casts from int→double coercion errors
246
+ * - The proof system validates that narrowing operations are sound
213
247
  *
214
248
  * Examples:
215
249
  * - `10 as int` → IrNumericNarrowingExpression(literal 10, targetKind: "Int32")
216
250
  * - `x as byte` → IrNumericNarrowingExpression(identifier x, targetKind: "Byte")
251
+ * - `42 as number` → IrNumericNarrowingExpression(literal 42, targetKind: "Double")
252
+ *
253
+ * NOTE: Despite the name "Narrowing", this node also handles widening conversions.
254
+ * A future rename to IrNumericConversionExpression may be appropriate.
217
255
  */
218
256
  export type IrNumericNarrowingExpression = {
219
257
  readonly kind: "numericNarrowing";
@@ -1 +1 @@
1
- {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/ir/types/expressions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/ir/types/expressions.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Supporting types (patterns, parameters, operators, accessibility, etc.)
3
3
  */
4
- import { IrType } from "./ir-types.js";
4
+ import { IrType, IrAttribute } from "./ir-types.js";
5
5
  import { IrExpression } from "./expressions.js";
6
6
  export type IrPattern = IrIdentifierPattern | IrArrayPattern | IrObjectPattern;
7
7
  export type IrIdentifierPattern = {
@@ -43,6 +43,8 @@ export type IrParameter = {
43
43
  readonly isOptional: boolean;
44
44
  readonly isRest: boolean;
45
45
  readonly passing: "value" | "ref" | "out" | "in";
46
+ /** C# attributes to emit before the parameter */
47
+ readonly attributes?: readonly IrAttribute[];
46
48
  };
47
49
  export type IrInterfaceMember = IrPropertySignature | IrMethodSignature;
48
50
  export type IrPropertySignature = {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/ir/types/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,MAAM,MAAM,SAAS,GAAG,mBAAmB,GAAG,cAAc,GAAG,eAAe,CAAC;AAE/E,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC;AAM3D,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3D,CAAC;AAMF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;CAClD,CAAC;AAMF,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAMF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GACxB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,YAAY,CAAC;AAEjB,MAAM,MAAM,oBAAoB,GAC5B,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/ir/types/helpers.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,10 @@
5
5
  export type { IrModule, IrImport, IrImportSpecifier, IrExport, } from "./module.js";
6
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
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
- export type { IrType, IrPrimitiveType, IrReferenceType, IrTypeParameterType, IrArrayType, IrTupleType, IrFunctionType, IrObjectType, IrDictionaryType, IrUnionType, IrIntersectionType, IrLiteralType, IrAnyType, IrUnknownType, IrVoidType, IrNeverType, } from "./ir-types.js";
8
+ export type { IrType, IrPrimitiveType, IrReferenceType, IrTypeParameterType, IrArrayType, IrTupleType, IrFunctionType, IrObjectType, IrDictionaryType, IrUnionType, IrIntersectionType, IrLiteralType, IrAnyType, IrUnknownType, IrVoidType, IrNeverType, IrAttribute, IrAttributeArg, } 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
11
  export type { NumericKind } from "./numeric-kind.js";
12
12
  export { TSONIC_TO_NUMERIC_KIND, NUMERIC_KIND_TO_CSHARP, NUMERIC_RANGES, isIntegerKind, isSignedKind, getBinaryResultKind, literalFitsInKind, isWideningConversion, } from "./numeric-kind.js";
13
+ export { isValidIntegerLexeme, parseBigIntFromRaw, bigIntFitsInKind, inferNumericKindFromRaw, } from "./numeric-helpers.js";
13
14
  //# 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,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"}
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,EAEX,WAAW,EACX,cAAc,GACf,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;AAG3B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
@@ -5,4 +5,6 @@
5
5
  // Type guards
6
6
  export { isStatement, isExpression } from "./guards.js";
7
7
  export { TSONIC_TO_NUMERIC_KIND, NUMERIC_KIND_TO_CSHARP, NUMERIC_RANGES, isIntegerKind, isSignedKind, getBinaryResultKind, literalFitsInKind, isWideningConversion, } from "./numeric-kind.js";
8
+ // Numeric helpers (literal type inference)
9
+ export { isValidIntegerLexeme, parseBigIntFromRaw, bigIntFitsInKind, inferNumericKindFromRaw, } from "./numeric-helpers.js";
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkHH,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;AAE3B,2CAA2C;AAC3C,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
@@ -2,20 +2,23 @@
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";
6
5
  export type IrType = IrPrimitiveType | IrReferenceType | IrTypeParameterType | IrArrayType | IrTupleType | IrFunctionType | IrObjectType | IrDictionaryType | IrUnionType | IrIntersectionType | IrLiteralType | IrAnyType | IrUnknownType | IrVoidType | IrNeverType;
6
+ /**
7
+ * Primitive types in IR.
8
+ *
9
+ * INVARIANT A: "number" always emits as C# "double". No exceptions.
10
+ * INVARIANT B: "int" always emits as C# "int". No exceptions.
11
+ *
12
+ * These are distinct types, not decorated versions of each other.
13
+ * - User writes `: number` → primitiveType(name="number") → emits "double"
14
+ * - User writes `: int` → primitiveType(name="int") → emits "int"
15
+ *
16
+ * The numeric classification of LITERALS is separate (see IrLiteralExpression.numericIntent).
17
+ * Type-level and expression-level concerns are strictly separated.
18
+ */
7
19
  export type IrPrimitiveType = {
8
20
  readonly kind: "primitiveType";
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;
21
+ readonly name: "string" | "number" | "int" | "char" | "boolean" | "null" | "undefined";
19
22
  };
20
23
  export type IrReferenceType = {
21
24
  readonly kind: "referenceType";
@@ -23,6 +26,12 @@ export type IrReferenceType = {
23
26
  readonly typeArguments?: readonly IrType[];
24
27
  /** Fully-qualified CLR type for imported types (e.g., "MyApp.models.User") */
25
28
  readonly resolvedClrType?: string;
29
+ /**
30
+ * Structural members for interfaces and type aliases that resolve to object types.
31
+ * Populated when the reference resolves to a structural type (interface, type literal, etc.)
32
+ * Used by TSN5110 to validate object literal properties against expected types.
33
+ */
34
+ readonly structuralMembers?: readonly IrInterfaceMember[];
26
35
  };
27
36
  /**
28
37
  * Type parameter reference (e.g., T in Container<T>)
@@ -108,4 +117,53 @@ export type IrVoidType = {
108
117
  export type IrNeverType = {
109
118
  readonly kind: "neverType";
110
119
  };
120
+ /**
121
+ * C# Attribute attached to a declaration (class, function, method, property, parameter)
122
+ *
123
+ * Attributes are collected from marker calls like `A.on(Class).type(Attr)` and
124
+ * attached to the corresponding IR declaration nodes.
125
+ *
126
+ * Example:
127
+ * ```typescript
128
+ * A.on(User).type(SerializableAttribute);
129
+ * A.on(User).type(DataContractAttribute, { Name: "UserDTO" });
130
+ * ```
131
+ *
132
+ * Emits to C#:
133
+ * ```csharp
134
+ * [global::System.SerializableAttribute]
135
+ * [global::System.Runtime.Serialization.DataContractAttribute(Name = "UserDTO")]
136
+ * public class User { ... }
137
+ * ```
138
+ */
139
+ export type IrAttribute = {
140
+ readonly kind: "attribute";
141
+ /** The attribute class type (e.g., SerializableAttribute) */
142
+ readonly attributeType: IrType;
143
+ /** Positional constructor arguments (string, number, boolean, typeof) */
144
+ readonly positionalArgs: readonly IrAttributeArg[];
145
+ /** Named property assignments (e.g., { Name: "UserDTO" }) */
146
+ readonly namedArgs: ReadonlyMap<string, IrAttributeArg>;
147
+ };
148
+ /**
149
+ * Attribute argument value - must be a constant expression.
150
+ * C# attributes only accept compile-time constants.
151
+ */
152
+ export type IrAttributeArg = {
153
+ readonly kind: "string";
154
+ readonly value: string;
155
+ } | {
156
+ readonly kind: "number";
157
+ readonly value: number;
158
+ } | {
159
+ readonly kind: "boolean";
160
+ readonly value: boolean;
161
+ } | {
162
+ readonly kind: "typeof";
163
+ readonly type: IrType;
164
+ } | {
165
+ readonly kind: "enum";
166
+ readonly type: IrType;
167
+ readonly member: string;
168
+ };
111
169
  //# sourceMappingURL=ir-types.d.ts.map
@@ -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;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,MAAM,MAAM,GACd,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,WAAW,GACX,WAAW,GACX,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,WAAW,GACX,kBAAkB,GAClB,aAAa,GACb,SAAS,GACT,aAAa,GACb,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IACtE;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B,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,46 @@
1
+ /**
2
+ * Numeric Helper Functions for Literal Type Inference
3
+ *
4
+ * These functions determine whether a numeric literal is an integer (Int32)
5
+ * or floating-point (Double) based on the raw lexeme.
6
+ *
7
+ * Key rule: The SOURCE TEXT determines the type, not the numeric value.
8
+ * - Integer literals (42, 0xFF, 0b101) → Int32
9
+ * - Floating literals (42.0, 3.14, 1e3) → Double
10
+ */
11
+ import { NumericKind } from "./numeric-kind.js";
12
+ /**
13
+ * Check if a raw lexeme represents a valid integer (no decimal point, no exponent).
14
+ * This is critical for correctness - we must validate the SOURCE text, not the JS number.
15
+ * Supports numeric separators (underscores) per JS/TS syntax: 1_000_000, 0xFF_FF, etc.
16
+ *
17
+ * Invalid underscore placement (rejected):
18
+ * - Double underscores: 1__2
19
+ * - Leading underscore: _123
20
+ * - Trailing underscore: 123_
21
+ * - Underscore after prefix: 0x_FF, 0b_10, 0o_77
22
+ */
23
+ export declare const isValidIntegerLexeme: (raw: string) => boolean;
24
+ /**
25
+ * Parse a raw lexeme as a BigInt for precise range checking.
26
+ * Returns undefined if parsing fails.
27
+ * Strips numeric separators (underscores) before parsing.
28
+ *
29
+ * INVARIANT: Only call this AFTER isValidIntegerLexeme(raw) returns true.
30
+ */
31
+ export declare const parseBigIntFromRaw: (raw: string) => bigint | undefined;
32
+ /**
33
+ * Check if a BigInt value fits within the range of a numeric kind.
34
+ */
35
+ export declare const bigIntFitsInKind: (value: bigint, kind: NumericKind) => boolean;
36
+ /**
37
+ * Infer the numeric kind from a raw literal lexeme.
38
+ *
39
+ * Rules:
40
+ * - Integer literals (no decimal, no exponent, fits in Int32) → Int32
41
+ * - Everything else (floating point, large integers) → Double
42
+ *
43
+ * This function is used at IR build time to attach numericIntent to literals.
44
+ */
45
+ export declare const inferNumericKindFromRaw: (raw: string) => NumericKind;
46
+ //# sourceMappingURL=numeric-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-helpers.d.ts","sourceRoot":"","sources":["../../../src/ir/types/numeric-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,OA0BlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAuBzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,MAAM,WAAW,KAAG,OAMnE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,KAAK,MAAM,KAAG,WAQrD,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Numeric Helper Functions for Literal Type Inference
3
+ *
4
+ * These functions determine whether a numeric literal is an integer (Int32)
5
+ * or floating-point (Double) based on the raw lexeme.
6
+ *
7
+ * Key rule: The SOURCE TEXT determines the type, not the numeric value.
8
+ * - Integer literals (42, 0xFF, 0b101) → Int32
9
+ * - Floating literals (42.0, 3.14, 1e3) → Double
10
+ */
11
+ import { NUMERIC_RANGES } from "./numeric-kind.js";
12
+ /**
13
+ * Check if a raw lexeme represents a valid integer (no decimal point, no exponent).
14
+ * This is critical for correctness - we must validate the SOURCE text, not the JS number.
15
+ * Supports numeric separators (underscores) per JS/TS syntax: 1_000_000, 0xFF_FF, etc.
16
+ *
17
+ * Invalid underscore placement (rejected):
18
+ * - Double underscores: 1__2
19
+ * - Leading underscore: _123
20
+ * - Trailing underscore: 123_
21
+ * - Underscore after prefix: 0x_FF, 0b_10, 0o_77
22
+ */
23
+ export const isValidIntegerLexeme = (raw) => {
24
+ // Must not contain decimal point or exponent
25
+ if (raw.includes(".") || raw.includes("e") || raw.includes("E")) {
26
+ return false;
27
+ }
28
+ // Explicit early rejection of invalid underscore placement
29
+ if (raw.includes("__")) {
30
+ return false; // Double underscore: 1__2
31
+ }
32
+ if (raw.startsWith("_") || raw.startsWith("-_")) {
33
+ return false; // Leading underscore: _123 or -_123
34
+ }
35
+ if (raw.endsWith("_")) {
36
+ return false; // Trailing underscore: 123_
37
+ }
38
+ // Underscore immediately after prefix: 0x_FF, 0b_10, 0o_77
39
+ if (/^-?0[xXoObB]_/.test(raw)) {
40
+ return false;
41
+ }
42
+ // Must be a valid integer pattern (optional sign, digits with optional underscores)
43
+ // Handle hex (0x), octal (0o), binary (0b) prefixes
44
+ return /^-?(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[oO][0-7]+(?:_[0-7]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*)$/.test(raw);
45
+ };
46
+ /**
47
+ * Parse a raw lexeme as a BigInt for precise range checking.
48
+ * Returns undefined if parsing fails.
49
+ * Strips numeric separators (underscores) before parsing.
50
+ *
51
+ * INVARIANT: Only call this AFTER isValidIntegerLexeme(raw) returns true.
52
+ */
53
+ export const parseBigIntFromRaw = (raw) => {
54
+ try {
55
+ // Step 1: Normalize - strip numeric separators (underscores)
56
+ const normalized = raw.replace(/_/g, "");
57
+ // Handle different bases
58
+ if (normalized.startsWith("0x") || normalized.startsWith("0X")) {
59
+ return BigInt(normalized);
60
+ }
61
+ if (normalized.startsWith("0o") || normalized.startsWith("0O")) {
62
+ return BigInt(normalized);
63
+ }
64
+ if (normalized.startsWith("0b") || normalized.startsWith("0B")) {
65
+ return BigInt(normalized);
66
+ }
67
+ // Handle negative numbers
68
+ if (normalized.startsWith("-")) {
69
+ return -BigInt(normalized.slice(1));
70
+ }
71
+ return BigInt(normalized);
72
+ }
73
+ catch {
74
+ return undefined;
75
+ }
76
+ };
77
+ /**
78
+ * Check if a BigInt value fits within the range of a numeric kind.
79
+ */
80
+ export const bigIntFitsInKind = (value, kind) => {
81
+ const range = NUMERIC_RANGES.get(kind);
82
+ if (range === undefined) {
83
+ return false;
84
+ }
85
+ return value >= range.min && value <= range.max;
86
+ };
87
+ /**
88
+ * Infer the numeric kind from a raw literal lexeme.
89
+ *
90
+ * Rules:
91
+ * - Integer literals (no decimal, no exponent, fits in Int32) → Int32
92
+ * - Everything else (floating point, large integers) → Double
93
+ *
94
+ * This function is used at IR build time to attach numericIntent to literals.
95
+ */
96
+ export const inferNumericKindFromRaw = (raw) => {
97
+ if (isValidIntegerLexeme(raw)) {
98
+ const bigValue = parseBigIntFromRaw(raw);
99
+ if (bigValue !== undefined && bigIntFitsInKind(bigValue, "Int32")) {
100
+ return "Int32";
101
+ }
102
+ }
103
+ return "Double";
104
+ };
105
+ //# sourceMappingURL=numeric-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-helpers.js","sourceRoot":"","sources":["../../../src/ir/types/numeric-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Statement types for IR
3
3
  */
4
- import { IrType } from "./ir-types.js";
4
+ import { IrType, IrAttribute } from "./ir-types.js";
5
5
  import { IrPattern, IrParameter, IrTypeParameter, IrAccessibility, IrInterfaceMember } from "./helpers.js";
6
6
  import { IrExpression } from "./expressions.js";
7
7
  export type IrStatement = IrVariableDeclaration | IrFunctionDeclaration | IrClassDeclaration | IrInterfaceDeclaration | IrEnumDeclaration | IrTypeAliasDeclaration | IrExpressionStatement | IrReturnStatement | IrIfStatement | IrWhileStatement | IrForStatement | IrForOfStatement | IrSwitchStatement | IrThrowStatement | IrTryStatement | IrBlockStatement | IrBreakStatement | IrContinueStatement | IrEmptyStatement | IrYieldStatement | IrGeneratorReturnStatement;
@@ -28,6 +28,8 @@ export type IrFunctionDeclaration = {
28
28
  readonly isAsync: boolean;
29
29
  readonly isGenerator: boolean;
30
30
  readonly isExported: boolean;
31
+ /** C# attributes to emit before the function declaration */
32
+ readonly attributes?: readonly IrAttribute[];
31
33
  };
32
34
  export type IrClassDeclaration = {
33
35
  readonly kind: "classDeclaration";
@@ -39,6 +41,8 @@ export type IrClassDeclaration = {
39
41
  readonly isExported: boolean;
40
42
  /** True if this class should be emitted as a C# struct instead of a class */
41
43
  readonly isStruct: boolean;
44
+ /** C# attributes to emit before the class declaration */
45
+ readonly attributes?: readonly IrAttribute[];
42
46
  };
43
47
  export type IrClassMember = IrMethodDeclaration | IrPropertyDeclaration | IrConstructorDeclaration;
44
48
  export type IrMethodDeclaration = {
@@ -56,6 +60,8 @@ export type IrMethodDeclaration = {
56
60
  readonly isOverride?: boolean;
57
61
  /** True if this method shadows a non-virtual base method (future: emit 'new' keyword) */
58
62
  readonly isShadow?: boolean;
63
+ /** C# attributes to emit before the method declaration */
64
+ readonly attributes?: readonly IrAttribute[];
59
65
  };
60
66
  export type IrPropertyDeclaration = {
61
67
  readonly kind: "propertyDeclaration";
@@ -70,6 +76,10 @@ export type IrPropertyDeclaration = {
70
76
  readonly isOverride?: boolean;
71
77
  /** True if this property shadows a non-virtual base property (future: emit 'new' keyword) */
72
78
  readonly isShadow?: boolean;
79
+ /** C# attributes to emit before the property declaration */
80
+ readonly attributes?: readonly IrAttribute[];
81
+ /** True if property must be set in object initializer (C# 11 'required' modifier) */
82
+ readonly isRequired?: boolean;
73
83
  };
74
84
  export type IrConstructorDeclaration = {
75
85
  readonly kind: "constructorDeclaration";