@tsonic/frontend 0.0.14 → 0.0.16
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 +3 -2
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/ir/binding/index.d.ts +155 -0
- package/dist/ir/binding/index.d.ts.map +1 -0
- package/dist/ir/binding/index.js +1035 -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/bindings-disambiguation.test.d.ts +11 -0
- package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -0
- package/dist/ir/bindings-disambiguation.test.js +416 -0
- package/dist/ir/bindings-disambiguation.test.js.map +1 -0
- 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 +32 -15
- 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 +2 -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 +55 -112
- package/dist/ir/builder.test.js.map +1 -1
- 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 +25 -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 +389 -43
- 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 +674 -397
- 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 +158 -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 +183 -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/flow-narrowing.d.ts +27 -0
- package/dist/ir/converters/flow-narrowing.d.ts.map +1 -0
- package/dist/ir/converters/flow-narrowing.js +73 -0
- package/dist/ir/converters/flow-narrowing.js.map +1 -0
- 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 +36 -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 +139 -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 +87 -0
- package/dist/ir/program-context.d.ts.map +1 -0
- package/dist/ir/program-context.js +289 -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/{type-converter/patterns.js → syntax/binding-patterns.js} +34 -8
- 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-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 +105 -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-converter → type-system/internal/type-converter}/primitives.d.ts +4 -4
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +2 -2
- 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 +545 -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 +112 -0
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-registry.js +535 -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 +1192 -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 +64 -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 +96 -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 +2579 -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/types/expressions.d.ts +35 -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 +10 -4
- 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 +22 -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 +153 -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/char-validation-pass.d.ts +26 -0
- package/dist/ir/validation/char-validation-pass.d.ts.map +1 -0
- package/dist/ir/validation/char-validation-pass.js +495 -0
- package/dist/ir/validation/char-validation-pass.js.map +1 -0
- 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 +44 -0
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +248 -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 +158 -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 +33 -26
- package/dist/program/dependency-graph.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 +7 -8
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +6 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +185 -39
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/clr-bindings-resolver.test.d.ts +2 -0
- package/dist/resolver/clr-bindings-resolver.test.d.ts.map +1 -0
- package/dist/resolver/clr-bindings-resolver.test.js +161 -0
- package/dist/resolver/clr-bindings-resolver.test.js.map +1 -0
- 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/namespace.d.ts +2 -1
- package/dist/resolver/namespace.d.ts.map +1 -1
- package/dist/resolver/namespace.js +5 -2
- package/dist/resolver/namespace.js.map +1 -1
- package/dist/resolver/namespace.test.js +6 -6
- package/dist/resolver/naming-policy.d.ts +20 -0
- package/dist/resolver/naming-policy.d.ts.map +1 -0
- package/dist/resolver/naming-policy.js +40 -0
- package/dist/resolver/naming-policy.js.map +1 -0
- package/dist/resolver/naming.d.ts +2 -5
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +3 -20
- package/dist/resolver/naming.js.map +1 -1
- package/dist/resolver.d.ts +2 -0
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +1 -0
- package/dist/resolver.js.map +1 -1
- package/dist/resolver.test.js +8 -3
- 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/core-intrinsics.d.ts +18 -0
- package/dist/validation/core-intrinsics.d.ts.map +1 -0
- package/dist/validation/core-intrinsics.js +186 -0
- package/dist/validation/core-intrinsics.js.map +1 -0
- 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 +2 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +2 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/orchestrator.d.ts.map +1 -1
- package/dist/validation/orchestrator.js +4 -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 +123 -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.d.ts +0 -6
- package/dist/ir/type-converter.d.ts.map +0 -1
- package/dist/ir/type-converter.js +0 -6
- package/dist/ir/type-converter.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}/utility-types.test.d.ts +0 -0
|
@@ -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;AAGjD,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,CAkH7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,aAAa,EACtB,SAAS,cAAc,KACtB,MAAM,CAAC,SAAS,QAAQ,EAAE,EAAE,SAAS,UAAU,EAAE,CAgCnD,CAAC"}
|
|
@@ -1,29 +1,34 @@
|
|
|
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";
|
|
8
|
+
import { resolveNamingPolicy } from "../../resolver/naming-policy.js";
|
|
6
9
|
import { ok, error } from "../../types/result.js";
|
|
7
|
-
import { createDiagnostic } from "../../types/diagnostic.js";
|
|
8
|
-
import {
|
|
10
|
+
import { createDiagnostic, isFatal, } from "../../types/diagnostic.js";
|
|
11
|
+
import { createProgramContext, } from "../program-context.js";
|
|
9
12
|
import { extractImports } from "./imports.js";
|
|
10
|
-
import {
|
|
13
|
+
import { extractExportsWithContext } from "./exports.js";
|
|
11
14
|
import { extractStatements, isExecutableStatement } from "./statements.js";
|
|
12
15
|
import { validateClassImplements } from "./validation.js";
|
|
13
16
|
/**
|
|
14
17
|
* Build IR module from TypeScript source file
|
|
18
|
+
*
|
|
19
|
+
* @param sourceFile - The TypeScript source file to convert
|
|
20
|
+
* @param program - The Tsonic program with type checker and bindings
|
|
21
|
+
* @param options - Build options (sourceRoot, rootNamespace)
|
|
22
|
+
* @param ctx - ProgramContext for TypeSystem and other shared resources.
|
|
23
|
+
* Required - no global state fallback.
|
|
15
24
|
*/
|
|
16
|
-
export const buildIrModule = (sourceFile,
|
|
25
|
+
export const buildIrModule = (sourceFile, _program, options, ctx) => {
|
|
17
26
|
try {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const className = getClassNameFromPath(sourceFile.fileName);
|
|
24
|
-
const imports = extractImports(sourceFile, program.checker, program.clrResolver);
|
|
25
|
-
const exports = extractExports(sourceFile, program.checker);
|
|
26
|
-
const statements = extractStatements(sourceFile, program.checker);
|
|
27
|
+
const namespace = getNamespaceFromPath(sourceFile.fileName, options.sourceRoot, options.rootNamespace, resolveNamingPolicy(options.namingPolicy, "namespaces"));
|
|
28
|
+
const className = getClassNameFromPath(sourceFile.fileName, resolveNamingPolicy(options.namingPolicy, "classes"));
|
|
29
|
+
const imports = extractImports(sourceFile, ctx);
|
|
30
|
+
const exports = extractExportsWithContext(sourceFile, ctx);
|
|
31
|
+
const statements = extractStatements(sourceFile, ctx);
|
|
27
32
|
// Check for file name / export name collision (Issue #4)
|
|
28
33
|
// When file name matches an exported function/variable name, C# will have illegal code
|
|
29
34
|
// Example: main.ts exporting function main() → class main { void main() } ❌
|
|
@@ -63,7 +68,7 @@ export const buildIrModule = (sourceFile, program, options) => {
|
|
|
63
68
|
}
|
|
64
69
|
// Validate class implements patterns
|
|
65
70
|
// TypeScript interfaces are nominalized to C# classes, so "implements" is invalid
|
|
66
|
-
const implementsDiagnostics = validateClassImplements(sourceFile,
|
|
71
|
+
const implementsDiagnostics = validateClassImplements(sourceFile, ctx);
|
|
67
72
|
const firstImplementsDiagnostic = implementsDiagnostics[0];
|
|
68
73
|
if (firstImplementsDiagnostic) {
|
|
69
74
|
return error(firstImplementsDiagnostic);
|
|
@@ -102,17 +107,29 @@ export const buildIrModule = (sourceFile, program, options) => {
|
|
|
102
107
|
* Build IR for all source files in the program
|
|
103
108
|
*/
|
|
104
109
|
export const buildIr = (program, options) => {
|
|
110
|
+
// Create ProgramContext — the single owner of all semantic state
|
|
111
|
+
// No global singletons are used; context is passed explicitly
|
|
112
|
+
const ctx = createProgramContext(program, options);
|
|
105
113
|
const modules = [];
|
|
106
114
|
const diagnostics = [];
|
|
107
115
|
for (const sourceFile of program.sourceFiles) {
|
|
108
|
-
const result = buildIrModule(sourceFile, program, options);
|
|
116
|
+
const result = buildIrModule(sourceFile, program, options, ctx);
|
|
109
117
|
if (result.ok) {
|
|
110
118
|
modules.push(result.value);
|
|
111
119
|
}
|
|
112
120
|
else {
|
|
113
121
|
diagnostics.push(result.error);
|
|
122
|
+
// Fatal diagnostics abort immediately - no point continuing
|
|
123
|
+
if (isFatal(result.error)) {
|
|
124
|
+
return error(diagnostics);
|
|
125
|
+
}
|
|
114
126
|
}
|
|
115
127
|
}
|
|
128
|
+
// Merge any diagnostics emitted during IR conversion (from converters).
|
|
129
|
+
// These are deterministic failures where emitting code would require guessing.
|
|
130
|
+
if (ctx.diagnostics.length > 0) {
|
|
131
|
+
diagnostics.push(...ctx.diagnostics);
|
|
132
|
+
}
|
|
116
133
|
if (diagnostics.length > 0) {
|
|
117
134
|
return error(diagnostics);
|
|
118
135
|
}
|
|
@@ -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,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* IR Builder types
|
|
3
3
|
*/
|
|
4
|
+
import type { NamingPolicyConfig } from "../../resolver/naming-policy.js";
|
|
4
5
|
export type IrBuildOptions = {
|
|
5
6
|
readonly sourceRoot: string;
|
|
6
7
|
readonly rootNamespace: string;
|
|
8
|
+
readonly namingPolicy?: NamingPolicyConfig;
|
|
7
9
|
};
|
|
8
10
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,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,kBAAkB,CAAC;CAC5C,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"}
|
|
@@ -1,70 +1,70 @@
|
|
|
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
|
-
import { createDiagnostic } from "../../types/diagnostic.js";
|
|
6
|
-
import { getSourceLocation } from "../../program/diagnostics.js";
|
|
7
7
|
/**
|
|
8
8
|
* Check if a type reference is the struct marker
|
|
9
9
|
* (used to mark types as C# value types)
|
|
10
|
+
* ALICE'S SPEC: Uses TypeSystem for symbol resolution.
|
|
10
11
|
*/
|
|
11
|
-
const isStructMarker = (typeRef,
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const isStructMarker = (typeRef, binding, typeSystem) => {
|
|
13
|
+
if (!ts.isIdentifier(typeRef.expression)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const declId = binding.resolveIdentifier(typeRef.expression);
|
|
17
|
+
if (!declId) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const fqName = typeSystem.getFQNameOfDecl(declId);
|
|
21
|
+
return fqName === "struct" || fqName === "Struct";
|
|
14
22
|
};
|
|
15
23
|
/**
|
|
16
|
-
* Check if a
|
|
24
|
+
* Check if a declaration represents a TypeScript interface
|
|
17
25
|
* (which Tsonic nominalizes to a C# class)
|
|
26
|
+
* ALICE'S SPEC: Uses TypeSystem.isInterfaceDecl()
|
|
18
27
|
*/
|
|
19
|
-
const isNominalizedInterface = (
|
|
20
|
-
if (!
|
|
28
|
+
const isNominalizedInterface = (declId, typeSystem) => {
|
|
29
|
+
if (!declId)
|
|
21
30
|
return false;
|
|
22
|
-
|
|
23
|
-
if (!declarations || declarations.length === 0)
|
|
24
|
-
return false;
|
|
25
|
-
// Check if any declaration is an interface
|
|
26
|
-
return declarations.some((decl) => ts.isInterfaceDeclaration(decl));
|
|
31
|
+
return typeSystem.isInterfaceDecl(declId);
|
|
27
32
|
};
|
|
28
33
|
/**
|
|
29
|
-
* Check if a
|
|
34
|
+
* Check if a declaration represents a type alias for an object type
|
|
30
35
|
* (which Tsonic nominalizes to a C# class)
|
|
36
|
+
* ALICE'S SPEC: Uses TypeSystem.isTypeAliasToObjectLiteral()
|
|
31
37
|
*/
|
|
32
|
-
const isNominalizedTypeAlias = (
|
|
33
|
-
if (!
|
|
34
|
-
return false;
|
|
35
|
-
const declarations = symbol.getDeclarations();
|
|
36
|
-
if (!declarations || declarations.length === 0)
|
|
38
|
+
const isNominalizedTypeAlias = (declId, typeSystem) => {
|
|
39
|
+
if (!declId)
|
|
37
40
|
return false;
|
|
38
|
-
|
|
39
|
-
return declarations.some((decl) => {
|
|
40
|
-
if (!ts.isTypeAliasDeclaration(decl))
|
|
41
|
-
return false;
|
|
42
|
-
// Type aliases for object shapes are nominalized
|
|
43
|
-
return ts.isTypeLiteralNode(decl.type);
|
|
44
|
-
});
|
|
41
|
+
return typeSystem.isTypeAliasToObjectLiteral(declId);
|
|
45
42
|
};
|
|
46
43
|
/**
|
|
47
44
|
* Validate a class declaration for implements clause issues
|
|
48
45
|
*/
|
|
49
|
-
const validateClassDeclaration = (node,
|
|
46
|
+
const validateClassDeclaration = (node, ctx) => {
|
|
50
47
|
const diagnostics = [];
|
|
51
48
|
const implementsClause = node.heritageClauses?.find((h) => h.token === ts.SyntaxKind.ImplementsKeyword);
|
|
52
49
|
if (!implementsClause)
|
|
53
50
|
return [];
|
|
54
51
|
for (const typeRef of implementsClause.types) {
|
|
55
52
|
// Skip the struct marker - it's a special pattern for value types
|
|
56
|
-
if (isStructMarker(typeRef,
|
|
53
|
+
if (isStructMarker(typeRef, ctx.binding, ctx.typeSystem)) {
|
|
57
54
|
continue;
|
|
58
55
|
}
|
|
59
|
-
// Get the
|
|
56
|
+
// Get the declaration ID for the identifier
|
|
60
57
|
// This preserves type alias identity
|
|
61
|
-
const
|
|
58
|
+
const identifierDeclId = ts.isIdentifier(typeRef.expression)
|
|
59
|
+
? ctx.binding.resolveIdentifier(typeRef.expression)
|
|
60
|
+
: undefined;
|
|
62
61
|
// Check if it's a nominalized interface or type alias
|
|
63
|
-
if (isNominalizedInterface(
|
|
64
|
-
isNominalizedTypeAlias(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
if (isNominalizedInterface(identifierDeclId, ctx.typeSystem) ||
|
|
63
|
+
isNominalizedTypeAlias(identifierDeclId, ctx.typeSystem)) {
|
|
64
|
+
// Tsonic supports `implements` in the TypeScript surface language even when the
|
|
65
|
+
// nominal type is emitted as a C# class or interface. The emitter is responsible
|
|
66
|
+
// for selecting a valid C# representation.
|
|
67
|
+
continue;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
return diagnostics;
|
|
@@ -72,11 +72,11 @@ const validateClassDeclaration = (node, checker) => {
|
|
|
72
72
|
/**
|
|
73
73
|
* Validate all class declarations in a source file
|
|
74
74
|
*/
|
|
75
|
-
export const validateClassImplements = (sourceFile,
|
|
75
|
+
export const validateClassImplements = (sourceFile, ctx) => {
|
|
76
76
|
const diagnostics = [];
|
|
77
77
|
const visit = (node) => {
|
|
78
78
|
if (ts.isClassDeclaration(node)) {
|
|
79
|
-
diagnostics.push(...validateClassDeclaration(node,
|
|
79
|
+
diagnostics.push(...validateClassDeclaration(node, ctx));
|
|
80
80
|
}
|
|
81
81
|
ts.forEachChild(node, visit);
|
|
82
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/ir/builder/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAOjC;;;;GAIG;AACH,MAAM,cAAc,GAAG,CACrB,OAAuC,EACvC,OAAgB,EAChB,UAAyB,EAChB,EAAE;IACX,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;AACpD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,CAC7B,MAA0B,EAC1B,UAAyB,EAChB,EAAE;IACX,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,CAC7B,MAA0B,EAC1B,UAAyB,EAChB,EAAE;IACX,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,UAAU,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,wBAAwB,GAAG,CAC/B,IAAyB,EACzB,GAAmB,EACI,EAAE;IACzB,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,iBAAiB,CACnD,CAAC;IAEF,IAAI,CAAC,gBAAgB;QAAE,OAAO,EAAE,CAAC;IAEjC,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC7C,kEAAkE;QAClE,IAAI,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,4CAA4C;QAC5C,qCAAqC;QACrC,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1D,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC;QAEd,sDAAsD;QACtD,IACE,sBAAsB,CAAC,gBAAgB,EAAE,GAAG,CAAC,UAAU,CAAC;YACxD,sBAAsB,CAAC,gBAAgB,EAAE,GAAG,CAAC,UAAU,CAAC,EACxD,CAAC;YACD,gFAAgF;YAChF,iFAAiF;YACjF,2CAA2C;YAC3C,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,UAAyB,EACzB,GAAmB,EACI,EAAE;IACzB,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
|