@tsonic/frontend 0.0.13 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/graph/builder.js +2 -2
- package/dist/graph/builder.js.map +1 -1
- package/dist/graph/extraction/imports.js +1 -1
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +1 -1
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/ir/binding/index.d.ts +134 -0
- package/dist/ir/binding/index.d.ts.map +1 -0
- package/dist/ir/binding/index.js +725 -0
- package/dist/ir/binding/index.js.map +1 -0
- package/dist/ir/binding-resolution.test.js +193 -52
- package/dist/ir/binding-resolution.test.js.map +1 -1
- package/dist/ir/builder/exports.d.ts +20 -2
- package/dist/ir/builder/exports.d.ts.map +1 -1
- package/dist/ir/builder/exports.js +65 -6
- package/dist/ir/builder/exports.js.map +1 -1
- package/dist/ir/builder/imports.d.ts +9 -5
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +20 -31
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder/orchestrator.d.ts +10 -1
- package/dist/ir/builder/orchestrator.d.ts.map +1 -1
- package/dist/ir/builder/orchestrator.js +25 -14
- package/dist/ir/builder/orchestrator.js.map +1 -1
- package/dist/ir/builder/statements.d.ts +7 -1
- package/dist/ir/builder/statements.d.ts.map +1 -1
- package/dist/ir/builder/statements.js +7 -2
- package/dist/ir/builder/statements.js.map +1 -1
- package/dist/ir/builder/types.d.ts +3 -0
- package/dist/ir/builder/types.d.ts.map +1 -1
- package/dist/ir/builder/validation.d.ts +4 -1
- package/dist/ir/builder/validation.d.ts.map +1 -1
- package/dist/ir/builder/validation.js +37 -37
- package/dist/ir/builder/validation.js.map +1 -1
- package/dist/ir/builder.test.js +54 -111
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/clr-type-mappings.d.ts +42 -0
- package/dist/ir/clr-type-mappings.d.ts.map +1 -0
- package/dist/ir/clr-type-mappings.js +139 -0
- package/dist/ir/clr-type-mappings.js.map +1 -0
- package/dist/ir/converters/anonymous-synthesis.d.ts +30 -8
- package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.js +46 -55
- package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
- package/dist/ir/converters/context.d.ts +40 -0
- package/dist/ir/converters/context.d.ts.map +1 -0
- package/dist/ir/converters/context.js +24 -0
- package/dist/ir/converters/context.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +6 -1
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +239 -15
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls.d.ts +24 -3
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +450 -385
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/collections.d.ts +16 -3
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
- package/dist/ir/converters/expressions/collections.js +300 -46
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.d.ts +10 -3
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
- package/dist/ir/converters/expressions/functions.js +140 -32
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.d.ts +22 -23
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +242 -239
- 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 +12 -12
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
- package/dist/ir/converters/expressions/literals.js +62 -17
- package/dist/ir/converters/expressions/literals.js.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +5 -2
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.js +62 -49
- package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
- package/dist/ir/converters/expressions/operators.d.ts +13 -4
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
- package/dist/ir/converters/expressions/operators.js +179 -33
- package/dist/ir/converters/expressions/operators.js.map +1 -1
- package/dist/ir/converters/expressions/other.d.ts +11 -3
- package/dist/ir/converters/expressions/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +26 -10
- package/dist/ir/converters/expressions/other.js.map +1 -1
- package/dist/ir/converters/statements/control/blocks.d.ts +8 -2
- package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/blocks.js +7 -2
- package/dist/ir/converters/statements/control/blocks.js.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.d.ts +14 -4
- package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.js +19 -10
- package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.d.ts +10 -3
- package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.js +13 -7
- package/dist/ir/converters/statements/control/exceptions.js.map +1 -1
- package/dist/ir/converters/statements/control/loops.d.ts +16 -5
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/loops.js +25 -15
- package/dist/ir/converters/statements/control/loops.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.js +11 -7
- package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.js +63 -11
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js +60 -40
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +6 -2
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.js +49 -50
- package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts +9 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.js +119 -16
- package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.js +8 -2
- package/dist/ir/converters/statements/declarations/enums.js.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.js +11 -6
- package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
- package/dist/ir/converters/statements/declarations/index.d.ts +3 -1
- package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/index.js +3 -1
- package/dist/ir/converters/statements/declarations/index.js.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.js +26 -20
- package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.d.ts +72 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.js +92 -0
- package/dist/ir/converters/statements/declarations/registry.js.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js +6 -4
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts +11 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.js +123 -19
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
- package/dist/ir/converters/statements/declarations.d.ts +4 -1
- package/dist/ir/converters/statements/declarations.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations.js +4 -1
- package/dist/ir/converters/statements/declarations.js.map +1 -1
- package/dist/ir/converters/statements/helpers.d.ts +4 -3
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
- package/dist/ir/converters/statements/helpers.js +55 -31
- package/dist/ir/converters/statements/helpers.js.map +1 -1
- package/dist/ir/converters/statements/index.d.ts +1 -1
- package/dist/ir/converters/statements/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/index.js +2 -1
- package/dist/ir/converters/statements/index.js.map +1 -1
- package/dist/ir/expression-converter.d.ts +10 -3
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +150 -56
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/hierarchical-bindings-e2e.test.js +10 -6
- package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
- package/dist/ir/index.d.ts +5 -0
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js +5 -0
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/no-ts-type-inference.test.d.ts +17 -0
- package/dist/ir/no-ts-type-inference.test.d.ts.map +1 -0
- package/dist/ir/no-ts-type-inference.test.js +171 -0
- package/dist/ir/no-ts-type-inference.test.js.map +1 -0
- package/dist/ir/program-context.d.ts +74 -0
- package/dist/ir/program-context.d.ts.map +1 -0
- package/dist/ir/program-context.js +286 -0
- package/dist/ir/program-context.js.map +1 -0
- package/dist/ir/statement-converter.d.ts +14 -4
- package/dist/ir/statement-converter.d.ts.map +1 -1
- package/dist/ir/statement-converter.js +31 -21
- package/dist/ir/statement-converter.js.map +1 -1
- package/dist/ir/syntax/binding-patterns.d.ts +22 -0
- package/dist/ir/syntax/binding-patterns.d.ts.map +1 -0
- package/dist/ir/syntax/binding-patterns.js +92 -0
- package/dist/ir/syntax/binding-patterns.js.map +1 -0
- package/dist/ir/thisarg-inference.test.d.ts +8 -0
- package/dist/ir/thisarg-inference.test.d.ts.map +1 -0
- package/dist/ir/thisarg-inference.test.js +94 -0
- package/dist/ir/thisarg-inference.test.js.map +1 -0
- package/dist/ir/type-converter.d.ts +5 -2
- package/dist/ir/type-converter.d.ts.map +1 -1
- package/dist/ir/type-converter.js +5 -2
- package/dist/ir/type-converter.js.map +1 -1
- package/dist/ir/type-system/core.d.ts +29 -0
- package/dist/ir/type-system/core.d.ts.map +1 -0
- package/dist/ir/type-system/core.js +456 -0
- package/dist/ir/type-system/core.js.map +1 -0
- package/dist/ir/type-system/index.d.ts +21 -0
- package/dist/ir/type-system/index.d.ts.map +1 -0
- package/dist/ir/type-system/index.js +43 -0
- package/dist/ir/type-system/index.js.map +1 -0
- package/dist/ir/type-system/internal/handle-types.d.ts +98 -0
- package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/handle-types.js +13 -0
- package/dist/ir/type-system/internal/handle-types.js.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts +66 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.js +301 -0
- package/dist/ir/type-system/internal/nominal-env.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/arrays.js +2 -2
- package/dist/ir/type-system/internal/type-converter/arrays.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts +17 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.js +16 -0
- package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts +14 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.js +66 -0
- package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.js +11 -0
- package/dist/ir/type-system/internal/type-converter/index.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts +37 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.js +32 -0
- package/dist/ir/type-system/internal/type-converter/inference.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.d.ts +1 -1
- package/dist/ir/type-system/internal/type-converter/literals.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/literals.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts +20 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/objects.js +56 -6
- package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.js +63 -21
- package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts +12 -0
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/patterns.js +22 -6
- package/dist/ir/type-system/internal/type-converter/patterns.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.d.ts +1 -1
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/references.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/references.js +551 -0
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts +15 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js +22 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.d.ts +23 -36
- package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js +879 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.js +398 -120
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter.d.ts +9 -0
- package/dist/ir/type-system/internal/type-converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter.js +9 -0
- package/dist/ir/type-system/internal/type-converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-registry.d.ts +107 -0
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-registry.js +534 -0
- package/dist/ir/type-system/internal/type-registry.js.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts +92 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.js +222 -0
- package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +44 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js +1176 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/index.d.ts +26 -0
- package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/index.js +30 -0
- package/dist/ir/type-system/internal/universe/index.js.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts +115 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.js +181 -0
- package/dist/ir/type-system/internal/universe/resolution.js.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts +62 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js +91 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/types.d.ts +436 -0
- package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/types.js +69 -0
- package/dist/ir/type-system/internal/universe/types.js.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts +70 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js +319 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -0
- package/dist/ir/type-system/type-system.d.ts +617 -0
- package/dist/ir/type-system/type-system.d.ts.map +1 -0
- package/dist/ir/type-system/type-system.js +2420 -0
- package/dist/ir/type-system/type-system.js.map +1 -0
- package/dist/ir/type-system/types.d.ts +176 -0
- package/dist/ir/type-system/types.d.ts.map +1 -0
- package/dist/ir/type-system/types.js +80 -0
- package/dist/ir/type-system/types.js.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.d.ts +44 -0
- package/dist/ir/type-universe/assembly-catalog.d.ts.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.js +532 -0
- package/dist/ir/type-universe/assembly-catalog.js.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.test.d.ts +7 -0
- package/dist/ir/type-universe/assembly-catalog.test.d.ts.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.test.js +105 -0
- package/dist/ir/type-universe/assembly-catalog.test.js.map +1 -0
- package/dist/ir/type-universe/index.d.ts +19 -0
- package/dist/ir/type-universe/index.d.ts.map +1 -0
- package/dist/ir/type-universe/index.js +21 -0
- package/dist/ir/type-universe/index.js.map +1 -0
- package/dist/ir/type-universe/types.d.ts +436 -0
- package/dist/ir/type-universe/types.d.ts.map +1 -0
- package/dist/ir/type-universe/types.js +69 -0
- package/dist/ir/type-universe/types.js.map +1 -0
- package/dist/ir/type-universe/unified-catalog.d.ts +70 -0
- package/dist/ir/type-universe/unified-catalog.d.ts.map +1 -0
- package/dist/ir/type-universe/unified-catalog.js +319 -0
- package/dist/ir/type-universe/unified-catalog.js.map +1 -0
- package/dist/ir/type-universe/unified-catalog.test.d.ts +7 -0
- package/dist/ir/type-universe/unified-catalog.test.d.ts.map +1 -0
- package/dist/ir/type-universe/unified-catalog.test.js +135 -0
- package/dist/ir/type-universe/unified-catalog.test.js.map +1 -0
- package/dist/ir/types/expressions.d.ts +74 -2
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/types/helpers.d.ts +22 -2
- package/dist/ir/types/helpers.d.ts.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-substitution.d.ts +144 -0
- package/dist/ir/types/ir-substitution.d.ts.map +1 -0
- package/dist/ir/types/ir-substitution.js +569 -0
- package/dist/ir/types/ir-substitution.js.map +1 -0
- package/dist/ir/types/ir-types.d.ts +9 -3
- package/dist/ir/types/ir-types.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.d.ts +2 -1
- package/dist/ir/types/numeric-helpers.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.js +9 -3
- package/dist/ir/types/numeric-helpers.js.map +1 -1
- package/dist/ir/types/statements.d.ts +13 -1
- package/dist/ir/types/statements.d.ts.map +1 -1
- package/dist/ir/types.d.ts +1 -1
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.js +165 -7
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts +28 -0
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js +416 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.js +40 -6
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +43 -36
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/index.d.ts +3 -0
- package/dist/ir/validation/index.d.ts.map +1 -1
- package/dist/ir/validation/index.js +3 -0
- package/dist/ir/validation/index.js.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.d.ts +22 -16
- package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.js +159 -51
- package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
- package/dist/ir/validation/numeric-invariants.test.js +72 -108
- package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.js +71 -23
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts +24 -0
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js +417 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -0
- package/dist/ir/validation/soundness-gate.d.ts +11 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +42 -10
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +19 -2
- package/dist/ir/validation/soundness-gate.test.js.map +1 -1
- package/dist/ir/validation/virtual-marking-pass.d.ts +16 -0
- package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -0
- package/dist/ir/validation/virtual-marking-pass.js +77 -0
- package/dist/ir/validation/virtual-marking-pass.js.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.test.js +2 -2
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
- package/dist/program/bindings.d.ts +28 -0
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +204 -2
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/bindings.test.js +30 -0
- package/dist/program/bindings.test.js.map +1 -1
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +251 -4
- package/dist/program/creation.js.map +1 -1
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +25 -25
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/program/diagnostics.d.ts.map +1 -1
- package/dist/program/diagnostics.js +6 -0
- package/dist/program/diagnostics.js.map +1 -1
- package/dist/program/index.d.ts +1 -1
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/types.d.ts +8 -8
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +1 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +90 -34
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/import-resolution.d.ts +16 -1
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +29 -12
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver/naming.d.ts +1 -1
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +13 -2
- package/dist/resolver/naming.js.map +1 -1
- package/dist/resolver.test.js +4 -0
- package/dist/resolver.test.js.map +1 -1
- package/dist/symbol-table/builder.d.ts +3 -1
- package/dist/symbol-table/builder.d.ts.map +1 -1
- package/dist/symbol-table/builder.js +9 -8
- package/dist/symbol-table/builder.js.map +1 -1
- package/dist/symbol-table/types.d.ts +2 -2
- package/dist/symbol-table/types.d.ts.map +1 -1
- package/dist/types/diagnostic.d.ts +12 -2
- package/dist/types/diagnostic.d.ts.map +1 -1
- package/dist/types/diagnostic.js +5 -1
- package/dist/types/diagnostic.js.map +1 -1
- package/dist/validation/extension-methods.d.ts +17 -0
- package/dist/validation/extension-methods.d.ts.map +1 -0
- package/dist/validation/extension-methods.js +133 -0
- package/dist/validation/extension-methods.js.map +1 -0
- package/dist/validation/generics.d.ts.map +1 -1
- package/dist/validation/generics.js +1 -129
- package/dist/validation/generics.js.map +1 -1
- package/dist/validation/imports.js +1 -1
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/orchestrator.d.ts.map +1 -1
- package/dist/validation/orchestrator.js +2 -0
- package/dist/validation/orchestrator.js.map +1 -1
- package/dist/validation/static-safety.d.ts +1 -0
- package/dist/validation/static-safety.d.ts.map +1 -1
- package/dist/validation/static-safety.js +366 -96
- package/dist/validation/static-safety.js.map +1 -1
- package/dist/validator.test.js +77 -1
- package/dist/validator.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/ir/type-converter/arrays.d.ts +0 -10
- package/dist/ir/type-converter/arrays.d.ts.map +0 -1
- package/dist/ir/type-converter/arrays.js.map +0 -1
- package/dist/ir/type-converter/converter.d.ts +0 -6
- package/dist/ir/type-converter/converter.d.ts.map +0 -1
- package/dist/ir/type-converter/converter.js +0 -6
- package/dist/ir/type-converter/converter.js.map +0 -1
- package/dist/ir/type-converter/functions.d.ts +0 -10
- package/dist/ir/type-converter/functions.d.ts.map +0 -1
- package/dist/ir/type-converter/functions.js +0 -15
- package/dist/ir/type-converter/functions.js.map +0 -1
- package/dist/ir/type-converter/index.d.ts +0 -7
- package/dist/ir/type-converter/index.d.ts.map +0 -1
- package/dist/ir/type-converter/index.js +0 -7
- package/dist/ir/type-converter/index.js.map +0 -1
- package/dist/ir/type-converter/inference.d.ts +0 -32
- package/dist/ir/type-converter/inference.d.ts.map +0 -1
- package/dist/ir/type-converter/inference.js +0 -297
- package/dist/ir/type-converter/inference.js.map +0 -1
- package/dist/ir/type-converter/literals.d.ts.map +0 -1
- package/dist/ir/type-converter/literals.js.map +0 -1
- package/dist/ir/type-converter/objects.d.ts +0 -16
- package/dist/ir/type-converter/objects.d.ts.map +0 -1
- package/dist/ir/type-converter/objects.js.map +0 -1
- package/dist/ir/type-converter/orchestrator.d.ts.map +0 -1
- package/dist/ir/type-converter/orchestrator.js.map +0 -1
- package/dist/ir/type-converter/patterns.d.ts +0 -10
- package/dist/ir/type-converter/patterns.d.ts.map +0 -1
- package/dist/ir/type-converter/patterns.js.map +0 -1
- package/dist/ir/type-converter/primitives.d.ts.map +0 -1
- package/dist/ir/type-converter/primitives.js.map +0 -1
- package/dist/ir/type-converter/references.d.ts.map +0 -1
- package/dist/ir/type-converter/references.js +0 -371
- package/dist/ir/type-converter/references.js.map +0 -1
- package/dist/ir/type-converter/unions-intersections.d.ts +0 -14
- package/dist/ir/type-converter/unions-intersections.d.ts.map +0 -1
- package/dist/ir/type-converter/unions-intersections.js +0 -22
- package/dist/ir/type-converter/unions-intersections.js.map +0 -1
- package/dist/ir/type-converter/utility-types.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.js +0 -528
- package/dist/ir/type-converter/utility-types.js.map +0 -1
- package/dist/ir/type-converter/utility-types.test.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.test.js.map +0 -1
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.js +0 -0
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +0 -0
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.d.ts +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Expression converters barrel exports
|
|
3
3
|
*/
|
|
4
4
|
// Helpers
|
|
5
|
-
export {
|
|
5
|
+
export { getSourceSpan, extractTypeArguments, checkIfRequiresSpecialization, convertBinaryOperator, isAssignmentOperator, deriveIdentifierType, } 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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU;AACV,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,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,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Literal expression converters
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* - Integer literals (42, 0xFF) → Int32
|
|
6
|
-
* - Floating literals (42.0, 3.14, 1e3) → Double
|
|
4
|
+
* DETERMINISTIC TYPING: Literal types are derived from lexeme form, NOT TypeScript.
|
|
7
5
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
6
|
+
* Numeric literals:
|
|
7
|
+
* - Integer literals (42, 0xFF) → Int32 → inferredType: int
|
|
8
|
+
* - Floating literals (42.0, 3.14, 1e3) → Double → inferredType: double
|
|
9
|
+
*
|
|
10
|
+
* String literals → inferredType: string
|
|
11
|
+
* Boolean literals → inferredType: boolean (handled elsewhere)
|
|
13
12
|
*/
|
|
14
13
|
import * as ts from "typescript";
|
|
15
14
|
import { IrLiteralExpression } from "../../types.js";
|
|
15
|
+
import type { ProgramContext } from "../../program-context.js";
|
|
16
16
|
/**
|
|
17
17
|
* Convert string or numeric literal
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* DETERMINISTIC TYPING: inferredType is derived from the literal value itself,
|
|
20
|
+
* NOT from TypeScript's type checker. This ensures consistent typing regardless
|
|
21
|
+
* of contextual type.
|
|
22
22
|
*/
|
|
23
|
-
export declare const convertLiteral: (node: ts.StringLiteral | ts.NumericLiteral,
|
|
23
|
+
export declare const convertLiteral: (node: ts.StringLiteral | ts.NumericLiteral, _ctx: ProgramContext) => IrLiteralExpression;
|
|
24
24
|
//# sourceMappingURL=literals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAU,MAAM,gBAAgB,CAAC;AAI7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AA+B/D;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,cAAc,EAC1C,MAAM,cAAc,KACnB,mBA2BF,CAAC"}
|
|
@@ -1,38 +1,83 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Literal expression converters
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* - Integer literals (42, 0xFF) → Int32
|
|
6
|
-
* - Floating literals (42.0, 3.14, 1e3) → Double
|
|
4
|
+
* DETERMINISTIC TYPING: Literal types are derived from lexeme form, NOT TypeScript.
|
|
7
5
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
6
|
+
* Numeric literals:
|
|
7
|
+
* - Integer literals (42, 0xFF) → Int32 → inferredType: int
|
|
8
|
+
* - Floating literals (42.0, 3.14, 1e3) → Double → inferredType: double
|
|
9
|
+
*
|
|
10
|
+
* String literals → inferredType: string
|
|
11
|
+
* Boolean literals → inferredType: boolean (handled elsewhere)
|
|
13
12
|
*/
|
|
14
13
|
import * as ts from "typescript";
|
|
15
|
-
import {
|
|
14
|
+
import { getSourceSpan } from "./helpers.js";
|
|
16
15
|
import { inferNumericKindFromRaw } from "../../types/numeric-helpers.js";
|
|
16
|
+
/**
|
|
17
|
+
* Derive inferredType from numericIntent (deterministic, no TypeScript).
|
|
18
|
+
*/
|
|
19
|
+
const deriveTypeFromNumericIntent = (numericIntent) => {
|
|
20
|
+
if (numericIntent === "Int32") {
|
|
21
|
+
return { kind: "referenceType", name: "int" };
|
|
22
|
+
}
|
|
23
|
+
else if (numericIntent === "Double") {
|
|
24
|
+
return { kind: "primitiveType", name: "number" };
|
|
25
|
+
}
|
|
26
|
+
else if (numericIntent === "Int64") {
|
|
27
|
+
return { kind: "referenceType", name: "long" };
|
|
28
|
+
}
|
|
29
|
+
else if (numericIntent === "Single") {
|
|
30
|
+
return { kind: "referenceType", name: "float" };
|
|
31
|
+
}
|
|
32
|
+
else if (numericIntent === "Byte") {
|
|
33
|
+
return { kind: "referenceType", name: "byte" };
|
|
34
|
+
}
|
|
35
|
+
else if (numericIntent === "Int16") {
|
|
36
|
+
return { kind: "referenceType", name: "short" };
|
|
37
|
+
}
|
|
38
|
+
else if (numericIntent === "UInt32") {
|
|
39
|
+
return { kind: "referenceType", name: "uint" };
|
|
40
|
+
}
|
|
41
|
+
else if (numericIntent === "UInt64") {
|
|
42
|
+
return { kind: "referenceType", name: "ulong" };
|
|
43
|
+
}
|
|
44
|
+
else if (numericIntent === "UInt16") {
|
|
45
|
+
return { kind: "referenceType", name: "ushort" };
|
|
46
|
+
}
|
|
47
|
+
else if (numericIntent === "SByte") {
|
|
48
|
+
return { kind: "referenceType", name: "sbyte" };
|
|
49
|
+
}
|
|
50
|
+
// Default to double for unknown
|
|
51
|
+
return { kind: "primitiveType", name: "number" };
|
|
52
|
+
};
|
|
17
53
|
/**
|
|
18
54
|
* Convert string or numeric literal
|
|
19
55
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
56
|
+
* DETERMINISTIC TYPING: inferredType is derived from the literal value itself,
|
|
57
|
+
* NOT from TypeScript's type checker. This ensures consistent typing regardless
|
|
58
|
+
* of contextual type.
|
|
23
59
|
*/
|
|
24
|
-
export const convertLiteral = (node,
|
|
60
|
+
export const convertLiteral = (node, _ctx) => {
|
|
25
61
|
const raw = node.getText();
|
|
26
62
|
const value = ts.isStringLiteral(node) ? node.text : Number(node.text);
|
|
63
|
+
// For numeric literals, derive type from lexeme form
|
|
64
|
+
const numericIntent = typeof value === "number" ? inferNumericKindFromRaw(raw) : undefined;
|
|
65
|
+
// Derive inferredType deterministically (no TypeScript)
|
|
66
|
+
// - String literals → string
|
|
67
|
+
// - Numeric literals with numericIntent → derived from intent
|
|
68
|
+
// - Unknown → undefined (let caller handle)
|
|
69
|
+
const inferredType = typeof value === "string"
|
|
70
|
+
? { kind: "primitiveType", name: "string" }
|
|
71
|
+
: numericIntent
|
|
72
|
+
? deriveTypeFromNumericIntent(numericIntent)
|
|
73
|
+
: undefined;
|
|
27
74
|
return {
|
|
28
75
|
kind: "literal",
|
|
29
76
|
value,
|
|
30
77
|
raw,
|
|
31
|
-
inferredType
|
|
78
|
+
inferredType,
|
|
32
79
|
sourceSpan: getSourceSpan(node),
|
|
33
|
-
|
|
34
|
-
// This is expression-level, not type-level
|
|
35
|
-
numericIntent: typeof value === "number" ? inferNumericKindFromRaw(raw) : undefined,
|
|
80
|
+
numericIntent,
|
|
36
81
|
};
|
|
37
82
|
};
|
|
38
83
|
//# sourceMappingURL=literals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/literals.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
* we recover the original numeric intent from the declaration AST.
|
|
6
6
|
*
|
|
7
7
|
* These tests verify:
|
|
8
|
-
* - Property access recovery (arr.length → int)
|
|
9
|
-
* - Call return type recovery (
|
|
8
|
+
* - Property access recovery (arr.length, string.length → int)
|
|
9
|
+
* - Call return type recovery (string.indexOf() → int)
|
|
10
10
|
* - Negative cases (plain number stays number)
|
|
11
11
|
* - Guardrails (unions, complex types are NOT recovered)
|
|
12
|
+
*
|
|
13
|
+
* Note: .NET arrays don't have indexOf method (use Array.IndexOf or LINQ).
|
|
14
|
+
* String has indexOf from System.String.
|
|
12
15
|
*/
|
|
13
16
|
export {};
|
|
14
17
|
//# sourceMappingURL=numeric-recovery.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric-recovery.test.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/numeric-recovery.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"numeric-recovery.test.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/numeric-recovery.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
* we recover the original numeric intent from the declaration AST.
|
|
6
6
|
*
|
|
7
7
|
* These tests verify:
|
|
8
|
-
* - Property access recovery (arr.length → int)
|
|
9
|
-
* - Call return type recovery (
|
|
8
|
+
* - Property access recovery (arr.length, string.length → int)
|
|
9
|
+
* - Call return type recovery (string.indexOf() → int)
|
|
10
10
|
* - Negative cases (plain number stays number)
|
|
11
11
|
* - Guardrails (unions, complex types are NOT recovered)
|
|
12
|
+
*
|
|
13
|
+
* Note: .NET arrays don't have indexOf method (use Array.IndexOf or LINQ).
|
|
14
|
+
* String has indexOf from System.String.
|
|
12
15
|
*/
|
|
13
16
|
import { describe, it } from "mocha";
|
|
14
17
|
import { expect } from "chai";
|
|
@@ -22,12 +25,11 @@ const __dirname = path.dirname(__filename);
|
|
|
22
25
|
// From dist/ir/converters/expressions/ go up to packages/frontend/, then up 2 more to monorepo root
|
|
23
26
|
const monorepoRoot = path.resolve(__dirname, "../../../../../..");
|
|
24
27
|
const globalsPath = path.join(monorepoRoot, "node_modules/@tsonic/globals");
|
|
25
|
-
const jsGlobalsPath = path.join(monorepoRoot, "node_modules/@tsonic/js-globals");
|
|
26
28
|
const corePath = path.join(monorepoRoot, "node_modules/@tsonic/core");
|
|
27
29
|
/**
|
|
28
|
-
* Helper to compile TypeScript code with
|
|
30
|
+
* Helper to compile TypeScript code with globals and extract IR
|
|
29
31
|
*/
|
|
30
|
-
const
|
|
32
|
+
const compileWithGlobals = (code) => {
|
|
31
33
|
const tmpDir = `/tmp/numeric-recovery-test-${Date.now()}`;
|
|
32
34
|
fs.mkdirSync(tmpDir, { recursive: true });
|
|
33
35
|
const filePath = path.join(tmpDir, "test.ts");
|
|
@@ -36,7 +38,7 @@ const compileWithJsGlobals = (code) => {
|
|
|
36
38
|
projectRoot: monorepoRoot,
|
|
37
39
|
sourceRoot: tmpDir,
|
|
38
40
|
rootNamespace: "Test",
|
|
39
|
-
typeRoots: [globalsPath,
|
|
41
|
+
typeRoots: [globalsPath, corePath],
|
|
40
42
|
});
|
|
41
43
|
if (!compileResult.ok) {
|
|
42
44
|
const errorMsg = compileResult.error.diagnostics
|
|
@@ -130,7 +132,8 @@ const findExpression = (modules, predicate) => {
|
|
|
130
132
|
}
|
|
131
133
|
return undefined;
|
|
132
134
|
};
|
|
133
|
-
describe("Declaration-Based Numeric Intent Recovery", ()
|
|
135
|
+
describe("Declaration-Based Numeric Intent Recovery", function () {
|
|
136
|
+
this.timeout(10000);
|
|
134
137
|
describe("Property Access Recovery", () => {
|
|
135
138
|
it("should recover 'int' from arr.length property declaration", () => {
|
|
136
139
|
const code = `
|
|
@@ -138,13 +141,15 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
138
141
|
return arr.length;
|
|
139
142
|
}
|
|
140
143
|
`;
|
|
141
|
-
const { modules, ok } =
|
|
144
|
+
const { modules, ok } = compileWithGlobals(code);
|
|
142
145
|
expect(ok).to.be.true;
|
|
143
146
|
// Find arr.length member expression
|
|
144
147
|
const lengthExpr = findExpression(modules, (expr) => expr.kind === "memberAccess" && expr.property === "length");
|
|
145
148
|
expect(lengthExpr).to.not.be.undefined;
|
|
149
|
+
// CLR numeric types are represented as primitiveType in IR
|
|
150
|
+
// (see primitives.ts: "When user writes `: int`, it becomes primitiveType(name='int')")
|
|
146
151
|
expect(lengthExpr?.inferredType).to.deep.equal({
|
|
147
|
-
kind: "
|
|
152
|
+
kind: "primitiveType",
|
|
148
153
|
name: "int",
|
|
149
154
|
});
|
|
150
155
|
});
|
|
@@ -154,27 +159,30 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
154
159
|
return s.length;
|
|
155
160
|
}
|
|
156
161
|
`;
|
|
157
|
-
const { modules, ok } =
|
|
162
|
+
const { modules, ok } = compileWithGlobals(code);
|
|
158
163
|
expect(ok).to.be.true;
|
|
159
164
|
// Find s.length member expression
|
|
160
165
|
const lengthExpr = findExpression(modules, (expr) => expr.kind === "memberAccess" && expr.property === "length");
|
|
161
166
|
expect(lengthExpr).to.not.be.undefined;
|
|
167
|
+
// CLR numeric types are represented as primitiveType in IR
|
|
162
168
|
expect(lengthExpr?.inferredType).to.deep.equal({
|
|
163
|
-
kind: "
|
|
169
|
+
kind: "primitiveType",
|
|
164
170
|
name: "int",
|
|
165
171
|
});
|
|
166
172
|
});
|
|
167
173
|
});
|
|
168
174
|
describe("Call Return Type Recovery", () => {
|
|
169
|
-
it("should recover 'int' from
|
|
175
|
+
it("should recover 'int' from string.indexOf() return type", () => {
|
|
176
|
+
// Note: Using string.indexOf() because .NET arrays don't have indexOf method
|
|
177
|
+
// (use Array.IndexOf static method or LINQ instead)
|
|
170
178
|
const code = `
|
|
171
|
-
export function findIndex(
|
|
172
|
-
return
|
|
179
|
+
export function findIndex(str: string, search: string): number {
|
|
180
|
+
return str.indexOf(search);
|
|
173
181
|
}
|
|
174
182
|
`;
|
|
175
|
-
const { modules, ok } =
|
|
183
|
+
const { modules, ok } = compileWithGlobals(code);
|
|
176
184
|
expect(ok).to.be.true;
|
|
177
|
-
// Find
|
|
185
|
+
// Find str.indexOf() call expression
|
|
178
186
|
const indexOfCall = findExpression(modules, (expr) => {
|
|
179
187
|
if (expr.kind !== "call")
|
|
180
188
|
return false;
|
|
@@ -183,30 +191,10 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
183
191
|
return expr.callee.property === "indexOf";
|
|
184
192
|
});
|
|
185
193
|
expect(indexOfCall).to.not.be.undefined;
|
|
194
|
+
// CLR numeric types are represented as primitiveType in IR
|
|
195
|
+
// (see primitives.ts: "When user writes `: int`, it becomes primitiveType(name='int')")
|
|
186
196
|
expect(indexOfCall?.inferredType).to.deep.equal({
|
|
187
|
-
kind: "
|
|
188
|
-
name: "int",
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
it("should recover 'int' from arr.lastIndexOf() return type", () => {
|
|
192
|
-
const code = `
|
|
193
|
-
export function findLast(arr: string[], item: string): number {
|
|
194
|
-
return arr.lastIndexOf(item);
|
|
195
|
-
}
|
|
196
|
-
`;
|
|
197
|
-
const { modules, ok } = compileWithJsGlobals(code);
|
|
198
|
-
expect(ok).to.be.true;
|
|
199
|
-
// Find arr.lastIndexOf() call expression
|
|
200
|
-
const lastIndexOfCall = findExpression(modules, (expr) => {
|
|
201
|
-
if (expr.kind !== "call")
|
|
202
|
-
return false;
|
|
203
|
-
if (expr.callee.kind !== "memberAccess")
|
|
204
|
-
return false;
|
|
205
|
-
return expr.callee.property === "lastIndexOf";
|
|
206
|
-
});
|
|
207
|
-
expect(lastIndexOfCall).to.not.be.undefined;
|
|
208
|
-
expect(lastIndexOfCall?.inferredType).to.deep.equal({
|
|
209
|
-
kind: "referenceType",
|
|
197
|
+
kind: "primitiveType",
|
|
210
198
|
name: "int",
|
|
211
199
|
});
|
|
212
200
|
});
|
|
@@ -218,14 +206,15 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
218
206
|
const len: number = arr.length;
|
|
219
207
|
}
|
|
220
208
|
`;
|
|
221
|
-
const { modules, ok } =
|
|
209
|
+
const { modules, ok } = compileWithGlobals(code);
|
|
222
210
|
expect(ok).to.be.true;
|
|
223
211
|
// Find arr.length member expression
|
|
224
212
|
const lengthExpr = findExpression(modules, (expr) => expr.kind === "memberAccess" && expr.property === "length");
|
|
225
213
|
expect(lengthExpr).to.not.be.undefined;
|
|
226
214
|
// The arr.length expression itself should have int, regardless of target
|
|
215
|
+
// CLR numeric types are represented as primitiveType in IR
|
|
227
216
|
expect(lengthExpr?.inferredType).to.deep.equal({
|
|
228
|
-
kind: "
|
|
217
|
+
kind: "primitiveType",
|
|
229
218
|
name: "int",
|
|
230
219
|
});
|
|
231
220
|
});
|
|
@@ -242,7 +231,7 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
242
231
|
return arr[arr.length - 1];
|
|
243
232
|
}
|
|
244
233
|
`;
|
|
245
|
-
const { modules, ok, error } =
|
|
234
|
+
const { modules, ok, error } = compileWithGlobals(code);
|
|
246
235
|
expect(ok, `Compile failed: ${error}`).to.be.true;
|
|
247
236
|
expect(modules.length).to.be.greaterThan(0);
|
|
248
237
|
// Run numeric proof pass - this should NOT produce TSN5107
|
|
@@ -253,15 +242,16 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
253
242
|
// The proof pass should succeed (or have only non-blocking diagnostics)
|
|
254
243
|
expect(proofResult.ok, `Proof pass failed: ${proofResult.diagnostics.map((d) => `${d.code}: ${d.message}`).join("; ")}`).to.be.true;
|
|
255
244
|
});
|
|
256
|
-
it("should pass numeric proof for
|
|
257
|
-
//
|
|
245
|
+
it("should pass numeric proof for string.indexOf() as index", () => {
|
|
246
|
+
// Using string.indexOf() result as string char index
|
|
247
|
+
// Note: .NET arrays don't have indexOf method, use string instead
|
|
258
248
|
const code = `
|
|
259
|
-
export function
|
|
260
|
-
const idx =
|
|
261
|
-
return
|
|
249
|
+
export function getCharAtIndex(str: string, search: string): string {
|
|
250
|
+
const idx = str.indexOf(search);
|
|
251
|
+
return str[idx];
|
|
262
252
|
}
|
|
263
253
|
`;
|
|
264
|
-
const { modules, ok, error } =
|
|
254
|
+
const { modules, ok, error } = compileWithGlobals(code);
|
|
265
255
|
expect(ok, `Compile failed: ${error}`).to.be.true;
|
|
266
256
|
const proofResult = runNumericProofPass(modules);
|
|
267
257
|
const tsn5107Errors = proofResult.diagnostics.filter((d) => d.code === "TSN5107");
|
|
@@ -275,7 +265,7 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
275
265
|
return arr[arr.length - 2];
|
|
276
266
|
}
|
|
277
267
|
`;
|
|
278
|
-
const { modules, ok, error } =
|
|
268
|
+
const { modules, ok, error } = compileWithGlobals(code);
|
|
279
269
|
expect(ok, `Compile failed: ${error}`).to.be.true;
|
|
280
270
|
const proofResult = runNumericProofPass(modules);
|
|
281
271
|
const tsn5107Errors = proofResult.diagnostics.filter((d) => d.code === "TSN5107");
|
|
@@ -283,5 +273,28 @@ describe("Declaration-Based Numeric Intent Recovery", () => {
|
|
|
283
273
|
expect(proofResult.ok).to.be.true;
|
|
284
274
|
});
|
|
285
275
|
});
|
|
276
|
+
// Note: User-defined function return type recovery is tested through E2E tests
|
|
277
|
+
// (test/fixtures/*) which have proper node_modules setup for @tsonic/core imports.
|
|
278
|
+
// The unit tests here focus on built-in globals (arr.length, string.indexOf, etc.)
|
|
279
|
+
describe("Chained Call Type Recovery", () => {
|
|
280
|
+
it("should recover correct type through method chain", () => {
|
|
281
|
+
// str.substring() returns string, then .length returns int
|
|
282
|
+
// Note: .length is declared as int in globals, no import needed
|
|
283
|
+
const code = `
|
|
284
|
+
export function getSubLength(s: string): number {
|
|
285
|
+
return s.substring(0, 5).length;
|
|
286
|
+
}
|
|
287
|
+
`;
|
|
288
|
+
const { modules, ok, error } = compileWithGlobals(code);
|
|
289
|
+
expect(ok, `Compile failed: ${error}`).to.be.true;
|
|
290
|
+
// Find .length member expression at end of chain
|
|
291
|
+
const lengthExpr = findExpression(modules, (expr) => expr.kind === "memberAccess" && expr.property === "length");
|
|
292
|
+
expect(lengthExpr).to.not.be.undefined;
|
|
293
|
+
expect(lengthExpr?.inferredType).to.deep.equal({
|
|
294
|
+
kind: "primitiveType",
|
|
295
|
+
name: "int",
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
});
|
|
286
299
|
});
|
|
287
300
|
//# sourceMappingURL=numeric-recovery.test.js.map
|
|
@@ -1 +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
|
+
{"version":3,"file":"numeric-recovery.test.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/numeric-recovery.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,26 @@
|
|
|
2
2
|
* Operator expression converters (binary, unary, update, assignment)
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
|
-
import { IrExpression, IrUnaryExpression, IrUpdateExpression } from "../../types.js";
|
|
5
|
+
import { IrExpression, IrUnaryExpression, IrUpdateExpression, IrType } from "../../types.js";
|
|
6
|
+
import type { ProgramContext } from "../../program-context.js";
|
|
6
7
|
/**
|
|
7
8
|
* Convert binary expression (including logical and assignment)
|
|
9
|
+
*
|
|
10
|
+
* Threads expectedType through:
|
|
11
|
+
* - Assignment RHS: gets LHS type
|
|
12
|
+
* - Nullish coalescing (??): RHS gets expectedType (fallback value)
|
|
13
|
+
* - Logical OR (||): RHS gets expectedType (fallback value)
|
|
8
14
|
*/
|
|
9
|
-
export declare const convertBinaryExpression: (node: ts.BinaryExpression,
|
|
15
|
+
export declare const convertBinaryExpression: (node: ts.BinaryExpression, ctx: ProgramContext, expectedType?: IrType) => IrExpression;
|
|
10
16
|
/**
|
|
11
17
|
* Convert prefix unary expression
|
|
12
18
|
*/
|
|
13
|
-
export declare const convertUnaryExpression: (node: ts.PrefixUnaryExpression,
|
|
19
|
+
export declare const convertUnaryExpression: (node: ts.PrefixUnaryExpression, ctx: ProgramContext) => IrUnaryExpression | IrUpdateExpression;
|
|
14
20
|
/**
|
|
15
21
|
* Convert postfix unary expression (++ or --)
|
|
22
|
+
*
|
|
23
|
+
* DETERMINISTIC TYPING: Result type derived from operand type.
|
|
24
|
+
* ++/-- return same type as operand (int → int, number → number)
|
|
16
25
|
*/
|
|
17
|
-
export declare const convertUpdateExpression: (node: ts.PostfixUnaryExpression | ts.PrefixUnaryExpression,
|
|
26
|
+
export declare const convertUpdateExpression: (node: ts.PostfixUnaryExpression | ts.PrefixUnaryExpression, ctx: ProgramContext) => IrUpdateExpression;
|
|
18
27
|
//# sourceMappingURL=operators.d.ts.map
|
|
@@ -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,
|
|
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,EAGlB,MAAM,EACP,MAAM,gBAAgB,CAAC;AAcxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyJ/D;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,gBAAgB,EACzB,KAAK,cAAc,EACnB,eAAe,MAAM,KACpB,YAqEF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,EAAE,CAAC,qBAAqB,EAC9B,KAAK,cAAc,KAClB,iBAAiB,GAAG,kBAiDtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,sBAAsB,GAAG,EAAE,CAAC,qBAAqB,EAC1D,KAAK,cAAc,KAClB,kBA0CF,CAAC"}
|