@tsonic/frontend 0.0.14 → 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 +431 -391
- 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 +132 -57
- 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 +33 -7
- 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 +152 -8
- 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
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
5
|
import { IrFunctionDeclaration } from "../../../types.js";
|
|
6
|
+
import type { ProgramContext } from "../../../program-context.js";
|
|
6
7
|
/**
|
|
7
8
|
* Convert function declaration
|
|
8
9
|
*/
|
|
9
|
-
export declare const convertFunctionDeclaration: (node: ts.FunctionDeclaration,
|
|
10
|
+
export declare const convertFunctionDeclaration: (node: ts.FunctionDeclaration, ctx: ProgramContext) => IrFunctionDeclaration | null;
|
|
10
11
|
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,0BAA0B,GACrC,MAAM,EAAE,CAAC,mBAAmB,EAC5B,KAAK,cAAc,KAClB,qBAAqB,GAAG,IAyB1B,CAAC"}
|
|
@@ -2,23 +2,28 @@
|
|
|
2
2
|
* Function declaration converter
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
|
-
import { convertType } from "../../../type-converter.js";
|
|
6
5
|
import { convertBlockStatement } from "../control.js";
|
|
7
6
|
import { hasExportModifier, convertTypeParameters, convertParameters, } from "../helpers.js";
|
|
8
7
|
/**
|
|
9
8
|
* Convert function declaration
|
|
10
9
|
*/
|
|
11
|
-
export const convertFunctionDeclaration = (node,
|
|
10
|
+
export const convertFunctionDeclaration = (node, ctx) => {
|
|
12
11
|
if (!node.name)
|
|
13
12
|
return null;
|
|
13
|
+
// Get return type from declared annotation for contextual typing
|
|
14
|
+
// PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
|
|
15
|
+
const returnType = node.type
|
|
16
|
+
? ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(node.type))
|
|
17
|
+
: undefined;
|
|
14
18
|
return {
|
|
15
19
|
kind: "functionDeclaration",
|
|
16
20
|
name: node.name.text,
|
|
17
|
-
typeParameters: convertTypeParameters(node.typeParameters,
|
|
18
|
-
parameters: convertParameters(node.parameters,
|
|
19
|
-
returnType
|
|
21
|
+
typeParameters: convertTypeParameters(node.typeParameters, ctx),
|
|
22
|
+
parameters: convertParameters(node.parameters, ctx),
|
|
23
|
+
returnType,
|
|
24
|
+
// Pass return type to body for contextual typing of return statements
|
|
20
25
|
body: node.body
|
|
21
|
-
? convertBlockStatement(node.body,
|
|
26
|
+
? convertBlockStatement(node.body, ctx, returnType)
|
|
22
27
|
: { kind: "blockStatement", statements: [] },
|
|
23
28
|
isAsync: !!node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword),
|
|
24
29
|
isGenerator: !!node.asteriskToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,IAA4B,EAC5B,GAAmB,EACW,EAAE;IAChC,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAE5B,iEAAiE;IACjE,iEAAiE;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;QAC1B,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACpB,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC;QAC/D,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;QACnD,UAAU;QACV,sEAAsE;QACtE,IAAI,EAAE,IAAI,CAAC,IAAI;YACb,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC;YACnD,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAC7C;QACD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Declaration converters - Public API
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Registry singletons removed.
|
|
5
|
+
* All context now flows through ProgramContext.
|
|
3
6
|
*/
|
|
4
|
-
export { setMetadataRegistry, setBindingRegistry } from "./registry.js";
|
|
5
7
|
export { convertVariableStatement } from "./variables.js";
|
|
6
8
|
export { convertFunctionDeclaration } from "./functions.js";
|
|
7
9
|
export { convertClassDeclaration } from "./classes.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Declaration converters - Public API
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Registry singletons removed.
|
|
5
|
+
* All context now flows through ProgramContext.
|
|
3
6
|
*/
|
|
4
|
-
export { setMetadataRegistry, setBindingRegistry } from "./registry.js";
|
|
5
7
|
export { convertVariableStatement } from "./variables.js";
|
|
6
8
|
export { convertFunctionDeclaration } from "./functions.js";
|
|
7
9
|
export { convertClassDeclaration } from "./classes.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
5
|
import { IrInterfaceDeclaration, IrInterfaceMember, IrTypeAliasDeclaration } from "../../../types.js";
|
|
6
|
+
import type { ProgramContext } from "../../../program-context.js";
|
|
6
7
|
/**
|
|
7
8
|
* Convert interface member
|
|
8
9
|
*/
|
|
9
|
-
export declare const convertInterfaceMember: (node: ts.TypeElement,
|
|
10
|
+
export declare const convertInterfaceMember: (node: ts.TypeElement, ctx: ProgramContext) => IrInterfaceMember | null;
|
|
10
11
|
/**
|
|
11
12
|
* Convert interface declaration
|
|
12
13
|
* Returns null for marker interfaces that should be filtered out.
|
|
13
14
|
* Returns a type alias for index-signature-only interfaces (lowered to Dictionary).
|
|
14
15
|
*/
|
|
15
|
-
export declare const convertInterfaceDeclaration: (node: ts.InterfaceDeclaration,
|
|
16
|
+
export declare const convertInterfaceDeclaration: (node: ts.InterfaceDeclaration, ctx: ProgramContext) => IrInterfaceDeclaration | IrTypeAliasDeclaration | null;
|
|
16
17
|
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,EAAE,CAAC,WAAW,EACpB,KAAK,cAAc,KAClB,iBAAiB,GAAG,IA8BtB,CAAC;AA+FF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,MAAM,EAAE,CAAC,oBAAoB,EAC7B,KAAK,cAAc,KAClB,sBAAsB,GAAG,sBAAsB,GAAG,IA4DpD,CAAC"}
|
|
@@ -2,17 +2,16 @@
|
|
|
2
2
|
* Interface declaration converter
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
|
-
import { convertType } from "../../../type-converter.js";
|
|
6
5
|
import { hasExportModifier, hasReadonlyModifier, convertTypeParameters, convertParameters, } from "../helpers.js";
|
|
7
6
|
/**
|
|
8
7
|
* Convert interface member
|
|
9
8
|
*/
|
|
10
|
-
export const convertInterfaceMember = (node,
|
|
9
|
+
export const convertInterfaceMember = (node, ctx) => {
|
|
11
10
|
if (ts.isPropertySignature(node) && node.type) {
|
|
12
11
|
return {
|
|
13
12
|
kind: "propertySignature",
|
|
14
13
|
name: node.name && ts.isIdentifier(node.name) ? node.name.text : "[computed]",
|
|
15
|
-
type:
|
|
14
|
+
type: ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(node.type)),
|
|
16
15
|
isOptional: !!node.questionToken,
|
|
17
16
|
isReadonly: hasReadonlyModifier(node),
|
|
18
17
|
};
|
|
@@ -21,19 +20,26 @@ export const convertInterfaceMember = (node, checker) => {
|
|
|
21
20
|
return {
|
|
22
21
|
kind: "methodSignature",
|
|
23
22
|
name: node.name && ts.isIdentifier(node.name) ? node.name.text : "[computed]",
|
|
24
|
-
typeParameters: convertTypeParameters(node.typeParameters,
|
|
25
|
-
parameters: convertParameters(node.parameters,
|
|
26
|
-
returnType: node.type
|
|
23
|
+
typeParameters: convertTypeParameters(node.typeParameters, ctx),
|
|
24
|
+
parameters: convertParameters(node.parameters, ctx),
|
|
25
|
+
returnType: node.type
|
|
26
|
+
? ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(node.type))
|
|
27
|
+
: undefined,
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
return null;
|
|
30
31
|
};
|
|
31
32
|
/**
|
|
32
|
-
* Check if a type reference is the struct marker
|
|
33
|
+
* Check if a type reference is the struct marker.
|
|
34
|
+
* DETERMINISTIC: Uses only the AST expression text, not TypeScript type resolution.
|
|
33
35
|
*/
|
|
34
|
-
const isStructMarker = (typeRef
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
const isStructMarker = (typeRef) => {
|
|
37
|
+
// Check the expression directly - it should be an identifier named "struct" or "Struct"
|
|
38
|
+
if (ts.isIdentifier(typeRef.expression)) {
|
|
39
|
+
const name = typeRef.expression.text;
|
|
40
|
+
return name === "struct" || name === "Struct";
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
37
43
|
};
|
|
38
44
|
/**
|
|
39
45
|
* Check if an interface has only index signatures (no property/method members).
|
|
@@ -44,7 +50,7 @@ const isStructMarker = (typeRef, checker) => {
|
|
|
44
50
|
*
|
|
45
51
|
* These should be lowered to type aliases for Dictionary<K, V>.
|
|
46
52
|
*/
|
|
47
|
-
const extractIndexSignatureOnlyInterface = (node,
|
|
53
|
+
const extractIndexSignatureOnlyInterface = (node, ctx) => {
|
|
48
54
|
const members = node.members;
|
|
49
55
|
// Must have exactly one member
|
|
50
56
|
if (members.length !== 1) {
|
|
@@ -59,7 +65,7 @@ const extractIndexSignatureOnlyInterface = (node, checker) => {
|
|
|
59
65
|
if (!param || !param.type) {
|
|
60
66
|
return undefined;
|
|
61
67
|
}
|
|
62
|
-
const keyType =
|
|
68
|
+
const keyType = ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(param.type));
|
|
63
69
|
// Only allow string or number keys (enforced by TSN7413)
|
|
64
70
|
if (keyType.kind !== "primitiveType" ||
|
|
65
71
|
(keyType.name !== "string" && keyType.name !== "number")) {
|
|
@@ -69,7 +75,7 @@ const extractIndexSignatureOnlyInterface = (node, checker) => {
|
|
|
69
75
|
if (!member.type) {
|
|
70
76
|
return undefined;
|
|
71
77
|
}
|
|
72
|
-
const valueType =
|
|
78
|
+
const valueType = ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(member.type));
|
|
73
79
|
return { keyType, valueType };
|
|
74
80
|
};
|
|
75
81
|
/**
|
|
@@ -97,18 +103,18 @@ const isMarkerInterface = (node) => {
|
|
|
97
103
|
* Returns null for marker interfaces that should be filtered out.
|
|
98
104
|
* Returns a type alias for index-signature-only interfaces (lowered to Dictionary).
|
|
99
105
|
*/
|
|
100
|
-
export const convertInterfaceDeclaration = (node,
|
|
106
|
+
export const convertInterfaceDeclaration = (node, ctx) => {
|
|
101
107
|
// Filter out marker interfaces completely
|
|
102
108
|
if (isMarkerInterface(node)) {
|
|
103
109
|
return null;
|
|
104
110
|
}
|
|
105
111
|
// Check for index-signature-only interface → lower to type alias for dictionary
|
|
106
|
-
const dictInfo = extractIndexSignatureOnlyInterface(node,
|
|
112
|
+
const dictInfo = extractIndexSignatureOnlyInterface(node, ctx);
|
|
107
113
|
if (dictInfo) {
|
|
108
114
|
return {
|
|
109
115
|
kind: "typeAliasDeclaration",
|
|
110
116
|
name: node.name.text,
|
|
111
|
-
typeParameters: convertTypeParameters(node.typeParameters,
|
|
117
|
+
typeParameters: convertTypeParameters(node.typeParameters, ctx),
|
|
112
118
|
type: {
|
|
113
119
|
kind: "dictionaryType",
|
|
114
120
|
keyType: dictInfo.keyType,
|
|
@@ -123,15 +129,15 @@ export const convertInterfaceDeclaration = (node, checker) => {
|
|
|
123
129
|
const extendsClause = node.heritageClauses?.find((h) => h.token === ts.SyntaxKind.ExtendsKeyword);
|
|
124
130
|
const extendsTypes = extendsClause?.types
|
|
125
131
|
.filter((t) => {
|
|
126
|
-
if (isStructMarker(t
|
|
132
|
+
if (isStructMarker(t)) {
|
|
127
133
|
isStruct = true;
|
|
128
134
|
return false; // Remove marker from extends
|
|
129
135
|
}
|
|
130
136
|
return true;
|
|
131
137
|
})
|
|
132
|
-
.map((t) =>
|
|
138
|
+
.map((t) => ctx.typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(t))) ?? [];
|
|
133
139
|
const allMembers = node.members
|
|
134
|
-
.map((m) => convertInterfaceMember(m,
|
|
140
|
+
.map((m) => convertInterfaceMember(m, ctx))
|
|
135
141
|
.filter((m) => m !== null);
|
|
136
142
|
// Filter out __brand property if this is a struct
|
|
137
143
|
const finalMembers = isStruct
|
|
@@ -140,7 +146,7 @@ export const convertInterfaceDeclaration = (node, checker) => {
|
|
|
140
146
|
return {
|
|
141
147
|
kind: "interfaceDeclaration",
|
|
142
148
|
name: node.name.text,
|
|
143
|
-
typeParameters: convertTypeParameters(node.typeParameters,
|
|
149
|
+
typeParameters: convertTypeParameters(node.typeParameters, ctx),
|
|
144
150
|
extends: extendsTypes,
|
|
145
151
|
members: finalMembers,
|
|
146
152
|
isExported: hasExportModifier(node),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAOjC,OAAO,
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Metadata and binding registry management
|
|
3
|
+
*
|
|
4
|
+
* Provides module-level singletons for:
|
|
5
|
+
* - DotnetMetadataRegistry: .NET metadata for imported types
|
|
6
|
+
* - BindingRegistry: CLR bindings from tsbindgen
|
|
7
|
+
* - TypeRegistry: AST-based type declarations (opaque, set by orchestrator)
|
|
8
|
+
* - NominalEnv: Inheritance chain substitution (opaque, set by orchestrator)
|
|
9
|
+
*
|
|
10
|
+
* ALICE'S SPEC: This module does NOT import internal types.
|
|
11
|
+
* TypeRegistry and NominalEnv are stored as opaque values.
|
|
12
|
+
* Only the orchestrator (which IS allowed to import internals) knows the actual types.
|
|
3
13
|
*/
|
|
4
14
|
import { DotnetMetadataRegistry } from "../../../../dotnet-metadata.js";
|
|
5
15
|
import { BindingRegistry } from "../../../../program/bindings.js";
|
|
16
|
+
import type { TypeSystem } from "../../../type-system/type-system.js";
|
|
17
|
+
/**
|
|
18
|
+
* Opaque type for TypeRegistry (internal type-system implementation detail)
|
|
19
|
+
* The orchestrator sets and retrieves these; converters should use TypeSystem instead.
|
|
20
|
+
*/
|
|
21
|
+
type OpaqueTypeRegistry = unknown;
|
|
22
|
+
/**
|
|
23
|
+
* Opaque type for NominalEnv (internal type-system implementation detail)
|
|
24
|
+
* The orchestrator sets and retrieves these; converters should use TypeSystem instead.
|
|
25
|
+
*/
|
|
26
|
+
type OpaqueNominalEnv = unknown;
|
|
6
27
|
/**
|
|
7
28
|
* Set the metadata registry for this compilation
|
|
8
29
|
* Called once at the start of IR building
|
|
@@ -21,4 +42,55 @@ export declare const setBindingRegistry: (registry: BindingRegistry) => void;
|
|
|
21
42
|
* Get the current binding registry
|
|
22
43
|
*/
|
|
23
44
|
export declare const getBindingRegistry: () => BindingRegistry;
|
|
45
|
+
/**
|
|
46
|
+
* Set the type registry for this compilation (opaque)
|
|
47
|
+
* Called once at the start of IR building by orchestrator
|
|
48
|
+
*
|
|
49
|
+
* ALICE'S SPEC: Parameter is opaque. Orchestrator passes actual TypeRegistry.
|
|
50
|
+
*/
|
|
51
|
+
export declare const setTypeRegistry: (registry: OpaqueTypeRegistry) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Internal accessor for TypeSystem construction only.
|
|
54
|
+
* NOT for use in converters - use TypeSystem methods instead.
|
|
55
|
+
*
|
|
56
|
+
* ALICE'S SPEC: Returns opaque value. Orchestrator casts to actual type.
|
|
57
|
+
*/
|
|
58
|
+
export declare const _internalGetTypeRegistry: () => OpaqueTypeRegistry | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Set the nominal env for this compilation (opaque)
|
|
61
|
+
* Called once at the start of IR building by orchestrator
|
|
62
|
+
*
|
|
63
|
+
* ALICE'S SPEC: Parameter is opaque. Orchestrator passes actual NominalEnv.
|
|
64
|
+
*/
|
|
65
|
+
export declare const setNominalEnv: (env: OpaqueNominalEnv) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Internal accessor for TypeSystem construction only.
|
|
68
|
+
* NOT for use in converters - use TypeSystem methods instead.
|
|
69
|
+
*
|
|
70
|
+
* ALICE'S SPEC: Returns opaque value. Orchestrator casts to actual type.
|
|
71
|
+
*/
|
|
72
|
+
export declare const _internalGetNominalEnv: () => OpaqueNominalEnv | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Set the TypeSystem for this compilation.
|
|
75
|
+
* Called once at the start of IR building, after TypeRegistry and NominalEnv are created.
|
|
76
|
+
*
|
|
77
|
+
* This is the ONLY way to set the global TypeSystem. All converters should
|
|
78
|
+
* eventually receive TypeSystem as a parameter, but during migration they
|
|
79
|
+
* can access it via getTypeSystem().
|
|
80
|
+
*/
|
|
81
|
+
export declare const setTypeSystem: (ts: TypeSystem) => void;
|
|
82
|
+
/**
|
|
83
|
+
* Get the current TypeSystem.
|
|
84
|
+
* Returns undefined if not yet initialized.
|
|
85
|
+
*
|
|
86
|
+
* During Step 7 migration, converters can use this to access TypeSystem
|
|
87
|
+
* before they are fully migrated to receive it as a parameter.
|
|
88
|
+
*/
|
|
89
|
+
export declare const getTypeSystem: () => TypeSystem | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Clear type registry, nominal env, and TypeSystem.
|
|
92
|
+
* Called between compilations to prevent stale data.
|
|
93
|
+
*/
|
|
94
|
+
export declare const clearTypeRegistries: () => void;
|
|
95
|
+
export {};
|
|
24
96
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE;;;GAGG;AACH,KAAK,kBAAkB,GAAG,OAAO,CAAC;AAElC;;;GAGG;AACH,KAAK,gBAAgB,GAAG,OAAO,CAAC;AAuChC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,sBAAsB,KAAG,IAEtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAO,sBACpB,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,eAAe,KAAG,IAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,eAAmC,CAAC;AAE1E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,kBAAkB,KAAG,IAE9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAO,kBAAkB,GAAG,SAClD,CAAC;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,gBAAgB,KAAG,IAErD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAO,gBAAgB,GAAG,SAChD,CAAC;AAEd;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,UAAU,KAAG,IAE9C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,QAAO,UAAU,GAAG,SAAwB,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAO,IAItC,CAAC"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Metadata and binding registry management
|
|
3
|
+
*
|
|
4
|
+
* Provides module-level singletons for:
|
|
5
|
+
* - DotnetMetadataRegistry: .NET metadata for imported types
|
|
6
|
+
* - BindingRegistry: CLR bindings from tsbindgen
|
|
7
|
+
* - TypeRegistry: AST-based type declarations (opaque, set by orchestrator)
|
|
8
|
+
* - NominalEnv: Inheritance chain substitution (opaque, set by orchestrator)
|
|
9
|
+
*
|
|
10
|
+
* ALICE'S SPEC: This module does NOT import internal types.
|
|
11
|
+
* TypeRegistry and NominalEnv are stored as opaque values.
|
|
12
|
+
* Only the orchestrator (which IS allowed to import internals) knows the actual types.
|
|
3
13
|
*/
|
|
4
14
|
import { DotnetMetadataRegistry } from "../../../../dotnet-metadata.js";
|
|
5
15
|
import { BindingRegistry } from "../../../../program/bindings.js";
|
|
@@ -13,6 +23,28 @@ let _metadataRegistry = new DotnetMetadataRegistry();
|
|
|
13
23
|
* Set once at the start of compilation via setBindingRegistry()
|
|
14
24
|
*/
|
|
15
25
|
let _bindingRegistry = new BindingRegistry();
|
|
26
|
+
/**
|
|
27
|
+
* Module-level type registry singleton (opaque)
|
|
28
|
+
* Set once at the start of compilation via setTypeRegistry()
|
|
29
|
+
* Used for AST-based type declaration lookups (deterministic typing)
|
|
30
|
+
*
|
|
31
|
+
* ALICE'S SPEC: Stored as opaque value. Only orchestrator knows actual type.
|
|
32
|
+
*/
|
|
33
|
+
let _typeRegistry = undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Module-level nominal env singleton (opaque)
|
|
36
|
+
* Set once at the start of compilation via setNominalEnv()
|
|
37
|
+
* Used for inheritance chain substitution (deterministic typing)
|
|
38
|
+
*
|
|
39
|
+
* ALICE'S SPEC: Stored as opaque value. Only orchestrator knows actual type.
|
|
40
|
+
*/
|
|
41
|
+
let _nominalEnv = undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Module-level TypeSystem singleton
|
|
44
|
+
* Set once at the start of compilation via setTypeSystem()
|
|
45
|
+
* This is the single source of truth for all type queries (Alice's spec)
|
|
46
|
+
*/
|
|
47
|
+
let _typeSystem = undefined;
|
|
16
48
|
/**
|
|
17
49
|
* Set the metadata registry for this compilation
|
|
18
50
|
* Called once at the start of IR building
|
|
@@ -35,4 +67,64 @@ export const setBindingRegistry = (registry) => {
|
|
|
35
67
|
* Get the current binding registry
|
|
36
68
|
*/
|
|
37
69
|
export const getBindingRegistry = () => _bindingRegistry;
|
|
70
|
+
/**
|
|
71
|
+
* Set the type registry for this compilation (opaque)
|
|
72
|
+
* Called once at the start of IR building by orchestrator
|
|
73
|
+
*
|
|
74
|
+
* ALICE'S SPEC: Parameter is opaque. Orchestrator passes actual TypeRegistry.
|
|
75
|
+
*/
|
|
76
|
+
export const setTypeRegistry = (registry) => {
|
|
77
|
+
_typeRegistry = registry;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Internal accessor for TypeSystem construction only.
|
|
81
|
+
* NOT for use in converters - use TypeSystem methods instead.
|
|
82
|
+
*
|
|
83
|
+
* ALICE'S SPEC: Returns opaque value. Orchestrator casts to actual type.
|
|
84
|
+
*/
|
|
85
|
+
export const _internalGetTypeRegistry = () => _typeRegistry;
|
|
86
|
+
/**
|
|
87
|
+
* Set the nominal env for this compilation (opaque)
|
|
88
|
+
* Called once at the start of IR building by orchestrator
|
|
89
|
+
*
|
|
90
|
+
* ALICE'S SPEC: Parameter is opaque. Orchestrator passes actual NominalEnv.
|
|
91
|
+
*/
|
|
92
|
+
export const setNominalEnv = (env) => {
|
|
93
|
+
_nominalEnv = env;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Internal accessor for TypeSystem construction only.
|
|
97
|
+
* NOT for use in converters - use TypeSystem methods instead.
|
|
98
|
+
*
|
|
99
|
+
* ALICE'S SPEC: Returns opaque value. Orchestrator casts to actual type.
|
|
100
|
+
*/
|
|
101
|
+
export const _internalGetNominalEnv = () => _nominalEnv;
|
|
102
|
+
/**
|
|
103
|
+
* Set the TypeSystem for this compilation.
|
|
104
|
+
* Called once at the start of IR building, after TypeRegistry and NominalEnv are created.
|
|
105
|
+
*
|
|
106
|
+
* This is the ONLY way to set the global TypeSystem. All converters should
|
|
107
|
+
* eventually receive TypeSystem as a parameter, but during migration they
|
|
108
|
+
* can access it via getTypeSystem().
|
|
109
|
+
*/
|
|
110
|
+
export const setTypeSystem = (ts) => {
|
|
111
|
+
_typeSystem = ts;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Get the current TypeSystem.
|
|
115
|
+
* Returns undefined if not yet initialized.
|
|
116
|
+
*
|
|
117
|
+
* During Step 7 migration, converters can use this to access TypeSystem
|
|
118
|
+
* before they are fully migrated to receive it as a parameter.
|
|
119
|
+
*/
|
|
120
|
+
export const getTypeSystem = () => _typeSystem;
|
|
121
|
+
/**
|
|
122
|
+
* Clear type registry, nominal env, and TypeSystem.
|
|
123
|
+
* Called between compilations to prevent stale data.
|
|
124
|
+
*/
|
|
125
|
+
export const clearTypeRegistries = () => {
|
|
126
|
+
_typeRegistry = undefined;
|
|
127
|
+
_nominalEnv = undefined;
|
|
128
|
+
_typeSystem = undefined;
|
|
129
|
+
};
|
|
38
130
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAelE;;;GAGG;AACH,IAAI,iBAAiB,GAA2B,IAAI,sBAAsB,EAAE,CAAC;AAE7E;;;GAGG;AACH,IAAI,gBAAgB,GAAoB,IAAI,eAAe,EAAE,CAAC;AAE9D;;;;;;GAMG;AACH,IAAI,aAAa,GAAmC,SAAS,CAAC;AAE9D;;;;;;GAMG;AACH,IAAI,WAAW,GAAiC,SAAS,CAAC;AAE1D;;;;GAIG;AACH,IAAI,WAAW,GAA2B,SAAS,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAgC,EAAQ,EAAE;IAC5E,iBAAiB,GAAG,QAAQ,CAAC;AAC/B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAA2B,EAAE,CAC9D,iBAAiB,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAyB,EAAQ,EAAE;IACpE,gBAAgB,GAAG,QAAQ,CAAC;AAC9B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAoB,EAAE,CAAC,gBAAgB,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAA4B,EAAQ,EAAE;IACpE,aAAa,GAAG,QAAQ,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAmC,EAAE,CAC3E,aAAa,CAAC;AAEhB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAqB,EAAQ,EAAE;IAC3D,WAAW,GAAG,GAAG,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAiC,EAAE,CACvE,WAAW,CAAC;AAEd;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAc,EAAQ,EAAE;IACpD,WAAW,GAAG,EAAE,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAA2B,EAAE,CAAC,WAAW,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAS,EAAE;IAC5C,aAAa,GAAG,SAAS,CAAC;IAC1B,WAAW,GAAG,SAAS,CAAC;IACxB,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
5
|
import { IrStatement } from "../../../types.js";
|
|
6
|
+
import type { ProgramContext } from "../../../program-context.js";
|
|
6
7
|
/**
|
|
7
8
|
* Convert type alias declaration.
|
|
8
9
|
*
|
|
@@ -11,5 +12,5 @@ import { IrStatement } from "../../../types.js";
|
|
|
11
12
|
*
|
|
12
13
|
* @returns Array of statements: [synthetic interfaces..., type alias]
|
|
13
14
|
*/
|
|
14
|
-
export declare const convertTypeAliasDeclaration: (node: ts.TypeAliasDeclaration,
|
|
15
|
+
export declare const convertTypeAliasDeclaration: (node: ts.TypeAliasDeclaration, ctx: ProgramContext) => readonly IrStatement[];
|
|
15
16
|
//# sourceMappingURL=type-aliases.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-aliases.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/type-aliases.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"type-aliases.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/type-aliases.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AAGxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACtC,MAAM,EAAE,CAAC,oBAAoB,EAC7B,KAAK,cAAc,KAClB,SAAS,WAAW,EAkBtB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type alias declaration converter
|
|
3
3
|
*/
|
|
4
|
-
import { convertType } from "../../../type-converter.js";
|
|
5
4
|
import { hasExportModifier, convertTypeParameters } from "../helpers.js";
|
|
6
5
|
import { processTypeAliasForSynthetics } from "../../synthetic-types.js";
|
|
7
6
|
/**
|
|
@@ -12,12 +11,15 @@ import { processTypeAliasForSynthetics } from "../../synthetic-types.js";
|
|
|
12
11
|
*
|
|
13
12
|
* @returns Array of statements: [synthetic interfaces..., type alias]
|
|
14
13
|
*/
|
|
15
|
-
export const convertTypeAliasDeclaration = (node,
|
|
14
|
+
export const convertTypeAliasDeclaration = (node, ctx) => {
|
|
15
|
+
// PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
|
|
16
|
+
// This replaces the deprecated convertTypeNode pattern.
|
|
17
|
+
const typeSyntaxId = ctx.binding.captureTypeSyntax(node.type);
|
|
16
18
|
const baseAlias = {
|
|
17
19
|
kind: "typeAliasDeclaration",
|
|
18
20
|
name: node.name.text,
|
|
19
|
-
typeParameters: convertTypeParameters(node.typeParameters,
|
|
20
|
-
type:
|
|
21
|
+
typeParameters: convertTypeParameters(node.typeParameters, ctx),
|
|
22
|
+
type: ctx.typeSystem.typeFromSyntax(typeSyntaxId),
|
|
21
23
|
isExported: hasExportModifier(node),
|
|
22
24
|
isStruct: false, // Type aliases are not structs by default
|
|
23
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-aliases.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/type-aliases.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"type-aliases.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/type-aliases.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAGzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,IAA6B,EAC7B,GAAmB,EACK,EAAE;IAC1B,iEAAiE;IACjE,wDAAwD;IACxD,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,SAAS,GAA2B;QACxC,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACpB,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC;QAC/D,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC;QACjD,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC;QACnC,QAAQ,EAAE,KAAK,EAAE,0CAA0C;KAC5D,CAAC;IAEF,mEAAmE;IACnE,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAExD,oEAAoE;IACpE,OAAO,CAAC,GAAG,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3D,CAAC,CAAC"}
|
|
@@ -3,8 +3,18 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
5
|
import { IrVariableDeclaration } from "../../../types.js";
|
|
6
|
+
import type { ProgramContext } from "../../../program-context.js";
|
|
6
7
|
/**
|
|
7
8
|
* Convert variable statement
|
|
9
|
+
*
|
|
10
|
+
* Passes the LHS type annotation (if present) to the initializer conversion
|
|
11
|
+
* for deterministic contextual typing. This ensures that:
|
|
12
|
+
* - `const a: number[] = [1,2,3]` produces `double[]` not `int[]`
|
|
13
|
+
* - `const x: int = 5` produces `int` not `double`
|
|
14
|
+
*
|
|
15
|
+
* For module-level variables (without explicit annotation), we infer the type
|
|
16
|
+
* from TypeScript and pass it as expectedType to ensure consistent typing
|
|
17
|
+
* between the variable declaration and its initializer.
|
|
8
18
|
*/
|
|
9
|
-
export declare const convertVariableStatement: (node: ts.VariableStatement,
|
|
19
|
+
export declare const convertVariableStatement: (node: ts.VariableStatement, ctx: ProgramContext) => IrVariableDeclaration;
|
|
10
20
|
//# sourceMappingURL=variables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/variables.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/variables.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAwB,MAAM,mBAAmB,CAAC;AAIhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AA0GlE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,GACnC,MAAM,EAAE,CAAC,iBAAiB,EAC1B,KAAK,cAAc,KAClB,qBA+CF,CAAC"}
|