@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
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import * as ts from "typescript";
|
|
6
6
|
import { TSONIC_TO_NUMERIC_KIND, } from "./types.js";
|
|
7
|
-
import { getBindingRegistry } from "./converters/statements/declarations/registry.js";
|
|
8
|
-
import { convertType } from "./type-converter.js";
|
|
9
7
|
// Import expression converters from specialized modules
|
|
10
8
|
import { convertLiteral } from "./converters/expressions/literals.js";
|
|
11
9
|
import { convertArrayLiteral, convertObjectLiteral, } from "./converters/expressions/collections.js";
|
|
@@ -14,7 +12,7 @@ import { convertCallExpression, convertNewExpression, } from "./converters/expre
|
|
|
14
12
|
import { convertBinaryExpression, convertUnaryExpression, convertUpdateExpression, } from "./converters/expressions/operators.js";
|
|
15
13
|
import { convertFunctionExpression, convertArrowFunction, } from "./converters/expressions/functions.js";
|
|
16
14
|
import { convertConditionalExpression, convertTemplateLiteral, } from "./converters/expressions/other.js";
|
|
17
|
-
import {
|
|
15
|
+
import { deriveIdentifierType, getSourceSpan, } from "./converters/expressions/helpers.js";
|
|
18
16
|
/**
|
|
19
17
|
* Extract the NumericKind from a type node if it references a known numeric alias.
|
|
20
18
|
*
|
|
@@ -39,184 +37,254 @@ const getNumericKindFromTypeNode = (typeNode) => {
|
|
|
39
37
|
}
|
|
40
38
|
return undefined;
|
|
41
39
|
};
|
|
40
|
+
const inferThisType = (node) => {
|
|
41
|
+
let current = node;
|
|
42
|
+
while (current) {
|
|
43
|
+
if (ts.isClassDeclaration(current) || ts.isClassExpression(current)) {
|
|
44
|
+
const className = current.name?.text;
|
|
45
|
+
if (!className)
|
|
46
|
+
return undefined;
|
|
47
|
+
const typeArguments = current.typeParameters?.map((tp) => ({ kind: "typeParameterType", name: tp.name.text })) ?? [];
|
|
48
|
+
return {
|
|
49
|
+
kind: "referenceType",
|
|
50
|
+
name: className,
|
|
51
|
+
...(typeArguments.length > 0 ? { typeArguments } : {}),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
current = current.parent;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
};
|
|
58
|
+
const stripNullish = (type) => {
|
|
59
|
+
if (!type)
|
|
60
|
+
return undefined;
|
|
61
|
+
if (type.kind !== "unionType")
|
|
62
|
+
return type;
|
|
63
|
+
const nonNullish = type.types.filter((t) => !(t.kind === "primitiveType" &&
|
|
64
|
+
(t.name === "null" || t.name === "undefined")));
|
|
65
|
+
if (nonNullish.length === 0)
|
|
66
|
+
return undefined;
|
|
67
|
+
if (nonNullish.length === 1)
|
|
68
|
+
return nonNullish[0];
|
|
69
|
+
return { kind: "unionType", types: nonNullish };
|
|
70
|
+
};
|
|
42
71
|
/**
|
|
43
72
|
* Main expression conversion dispatcher
|
|
44
73
|
* Converts TypeScript expression nodes to IR expressions
|
|
74
|
+
*
|
|
75
|
+
* @param node - The TypeScript expression node to convert
|
|
76
|
+
* @param ctx - The ProgramContext for symbol resolution and type system access
|
|
77
|
+
* @param expectedType - Expected type from context (e.g., LHS annotation, parameter type).
|
|
78
|
+
* Pass `undefined` explicitly when no contextual type exists.
|
|
79
|
+
* Used for deterministic typing of literals and arrays.
|
|
45
80
|
*/
|
|
46
|
-
export const convertExpression = (node,
|
|
47
|
-
|
|
81
|
+
export const convertExpression = (node, ctx, expectedType) => {
|
|
82
|
+
// DETERMINISTIC TYPING: No top-level getInferredType() call.
|
|
83
|
+
// Each expression type derives its inferredType from the appropriate source.
|
|
48
84
|
if (ts.isStringLiteral(node) || ts.isNumericLiteral(node)) {
|
|
49
|
-
return convertLiteral(node,
|
|
85
|
+
return convertLiteral(node, ctx);
|
|
50
86
|
}
|
|
51
87
|
if (node.kind === ts.SyntaxKind.TrueKeyword ||
|
|
52
88
|
node.kind === ts.SyntaxKind.FalseKeyword) {
|
|
89
|
+
// Boolean literals have deterministic type
|
|
53
90
|
return {
|
|
54
91
|
kind: "literal",
|
|
55
92
|
value: node.kind === ts.SyntaxKind.TrueKeyword,
|
|
56
93
|
raw: node.getText(),
|
|
57
|
-
inferredType,
|
|
94
|
+
inferredType: { kind: "primitiveType", name: "boolean" },
|
|
58
95
|
sourceSpan: getSourceSpan(node),
|
|
59
96
|
};
|
|
60
97
|
}
|
|
61
98
|
if (node.kind === ts.SyntaxKind.NullKeyword) {
|
|
99
|
+
// Null literal - type is context-dependent, undefined for now
|
|
62
100
|
return {
|
|
63
101
|
kind: "literal",
|
|
64
102
|
value: null,
|
|
65
103
|
raw: "null",
|
|
66
|
-
inferredType,
|
|
104
|
+
inferredType: undefined,
|
|
67
105
|
sourceSpan: getSourceSpan(node),
|
|
68
106
|
};
|
|
69
107
|
}
|
|
70
108
|
if (node.kind === ts.SyntaxKind.UndefinedKeyword ||
|
|
71
109
|
ts.isVoidExpression(node)) {
|
|
110
|
+
// Undefined literal - type is void
|
|
72
111
|
return {
|
|
73
112
|
kind: "literal",
|
|
74
113
|
value: undefined,
|
|
75
114
|
raw: "undefined",
|
|
76
|
-
inferredType,
|
|
115
|
+
inferredType: { kind: "voidType" },
|
|
77
116
|
sourceSpan: getSourceSpan(node),
|
|
78
117
|
};
|
|
79
118
|
}
|
|
80
119
|
if (ts.isIdentifier(node)) {
|
|
120
|
+
// DETERMINISTIC: Derive type from declaration TypeNode
|
|
121
|
+
const identifierType = deriveIdentifierType(node, ctx) ?? ctx.lambdaTypeEnv?.get(node.text);
|
|
81
122
|
// Check if this identifier is an aliased import (e.g., import { String as ClrString })
|
|
82
|
-
//
|
|
123
|
+
// ALICE'S SPEC: Use TypeSystem.getFQNameOfDecl() to get the original name
|
|
83
124
|
let originalName;
|
|
84
|
-
const
|
|
85
|
-
if (
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
125
|
+
const declId = ctx.binding.resolveIdentifier(node);
|
|
126
|
+
if (declId) {
|
|
127
|
+
const fqName = ctx.typeSystem.getFQNameOfDecl(declId);
|
|
128
|
+
// If the fqName differs from the identifier text, it's an aliased import
|
|
129
|
+
if (fqName && fqName !== node.text) {
|
|
130
|
+
originalName = fqName;
|
|
89
131
|
}
|
|
90
132
|
}
|
|
91
133
|
// Check if this identifier is bound to a CLR type (e.g., console, Math, etc.)
|
|
92
|
-
const
|
|
93
|
-
if (
|
|
134
|
+
const clrBinding = ctx.bindings.getBinding(node.text);
|
|
135
|
+
if (clrBinding && clrBinding.kind === "global") {
|
|
94
136
|
return {
|
|
95
137
|
kind: "identifier",
|
|
96
138
|
name: node.text,
|
|
97
|
-
inferredType,
|
|
139
|
+
inferredType: identifierType,
|
|
98
140
|
sourceSpan: getSourceSpan(node),
|
|
99
|
-
resolvedClrType:
|
|
100
|
-
resolvedAssembly:
|
|
101
|
-
csharpName:
|
|
141
|
+
resolvedClrType: clrBinding.type,
|
|
142
|
+
resolvedAssembly: clrBinding.assembly,
|
|
143
|
+
csharpName: clrBinding.csharpName, // Optional C# name from binding
|
|
102
144
|
originalName,
|
|
145
|
+
declId,
|
|
103
146
|
};
|
|
104
147
|
}
|
|
105
148
|
return {
|
|
106
149
|
kind: "identifier",
|
|
107
150
|
name: node.text,
|
|
108
|
-
inferredType,
|
|
151
|
+
inferredType: identifierType,
|
|
109
152
|
sourceSpan: getSourceSpan(node),
|
|
110
153
|
originalName,
|
|
154
|
+
declId,
|
|
111
155
|
};
|
|
112
156
|
}
|
|
113
157
|
if (ts.isArrayLiteralExpression(node)) {
|
|
114
|
-
return convertArrayLiteral(node,
|
|
158
|
+
return convertArrayLiteral(node, ctx, expectedType);
|
|
115
159
|
}
|
|
116
160
|
if (ts.isObjectLiteralExpression(node)) {
|
|
117
|
-
return convertObjectLiteral(node,
|
|
161
|
+
return convertObjectLiteral(node, ctx, expectedType);
|
|
118
162
|
}
|
|
119
163
|
if (ts.isPropertyAccessExpression(node) ||
|
|
120
164
|
ts.isElementAccessExpression(node)) {
|
|
121
|
-
return convertMemberExpression(node,
|
|
165
|
+
return convertMemberExpression(node, ctx);
|
|
122
166
|
}
|
|
123
167
|
if (ts.isCallExpression(node)) {
|
|
124
|
-
return convertCallExpression(node,
|
|
168
|
+
return convertCallExpression(node, ctx);
|
|
125
169
|
}
|
|
126
170
|
if (ts.isNewExpression(node)) {
|
|
127
|
-
return convertNewExpression(node,
|
|
171
|
+
return convertNewExpression(node, ctx);
|
|
128
172
|
}
|
|
129
173
|
if (ts.isBinaryExpression(node)) {
|
|
130
|
-
return convertBinaryExpression(node,
|
|
174
|
+
return convertBinaryExpression(node, ctx, expectedType);
|
|
131
175
|
}
|
|
132
176
|
if (ts.isPrefixUnaryExpression(node)) {
|
|
133
|
-
return convertUnaryExpression(node,
|
|
177
|
+
return convertUnaryExpression(node, ctx);
|
|
134
178
|
}
|
|
135
179
|
if (ts.isPostfixUnaryExpression(node)) {
|
|
136
|
-
return convertUpdateExpression(node,
|
|
180
|
+
return convertUpdateExpression(node, ctx);
|
|
137
181
|
}
|
|
138
182
|
if (ts.isTypeOfExpression(node)) {
|
|
183
|
+
// typeof always returns string
|
|
139
184
|
return {
|
|
140
185
|
kind: "unary",
|
|
141
186
|
operator: "typeof",
|
|
142
|
-
expression: convertExpression(node.expression,
|
|
143
|
-
inferredType,
|
|
187
|
+
expression: convertExpression(node.expression, ctx, undefined),
|
|
188
|
+
inferredType: { kind: "primitiveType", name: "string" },
|
|
144
189
|
sourceSpan: getSourceSpan(node),
|
|
145
190
|
};
|
|
146
191
|
}
|
|
147
192
|
if (ts.isVoidExpression(node)) {
|
|
193
|
+
// void always returns undefined (void type)
|
|
148
194
|
return {
|
|
149
195
|
kind: "unary",
|
|
150
196
|
operator: "void",
|
|
151
|
-
expression: convertExpression(node.expression,
|
|
152
|
-
inferredType,
|
|
197
|
+
expression: convertExpression(node.expression, ctx, undefined),
|
|
198
|
+
inferredType: { kind: "voidType" },
|
|
153
199
|
sourceSpan: getSourceSpan(node),
|
|
154
200
|
};
|
|
155
201
|
}
|
|
156
202
|
if (ts.isDeleteExpression(node)) {
|
|
203
|
+
// delete always returns boolean
|
|
157
204
|
return {
|
|
158
205
|
kind: "unary",
|
|
159
206
|
operator: "delete",
|
|
160
|
-
expression: convertExpression(node.expression,
|
|
161
|
-
inferredType,
|
|
207
|
+
expression: convertExpression(node.expression, ctx, undefined),
|
|
208
|
+
inferredType: { kind: "primitiveType", name: "boolean" },
|
|
162
209
|
sourceSpan: getSourceSpan(node),
|
|
163
210
|
};
|
|
164
211
|
}
|
|
165
212
|
if (ts.isConditionalExpression(node)) {
|
|
166
|
-
return convertConditionalExpression(node,
|
|
213
|
+
return convertConditionalExpression(node, ctx, expectedType);
|
|
167
214
|
}
|
|
168
215
|
if (ts.isFunctionExpression(node)) {
|
|
169
|
-
|
|
216
|
+
// DETERMINISTIC: Pass expectedType for parameter type inference
|
|
217
|
+
return convertFunctionExpression(node, ctx, expectedType);
|
|
170
218
|
}
|
|
171
219
|
if (ts.isArrowFunction(node)) {
|
|
172
|
-
|
|
220
|
+
// DETERMINISTIC: Pass expectedType for parameter type inference
|
|
221
|
+
return convertArrowFunction(node, ctx, expectedType);
|
|
173
222
|
}
|
|
174
223
|
if (ts.isTemplateExpression(node) ||
|
|
175
224
|
ts.isNoSubstitutionTemplateLiteral(node)) {
|
|
176
|
-
return convertTemplateLiteral(node,
|
|
225
|
+
return convertTemplateLiteral(node, ctx);
|
|
177
226
|
}
|
|
178
227
|
if (ts.isSpreadElement(node)) {
|
|
228
|
+
// Spread inherits type from expression (the array being spread)
|
|
229
|
+
const spreadExpr = convertExpression(node.expression, ctx, undefined);
|
|
179
230
|
return {
|
|
180
231
|
kind: "spread",
|
|
181
|
-
expression:
|
|
182
|
-
inferredType,
|
|
232
|
+
expression: spreadExpr,
|
|
233
|
+
inferredType: spreadExpr.inferredType,
|
|
183
234
|
sourceSpan: getSourceSpan(node),
|
|
184
235
|
};
|
|
185
236
|
}
|
|
186
237
|
if (node.kind === ts.SyntaxKind.ThisKeyword) {
|
|
187
|
-
|
|
238
|
+
// Deterministic `this` typing: derive from the enclosing class declaration.
|
|
239
|
+
return {
|
|
240
|
+
kind: "this",
|
|
241
|
+
inferredType: inferThisType(node),
|
|
242
|
+
sourceSpan: getSourceSpan(node),
|
|
243
|
+
};
|
|
188
244
|
}
|
|
189
245
|
if (ts.isAwaitExpression(node)) {
|
|
246
|
+
// await unwraps Promise - for now pass through the expression's type
|
|
247
|
+
// (full unwrapping would require detecting Promise<T> and returning T)
|
|
248
|
+
const awaitedExpr = convertExpression(node.expression, ctx, undefined);
|
|
190
249
|
return {
|
|
191
250
|
kind: "await",
|
|
192
|
-
expression:
|
|
193
|
-
inferredType,
|
|
251
|
+
expression: awaitedExpr,
|
|
252
|
+
inferredType: undefined, // Would need Promise unwrapping
|
|
194
253
|
sourceSpan: getSourceSpan(node),
|
|
195
254
|
};
|
|
196
255
|
}
|
|
197
256
|
if (ts.isYieldExpression(node)) {
|
|
257
|
+
// yield type depends on generator context - undefined for now
|
|
198
258
|
return {
|
|
199
259
|
kind: "yield",
|
|
200
260
|
expression: node.expression
|
|
201
|
-
? convertExpression(node.expression,
|
|
261
|
+
? convertExpression(node.expression, ctx, undefined)
|
|
202
262
|
: undefined,
|
|
203
263
|
delegate: !!node.asteriskToken,
|
|
204
|
-
inferredType,
|
|
264
|
+
inferredType: undefined,
|
|
205
265
|
sourceSpan: getSourceSpan(node),
|
|
206
266
|
};
|
|
207
267
|
}
|
|
208
268
|
if (ts.isParenthesizedExpression(node)) {
|
|
209
|
-
return convertExpression(node.expression,
|
|
269
|
+
return convertExpression(node.expression, ctx, expectedType);
|
|
270
|
+
}
|
|
271
|
+
if (ts.isNonNullExpression(node)) {
|
|
272
|
+
// `expr!` has no runtime semantics but DOES narrow the type (T | null → T).
|
|
273
|
+
// Preserve the inner expression, but strip null/undefined from its inferredType.
|
|
274
|
+
const inner = convertExpression(node.expression, ctx, expectedType);
|
|
275
|
+
const narrowed = stripNullish(inner.inferredType);
|
|
276
|
+
return narrowed ? { ...inner, inferredType: narrowed } : inner;
|
|
210
277
|
}
|
|
211
278
|
if (ts.isAsExpression(node) || ts.isTypeAssertionExpression(node)) {
|
|
212
|
-
// Convert the inner expression
|
|
213
|
-
const innerExpr = convertExpression(node.expression, checker);
|
|
214
279
|
// Get the asserted type
|
|
280
|
+
// PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
|
|
215
281
|
const assertedTypeNode = node.type;
|
|
216
|
-
const assertedType =
|
|
282
|
+
const assertedType = ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(assertedTypeNode));
|
|
217
283
|
// Check if this is a numeric narrowing (e.g., `as int`, `as byte`)
|
|
218
284
|
const numericKind = getNumericKindFromTypeNode(assertedTypeNode);
|
|
219
285
|
if (numericKind !== undefined) {
|
|
286
|
+
// Convert the inner expression with no expected type so we preserve its natural classification.
|
|
287
|
+
const innerExpr = convertExpression(node.expression, ctx, undefined);
|
|
220
288
|
// Determine the inferredType based on the targetKind
|
|
221
289
|
// INVARIANT: "Int32" → primitiveType(name="int")
|
|
222
290
|
// Other numeric kinds remain as referenceType (handled by assertedType)
|
|
@@ -238,6 +306,8 @@ export const convertExpression = (node, checker) => {
|
|
|
238
306
|
// from a plain literal (which also has inferredType: number but no assertion)
|
|
239
307
|
if (assertedType.kind === "primitiveType" &&
|
|
240
308
|
assertedType.name === "number") {
|
|
309
|
+
// Convert the inner expression with no expected type so we preserve its natural classification.
|
|
310
|
+
const innerExpr = convertExpression(node.expression, ctx, undefined);
|
|
241
311
|
// Check if the inner expression is numeric (literal or already classified)
|
|
242
312
|
const isNumericInner = (innerExpr.kind === "literal" && typeof innerExpr.value === "number") ||
|
|
243
313
|
innerExpr.kind === "numericNarrowing";
|
|
@@ -252,21 +322,45 @@ export const convertExpression = (node, checker) => {
|
|
|
252
322
|
return narrowingExpr;
|
|
253
323
|
}
|
|
254
324
|
}
|
|
255
|
-
//
|
|
325
|
+
// Check if this is a type erasure (unknown/any) - NOT a runtime cast
|
|
326
|
+
// `x as unknown` or `x as any` just tells TS to forget the type
|
|
327
|
+
if (assertedType.kind === "unknownType" ||
|
|
328
|
+
assertedType.kind === "anyType") {
|
|
329
|
+
// Preserve contextual typing from the outer position.
|
|
330
|
+
return convertExpression(node.expression, ctx, expectedType);
|
|
331
|
+
}
|
|
332
|
+
// Check if this is a parameter modifier type (out<T>, ref<T>, in<T>)
|
|
333
|
+
// These are not real type casts - they're parameter passing annotations
|
|
334
|
+
const isParameterModifierType = assertedType.kind === "referenceType" &&
|
|
335
|
+
(assertedType.name === "out" ||
|
|
336
|
+
assertedType.name === "ref" ||
|
|
337
|
+
assertedType.name === "in" ||
|
|
338
|
+
assertedType.name === "inref");
|
|
339
|
+
if (isParameterModifierType) {
|
|
340
|
+
// Preserve contextual typing from the outer position.
|
|
341
|
+
// The parameter modifier itself is handled in call lowering / argument emission.
|
|
342
|
+
return convertExpression(node.expression, ctx, expectedType);
|
|
343
|
+
}
|
|
344
|
+
// Convert the inner expression contextually, using the asserted type as the target.
|
|
345
|
+
// This prevents `({ ... } as T)` from becoming an anonymous object cast to T (invalid in C#).
|
|
346
|
+
const innerExpr = convertExpression(node.expression, ctx, assertedType);
|
|
347
|
+
// Non-numeric assertion - create type assertion node for C# cast
|
|
256
348
|
return {
|
|
257
|
-
|
|
349
|
+
kind: "typeAssertion",
|
|
350
|
+
expression: innerExpr,
|
|
351
|
+
targetType: assertedType,
|
|
258
352
|
inferredType: assertedType,
|
|
259
353
|
sourceSpan: getSourceSpan(node),
|
|
260
354
|
};
|
|
261
355
|
}
|
|
262
|
-
// Fallback - treat as identifier
|
|
356
|
+
// Fallback - treat as identifier with unknown type
|
|
263
357
|
return {
|
|
264
358
|
kind: "identifier",
|
|
265
359
|
name: node.getText(),
|
|
266
|
-
inferredType,
|
|
360
|
+
inferredType: undefined,
|
|
267
361
|
sourceSpan: getSourceSpan(node),
|
|
268
362
|
};
|
|
269
363
|
};
|
|
270
364
|
// Re-export commonly used functions for backward compatibility
|
|
271
|
-
export {
|
|
365
|
+
export { deriveIdentifierType, extractTypeArguments, checkIfRequiresSpecialization, } from "./converters/expressions/helpers.js";
|
|
272
366
|
//# sourceMappingURL=expression-converter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-converter.js","sourceRoot":"","sources":["../../src/ir/expression-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAIL,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,wDAAwD;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,qCAAqC,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,0BAA0B,GAAG,CACjC,QAAqB,EACI,EAAE;IAC3B,6DAA6D;IAC7D,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,6CAA6C;YAC7C,MAAM,IAAI,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAmB,EACnB,OAAuB,EACT,EAAE;IAChB,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpD,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,IACE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;QACvC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,EACxC,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YAC9C,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;YACnB,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,MAAM;YACX,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IACE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB;QAC5C,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACzB,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,WAAW;YAChB,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,uFAAuF;QACvF,+CAA+C;QAC/C,IAAI,YAAgC,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAChE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,8EAA8E;QAC9E,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY;gBACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;gBAC/B,eAAe,EAAE,OAAO,CAAC,IAAI;gBAC7B,gBAAgB,EAAE,OAAO,CAAC,QAAQ;gBAClC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,gCAAgC;gBAChE,YAAY;aACb,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;YAC/B,YAAY;SACb,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,IACE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;QACnC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAClC,CAAC;QACD,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YACvD,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YACvD,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YACvD,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC7B,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,EACxC,CAAC;QACD,OAAO,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YACvD,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YACvD,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;gBACzB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;gBAC7C,CAAC,CAAC,SAAS;YACb,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa;YAC9B,YAAY;YACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,+BAA+B;QAC/B,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE9D,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,YAAY,GAAG,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAE5D,mEAAmE;QACnE,MAAM,WAAW,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,qDAAqD;YACrD,iDAAiD;YACjD,wEAAwE;YACxE,MAAM,YAAY,GAChB,WAAW,KAAK,OAAO;gBACrB,CAAC,CAAC,EAAE,IAAI,EAAE,eAAwB,EAAE,IAAI,EAAE,KAAc,EAAE;gBAC1D,CAAC,CAAC,YAAY,CAAC;YAEnB,4EAA4E;YAC5E,MAAM,aAAa,GAAiC;gBAClD,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,WAAW;gBACvB,YAAY;gBACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;aAChC,CAAC;YACF,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,8EAA8E;QAC9E,IACE,YAAY,CAAC,IAAI,KAAK,eAAe;YACrC,YAAY,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,2EAA2E;YAC3E,MAAM,cAAc,GAClB,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,CAAC;gBACrE,SAAS,CAAC,IAAI,KAAK,kBAAkB,CAAC;YAExC,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,aAAa,GAAiC;oBAClD,IAAI,EAAE,kBAAkB;oBACxB,UAAU,EAAE,SAAS;oBACrB,UAAU,EAAE,QAAQ;oBACpB,YAAY,EAAE,YAAY;oBAC1B,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;iBAChC,CAAC;gBACF,OAAO,aAAa,CAAC;YACvB,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,OAAO;YACL,GAAG,SAAS;YACZ,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;QACpB,YAAY;QACZ,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC,CAAC;AAEF,+DAA+D;AAC/D,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"expression-converter.js","sourceRoot":"","sources":["../../src/ir/expression-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,11 @@ import { describe, it } from "mocha";
|
|
|
6
6
|
import { expect } from "chai";
|
|
7
7
|
import * as ts from "typescript";
|
|
8
8
|
import { buildIrModule } from "./builder.js";
|
|
9
|
+
import { createProgramContext } from "./program-context.js";
|
|
9
10
|
import { DotnetMetadataRegistry } from "../dotnet-metadata.js";
|
|
10
11
|
import { BindingRegistry } from "../program/bindings.js";
|
|
11
12
|
import { createClrBindingsResolver } from "../resolver/clr-bindings-resolver.js";
|
|
13
|
+
import { createBinding } from "./binding/index.js";
|
|
12
14
|
describe("Hierarchical Bindings End-to-End", () => {
|
|
13
15
|
it("should resolve hierarchical bindings in IR for member access chain", () => {
|
|
14
16
|
// TypeScript source with systemLinq.enumerable.selectMany
|
|
@@ -68,9 +70,10 @@ describe("Hierarchical Bindings End-to-End", () => {
|
|
|
68
70
|
getNewLine: () => "\n",
|
|
69
71
|
getDefaultLibFileName: (_options) => "lib.d.ts",
|
|
70
72
|
});
|
|
73
|
+
const checker = program.getTypeChecker();
|
|
71
74
|
const testProgram = {
|
|
72
75
|
program,
|
|
73
|
-
checker
|
|
76
|
+
checker,
|
|
74
77
|
options: {
|
|
75
78
|
projectRoot: "/test",
|
|
76
79
|
sourceRoot: "/test",
|
|
@@ -78,15 +81,16 @@ describe("Hierarchical Bindings End-to-End", () => {
|
|
|
78
81
|
strict: true,
|
|
79
82
|
},
|
|
80
83
|
sourceFiles: [sourceFile],
|
|
84
|
+
declarationSourceFiles: [],
|
|
81
85
|
metadata: new DotnetMetadataRegistry(),
|
|
82
86
|
bindings,
|
|
83
87
|
clrResolver: createClrBindingsResolver("/test"),
|
|
88
|
+
binding: createBinding(checker),
|
|
84
89
|
};
|
|
85
|
-
// Build IR
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
});
|
|
90
|
+
// Build IR - Phase 5: Create ProgramContext and pass to buildIrModule
|
|
91
|
+
const options = { sourceRoot: "/test", rootNamespace: "TestApp" };
|
|
92
|
+
const ctx = createProgramContext(testProgram, options);
|
|
93
|
+
const irResult = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
90
94
|
// MUST succeed - this is a strict test
|
|
91
95
|
if (!irResult.ok) {
|
|
92
96
|
console.error("IR build failed:", irResult.error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchical-bindings-e2e.test.js","sourceRoot":"","sources":["../../src/ir/hierarchical-bindings-e2e.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"hierarchical-bindings-e2e.test.js","sourceRoot":"","sources":["../../src/ir/hierarchical-bindings-e2e.test.ts"],"names":[],"mappings":"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"}
|
package/dist/ir/index.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* IR module exports
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Singleton registries removed.
|
|
5
|
+
* Each compilation creates a fresh ProgramContext via buildIr().
|
|
3
6
|
*/
|
|
4
7
|
export * from "./types.js";
|
|
5
8
|
export { buildIr, buildIrModule, isExecutableStatement, type IrBuildOptions, } from "./builder.js";
|
|
9
|
+
export { createBinding, type Binding } from "./binding/index.js";
|
|
10
|
+
export { createProgramContext, type ProgramContext, } from "./program-context.js";
|
|
6
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/ir/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC"}
|
package/dist/ir/index.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* IR module exports
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Singleton registries removed.
|
|
5
|
+
* Each compilation creates a fresh ProgramContext via buildIr().
|
|
3
6
|
*/
|
|
4
7
|
export * from "./types.js";
|
|
5
8
|
export { buildIr, buildIrModule, isExecutableStatement, } from "./builder.js";
|
|
9
|
+
export { createBinding } from "./binding/index.js";
|
|
10
|
+
export { createProgramContext, } from "./program-context.js";
|
|
6
11
|
//# sourceMappingURL=index.js.map
|
package/dist/ir/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,OAAO,EACP,aAAa,EACb,qBAAqB,GAEtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,oBAAoB,GAErB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* INV-0 Enforcement Test: No TypeScript Computed Types in IR Pipeline
|
|
3
|
+
*
|
|
4
|
+
* This test enforces Alice's specification that the IR typing pipeline
|
|
5
|
+
* must NEVER use TypeScript's computed type APIs. All IR types must come from:
|
|
6
|
+
* - Declared TypeNodes (annotations, signatures, property types)
|
|
7
|
+
* - Globals TypeNodes (@tsonic/globals, BCL bindings)
|
|
8
|
+
* - Bounded deterministic inference (lexeme intent + expectedType threading)
|
|
9
|
+
*
|
|
10
|
+
* TS checker is allowed ONLY for:
|
|
11
|
+
* - Symbol lookup (getSymbolAtLocation)
|
|
12
|
+
* - Overload selection (getResolvedSignature)
|
|
13
|
+
* - Module resolution
|
|
14
|
+
* - symbol.getDeclarations()
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=no-ts-type-inference.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-ts-type-inference.test.d.ts","sourceRoot":"","sources":["../../src/ir/no-ts-type-inference.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|