@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
|
@@ -1,14 +1,70 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Export extraction from TypeScript source
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext for statement/expression conversion.
|
|
3
5
|
*/
|
|
4
6
|
import * as ts from "typescript";
|
|
5
7
|
import { convertStatement, flattenStatementResult, } from "../statement-converter.js";
|
|
6
8
|
import { convertExpression } from "../expression-converter.js";
|
|
7
9
|
import { hasExportModifier, hasDefaultModifier } from "./helpers.js";
|
|
8
10
|
/**
|
|
9
|
-
* Extract export declarations from source file
|
|
11
|
+
* Extract export declarations from source file.
|
|
12
|
+
*
|
|
13
|
+
* This function has two signatures:
|
|
14
|
+
* - With just Binding: Used when only export metadata is needed (no statement conversion)
|
|
15
|
+
* - With ProgramContext: Used when exported declarations need to be converted
|
|
16
|
+
*
|
|
17
|
+
* @param sourceFile - The TypeScript source file
|
|
18
|
+
* @param binding - The binding layer (for simple export extraction without conversion)
|
|
10
19
|
*/
|
|
11
|
-
export const extractExports = (sourceFile,
|
|
20
|
+
export const extractExports = (sourceFile, _binding) => {
|
|
21
|
+
const exports = [];
|
|
22
|
+
const visitor = (node) => {
|
|
23
|
+
if (ts.isExportDeclaration(node)) {
|
|
24
|
+
if (node.exportClause && ts.isNamedExports(node.exportClause)) {
|
|
25
|
+
// Check if this is a re-export (has moduleSpecifier)
|
|
26
|
+
if (node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
|
|
27
|
+
// Re-export: export { x } from "./other.ts"
|
|
28
|
+
const fromModule = node.moduleSpecifier.text;
|
|
29
|
+
node.exportClause.elements.forEach((spec) => {
|
|
30
|
+
exports.push({
|
|
31
|
+
kind: "reexport",
|
|
32
|
+
name: spec.name.text, // Exported name
|
|
33
|
+
originalName: (spec.propertyName ?? spec.name).text, // Name in source module
|
|
34
|
+
fromModule,
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Regular named export: export { x }
|
|
40
|
+
node.exportClause.elements.forEach((spec) => {
|
|
41
|
+
exports.push({
|
|
42
|
+
kind: "named",
|
|
43
|
+
name: spec.name.text,
|
|
44
|
+
localName: (spec.propertyName ?? spec.name).text,
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else if (hasExportModifier(node)) {
|
|
51
|
+
// For exported declarations, we need the full context to convert them
|
|
52
|
+
// This is handled by extractExportsWithContext
|
|
53
|
+
// Here we just record that there's an export, but don't convert
|
|
54
|
+
// The actual conversion is done in extractStatements
|
|
55
|
+
}
|
|
56
|
+
ts.forEachChild(node, visitor);
|
|
57
|
+
};
|
|
58
|
+
visitor(sourceFile);
|
|
59
|
+
return exports;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Extract export declarations from source file with full conversion.
|
|
63
|
+
*
|
|
64
|
+
* @param sourceFile - The TypeScript source file
|
|
65
|
+
* @param ctx - ProgramContext for full statement/expression conversion
|
|
66
|
+
*/
|
|
67
|
+
export const extractExportsWithContext = (sourceFile, ctx) => {
|
|
12
68
|
const exports = [];
|
|
13
69
|
const visitor = (node) => {
|
|
14
70
|
if (ts.isExportDeclaration(node)) {
|
|
@@ -41,25 +97,28 @@ export const extractExports = (sourceFile, checker) => {
|
|
|
41
97
|
else if (ts.isExportAssignment(node)) {
|
|
42
98
|
exports.push({
|
|
43
99
|
kind: "default",
|
|
44
|
-
expression: convertExpression(node.expression,
|
|
100
|
+
expression: convertExpression(node.expression, ctx, undefined),
|
|
45
101
|
});
|
|
46
102
|
}
|
|
47
103
|
else if (hasExportModifier(node)) {
|
|
48
104
|
const hasDefault = hasDefaultModifier(node);
|
|
49
105
|
if (hasDefault) {
|
|
50
106
|
// export default function/class/etc
|
|
51
|
-
const result = convertStatement(node,
|
|
107
|
+
const result = convertStatement(node, ctx, undefined);
|
|
52
108
|
const statements = flattenStatementResult(result);
|
|
53
109
|
if (statements.length > 0) {
|
|
54
110
|
exports.push({
|
|
55
111
|
kind: "default",
|
|
56
|
-
expression: {
|
|
112
|
+
expression: {
|
|
113
|
+
kind: "identifier",
|
|
114
|
+
name: "_default",
|
|
115
|
+
}, // placeholder for now
|
|
57
116
|
});
|
|
58
117
|
}
|
|
59
118
|
}
|
|
60
119
|
else {
|
|
61
120
|
// regular export - may produce multiple statements (e.g., type aliases with synthetics)
|
|
62
|
-
const result = convertStatement(node,
|
|
121
|
+
const result = convertStatement(node, ctx, undefined);
|
|
63
122
|
const statements = flattenStatementResult(result);
|
|
64
123
|
for (const stmt of statements) {
|
|
65
124
|
exports.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/ir/builder/exports.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/ir/builder/exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import extraction from TypeScript source
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext instead of global singletons.
|
|
3
5
|
*/
|
|
4
6
|
import * as ts from "typescript";
|
|
5
7
|
import { IrImport, IrImportSpecifier } from "../types.js";
|
|
6
|
-
import {
|
|
8
|
+
import type { ProgramContext } from "../program-context.js";
|
|
9
|
+
import type { Binding } from "../binding/index.js";
|
|
10
|
+
import type { TypeAuthority } from "../type-system/type-system.js";
|
|
7
11
|
/**
|
|
8
12
|
* Extract import declarations from source file.
|
|
9
|
-
* Uses
|
|
13
|
+
* Uses Binding layer to determine if each import is a type or value.
|
|
10
14
|
* Uses ClrBindingsResolver to detect CLR namespace imports.
|
|
11
15
|
*/
|
|
12
|
-
export declare const extractImports: (sourceFile: ts.SourceFile,
|
|
16
|
+
export declare const extractImports: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly IrImport[];
|
|
13
17
|
/**
|
|
14
18
|
* Extract import specifiers from an import declaration.
|
|
15
|
-
* Uses
|
|
19
|
+
* Uses Binding layer to determine if each named import is a type or value.
|
|
16
20
|
*/
|
|
17
|
-
export declare const extractImportSpecifiers: (node: ts.ImportDeclaration,
|
|
21
|
+
export declare const extractImportSpecifiers: (node: ts.ImportDeclaration, binding: Binding, typeSystem: TypeAuthority) => readonly IrImportSpecifier[];
|
|
18
22
|
//# sourceMappingURL=imports.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,QAAQ,EAsDnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,iBAAiB,EAC1B,SAAS,OAAO,EAChB,YAAY,aAAa,KACxB,SAAS,iBAAiB,EAkC5B,CAAC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import extraction from TypeScript source
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext instead of global singletons.
|
|
3
5
|
*/
|
|
4
6
|
import * as ts from "typescript";
|
|
5
|
-
import { getBindingRegistry } from "../converters/statements/declarations/registry.js";
|
|
6
7
|
/**
|
|
7
8
|
* Extract import declarations from source file.
|
|
8
|
-
* Uses
|
|
9
|
+
* Uses Binding layer to determine if each import is a type or value.
|
|
9
10
|
* Uses ClrBindingsResolver to detect CLR namespace imports.
|
|
10
11
|
*/
|
|
11
|
-
export const extractImports = (sourceFile,
|
|
12
|
+
export const extractImports = (sourceFile, ctx) => {
|
|
12
13
|
const imports = [];
|
|
13
14
|
const visitor = (node) => {
|
|
14
15
|
if (ts.isImportDeclaration(node) &&
|
|
@@ -19,7 +20,7 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
|
|
|
19
20
|
// This works for any package that provides bindings.json
|
|
20
21
|
// Note: Bindings are loaded upfront by discoverAndLoadClrBindings()
|
|
21
22
|
// in dependency-graph.ts before IR building starts.
|
|
22
|
-
const clrResolution = clrResolver.resolve(source);
|
|
23
|
+
const clrResolution = ctx.clrResolver.resolve(source);
|
|
23
24
|
const isClr = clrResolution.isClr;
|
|
24
25
|
const resolvedNamespace = clrResolution.isClr
|
|
25
26
|
? clrResolution.resolvedNamespace
|
|
@@ -27,12 +28,12 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
|
|
|
27
28
|
const clrAssembly = clrResolution.isClr
|
|
28
29
|
? clrResolution.assembly
|
|
29
30
|
: undefined;
|
|
30
|
-
const specifiers = extractImportSpecifiers(node,
|
|
31
|
+
const specifiers = extractImportSpecifiers(node, ctx.binding, ctx.typeSystem);
|
|
31
32
|
// Check for module binding (Node.js API, etc.)
|
|
32
|
-
const
|
|
33
|
-
const hasModuleBinding =
|
|
33
|
+
const moduleBinding = ctx.bindings.getBinding(source);
|
|
34
|
+
const hasModuleBinding = moduleBinding?.kind === "module";
|
|
34
35
|
// Assembly comes from CLR resolution (bindings.json) or module binding
|
|
35
|
-
const resolvedAssembly = clrAssembly ?? (hasModuleBinding ?
|
|
36
|
+
const resolvedAssembly = clrAssembly ?? (hasModuleBinding ? moduleBinding.assembly : undefined);
|
|
36
37
|
imports.push({
|
|
37
38
|
kind: "import",
|
|
38
39
|
source,
|
|
@@ -40,7 +41,7 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
|
|
|
40
41
|
isClr,
|
|
41
42
|
specifiers,
|
|
42
43
|
resolvedNamespace,
|
|
43
|
-
resolvedClrType: hasModuleBinding ?
|
|
44
|
+
resolvedClrType: hasModuleBinding ? moduleBinding.type : undefined,
|
|
44
45
|
resolvedAssembly,
|
|
45
46
|
});
|
|
46
47
|
}
|
|
@@ -51,9 +52,9 @@ export const extractImports = (sourceFile, checker, clrResolver) => {
|
|
|
51
52
|
};
|
|
52
53
|
/**
|
|
53
54
|
* Extract import specifiers from an import declaration.
|
|
54
|
-
* Uses
|
|
55
|
+
* Uses Binding layer to determine if each named import is a type or value.
|
|
55
56
|
*/
|
|
56
|
-
export const extractImportSpecifiers = (node,
|
|
57
|
+
export const extractImportSpecifiers = (node, binding, typeSystem) => {
|
|
57
58
|
const specifiers = [];
|
|
58
59
|
if (node.importClause) {
|
|
59
60
|
// Default import
|
|
@@ -73,7 +74,7 @@ export const extractImportSpecifiers = (node, checker) => {
|
|
|
73
74
|
}
|
|
74
75
|
else if (ts.isNamedImports(node.importClause.namedBindings)) {
|
|
75
76
|
node.importClause.namedBindings.elements.forEach((spec) => {
|
|
76
|
-
const isType = isTypeImport(spec,
|
|
77
|
+
const isType = isTypeImport(spec, binding, typeSystem);
|
|
77
78
|
specifiers.push({
|
|
78
79
|
kind: "named",
|
|
79
80
|
name: (spec.propertyName ?? spec.name).text,
|
|
@@ -88,33 +89,21 @@ export const extractImportSpecifiers = (node, checker) => {
|
|
|
88
89
|
};
|
|
89
90
|
/**
|
|
90
91
|
* Determine if an import specifier refers to a type (interface, class, type alias, enum).
|
|
91
|
-
* Uses
|
|
92
|
+
* ALICE'S SPEC: Uses TypeSystem.isTypeDecl() to check declaration kind.
|
|
92
93
|
*/
|
|
93
|
-
const isTypeImport = (spec,
|
|
94
|
+
const isTypeImport = (spec, binding, typeSystem) => {
|
|
94
95
|
try {
|
|
95
96
|
// TypeScript's isTypeOnly flag on the specifier itself (for `import { type Foo }`)
|
|
96
97
|
if (spec.isTypeOnly) {
|
|
97
98
|
return true;
|
|
98
99
|
}
|
|
99
|
-
//
|
|
100
|
-
const
|
|
101
|
-
if (!
|
|
100
|
+
// Use Binding to resolve the import to its declaration
|
|
101
|
+
const declId = binding.resolveImport(spec);
|
|
102
|
+
if (!declId) {
|
|
102
103
|
return false;
|
|
103
104
|
}
|
|
104
|
-
//
|
|
105
|
-
|
|
106
|
-
? checker.getAliasedSymbol(symbol)
|
|
107
|
-
: symbol;
|
|
108
|
-
if (!resolvedSymbol) {
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
// Check if the symbol is a type
|
|
112
|
-
const flags = resolvedSymbol.flags;
|
|
113
|
-
return !!(flags & ts.SymbolFlags.Interface ||
|
|
114
|
-
flags & ts.SymbolFlags.Class ||
|
|
115
|
-
flags & ts.SymbolFlags.TypeAlias ||
|
|
116
|
-
flags & ts.SymbolFlags.Enum ||
|
|
117
|
-
flags & ts.SymbolFlags.TypeParameter);
|
|
105
|
+
// ALICE'S SPEC: Use TypeSystem.isTypeDecl() to check if declaration is a type
|
|
106
|
+
return typeSystem.isTypeDecl(declId);
|
|
118
107
|
}
|
|
119
108
|
catch {
|
|
120
109
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* IR Builder orchestration - Main module building logic
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext instead of global singletons.
|
|
3
5
|
*/
|
|
4
6
|
import * as ts from "typescript";
|
|
5
7
|
import { IrModule } from "../types.js";
|
|
6
8
|
import { TsonicProgram } from "../../program.js";
|
|
7
9
|
import { Result } from "../../types/result.js";
|
|
8
10
|
import { Diagnostic } from "../../types/diagnostic.js";
|
|
11
|
+
import { type ProgramContext } from "../program-context.js";
|
|
9
12
|
import { IrBuildOptions } from "./types.js";
|
|
10
13
|
/**
|
|
11
14
|
* Build IR module from TypeScript source file
|
|
15
|
+
*
|
|
16
|
+
* @param sourceFile - The TypeScript source file to convert
|
|
17
|
+
* @param program - The Tsonic program with type checker and bindings
|
|
18
|
+
* @param options - Build options (sourceRoot, rootNamespace)
|
|
19
|
+
* @param ctx - ProgramContext for TypeSystem and other shared resources.
|
|
20
|
+
* Required - no global state fallback.
|
|
12
21
|
*/
|
|
13
|
-
export declare const buildIrModule: (sourceFile: ts.SourceFile,
|
|
22
|
+
export declare const buildIrModule: (sourceFile: ts.SourceFile, _program: TsonicProgram, options: IrBuildOptions, ctx: ProgramContext) => Result<IrModule, Diagnostic>;
|
|
14
23
|
/**
|
|
15
24
|
* Build IR for all source files in the program
|
|
16
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAa,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,UAAU,EAGX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,EAAE,CAAC,UAAU,EACzB,UAAU,aAAa,EACvB,SAAS,cAAc,EACvB,KAAK,cAAc,KAClB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAiH7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,aAAa,EACtB,SAAS,cAAc,KACtB,MAAM,CAAC,SAAS,QAAQ,EAAE,EAAE,SAAS,UAAU,EAAE,CA0BnD,CAAC"}
|
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* IR Builder orchestration - Main module building logic
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext instead of global singletons.
|
|
3
5
|
*/
|
|
4
6
|
import { relative } from "path";
|
|
5
7
|
import { getNamespaceFromPath, getClassNameFromPath } from "../../resolver.js";
|
|
6
8
|
import { ok, error } from "../../types/result.js";
|
|
7
|
-
import { createDiagnostic } from "../../types/diagnostic.js";
|
|
8
|
-
import {
|
|
9
|
+
import { createDiagnostic, isFatal, } from "../../types/diagnostic.js";
|
|
10
|
+
import { createProgramContext, } from "../program-context.js";
|
|
9
11
|
import { extractImports } from "./imports.js";
|
|
10
|
-
import {
|
|
12
|
+
import { extractExportsWithContext } from "./exports.js";
|
|
11
13
|
import { extractStatements, isExecutableStatement } from "./statements.js";
|
|
12
14
|
import { validateClassImplements } from "./validation.js";
|
|
13
15
|
/**
|
|
14
16
|
* Build IR module from TypeScript source file
|
|
17
|
+
*
|
|
18
|
+
* @param sourceFile - The TypeScript source file to convert
|
|
19
|
+
* @param program - The Tsonic program with type checker and bindings
|
|
20
|
+
* @param options - Build options (sourceRoot, rootNamespace)
|
|
21
|
+
* @param ctx - ProgramContext for TypeSystem and other shared resources.
|
|
22
|
+
* Required - no global state fallback.
|
|
15
23
|
*/
|
|
16
|
-
export const buildIrModule = (sourceFile,
|
|
24
|
+
export const buildIrModule = (sourceFile, _program, options, ctx) => {
|
|
17
25
|
try {
|
|
18
|
-
// Set the metadata registry for this compilation
|
|
19
|
-
setMetadataRegistry(program.metadata);
|
|
20
|
-
// Set the binding registry for this compilation
|
|
21
|
-
setBindingRegistry(program.bindings);
|
|
22
26
|
const namespace = getNamespaceFromPath(sourceFile.fileName, options.sourceRoot, options.rootNamespace);
|
|
23
|
-
const className = getClassNameFromPath(sourceFile.fileName);
|
|
24
|
-
const imports = extractImports(sourceFile,
|
|
25
|
-
const exports =
|
|
26
|
-
const statements = extractStatements(sourceFile,
|
|
27
|
+
const className = getClassNameFromPath(sourceFile.fileName, options.namingPolicy?.classes);
|
|
28
|
+
const imports = extractImports(sourceFile, ctx);
|
|
29
|
+
const exports = extractExportsWithContext(sourceFile, ctx);
|
|
30
|
+
const statements = extractStatements(sourceFile, ctx);
|
|
27
31
|
// Check for file name / export name collision (Issue #4)
|
|
28
32
|
// When file name matches an exported function/variable name, C# will have illegal code
|
|
29
33
|
// Example: main.ts exporting function main() → class main { void main() } ❌
|
|
@@ -63,7 +67,7 @@ export const buildIrModule = (sourceFile, program, options) => {
|
|
|
63
67
|
}
|
|
64
68
|
// Validate class implements patterns
|
|
65
69
|
// TypeScript interfaces are nominalized to C# classes, so "implements" is invalid
|
|
66
|
-
const implementsDiagnostics = validateClassImplements(sourceFile,
|
|
70
|
+
const implementsDiagnostics = validateClassImplements(sourceFile, ctx);
|
|
67
71
|
const firstImplementsDiagnostic = implementsDiagnostics[0];
|
|
68
72
|
if (firstImplementsDiagnostic) {
|
|
69
73
|
return error(firstImplementsDiagnostic);
|
|
@@ -102,15 +106,22 @@ export const buildIrModule = (sourceFile, program, options) => {
|
|
|
102
106
|
* Build IR for all source files in the program
|
|
103
107
|
*/
|
|
104
108
|
export const buildIr = (program, options) => {
|
|
109
|
+
// Create ProgramContext — the single owner of all semantic state
|
|
110
|
+
// No global singletons are used; context is passed explicitly
|
|
111
|
+
const ctx = createProgramContext(program, options);
|
|
105
112
|
const modules = [];
|
|
106
113
|
const diagnostics = [];
|
|
107
114
|
for (const sourceFile of program.sourceFiles) {
|
|
108
|
-
const result = buildIrModule(sourceFile, program, options);
|
|
115
|
+
const result = buildIrModule(sourceFile, program, options, ctx);
|
|
109
116
|
if (result.ok) {
|
|
110
117
|
modules.push(result.value);
|
|
111
118
|
}
|
|
112
119
|
else {
|
|
113
120
|
diagnostics.push(result.error);
|
|
121
|
+
// Fatal diagnostics abort immediately - no point continuing
|
|
122
|
+
if (isFatal(result.error)) {
|
|
123
|
+
return error(diagnostics);
|
|
124
|
+
}
|
|
114
125
|
}
|
|
115
126
|
}
|
|
116
127
|
if (diagnostics.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ir/builder/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Statement extraction from TypeScript source
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext instead of global singletons.
|
|
3
5
|
*/
|
|
4
6
|
import * as ts from "typescript";
|
|
5
7
|
import { IrStatement } from "../types.js";
|
|
8
|
+
import type { ProgramContext } from "../program-context.js";
|
|
6
9
|
/**
|
|
7
10
|
* Extract statements from source file.
|
|
8
11
|
*
|
|
@@ -11,8 +14,11 @@ import { IrStatement } from "../types.js";
|
|
|
11
14
|
*
|
|
12
15
|
* Also collects synthetic type declarations generated during conversion
|
|
13
16
|
* (from anonymous object literal synthesis) and prepends them.
|
|
17
|
+
*
|
|
18
|
+
* @param sourceFile - The TypeScript source file to extract from
|
|
19
|
+
* @param ctx - ProgramContext for TypeSystem and binding access
|
|
14
20
|
*/
|
|
15
|
-
export declare const extractStatements: (sourceFile: ts.SourceFile,
|
|
21
|
+
export declare const extractStatements: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly IrStatement[];
|
|
16
22
|
/**
|
|
17
23
|
* Check if a statement is executable (not a declaration)
|
|
18
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,WAAW,EA0BtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,WAAW,KAAG,OAiBzD,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Statement extraction from TypeScript source
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext instead of global singletons.
|
|
3
5
|
*/
|
|
4
6
|
import * as ts from "typescript";
|
|
5
7
|
import { convertStatement, flattenStatementResult, } from "../statement-converter.js";
|
|
@@ -12,8 +14,11 @@ import { resetSyntheticRegistry, getSyntheticDeclarations, } from "../converters
|
|
|
12
14
|
*
|
|
13
15
|
* Also collects synthetic type declarations generated during conversion
|
|
14
16
|
* (from anonymous object literal synthesis) and prepends them.
|
|
17
|
+
*
|
|
18
|
+
* @param sourceFile - The TypeScript source file to extract from
|
|
19
|
+
* @param ctx - ProgramContext for TypeSystem and binding access
|
|
15
20
|
*/
|
|
16
|
-
export const extractStatements = (sourceFile,
|
|
21
|
+
export const extractStatements = (sourceFile, ctx) => {
|
|
17
22
|
// Reset synthetic registry for this file
|
|
18
23
|
resetSyntheticRegistry();
|
|
19
24
|
const statements = [];
|
|
@@ -22,7 +27,7 @@ export const extractStatements = (sourceFile, checker) => {
|
|
|
22
27
|
if (!ts.isImportDeclaration(stmt) &&
|
|
23
28
|
!ts.isExportDeclaration(stmt) &&
|
|
24
29
|
!ts.isExportAssignment(stmt)) {
|
|
25
|
-
const converted = convertStatement(stmt,
|
|
30
|
+
const converted = convertStatement(stmt, ctx, undefined);
|
|
26
31
|
// Flatten result (handles both single statements and arrays)
|
|
27
32
|
statements.push(...flattenStatementResult(converted));
|
|
28
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../../../src/ir/builder/statements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAyB,EACzB,GAAmB,EACK,EAAE;IAC1B,yCAAyC;IACzC,sBAAsB,EAAE,CAAC;IAEzB,MAAM,UAAU,GAAkB,EAAE,CAAC;IAErC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,gDAAgD;QAChD,IACE,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC7B,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC7B,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAC5B,CAAC;YACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YACzD,6DAA6D;YAC7D,UAAU,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kDAAkD;IAClD,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;IAClD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAiB,EAAW,EAAE;IAClE,gFAAgF;IAChF,MAAM,gBAAgB,GAAG;QACvB,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,iBAAiB;QACjB,qBAAqB,EAAE,oDAAoD;KAC5E,CAAC;IAEF,sCAAsC;IACtC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;KACjC,CAAC;CACH,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* IR builder validation - checks for unsupported patterns
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses ProgramContext instead of global singletons.
|
|
3
5
|
*/
|
|
4
6
|
import * as ts from "typescript";
|
|
5
7
|
import { Diagnostic } from "../../types/diagnostic.js";
|
|
8
|
+
import type { ProgramContext } from "../program-context.js";
|
|
6
9
|
/**
|
|
7
10
|
* Validate all class declarations in a source file
|
|
8
11
|
*/
|
|
9
|
-
export declare const validateClassImplements: (sourceFile: ts.SourceFile,
|
|
12
|
+
export declare const validateClassImplements: (sourceFile: ts.SourceFile, ctx: ProgramContext) => readonly Diagnostic[];
|
|
10
13
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA+F5D;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,UAAU,EAYrB,CAAC"}
|